검수요청.png검수요청.png

코인토싱

위키원
Asadal (토론 | 기여)님의 2019년 8월 17일 (토) 14:14 판
이동: 둘러보기, 검색
카르다노(Cardano)

코인토싱(coin tossing)이란 카르다노(Cardano)의 우로보로스 프로토콜이 채택한 방식으로 조작 불가능하고 믿을 수 있는 랜덤 변수의 생성을 위한 프로토콜이다.

개요

코인토싱(Coin Tossing)은 불특정 다수의 참여자가 서로의 정보를 공평하고, 배신의 위험 없이 안전하게 교환할 수 있게 하는 프로토콜이다. 이를 랜덤 변수 생성에 적용하면 네트워크 참여자 각자가 만든 랜덤 변수를 안전하게 교환할 수 있게 된다. 랜덤 변수가 무결하고, 조작이 불가능하며 지분증명(POW)코인은 그라인딩 어택(Grinding Attack)으로 부터 자유롭다.[1]

특징

코인토싱 프로토콜

카르다노는 코인토싱 프로토콜(coin tossing protocol)을 인용하여 이를 알고리즘에 적용한다. 코인토싱 프로토콜의 목적은 간단하다. 추첨을 위한 랜덤 변수의 조작을 불가능하게 만드는 것이다. 간단히 말해, 네트워크 구성원 모두가 랜덤 변수 생성에 참여하게 만들면 된다. 랜덤 변수 생성에 모든 구성원이 참여한다면, 개인이 조작할 수 있는 여지는 줄어들게 된다. 조작된 변수에 랜덤을 더하면 랜덤이 나오기 때문이다.

코인토싱의 목적은 추첨을 위한 랜덤변수를 조작하는 것을 불가능하게 만들자는 것이다. 코인토싱 프로토콜은 네트워크 구성원 모두가 랜덤변수 생성에 참여하게 만들어 개인이 조작할 수 있는 여지를 줄이는 프로토콜이다. 코인토싱 프로토콜이 적용되려면 랜덤변수 생성 참여자 중 51% 이상은 선의를 가지고 있다는 가정이 필요하다. 억지스러워 보일 수 있지만 어차피 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]

각주

  1. keepit, 〈KEEP!T 블록체인 상식사전〉, 《스팀잇》, 2019-08-14
  2. 2.0 2.1 2.2 2.3 2.4 seungjae1012, 〈카르다노(Cardano, ADA) 탐구: 지분 증명(POS)의 한계와 우로보로스(Ouroboros)〉, 《스팀잇》, 2018-06-14

참고자료

같이보기

  검수요청.png검수요청.png 이 코인토싱 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.