"코인셔플"의 두 판 사이의 차이
(새 문서: '''코인셔플'''<!--코인 셔플-->(CoinShuffle) 또는 '''캐시셔플'''<!--캐쉬셔플, 캐시 셔플-->은 == 개요 == == 특징 == * '''기능''' # 탈중화 : 코인셔...) |
|||
7번째 줄: | 7번째 줄: | ||
# 탈중화 : 코인셔플의 핵심 프로토콜에는 신뢰, 책임 또는 신뢰할 수없는 제 3자가 필요하지 않다. | # 탈중화 : 코인셔플의 핵심 프로토콜에는 신뢰, 책임 또는 신뢰할 수없는 제 3자가 필요하지 않다. | ||
# 익명 성 : 사용자가 혼합 후 사용자의 이전 주소와 새 주소 사이의 관계를 결정할 수 없다. | # 익명 성 : 사용자가 혼합 후 사용자의 이전 주소와 새 주소 사이의 관계를 결정할 수 없다. | ||
− | # 도난 방지 : 코인조인( | + | # 도난 방지 : 코인조인(coinjoin)의 원칙에 따라 코인셔플은 혼합 중에 돈을 도난 당하지 않도록 보장된다. |
# 호환성 : 코인셔플은 기존 비트 코인 프로토콜을 기반으로 실행되며 비트 코인 프로토콜 자체를 변경할 필요가 없다. | # 호환성 : 코인셔플은 기존 비트 코인 프로토콜을 기반으로 실행되며 비트 코인 프로토콜 자체를 변경할 필요가 없다. | ||
# 서비스 거부 공격에 대한 견고성 : 코인조인을 기반으로하는 유사한 솔루션이 단일 악의적 인 참가자에 의해 중단 될 수 있지만 코인셔플은 파괴적인 참가자를 식별하여 프로토콜에서 제외 할 수 있다. | # 서비스 거부 공격에 대한 견고성 : 코인조인을 기반으로하는 유사한 솔루션이 단일 악의적 인 참가자에 의해 중단 될 수 있지만 코인셔플은 파괴적인 참가자를 식별하여 프로토콜에서 제외 할 수 있다. | ||
26번째 줄: | 26번째 줄: | ||
: 엘리스 ⟶ 밥 : <math>enc(ek_{B}, enc(ek_{C}, enc(ek_{D}, A')))</math> | : 엘리스 ⟶ 밥 : <math>enc(ek_{B}, enc(ek_{C}, enc(ek_{D}, A')))</math> | ||
− | : 밥은 메시지를 가져 와서 해독하여 <math>enc(ek_{C}, enc(ek_{D}, A'))</math>를 얻고, 자신의 주소에 대해 중첩 암호화를 작성하여 <math>enc(ek_{C}, enc(ek_{D}, B'))</math>를 얻으면, 밥은 <math>A'</math> 와 <math>B'</math>를 포함 하는 두 개의 암호문을 가지고 있고, 밥은이 목록을 무작위로 | + | : 밥은 메시지를 가져 와서 해독하여 <math>enc(ek_{C}, enc(ek_{D}, A'))</math>를 얻고, 자신의 주소에 대해 중첩 암호화를 작성하여 <math>enc(ek_{C}, enc(ek_{D}, B'))</math>를 얻으면, 밥은 <math>A'</math> 와 <math>B'</math>를 포함 하는 두 개의 암호문을 가지고 있고, 밥은이 목록을 무작위로 섞어 두 항목을 교환하거나 남겨 둔다. 참가자들이 교환되는 경우를 가정해 보면, 밥은 섞인 목록을 찰리에게 보낸다. |
− | + | : 밥 ⟶ 찰리 : <math>enc(ek_{C}, enc(ek_{D}, B')), enc(ek_{C}, enc(ek_{D}, A'))</math> | |
+ | |||
+ | : 찰리는 똑같이 목록에있는 두 항목을 해독하고 자신의 항목을 추가하고 목록을 섞는다. | ||
+ | : 찰리 ⟶ 데이브 : <math>enc(ek_{D}, B'), enc(ek_{D}, C'), enc(ek_{D}, A')</math> | ||
+ | |||
+ | : 데이브는 다시 동일하게 수행해 모든 항목을 해독하여 <math>B', C', A'</math>를 얻으면, 자신의 주소 추가 <math>D'</math>를 하여 목록을 섞는다. 결과 섞인 목록은 참가자들에게 보내진다 | ||
+ | : 데이브 ⟶ 참가자들 : <math>D', B', C', A'</math> | ||
+ | |||
+ | : '''3 단계 : 거래 생성''' | ||
+ | : 모든 참가자는 출력 주소 목록을 받고 자신의 출력 주소가 실제로 있는지 확인할 수 있어 거래에 서명한다. 예를 들면, 밥이 자신의 주소가 없다는 것을 알면 거래를 수행하여 동전을 잃을 것이므로 서명하고 싶지 않을 것이다. 밥의 주소가 없으면 프로토콜 실행 중에 누군가가 속임수를 써야하며, 밥은 불평하고 참가자들은 누가 속이는 사람인지 알아 내기 위해 추가 단계에 들어갈 것이다. 코인셔플은 비난 단계가 항상 적어도 한 명의 부정 행위 참가자를 노출시키는 지 확인하며, 이 부정 행위 참가자는 프로토콜의 후속 실행에서 제외 될 수 있다. 밥, 찰리, 데이브가 엘리스 없이 프로토콜을 다시 실행할 수 있다. 2단계에서 셔플링을 수행 한 참가자 만 자신이받은 목록의 메시지와 자신이 보낸 목록의 메시지 사이의 관계를 알고 있다는 것이다. 예를 들면, 찰리만이 <math>enc(ek_{C}, enc(ek_{D}, B'))</math> 및 <math>enc(ek_{D}, B')</math>를 연관시킬 수 없기 때문에 <math>B'</math> 를 포함하는 메시지를 첫 번째 위치에 두었다는 것을 알고 있을 것이나 찰리조차도 이것이 밥의 주소가 담긴 메시지임을 알지 못할 것이다. 결국, 정직한 참가자의 모든 주소는 섞여 어떤 참가자도 순열을 모르게 된다.<ref name="크립"></ref> | ||
2019년 8월 30일 (금) 14:33 판
코인셔플(CoinShuffle) 또는 캐시셔플은
개요
특징
- 기능
- 탈중화 : 코인셔플의 핵심 프로토콜에는 신뢰, 책임 또는 신뢰할 수없는 제 3자가 필요하지 않다.
- 익명 성 : 사용자가 혼합 후 사용자의 이전 주소와 새 주소 사이의 관계를 결정할 수 없다.
- 도난 방지 : 코인조인(coinjoin)의 원칙에 따라 코인셔플은 혼합 중에 돈을 도난 당하지 않도록 보장된다.
- 호환성 : 코인셔플은 기존 비트 코인 프로토콜을 기반으로 실행되며 비트 코인 프로토콜 자체를 변경할 필요가 없다.
- 서비스 거부 공격에 대한 견고성 : 코인조인을 기반으로하는 유사한 솔루션이 단일 악의적 인 참가자에 의해 중단 될 수 있지만 코인셔플은 파괴적인 참가자를 식별하여 프로토콜에서 제외 할 수 있다.
- 추가 비용 없다 : 코인셔플은 혼합을 수행하는 데 필요한 표준 비트코인 거래 수수료를 제외하고 추가 혼합 수수료를 요구하지 않는다.
- 성능 : 코인셔플은 사용자에게 작은 통신 오버 헤드 만 도입하고 나머지 비트코인 시스템의 계산 및 통신 오버 헤드를 최소화한다.
- 간단한 암호화 : 코인셔플은 디지털 서명 및 표준 공개 키 암호화와 같은 기본 암호화 기본 만 필요하다.[1]
- 프로토콜
- 프로토콜을 설명하기 위해 4명의 참가자 엘리스(alice), 밥(bob), 찰리(charlie), 데이브(dave)가있다. 참가자들은 각각의 주소 에 정확히 1개의 BTC 를 가지고 있다 . 참가자들이 프로토콜을 서로 실행하고 싶다는 것을 이미 알고 있고 서로의 주소를 알고 있다고 가정한다.
- 참가자는 새로운 주소 를 작성 하지만 서로에게 표시하지않고, 코인조인 기반 믹싱의 목표는 입력 주소 및 출력 주소 와 함께 하나의 단일 믹싱 트랜잭션을 만들어 동전과 소유자 간의 관계를 숨기는 것이다. 특정 주문에 충실한다면 출력 주소는 A가 속한 가 속한 , 등 입력 및 출력 주소의 연결이 숨겨져 있는지 확인하려면 출력 주소 목록을 섞어야 하고, 생성 된 트랜잭션에서 출력 주소를 섞는 것만으로 충분하지 않다. 예를 들면, 모든 사람이 프로토콜 중에 자신의 출력 주소를 알기 쉽게 발표 한 경우에 엘리스가 를 발표 하면 모든 사람이 가 엘리스에 속한다는 것을 알게 되고, 프로토콜 중에 전송된 메시지가 익명 성을 깨뜨리지 않도록해야하며, 코인셔플은 문제를 정확하게 해결할 것이다. 프레젠테이션을 단순화하기 위해 서명을 생략했다.
- 1 단계 : 키 교환
- 엘리스를 제외한 각 참가자는 공개 암호화 키와 개인 암호 해독 키로 구성된 공개 키 암호화 체계의 키 쌍을 만들고, 공개 암호화 키 를 호출한다. 각 참가자는 자신의 입력 주소에 해당하는 서명 키로 서명 된 공개 암호화 키를 발표한다.
- 2 단계 : 셔플 링
- 참가자들은 공개 암호화 키를 알고 있으면 셔플 링을 시작할 수 있다. 엘리스는 모든 암호화 키를 사용하여 출력 주소 를 계층 방식으로 암호화하는데, 엘리스는 데이브를 위해 A'를 먼저 암호화 하여 를 얻으면, 암호문은 찰리에 대해 암호화 되어 밥에 대해 등을 얻고, 메시지는 밥에게 전송된다.
- 엘리스 ⟶ 밥 :
- 밥은 메시지를 가져 와서 해독하여 를 얻고, 자신의 주소에 대해 중첩 암호화를 작성하여 를 얻으면, 밥은 와 를 포함 하는 두 개의 암호문을 가지고 있고, 밥은이 목록을 무작위로 섞어 두 항목을 교환하거나 남겨 둔다. 참가자들이 교환되는 경우를 가정해 보면, 밥은 섞인 목록을 찰리에게 보낸다.
- 밥 ⟶ 찰리 :
- 찰리는 똑같이 목록에있는 두 항목을 해독하고 자신의 항목을 추가하고 목록을 섞는다.
- 찰리 ⟶ 데이브 :
- 데이브는 다시 동일하게 수행해 모든 항목을 해독하여 를 얻으면, 자신의 주소 추가 를 하여 목록을 섞는다. 결과 섞인 목록은 참가자들에게 보내진다
- 데이브 ⟶ 참가자들 :
- 3 단계 : 거래 생성
- 모든 참가자는 출력 주소 목록을 받고 자신의 출력 주소가 실제로 있는지 확인할 수 있어 거래에 서명한다. 예를 들면, 밥이 자신의 주소가 없다는 것을 알면 거래를 수행하여 동전을 잃을 것이므로 서명하고 싶지 않을 것이다. 밥의 주소가 없으면 프로토콜 실행 중에 누군가가 속임수를 써야하며, 밥은 불평하고 참가자들은 누가 속이는 사람인지 알아 내기 위해 추가 단계에 들어갈 것이다. 코인셔플은 비난 단계가 항상 적어도 한 명의 부정 행위 참가자를 노출시키는 지 확인하며, 이 부정 행위 참가자는 프로토콜의 후속 실행에서 제외 될 수 있다. 밥, 찰리, 데이브가 엘리스 없이 프로토콜을 다시 실행할 수 있다. 2단계에서 셔플링을 수행 한 참가자 만 자신이받은 목록의 메시지와 자신이 보낸 목록의 메시지 사이의 관계를 알고 있다는 것이다. 예를 들면, 찰리만이 및 를 연관시킬 수 없기 때문에 를 포함하는 메시지를 첫 번째 위치에 두었다는 것을 알고 있을 것이나 찰리조차도 이것이 밥의 주소가 담긴 메시지임을 알지 못할 것이다. 결국, 정직한 참가자의 모든 주소는 섞여 어떤 참가자도 순열을 모르게 된다.[1]
활용
접근법과 비교
- 제로 코인 / 제로 캐쉬
- 제로코인(zerocoin)과 최적화 된 제로캐쉬(zerocash)는 ZK-SNARKS와 같은 매우 새로운 암호화를 사용하여 내장 익명 성을 제공한다. 제로캐쉬는 공개 매개 변수의 초기 설정을 위해 신뢰할 수있는 당사자 를 필요하는데, 모든 접근 방식은 자체 통화이다. 제로코인 및 제로캐쉬는 비트코인과 호환되지 않으므로 자체 프로토콜 확장 및 블록 체인이 필요 하지만 코인셔플은 비트코인 프로토콜을 변경하거나 체인을 포크하지 않고 비트코인 위에서 직접 작동한다.[1]
- 믹스 코인
- 믹스코인(mixcoin)의 주요 혁신은 믹싱 서버(믹스)에 대한 책임으로, 믹스 서버가 동전을 훔치는 경우 사용자는이 도난에 대한 암호화 증거를 획득하고 믹스를 책임질 수 있다. 모든 사람들이이 증거를 확인할 수 있어 믹스는 그 명성을 잃어 버리고 앞으로는 사용하지 못할 것이다. 믹스는 여전히 돈을 훔칠 수 있지만 잡히면 사업에서 쫓겨날 것이다. 반대로 코인셔플의 장점은 도난 후에 만 책임감을 제공하는 대신 처음부터 동전을 훔치는 것을 방지하며, 코인셔플에서는 중앙 집중식 혼합 서버가 전혀 필요하지 않으나 코인셔플을 사용하려면 단일 믹싱 라운드 참가자가 동시에 온라인 상태 여야한다.[1]
- 코인스왑
- 참가자가 코인스왑(coinswap)에서 어떤 코인을 어느 코인에 속하는지 알기 때문에 익명 성이 제한되며, 최소 4건의 거래와 해당 수수료가 필요로 한데 비해 코인셔플은 하나의 거래 만 필요하다. 그러나 코인스왑은 본질적으로 두 당사자 프로토콜이므로 상호 작용 및 조정이 덜 필요하며, 원래 코인스왑 스레드 코인셔플위한 기초를 제공 코인조인에 상세한 비교를 제공한다.[1]