Toss Coin over Telephone
이 프로토콜은 Manuel Blum(1983) 이 제안한 암호학적 동전 던지기(Coin Flipping over Telephone) 프로토콜이다. 두 참여자가 물리적으로 만나지 않고도 공정한 내기를 할 수 있음을 보여준다.
- 만나지 않는 두 사람이 전화로 공정한 동전 던지기를 할 수 있는가
- 이차 합동식 이 의 소인수분해 없이는 풀기 어렵다는 성질
- A와 B가 정보 비대칭 상태에서 합의에 이르는 프로토콜 흐름
- 이 프로토콜이 보장하는 공정성의 수학적 근거
A와 B가 전화 통화를 하며 내기를 한다. A는 동전을 던지고, B는 A가 던진 동전의 면을 맞추는 내기이다. 당연히 A는 B가 말한 내용을 듣고 결과를 바꾸어 말할 수 있다. 공정하게 게임을 하기 위해서는 어떻게 해야 하는가?
핵심 아이디어: 이차 합동식 은 을 소인수분해할 수 있으면 4개의 해를 구할 수 있지만, 의 소인수를 모르면 풀기 어렵다는 수학적 성질을 이용한다.
| 참여자 | 알고 있는 정보 |
|---|---|
| A | 모두 |
| B | 과 자신이 선택한 만 |
프로토콜 흐름
-
A는 다음을 만족하는 3 이상의 소수 를 고르고 B에게 를 전달한다. 이때 는 공개하지 않는다.
- 조건은 이후 이차잉여의 제곱근 계산을 쉽게 만들기 위함이다. 이 조건을 만족하는 를 Blum 정수 라고 한다.
-
B는 을 만족하는 를 범위에서 균등 무작위로 고른 뒤, 을 A에게 전달한다. 이때 는 공개하지 않는다.
- 이 빠지면 근이 넷이 아니게 된다. 이면 는 에서 이 되어 그쪽 제곱근이 하나뿐이라, 의 근이 둘로 줄어든다. 그러면 A가 무엇을 보내든 B가 아는 쌍이라 A가 항상 이긴다. 짜리 예시에서는 의 (개 중 개)가 여기에 해당한다. 실제 크기의 에서는 이런 를 뽑을 확률이 수준이라 무시할 만하지만, 조건 자체는 프로토콜의 일부다.
- 균등 무작위여야 하는 이유는 따로 있다. B의 분포가 한쪽으로 치우쳐 있고 A가 그 사실을 알면, A는 B가 어느 쌍에 있을지 더 잘 추측해 보다 유리해진다.
-
A는 를 알고 있으므로, CRT(중국인의 나머지 정리) 를 이용하여 의 네 근 를 구하고, 이 중 하나를 B에게 전달한다.
- 조건 덕분에 로 제곱근을 쉽게 구할 수 있다. (마찬가지로 )
- CRT로 두 값을 합성하면 네 근 를 얻는다.
-
B가 선택한 가 또는 과 같다고 가정하자.
- A가 B에게 또는 를 전달하면: B는 서로 다른 두 제곱근 와 를 모두 알게 된다. 이를 이용해 을 계산하면 또는 를 구할 수 있다. → B 승리
- A가 B에게 또는 을 전달하면: B는 자신이 이미 아는 값만 얻게 되므로 를 구할 수 없다. → A 승리
-
따라서 B는 A로부터 받은 값으로 를 소인수분해할 수 있으면 B의 승리, 그렇지 않으면 A의 승리다.
- A는 4개의 근 중 어느 것을 줄지 선택할 수 있지만, B의 를 모르기 때문에 자신에게 유리한 것을 고를 수 없다. 네 근은 두 쌍을 이루고 B는 그중 한 쌍 안에 있는데, A가 보는 만으로는 어느 쌍인지 구별할 수 없다.
- 결과적으로 A가 이길 확률과 B가 이길 확률은 각각 이다.
이 확률은 무조건 나오는 값이 아니라 아래를 모두 전제한 값이다. 하나라도 빠지면 이 흔들린다.
- 파라미터가 정직하게 생성됐다. 이 서로 다른 두 소수 의 곱이어야 근이 정확히 넷이고 두 쌍으로 갈린다. 6단계에서 본 대로 이것은 제곱 검사로 확인되지 않는다.
- B가 에서 균등하게 뽑았다. 2단계의 두 조건이다.
- A가 어느 쌍인지 구별할 수 없다. 만 보고 B의 쌍을 알아내는 것은 을 인수분해하는 것만큼 어렵다는 가정 위에 있다. 정보이론적으로 불가능한 것이 아니라 계산적으로 어려운 것이다.
중단은 막지 못한다. 위 확률은 두 참여자가 끝까지 프로토콜을 따를 때의 값이다. 진 쪽이 결과를 확인한 뒤 그냥 전화를 끊으면 승부가 성립하지 않는다. 이런 종류의 공정성을 강제하려면 중단에 대한 규칙이 프로토콜 밖에서 따로 있어야 한다.
- B는 A가 보낸 값 에 대해 이 성립하는지 확인한다. 다만 이 검사가 확인해 주는 것은 응답의 유효성뿐이다.
- 성립하지 않으면 A가 제곱근이 아닌 값을 보낸 것이므로 그 자리에서 걸린다.
- 성립하더라도 이 서로 다른 두 소수의 곱인지는 알 수 없다. 이 검사는 의 구조에 대해 아무것도 말해 주지 않는다.
- 가장 단순한 반칙은 A가 을 소수로 보내는 것이다. 그러면 의 근은 둘뿐이라 B는 언제나 자기가 아는 값을 돌려받고, 보낸 값은 제곱 검사를 멀쩡히 통과한다. A가 이긴다. 이 세 소수의 곱이면 근이 여덟 개가 되어 이번에는 B가 로 유리해진다.
- 따라서 이 Blum 정수라는 사실은 별도로 증명되어야 한다. 실무에서는 A가 영지식 증명으로 의 형태를 보인다. 아래 프로토콜의 한계에서 다시 다룬다.
수치 예시
작은 숫자로 프로토콜 전 과정을 직접 따라가보자.
준비
A의 선택 (비공개):
- , — 조건 확인: , ✓
- → B에게 공개
B의 선택:
- (비공개)
- → A에게 전달
A가 4개의 근을 계산하는 과정
Step 1. 제곱근 ()
이므로
→ 제곱근: = 과
Step 2. 제곱근 ()
이므로
→ 제곱근: = 와
Step 3. CRT로 네 근 합성
| CRT 결과 | ||
|---|---|---|
| 1 | 4 | 15 |
| 6 | 4 | 48 |
| 1 | 7 | 29 |
| 6 | 7 | 62 |
검증: 을 모두 하면 전부 ✓
네 근은 두 쌍으로 묶인다: 와
결과 판정
B가 를 골랐으므로, A가 받은 의 네 근 중 같은 쌍은 이다.
A가 29 또는 48을 전달하는 경우 → B 승리
B는 자신의 와 A로부터 받은 을 이용해 소인수분해 가능:
A가 15 또는 62를 전달하는 경우 → A 승리
B는 자신이 이미 아는 값을 받았을 뿐이므로, 새로운 정보를 얻지 못해 소인수분해 불가.
A는 어느 쌍이 B에게 유리한지 모르므로 결국 50% 확률로 선택하게 된다.
왜 공정한가?
- A의 속임 방지: A는 4개의 근 중 무엇을 보내야 B에게 불리한지 모른다. B의 를 알 방법이 없기 때문이다.
- B의 속임 방지: B는 를 전달한 뒤 를 바꿀 수 없다. 으로 이미 커밋되어 있다.
- 안전성의 근거: 소인수분해 문제의 어려움. 비자명한 두 제곱근을 얻는 것과 을 소인수분해하는 것이 동등하다. 부호만 다른 쌍은 아무것도 주지 않는다.
- 전제: 위 셋은 이 정직하게 생성된 Blum 정수이고 B가 에서 균등하게 뽑았을 때의 이야기다.
이 프로토콜의 안전성은 소인수분해 문제의 어려움 에 기반한다.
핵심 동등성:
의 4개의 근을 모두 구할 수 있다 을 소인수분해할 수 있다.
증명 (⇐): 를 알면 CRT로 4개의 근을 모두 구할 수 있다. (A가 하는 일)
증명 (⇒): 두 제곱근 이 을 만족한다고 하자. 이 조건을 비자명한 쌍이라 부른다. 이므로
이다. 이므로 이고, 이므로 이다. 그런데 가 곱을 나누므로 와 가 두 인수에 하나씩 갈라져 들어간다. 따라서 은 도 도 아닌 진약수, 즉 또는 다.
인 경우에는 이 또는 이 되어 아무것도 얻지 못한다. 비자명하다는 조건이 논증의 전부이고, 이것이 이 프로토콜에서 A의 선택이 하는 일이다.
환원의 성공 확률. “제곱근을 하나 돌려주는 상자”가 있다면 인수분해기를 만들 수 있다. 인 를 무작위로 골라 을 상자에 넣으면, 상자는 의 네 근 중 하나를 돌려준다. 상자는 만 보므로 넷 중 어느 것이 우리가 쓴 인지 알 수 없고, 돌아온 값이 가 아닐 확률이 이다. 그때 한 번으로 인수가 나온다. 한 번에 실패해도 다시 시도하면 되므로, 번 반복하면 실패 확률이 로 떨어진다. 한 번에 되는 결정적 환원이 아니라 확률적 환원이라는 점이 중요하다.
공정성 보장:
- A는 B가 어떤 를 골랐는지 모르므로, B에게 유리한 쌍 을 골라줄지, 불리한 쌍 을 줄지 알 수 없다.
- 결과적으로 A의 선택은 사실상 랜덤 이며, 각 참여자의 승률은 정확히 이다.
- 다만 이 값은 앞서 나열한 전제 위에서만 성립한다. 파라미터가 정직하게 생성됐고, B가 균등하게 뽑았으며, A가 만으로 쌍을 구별할 수 없다는 계산적 가정이 유지될 때다. 그리고 어느 쪽도 중간에 끊지 않아야 한다.
공격 시나리오
| 공격자 | 시도 | 왜 실패하는가 |
|---|---|---|
| A | 제곱근이 아닌 값 전달 | B가 검증으로 탐지 가능 |
| A | 결과 발표 직전 유리한 근 선택 | B의 를 모르므로 어느 쌍이 유리한지 알 수 없음 |
| B | 사후 변경 | 으로 이미 커밋 — 변경 불가 |
| A | Blum 정수 아닌 사용 | 제곱 검증으로는 탐지되지 않는다. 이 소수면 근이 둘뿐이라 A가 항상 이긴다. 영지식 증명이 따로 필요하다 |
용어 정리
이차잉여 (Quadratic Residue)
정의: 정수 가 의 이차잉여 라는 것은, 을 만족하는 정수 가 존재함을 의미한다.
소수 모듈러스에서의 제곱근 개수:
- 소수 에 대해, 인 이차잉여 의 제곱근은 정확히 2개 ()이다.
합성수 모듈러스에서의 제곱근 개수:
- (: 서로 다른 소수)일 때, 가 의 이차잉여이면 의 해는 정확히 4개 ()이다.
- 가 이차잉여가 아니면 해가 없다.
- 이는 CRT에 의해 의 해 2개와 의 해 2개를 조합하기 때문이다.
- 핵심: 의 소인수를 알면 4개의 근을 모두 구할 수 있지만, 모르면 하나의 근에서 나머지를 유추하기 어렵다.
왜 인가?
제곱근을 구하는 공식 가 성립하는 이유를 확인해보자.
전제 조건: 가 소수이고, 가 의 이차잉여이면, Euler’s Criterion 에 의해 다음이 성립한다.
검증:
- 즉, 는 실제로 의 제곱근이 맞다.
- 단, 이 공식이 정수 가 되려면 가 정수여야 하므로, 조건이 필요하다.
- 이면 가 정수가 아니므로 이 방법을 쓸 수 없다.
프로토콜의 한계
-
A의 Blum 정수 미준수: 6단계의 제곱 검사는 응답이 의 제곱근인지만 확인할 뿐, 의 구조는 건드리지 못한다. A가 을 소수로 보내면 근이 둘뿐이라 B는 늘 자기가 아는 값을 돌려받고, 그 값은 검사를 그대로 통과한다. A가 이긴다. 이를 막으려면 영지식 증명(Zero-Knowledge Proof) 으로 A가 올바른 Blum 정수를 전달했음을 따로 증명해야 한다.
-
B의 선택 편향: B는 인 를 에서 균등하게 뽑아야 한다. 분포가 치우치면 A가 쌍을 더 잘 추측하고, 이면 근이 넷이 아니게 되어 A가 이긴다.
-
중단 공격: 결과를 먼저 알게 된 쪽이 프로토콜을 끝까지 따르지 않고 끊어 버릴 수 있다. 승부 자체가 성립하지 않으므로, 중단을 손해로 만드는 규칙이 프로토콜 밖에 있어야 한다.
-
단일 비트 보장: 이 프로토콜은 한 번의 동전 던지기만 보장한다. 여러 번 반복하려면 확장이 필요하다.
관련 개념
Rabin 암호화: 이 프로토콜과 동일한 수학적 구조를 사용한다. 공개 키 로 암호화하고(), 비밀 키 로 복호화한다. Rabin 암호화의 보안은 소인수분해 문제와 수학적으로 동등 함이 증명되어 있다.
Blum-Blum-Shub (BBS) 난수 생성기: Blum 정수 와 초기값 으로부터 을 반복해 난수를 생성하는 암호학적으로 안전한 의사난수 생성기다. 이 프로토콜과 동일한 이차잉여 구조를 기반으로 한다.
출처
- Emory University Math Center — Flipping Coins on the Phone
- 소인수분해의 어려움을 공정성의 수학적 근거로 삼는 암호 프로토콜이다.
- 커밋먼트 구조: B는 으로 에 먼저 커밋하고, A는 4개의 근 중 어느 것을 보낼지 알 수 없다.
- 4개의 근을 모두 아는 것 을 소인수분해하는 것은 수학적으로 동등하다 — 보안의 핵심 근거다.
- 이 구조는 Rabin 암호화, BBS 난수 생성기의 수학적 기반과 동일하다.
집합의 크기(Cardinality) — 무한집합에도 크기가 있을까? 자연수·정수·유리수·실수의 크기를 비교하고, 칸토어의 대각선 논법을 통해 더 큰 무한이 존재함을 증명한다.