"코인토싱"의 두 판 사이의 차이
(→전략) |
|||
8번째 줄: | 8번째 줄: | ||
코인토싱의 목적은 추첨을 위한 랜덤변수를 조작하는 것을 불가능하게 만들자는 것이다. 코인토싱 프로토콜은 네트워크 구성원 모두가 랜덤변수 생성에 참여하게 만들어 개인이 조작할 수 있는 여지를 줄이는 프로토콜이다. 코인토싱 프로토콜이 적용되려면 랜덤변수 생성 참여자 중 51% 이상은 선의를 가지고 있다는 가정이 필요하다. 억지스러워 보일 수 있지만 어차피 51%이상이 악의를 가지면, 변수가 랜덤이든 조작이든 전체 [[합의 프로토콜]]이 무너지므로 참여자 51% 이상이 선의를 가지고 있다는 가정은 억지는 아니다. 다음은 코인토싱 프로토콜이 이루어지는 순서이다. | 코인토싱의 목적은 추첨을 위한 랜덤변수를 조작하는 것을 불가능하게 만들자는 것이다. 코인토싱 프로토콜은 네트워크 구성원 모두가 랜덤변수 생성에 참여하게 만들어 개인이 조작할 수 있는 여지를 줄이는 프로토콜이다. 코인토싱 프로토콜이 적용되려면 랜덤변수 생성 참여자 중 51% 이상은 선의를 가지고 있다는 가정이 필요하다. 억지스러워 보일 수 있지만 어차피 51%이상이 악의를 가지면, 변수가 랜덤이든 조작이든 전체 [[합의 프로토콜]]이 무너지므로 참여자 51% 이상이 선의를 가지고 있다는 가정은 억지는 아니다. 다음은 코인토싱 프로토콜이 이루어지는 순서이다. | ||
− | [[파일:코인토싱프로토콜 단계.png|썸네일|300픽셀|'''코인 토싱 프로토콜 단계(출처:카이스트정보보호대학원)''']] | + | [[파일:코인토싱프로토콜 단계.png|썸네일|300픽셀|'''코인 토싱 프로토콜 단계 (출처:카이스트정보보호대학원)''']] |
* '''1단계: 랜덤변수 생성, 조각을 네트워크에 전달''' | * '''1단계: 랜덤변수 생성, 조각을 네트워크에 전달''' |
2019년 8월 14일 (수) 17:00 판
코인토싱(Coin Tossing)이란 카르다노의 우로보로스 프로토콜이 채택한 방식으로 조작 불가능하고 믿을 수 있는 랜덤 변수의 생성을 위한 프로토콜이다.
개요
코인토싱(Coin Tossing)은 불특정 다수의 참여자가 서로의 정보를 공평하고, 배신의 위험 없이 안전하게 교환할 수 있게 하는 프로토콜이다. 이를 랜덤 변수 생성에 적용하면 네트워크 참여자 각자가 만든 랜덤 변수를 안전하게 교환할 수 있게 된다. 랜덤 변수가 무결하고, 조작이 불가능하며 지분증명(POW)코인은 그라인딩 어택(Grinding Attack)으로 부터 자유롭다.[1]
전략
코인토싱 프로토콜
코인토싱의 목적은 추첨을 위한 랜덤변수를 조작하는 것을 불가능하게 만들자는 것이다. 코인토싱 프로토콜은 네트워크 구성원 모두가 랜덤변수 생성에 참여하게 만들어 개인이 조작할 수 있는 여지를 줄이는 프로토콜이다. 코인토싱 프로토콜이 적용되려면 랜덤변수 생성 참여자 중 51% 이상은 선의를 가지고 있다는 가정이 필요하다. 억지스러워 보일 수 있지만 어차피 51%이상이 악의를 가지면, 변수가 랜덤이든 조작이든 전체 합의 프로토콜이 무너지므로 참여자 51% 이상이 선의를 가지고 있다는 가정은 억지는 아니다. 다음은 코인토싱 프로토콜이 이루어지는 순서이다.
- 1단계: 랜덤변수 생성, 조각을 네트워크에 전달
- 참여자는 각각 나름의 방법으로 랜덤 변수를 생성한다. 그리고 이를 나머지 네트워크 구성자의 수에 맞게 조각낸다. 그리고 랜덤 변수의 조각들을 각각의 구성자에게 전달한다. 특정 참여자의 조각 중 과반수를 모으면, 그 참여자가 생성한 랜덤 변수를 항상 복원할 수 있다. 이 복원 가능성은 조작이 불가능하다.[2] 예를 들어 참여자 A, B, C가 있다고 생각하고 A는 악의적인 랜덤변수 생성 참여자라고 생각해보자. A, B, C는 모두 생성한 랜덤변수의 조각을 생성하여 서로 교환한다. 여기서 A는 본인의 조각을 조작할 수 없다. 조작할 경우 A는 1단계를 넘어가지 못한다.
- 2단계: 랜덤 변수를 암호화 시켜 전달
- 랜덤변수 생성 참여자 모두가 조각을 전달 받으면, 코인 토싱이 시작된다. 시작은 랜덤변수를 암호화시켜 전달하는 것이다. 아직은 아무 정보 교환도 일어나지 않는다.[2]
- 3단계: 본인의 랜덤변수를 전달
- 암호화 시킨 랜덤변수를 전달 받은 참여자는 그에 대한 답신으로 본인의 랜덤변수를 보낸다. 이번에는 암호화 되지 않은 랜덤변수이다. 즉 실질적인 정보교환이 한 방향으로 일어난다.[2]
- 4단계: 암호화 된 변수를 해독하는 키 전달
- 답신을 받은 참여자는 암호화 된 변수를 해독하는 키를 전달한다. 키를 받은 참여자는 미리 받은 암호화 된 변수를 해독함으로서 상대방의 변수를 얻게 된다. 이 단계에서 서로간의 정보교환이 마무리된다.[2] 예를 들어 A, B, C 참여자중 A가 4단계에서 해독 키를 B와 C에게 보내주지않고 통신을 끊어버린다면 A만 최종 랜덤 변수를 계산할 수 있게된다. 하지만 코인토싱 프로토콜을 사용했기 때문에 B와 C가 1단계에서 받았던 A의 조각을 합치면 A의 변수를 복원할 수 있다. 즉 A가 4단계에서 배신한다 하더라도 B와 C는 A의 변수를 얻을 수 있다.
- 5단계: 모두의 랜덤변수를 바탕으로 최종 변수 계산
- 정보교환이 마무리 되면, 네트워크 구성원들은 각자 최종 변수를 계산할 수 있게된다. 누구도 최종 변수를 마음대로 조작할 수 없고, 남들보다 빠르게 최종 변수값을 얻을 수 없다. 즉 완전무결한 랜덤변수가 공정하게 생성된 것이다.[2]
각주
- ↑ keepit, 〈KEEP!T 블록체인 상식사전〉, 《스팀잇》, 2019-08-14
- ↑ 2.0 2.1 2.2 2.3 2.4 seungjae1012, 〈카르다노(Cardano, ADA) 탐구: 지분 증명(POS)의 한계와 우로보로스(Ouroboros)〉, 《스팀잇》, 2018-06-14
참고자료
- 〈카르다노 백서〉
- keepit, 〈KEEP!T 블록체인 상식사전〉, 《스팀잇》, 2018-08-14
- seungjae1012, 〈카르다노(Cardano, ADA) 탐구: 지분 증명(POS)의 한계와 우로보로스(Ouroboros)〉, 《스팀잇》, 2018-06-14
- 소소대담, 〈에이다(카르다노), 우로보로스, 이오스, 넴, 멀티시그〉, 《네이버 블로그》, 2018-07-18