Toss Coin over Telephone

이 프로토콜은 Manuel Blum(1983) 이 제안한 암호학적 동전 던지기(Coin Flipping over Telephone) 프로토콜이다. 두 참여자가 물리적으로 만나지 않고도 공정한 내기를 할 수 있음을 보여준다.

이 포스트에서 다루는 내용
  • 만나지 않는 두 사람이 전화로 공정한 동전 던지기를 할 수 있는가
  • 이차 합동식 x2y(modn)x^2 \equiv y \pmod{n}nn의 소인수분해 없이는 풀기 어렵다는 성질
  • A와 B가 정보 비대칭 상태에서 합의에 이르는 프로토콜 흐름
  • 이 프로토콜이 보장하는 공정성의 수학적 근거

A와 B가 전화 통화를 하며 내기를 한다. A는 동전을 던지고, B는 A가 던진 동전의 면을 맞추는 내기이다. 당연히 A는 B가 말한 내용을 듣고 결과를 바꾸어 말할 수 있다. 공정하게 게임을 하기 위해서는 어떻게 해야 하는가?

핵심 아이디어: 이차 합동식 x2y(modn)x^2 \equiv y \pmod{n}nn을 소인수분해할 수 있으면 4개의 해를 구할 수 있지만, nn의 소인수를 모르면 풀기 어렵다는 수학적 성질을 이용한다.

참여자알고 있는 정보
Ap, q, np,\ q,\ n 모두
Bnn과 자신이 선택한 xx

프로토콜 흐름

프로토콜 흐름. A가 두 소수의 곱 n만 B에게 알리고, B는 비밀 x의 제곱 y를 보내고, A는 y의 네 제곱근 중 하나를 골라 돌려준다. 돌아온 값이 B가 아는 쌍 밖이면 B가 두 제곱근으로 n을 인수분해해 이기고, 같은 쌍이면 A가 이긴다
프로토콜 흐름. A가 두 소수의 곱 n만 B에게 알리고, B는 비밀 x의 제곱 y를 보내고, A는 y의 네 제곱근 중 하나를 골라 돌려준다. 돌아온 값이 B가 아는 쌍 밖이면 B가 두 제곱근으로 n을 인수분해해 이기고, 같은 쌍이면 A가 이긴다
  1. A는 다음을 만족하는 3 이상의 소수 p, q3(mod4)p,\ q \equiv 3 \pmod{4}를 고르고 B에게 n=pqn = pq를 전달한다. 이때 p,qp, q는 공개하지 않는다.

    • pq3(mod4)p \equiv q \equiv 3 \pmod{4} 조건은 이후 이차잉여의 제곱근 계산을 쉽게 만들기 위함이다. 이 조건을 만족하는 n=pqn = pqBlum 정수 라고 한다.
  2. B는 gcd(x,n)=1\gcd(x, n) = 1을 만족하는 xx1x<n1 \le x < n 범위에서 균등 무작위로 고른 뒤, yx2(modn)y \equiv x^2 \pmod{n}을 A에게 전달한다. 이때 xx는 공개하지 않는다.

    • gcd(x,n)=1\gcd(x, n) = 1이 빠지면 근이 넷이 아니게 된다. pxp \mid x이면 yymod p\bmod\ p에서 00이 되어 그쪽 제곱근이 하나뿐이라, yy의 근이 로 줄어든다. 그러면 A가 무엇을 보내든 B가 아는 쌍이라 A가 항상 이긴다. n=77n = 77짜리 예시에서는 xx22.1%22.1\%(7777개 중 1717개)가 여기에 해당한다. 실제 크기의 nn에서는 이런 xx를 뽑을 확률이 1/p+1/q1/p + 1/q 수준이라 무시할 만하지만, 조건 자체는 프로토콜의 일부다.
    • 균등 무작위여야 하는 이유는 따로 있다. B의 분포가 한쪽으로 치우쳐 있고 A가 그 사실을 알면, A는 B가 어느 쌍에 있을지 더 잘 추측해 1/21/2보다 유리해진다.
  3. A는 p,qp, q를 알고 있으므로, CRT(중국인의 나머지 정리) 를 이용하여 yx2(modn)y \equiv x^2 \pmod{n}의 네 근 ±x1, ±x2\pm x_1,\ \pm x_2를 구하고, 이 중 하나를 B에게 전달한다.

    • p3(mod4)p \equiv 3 \pmod{4} 조건 덕분에 rpy(p+1)/4(modp)r_p \equiv y^{(p+1)/4} \pmod{p}(modp)\pmod{p} 제곱근을 쉽게 구할 수 있다. (마찬가지로 rqy(q+1)/4(modq)r_q \equiv y^{(q+1)/4} \pmod{q})
    • CRT로 두 값을 합성하면 네 근 x1, nx1, x2, nx2x_1,\ n-x_1,\ x_2,\ n-x_2를 얻는다.
  4. B가 선택한 xxx1x_1 또는 nx1n - x_1과 같다고 가정하자.

    • A가 B에게 x2x_2 또는 nx2n - x_2를 전달하면: B는 서로 다른 두 제곱근 xxx2x_2를 모두 알게 된다. 이를 이용해 gcd(xx2, n)\gcd(x - x_2,\ n)을 계산하면 pp 또는 qq를 구할 수 있다. → B 승리
    • A가 B에게 x1x_1 또는 nx1n - x_1을 전달하면: B는 자신이 이미 아는 값만 얻게 되므로 p,qp, q를 구할 수 없다. → A 승리
  5. 따라서 B는 A로부터 받은 값으로 p,qp, q를 소인수분해할 수 있으면 B의 승리, 그렇지 않으면 A의 승리다.

    • A는 4개의 근 중 어느 것을 줄지 선택할 수 있지만, B의 xx를 모르기 때문에 자신에게 유리한 것을 고를 수 없다. 네 근은 두 쌍을 이루고 B는 그중 한 쌍 안에 있는데, A가 보는 yy만으로는 어느 쌍인지 구별할 수 없다.
    • 결과적으로 A가 이길 확률과 B가 이길 확률은 각각 1/21/2이다.
1/21/2이 정확히 성립하는 조건

이 확률은 무조건 나오는 값이 아니라 아래를 모두 전제한 값이다. 하나라도 빠지면 1/21/2이 흔들린다.

  • 파라미터가 정직하게 생성됐다. nn이 서로 다른 두 소수 pq3(mod4)p \equiv q \equiv 3 \pmod 4의 곱이어야 근이 정확히 넷이고 두 쌍으로 갈린다. 6단계에서 본 대로 이것은 제곱 검사로 확인되지 않는다.
  • B가 Zn\mathbb{Z}_n^*에서 균등하게 뽑았다. 2단계의 두 조건이다.
  • A가 어느 쌍인지 구별할 수 없다. yy만 보고 B의 쌍을 알아내는 것은 nn을 인수분해하는 것만큼 어렵다는 가정 위에 있다. 정보이론적으로 불가능한 것이 아니라 계산적으로 어려운 것이다.

중단은 막지 못한다. 위 확률은 두 참여자가 끝까지 프로토콜을 따를 때의 값이다. 진 쪽이 결과를 확인한 뒤 그냥 전화를 끊으면 승부가 성립하지 않는다. 이런 종류의 공정성을 강제하려면 중단에 대한 규칙이 프로토콜 밖에서 따로 있어야 한다.

  1. B는 A가 보낸 값 x1x_1에 대해 x12y(modn)x_1^2 \equiv y \pmod{n}이 성립하는지 확인한다. 다만 이 검사가 확인해 주는 것은 응답의 유효성뿐이다.
    • 성립하지 않으면 A가 제곱근이 아닌 값을 보낸 것이므로 그 자리에서 걸린다.
    • 성립하더라도 nn서로 다른 두 소수의 곱인지는 알 수 없다. 이 검사는 nn의 구조에 대해 아무것도 말해 주지 않는다.
    • 가장 단순한 반칙은 A가 nn소수로 보내는 것이다. 그러면 yy의 근은 ±x\pm x 둘뿐이라 B는 언제나 자기가 아는 값을 돌려받고, 보낸 값은 제곱 검사를 멀쩡히 통과한다. A가 100%100\% 이긴다. nn이 세 소수의 곱이면 근이 여덟 개가 되어 이번에는 B가 75%75\%로 유리해진다.
    • 따라서 nn이 Blum 정수라는 사실은 별도로 증명되어야 한다. 실무에서는 A가 영지식 증명으로 nn의 형태를 보인다. 아래 프로토콜의 한계에서 다시 다룬다.

수치 예시

작은 숫자로 프로토콜 전 과정을 직접 따라가보자.

준비

A의 선택 (비공개):

  • p=7p = 7, q=11q = 11 — 조건 확인: 73(mod4)7 \equiv 3 \pmod{4}, 113(mod4)11 \equiv 3 \pmod{4}
  • n=pq=77n = pq = 77 → B에게 공개

B의 선택:

  • x=15x = 15 (비공개)
  • yx2(modn)=152mod77=225mod77=71y \equiv x^2 \pmod{n} = 15^2 \bmod 77 = 225 \bmod 77 = 71 → A에게 전달

A가 4개의 근을 계산하는 과정

Step 1. (modp)\pmod{p} 제곱근 (rpr_p)

rpy(p+1)/4712(mod7)r_p \equiv y^{(p+1)/4} \equiv 71^{2} \pmod{7}

711(mod7)71 \equiv 1 \pmod{7}이므로 rp=12=1r_p = 1^2 = 1

(mod7)\pmod{7} 제곱근: ±1\pm 1 = 1166

Step 2. (modq)\pmod{q} 제곱근 (rqr_q)

rqy(q+1)/4713(mod11)r_q \equiv y^{(q+1)/4} \equiv 71^{3} \pmod{11}

715(mod11)71 \equiv 5 \pmod{11}이므로 rq=53=1254(mod11)r_q = 5^3 = 125 \equiv 4 \pmod{11}

(mod11)\pmod{11} 제곱근: ±4\pm 4 = 4477

Step 3. CRT로 네 근 합성

(mod7)\pmod{7}(mod11)\pmod{11}CRT 결과
1415
6448
1729
6762

검증: 152, 482, 292, 62215^2,\ 48^2,\ 29^2,\ 62^2을 모두 mod77\bmod 77하면 전부 7171

네 근은 두 쌍으로 묶인다: {15, 62}\{15,\ 62\}{29, 48}\{29,\ 48\}

결과 판정

B가 x=15x = 15를 골랐으므로, A가 받은 y=71y = 71의 네 근 중 같은 쌍은 {15, 62}\{15,\ 62\}이다.

A가 29 또는 48을 전달하는 경우 → B 승리

B는 자신의 x=15x = 15와 A로부터 받은 4848을 이용해 소인수분해 가능:

gcd(1548, 77)=gcd(33, 77)=11=q\gcd(15 - 48,\ 77) = \gcd(33,\ 77) = 11 = q

A가 15 또는 62를 전달하는 경우 → A 승리

B는 자신이 이미 아는 값을 받았을 뿐이므로, 새로운 정보를 얻지 못해 소인수분해 불가.

A는 어느 쌍이 B에게 유리한지 모르므로 결국 50% 확률로 선택하게 된다.


왜 공정한가?

보안 목표 요약
  • A의 속임 방지: A는 4개의 근 중 무엇을 보내야 B에게 불리한지 모른다. B의 xx를 알 방법이 없기 때문이다.
  • B의 속임 방지: B는 yy를 전달한 뒤 xx를 바꿀 수 없다. y=x2modny = x^2 \bmod n으로 이미 커밋되어 있다.
  • 안전성의 근거: 소인수분해 문제의 어려움. 비자명한 두 제곱근을 얻는 것과 nn을 소인수분해하는 것이 동등하다. 부호만 다른 쌍은 아무것도 주지 않는다.
  • 전제: 위 셋은 nn이 정직하게 생성된 Blum 정수이고 B가 Zn\mathbb{Z}_n^*에서 균등하게 뽑았을 때의 이야기다.

이 프로토콜의 안전성은 소인수분해 문제의 어려움 에 기반한다.

핵심 동등성:

x2y(modn)x^2 \equiv y \pmod{n}의 4개의 근을 모두 구할 수 있다 \Longleftrightarrow nn을 소인수분해할 수 있다.

증명 (⇐): n=pqn = pq를 알면 CRT로 4개의 근을 모두 구할 수 있다. (A가 하는 일)

증명 (⇒): 두 제곱근 x,xx, x'x≢±x(modn)x' \not\equiv \pm x \pmod n을 만족한다고 하자. 이 조건을 비자명한 쌍이라 부른다. x2x2x^2 \equiv x'^2이므로

n(xx)(x+x)n \mid (x - x')(x + x')

이다. x≢xx' \not\equiv x이므로 n(xx)n \nmid (x-x')이고, x≢xx' \not\equiv -x이므로 n(x+x)n \nmid (x+x')이다. 그런데 n=pqn = pq가 곱을 나누므로 ppqq가 두 인수에 하나씩 갈라져 들어간다. 따라서 gcd(xx, n)\gcd(x - x',\ n)11nn도 아닌 진약수, 즉 pp 또는 qq다.

x±xx' \equiv \pm x인 경우에는 gcd(xx,n)\gcd(x-x', n)nn 또는 11이 되어 아무것도 얻지 못한다. 비자명하다는 조건이 논증의 전부이고, 이것이 이 프로토콜에서 A의 선택이 하는 일이다.

환원의 성공 확률. “제곱근을 하나 돌려주는 상자”가 있다면 인수분해기를 만들 수 있다. gcd(x,n)=1\gcd(x,n)=1xx를 무작위로 골라 y=x2y = x^2을 상자에 넣으면, 상자는 yy의 네 근 중 하나를 돌려준다. 상자는 yy만 보므로 넷 중 어느 것이 우리가 쓴 xx인지 알 수 없고, 돌아온 값이 ±x\pm x가 아닐 확률이 1/21/2이다. 그때 gcd\gcd 한 번으로 인수가 나온다. 한 번에 실패해도 다시 시도하면 되므로, kk번 반복하면 실패 확률이 2k2^{-k}로 떨어진다. 한 번에 되는 결정적 환원이 아니라 확률적 환원이라는 점이 중요하다.

공정성 보장:

  • A는 B가 어떤 xx를 골랐는지 모르므로, B에게 유리한 쌍 (x2, nx2)(x_2,\ n-x_2)을 골라줄지, 불리한 쌍 (x1, nx1)(x_1,\ n-x_1)을 줄지 알 수 없다.
  • 결과적으로 A의 선택은 사실상 랜덤 이며, 각 참여자의 승률은 정확히 1/21/2이다.
  • 다만 이 값은 앞서 나열한 전제 위에서만 성립한다. 파라미터가 정직하게 생성됐고, B가 균등하게 뽑았으며, A가 yy만으로 쌍을 구별할 수 없다는 계산적 가정이 유지될 때다. 그리고 어느 쪽도 중간에 끊지 않아야 한다.

공격 시나리오

공격자시도왜 실패하는가
A제곱근이 아닌 값 전달B가 x12y(modn)x_1^2 \equiv y \pmod{n} 검증으로 탐지 가능
A결과 발표 직전 유리한 근 선택B의 xx를 모르므로 어느 쌍이 유리한지 알 수 없음
Bxx 사후 변경y=x2modny = x^2 \bmod n으로 이미 커밋 — 변경 불가
ABlum 정수 아닌 nn 사용제곱 검증으로는 탐지되지 않는다. nn이 소수면 근이 둘뿐이라 A가 항상 이긴다. 영지식 증명이 따로 필요하다

용어 정리

이차잉여 (Quadratic Residue) x² ≡ a (mod n)을 만족하는 정수 x가 존재할 때, a를 n의 이차잉여라 한다.
Blum 정수 p ≡ q ≡ 3 (mod 4)를 만족하는 두 소수의 곱 n = pq. 제곱근 계산 공식을 정수 지수로 쓸 수 있게 해준다.
CRT (중국인의 나머지 정리) 서로소인 모듈러스의 연립 합동식을 유일하게 풀어주는 정리. (mod p)와 (mod q)의 근을 합성해 (mod n)의 4개 근을 구할 때 사용한다.
커밋 (Commit) 값을 숨겨두되 나중에 공개·검증할 수 있게 하는 암호학적 약속. 이 프로토콜에서 y는 x에 대한 커밋이다.

이차잉여 (Quadratic Residue)

정의: 정수 aann이차잉여 라는 것은, x2a(modn)x^2 \equiv a \pmod{n}을 만족하는 정수 xx가 존재함을 의미한다.

소수 모듈러스에서의 제곱근 개수:

  • 소수 pp에 대해, a≢0(modp)a \not\equiv 0 \pmod{p}인 이차잉여 aa의 제곱근은 정확히 2개 (±r\pm r)이다.

합성수 모듈러스에서의 제곱근 개수:

  • n=pqn = pq (p,qp, q: 서로 다른 소수)일 때, yynn의 이차잉여이면 x2y(modn)x^2 \equiv y \pmod{n}의 해는 정확히 4개 (x1, nx1, x2, nx2x_1,\ n-x_1,\ x_2,\ n-x_2)이다.
  • yy가 이차잉여가 아니면 해가 없다.
  • 이는 CRT에 의해 (modp)\pmod{p}의 해 2개와 (modq)\pmod{q}의 해 2개를 조합하기 때문이다.
  • 핵심: nn의 소인수를 알면 4개의 근을 모두 구할 수 있지만, 모르면 하나의 근에서 나머지를 유추하기 어렵다.

p3(mod4)p \equiv 3 \pmod{4}인가?

(modp)\pmod{p} 제곱근을 구하는 공식 rpy(p+1)/4(modp)r_p \equiv y^{(p+1)/4} \pmod{p}가 성립하는 이유를 확인해보자.

전제 조건: pp가 소수이고, yypp의 이차잉여이면, Euler’s Criterion 에 의해 다음이 성립한다.

y(p1)/21(modp)y^{(p-1)/2} \equiv 1 \pmod{p}

검증:

(y(p+1)/4)2=y(p+1)/2=y(p1)/2y1y=y(modp)\left(y^{(p+1)/4}\right)^2 = y^{(p+1)/2} = y^{(p-1)/2} \cdot y \equiv 1 \cdot y = y \pmod{p}
  • 즉, rp=y(p+1)/4r_p = y^{(p+1)/4}는 실제로 yy(modp)\pmod{p} 제곱근이 맞다.
  • 단, 이 공식이 정수 가 되려면 (p+1)/4(p+1)/4가 정수여야 하므로, p3(mod4)p \equiv 3 \pmod{4} 조건이 필요하다.
    • p1(mod4)p \equiv 1 \pmod{4}이면 (p+1)/4(p+1)/4가 정수가 아니므로 이 방법을 쓸 수 없다.

프로토콜의 한계

  1. A의 Blum 정수 미준수: 6단계의 제곱 검사는 응답이 yy의 제곱근인지만 확인할 뿐, nn의 구조는 건드리지 못한다. A가 nn을 소수로 보내면 근이 ±x\pm x 둘뿐이라 B는 늘 자기가 아는 값을 돌려받고, 그 값은 검사를 그대로 통과한다. A가 100%100\% 이긴다. 이를 막으려면 영지식 증명(Zero-Knowledge Proof) 으로 A가 올바른 Blum 정수를 전달했음을 따로 증명해야 한다.

  2. B의 xx 선택 편향: B는 gcd(x,n)=1\gcd(x,n)=1xxZn\mathbb{Z}_n^*에서 균등하게 뽑아야 한다. 분포가 치우치면 A가 쌍을 더 잘 추측하고, gcd(x,n)1\gcd(x,n) \neq 1이면 근이 넷이 아니게 되어 A가 이긴다.

  3. 중단 공격: 결과를 먼저 알게 된 쪽이 프로토콜을 끝까지 따르지 않고 끊어 버릴 수 있다. 승부 자체가 성립하지 않으므로, 중단을 손해로 만드는 규칙이 프로토콜 밖에 있어야 한다.

  4. 단일 비트 보장: 이 프로토콜은 한 번의 동전 던지기만 보장한다. 여러 번 반복하려면 확장이 필요하다.


관련 개념

Rabin 암호화: 이 프로토콜과 동일한 수학적 구조를 사용한다. 공개 키 n=pqn = pq로 암호화하고(cm2(modn)c \equiv m^2 \pmod{n}), 비밀 키 p,qp, q로 복호화한다. Rabin 암호화의 보안은 소인수분해 문제와 수학적으로 동등 함이 증명되어 있다.

Blum-Blum-Shub (BBS) 난수 생성기: Blum 정수 n=pqn = pq와 초기값 x0x_0으로부터 xi+1=xi2(modn)x_{i+1} = x_i^2 \pmod{n}을 반복해 난수를 생성하는 암호학적으로 안전한 의사난수 생성기다. 이 프로토콜과 동일한 이차잉여 구조를 기반으로 한다.

출처

핵심 정리: 전화로 동전 던지기
  • 소인수분해의 어려움을 공정성의 수학적 근거로 삼는 암호 프로토콜이다.
  • 커밋먼트 구조: B는 y=x2modny = x^2 \bmod n으로 xx에 먼저 커밋하고, A는 4개의 근 중 어느 것을 보낼지 알 수 없다.
  • 4개의 근을 모두 아는 것     \iff nn을 소인수분해하는 것은 수학적으로 동등하다 — 보안의 핵심 근거다.
  • 이 구조는 Rabin 암호화, BBS 난수 생성기의 수학적 기반과 동일하다.
다음 포스트

집합의 크기(Cardinality) — 무한집합에도 크기가 있을까? 자연수·정수·유리수·실수의 크기를 비교하고, 칸토어의 대각선 논법을 통해 더 큰 무한이 존재함을 증명한다.

© 2026 XsQuare01. Powered by GitHub Pages. · 방문자