Mental Poker
신뢰 가능한 원격 포커게임
두 사람이 포커를 한다.
도박꾼이 그렇듯 자신이 할 수 있으면 최대한 상대를 속이고 싶어하기 때문에
서로 믿을 수 있는 안전한 방법으로 패를 떼고 싶다.
사전지식
🔑 Public Key
🗝 Private(Secret) Key
📝 Message
📝+🔑 = 🔒✉️ Encrypted
🔒✉️+🗝 = 🔓📝 Decrypted
📝+🗝 = 🔏✉️ Signed
🔏✉️ + 🔑 = 👤 Authenticated
🖤 4
여기 52장의 카드가 있다.
🖤 4
그리고 두 명의 플레이어도 있다.
🖤 4
먼저 이 카드를 한 사람이 전부 암호화한다.
이쪽
편의상A
편의상B
PkA(🖤4)
A의 비밀키로 해독 전엔
누구도 카드패를 알아볼 수 없다!
A
B
🗝
완전소듕
내 비밀키
마이프레ㅅ...
PkA(🖤4)
B가 카드 중 임의로 5개를 선택한다.
A
B
PkA(3), PkA(12), PkA(17),
PkA(23), PkA(41)
PkA
(🖤3)
PkA(🖤4)
B는 A의 비밀키(SkA)가
없으므로 패를 알 수 없다.
A
B
PkA(3), PkA(12), PkA(17),
PkA(23), PkA(41)
PkA
(🖤3)
?
PkA(🖤4)
B는 자신이 선택한 패를 A에게 준다.
A
B
PkA(3), PkA(12), PkA(17),
PkA(23), PkA(41)
PkA
(🖤3)
PkA(🖤4)
A는 자신의 비밀키(SkA)로
카드를 해독한다.
A
B
3, 12, 17, 23, 41
🖤3
🗝
PkA(🖤4)
A는 완료. 이제 B가 5장을 또 뽑는다.
A
B
3, 12, 17, 23, 41
🖤3
PkA(8), PkA(9), PkA(12),
PkA(39), PkA(50)
PkA
(🖤8)
PkA(🖤4)
여전히 B는 자신이 뽑은 패를 모른다.
A
B
3, 12, 17, 23, 41
🖤3
PkA(8), PkA(9), PkA(12),
PkA(39), PkA(50)
PkA
(🖤8)
?
PkA(🖤4)
하지만 이걸 A에게
그대로 주고 해독을 부탁하면?
A
B
3, 12, 17, 23, 41
🖤3
PkA(8), PkA(9), PkA(12),
PkA(39), PkA(50)
PkA
(🖤8)
해독점...
~_~
PkA(🖤4)
A가 B의 패를 다 알아버린다.
A
B
3, 12, 17, 23, 41
🖤3
8, 9, 12, 39, 50
🖤8
개꿀~
🗝
T-T
^0^
PkA(🖤4)
그러므로 A가 알 수 없게
B의 공개키로 이중 암호화한다.
A
B
3, 12, 17, 23, 41
🖤3
PkAPkB(8), PkAPkB(9), PkAPkB(12),
PkAPkB(39), PkAPkB(50)
PkAB
(🖤8)
PkA(🖤4)
이중 암호화한 카드를 전달,
A에게 해독해달라고 한다.
A
B
3, 12, 17, 23, 41
🖤3
PkAB
(🖤8)
해독점...
*_*
PkAPkB(8), PkAPkB(9), PkAPkB(12),
PkAPkB(39), PkAPkB(50)
PkA(🖤4)
A는 자신의 공개키에 대해선 풀어내지만 여전히 B의 개인키를 모른다.
A
B
3, 12, 17, 23, 41
🖤3
PkB
(🖤8)
~ㅅ~
PkB(8), PkB(9), PkB(12),
PkB(39), PkB(50)
'-' ;
PkA(🖤4)
줘도 못먹을 거 B에게 돌려준다.
A
B
3, 12, 17, 23, 41
🖤3
PkB
(🖤8)
PkB(8), PkB(9), PkB(12),
PkB(39), PkB(50)
PkA(🖤4)
B는 자신의 비밀키로 카드를 해독한다.
A
B
3, 12, 17, 23, 41
🖤3
🖤8
8, 9, 12, 39, 50
🗝
구라치다 걸리면 손? <3
Thank
You
Mental Poker
By Lee Jaeho
Mental Poker
- 1,018