"다자간 계산"의 두 판 사이의 차이
10번째 줄: | 10번째 줄: | ||
*계산이 끝나면, 단일 프로세서에 있는 모든 입력으로 그것을 계산하는 것처럼 함수의 출력이 가능하다. | *계산이 끝나면, 단일 프로세서에 있는 모든 입력으로 그것을 계산하는 것처럼 함수의 출력이 가능하다. | ||
*계산은 어느정도 내결함성이 있으며, 계산의 일부 노드/파티들이 악의적이더라도 계산은 계속하여 의도한 결과를 제공할 수 있다. | *계산은 어느정도 내결함성이 있으며, 계산의 일부 노드/파티들이 악의적이더라도 계산은 계속하여 의도한 결과를 제공할 수 있다. | ||
+ | |||
+ | ==MPC 프로토콜== | ||
+ | 대부분의 MPC 프로토콜은 2PC 프로토콜과 달리 개인 채널의 무조건적인 설정하에서 비밀 공유를 사용한다. 비밀 공유 기반 방법에서 당사자들은 특별한 역할을 하지 않는다. 대신, 각 와이어와 관련된 데이터는 당사자들 간에 공유되며, 각 게이트를 평가하는 프로토콜이 사용된다. 이 기능은 Yao에 사용되는 이진 회로와 달리 유한 필드의 '회로'로 정의된다. 이 러한 회로를 문헌에서 산술 회로라고하며, 연산된 값이 유한 필드에 대해 정의되는 덧셈 및 곱셈 "게이트"로 구성된다. 비밀 공유를 통해 각 당사자에게 주식을 배포하여 여러 당사자에게 비밀을 배포할 수 있다. 일반적으로는 샤미르(Shamir) 비밀 공유와 추가 비밀 공유의 두 가지 비밀 공유 방식이 사용된다. 두 경우 모두 주식은 한정된 분야의 임의적인 요소로서 그 분야의 비밀을 더한다. 직적격하지 않은 주식 집합이 임의로 배포되는 것처럼 보이기 때문에 보안이 이루어진다. | ||
+ | ===보안 속성=== | ||
+ | *'''입력 개인 정보 보호''' : 당사자가 보유한 개인 데이터에 대한 정보는 프로토콜 실행중 전송된 메시지에서 유추할 수 없다. 개인 데이터에 대해 유추할 수 있는 유일한 정보는 함수의 출력만 볼 때 유추할 수 있는것이다. | ||
+ | *'''결과 정확성''' : 프로토콜 실행중 정보를 공유하거나 지시 사항에서 벗어나려는 적대적인 충돌 당사자의 적절한 하위 집합이 정직한 당사자가 잘못된 결괄르 출력하도록 강요해서는 안된다. 이 정확성 목표는 두 가지 방식으로 제공된다. 정직한 당사자는 올바른 결과를 계산하거나 오류를 발견하면 중단된다. | ||
+ | ===위협 모델=== | ||
+ | *'''반 정직한 적''' : 손상된 당사자는 단지 프로토콜에서 정보를 수집하기 위해 협력하지만 프로토콜 사양에서 벗어나지 않는다고 가정한다. 이것은 실제 상황에서 보안이 약한 순진한 공격 모델이다. 그러나 이 수준의 보안을달성하는 프로토콜은 당사자간 우발적인 정보 유출을 방지하므로 이것이 유일한 관심사인 경우 유용하다. 또한 정직한 모델의 프로토콜은 매우 효율적이며 높은 수준의 보안을 달성하기위한 중요한 첫 단계이다. | ||
+ | *'''악의적인 공격자''' : 공격자는 부정 행위를 시도할 때 프로토콜 실행에서 임의로 벗어날 수 있다. 이 모델에서 보안을 달성하는 프로토콜은 매우 높은 보안 보장을 제공한다. 부정직한 대다수의 경우 상대방이 할수 있는 유일한 일은 정직한 당사자가 자기 부정 행위를 감지한 것을 파기시키는 것이다. 정직한 당사자가 결과물을 얻는다면 그것이 정확하다는 것을 보장한다. 그들의 프라이버시는 항상 유지된다. | ||
{{각주}} | {{각주}} | ||
15번째 줄: | 24번째 줄: | ||
*블록투데이, 〈[https://cobak.co.kr/community/9/post/173542 다자간 연산 (Multi-Party Computation/MPC):모든 것의 핵심인 존재]〉, 《코박》, 2019-05-08 | *블록투데이, 〈[https://cobak.co.kr/community/9/post/173542 다자간 연산 (Multi-Party Computation/MPC):모든 것의 핵심인 존재]〉, 《코박》, 2019-05-08 | ||
*Sreekanth Narayanan, 〈[https://medium.com/@sreekanth.narayanan/multi-party-computations-72189ddcaed7 Multi Party Computations]〉, 《미디엄》, 2018-02-25 | *Sreekanth Narayanan, 〈[https://medium.com/@sreekanth.narayanan/multi-party-computations-72189ddcaed7 Multi Party Computations]〉, 《미디엄》, 2018-02-25 | ||
+ | *〈[https://en.wikipedia.org/wiki/Secure_multi-party_computation Secure multi-party computation]〉, 《위키피디아》 | ||
+ | *George Wainblat , 〈[https://www.quora.com/How-does-multi-party-computation-MPC-workon MPC(Multi-party Compution)]〉, 《nhoyr》, 2018-11-12 | ||
==같이 보기== | ==같이 보기== | ||
{{암호 알고리즘|토막글}} | {{암호 알고리즘|토막글}} |
2019년 9월 18일 (수) 10:56 판
MPC(Multi-Party Computation)는 다수의 사용자가 각자의 비밀 값을 입력 값으로 하여 함수값을 함께 계산하는 기술이다. "다자간 계산"이라는 뜻이다. 다자간 계산은 1982년에 최초로 시작되었으며, 처음에는 2PC(Two-Party Computation)으로부터 시작했다.
개요
MPC와 연관된 기술들은 머클트리, 동형 암호, 탭루트 등 다양한 암호학 관련 기술들이 있다. MPC를 활용한다면 원래 정보는 알 필요없이 도출된 비밀값만을 몇몇 주체들이 해결해낸 뒤, 그 결과들을 활용하면 된다. 이를 통해 제 3자의 개입없이 프라이버시 및 신뢰를 구착할 수 있기 때문에 이에 대한 수요가 계속해서 생긴다. 또한 단일 주체가 공급을 담당하지 않기 때문에 단일 주체가 공급을 맡아서 가격형성을 할 때에 비해 더 소비자에게 이득일 가능성이 높아지고, 이를 통해 자연스럽게 "시장"이 형성될 수 있다. 이를 해내기 위해서는 고도의 암호화를 가능하게 하고, 다자가 빠르게 소통할 수 있게 하는 인코딩/대역폭 제한 컴퓨팅과 같은 인프라 및 기술이 요구된다.
특징
- 여러 당사자(기계)가 계산에 참여한다.
- 각 당사자는 이 당사자에게만 알려진 비밀인 계산에 일련의 입력 정보를 제공한다.
- 계산이 진행되는 동안 당사자간에 보안 메시지가 전달되어 당사자가 제공한 투입물에 대한 정보가 전혀 공개되지 않는다.
- 계산이 끝나면, 단일 프로세서에 있는 모든 입력으로 그것을 계산하는 것처럼 함수의 출력이 가능하다.
- 계산은 어느정도 내결함성이 있으며, 계산의 일부 노드/파티들이 악의적이더라도 계산은 계속하여 의도한 결과를 제공할 수 있다.
MPC 프로토콜
대부분의 MPC 프로토콜은 2PC 프로토콜과 달리 개인 채널의 무조건적인 설정하에서 비밀 공유를 사용한다. 비밀 공유 기반 방법에서 당사자들은 특별한 역할을 하지 않는다. 대신, 각 와이어와 관련된 데이터는 당사자들 간에 공유되며, 각 게이트를 평가하는 프로토콜이 사용된다. 이 기능은 Yao에 사용되는 이진 회로와 달리 유한 필드의 '회로'로 정의된다. 이 러한 회로를 문헌에서 산술 회로라고하며, 연산된 값이 유한 필드에 대해 정의되는 덧셈 및 곱셈 "게이트"로 구성된다. 비밀 공유를 통해 각 당사자에게 주식을 배포하여 여러 당사자에게 비밀을 배포할 수 있다. 일반적으로는 샤미르(Shamir) 비밀 공유와 추가 비밀 공유의 두 가지 비밀 공유 방식이 사용된다. 두 경우 모두 주식은 한정된 분야의 임의적인 요소로서 그 분야의 비밀을 더한다. 직적격하지 않은 주식 집합이 임의로 배포되는 것처럼 보이기 때문에 보안이 이루어진다.
보안 속성
- 입력 개인 정보 보호 : 당사자가 보유한 개인 데이터에 대한 정보는 프로토콜 실행중 전송된 메시지에서 유추할 수 없다. 개인 데이터에 대해 유추할 수 있는 유일한 정보는 함수의 출력만 볼 때 유추할 수 있는것이다.
- 결과 정확성 : 프로토콜 실행중 정보를 공유하거나 지시 사항에서 벗어나려는 적대적인 충돌 당사자의 적절한 하위 집합이 정직한 당사자가 잘못된 결괄르 출력하도록 강요해서는 안된다. 이 정확성 목표는 두 가지 방식으로 제공된다. 정직한 당사자는 올바른 결과를 계산하거나 오류를 발견하면 중단된다.
위협 모델
- 반 정직한 적 : 손상된 당사자는 단지 프로토콜에서 정보를 수집하기 위해 협력하지만 프로토콜 사양에서 벗어나지 않는다고 가정한다. 이것은 실제 상황에서 보안이 약한 순진한 공격 모델이다. 그러나 이 수준의 보안을달성하는 프로토콜은 당사자간 우발적인 정보 유출을 방지하므로 이것이 유일한 관심사인 경우 유용하다. 또한 정직한 모델의 프로토콜은 매우 효율적이며 높은 수준의 보안을 달성하기위한 중요한 첫 단계이다.
- 악의적인 공격자 : 공격자는 부정 행위를 시도할 때 프로토콜 실행에서 임의로 벗어날 수 있다. 이 모델에서 보안을 달성하는 프로토콜은 매우 높은 보안 보장을 제공한다. 부정직한 대다수의 경우 상대방이 할수 있는 유일한 일은 정직한 당사자가 자기 부정 행위를 감지한 것을 파기시키는 것이다. 정직한 당사자가 결과물을 얻는다면 그것이 정확하다는 것을 보장한다. 그들의 프라이버시는 항상 유지된다.
각주
참고자료
- 블록투데이, 〈다자간 연산 (Multi-Party Computation/MPC):모든 것의 핵심인 존재〉, 《코박》, 2019-05-08
- Sreekanth Narayanan, 〈Multi Party Computations〉, 《미디엄》, 2018-02-25
- 〈Secure multi-party computation〉, 《위키피디아》
- George Wainblat , 〈MPC(Multi-party Compution)〉, 《nhoyr》, 2018-11-12