1편에서 우리는 사다리타기부터 아파트 청약까지,
우리가 일상에서 접하는 거의 모든 추첨이 조작에 얼마나 취약한지 확인했습니다.
그렇다면 질문이 남습니다.
"디지털 세상에서 완벽한 무작위(Randomness)라는 게 존재하기는 할까요?"
결론부터 말씀드리면, 여러분이 사용하는 컴퓨터는 단 한 번도 '진짜 무작위'를 생성해 본 적이 없습니다.
우리가 신뢰해 온 수학과 컴퓨팅 알고리즘 역시 정교하게 설계된 ‘공동의 환상’ 위에서 작동하고 있을 뿐입니다.

1. 의사난수(PRNG): 규칙을 숨긴 정교한 마술
컴퓨터는 본질적으로 결정론적 기계(Deterministic Machine)입니다.
동일한 입력값과 명령어를 넣으면 언제 어디서나 100% 동일한 출력을 내놓도록 설계되어 있습니다.
이런 기계에게 "아무 생각 없이 완전 무작위로 숫자 하나를 뽑아봐"라고 시키는 것 자체가 불가능한 요구입니다.
그래서 개발자들은 의사난수 생성기(PRNG, Pseudo-Random Number Generator)라는 묘수를 만들었습니다.
{Next State} = (A X {Current State} + C) (mod M)
위 식은 가장 단순한 형태의 난수 생성 공식 중 하나인 '선형 합동법(LCG)'입니다.
초기값인 시드(Seed)를 넣으면, 정해진 수학 공식에 따라 마치 무작위처럼 보이는 숫자 열을 쏟아냅니다.
[ 시드값 (Seed: 예) 12345 ]
>>> 수학 공식 │ (정해진 연산 과정)
>>> [ 출력 수열: 48, 12, 99, 03, 71... ]
문제는 시드(Seed)값과 공식을 알고 있다면, 앞으로 나올 수천만 개의 난수를 100% 예측할 수 있다는 점입니다.
시스템 관리자가 추첨 시작 직전, 특정 당첨 번호가 나오도록 시드값을 고의로 세팅해 둔다면 어떨까요?
대중에게는 완벽한 무작위 추첨처럼 보이지만,
실제로는 이미 결과가 출력표로 찍혀 나온 영화 상영을 보고 있는 것에 불과합니다.
2. 하드웨어 난수(TRNG)의 배신: 물리적 세계도 믿을 수 없습니다
알고리즘의 한계를 깨기 위해 등장한 것이 진짜 난수 생성기(TRNG, True Random Number Generator)입니다.
컴퓨터 내부의 열 잡음(Thermal Noise), 대기 중의 전자기적 노이즈, 혹은 양자역학적 붕괴 현상 등
자연계의 예측 불가능한 물리 현상을 측정해 난수를 만드는 방식입니다.
"자연 현상을 이용하니 이제 완벽하고 안전하겠네?" 라고 생각하셨다면 천만의 말씀입니다.
TRNG 역시 심각한 두 가지 허점을 가집니다.
-
측정 장치의 조작 (Hardware Backdoor):
자연 현상은 무작위일지 몰라도, 그 현상을 측정해서 디지털 0과 1로 변환하는 '센서와 칩셋'은 사람이 만듭니다.
하드웨어 제조 단계에서 칩 내부 로직을 미세하게 변경해 특정 패턴의 난수만 출력되도록 백도어를 파놓는다면,
사용자는 이를 감지할 방법이 없습니다. -
검증 불가능성 (Unverifiability):
TRNG로 나온 숫자가 "정말 자연 현상에서 나온 건지", 아니면 "누군가 미리 준비해둔 숫자 목록에서 나온 건지"
제3자가 사후에 검증할 길이 없습니다. 결과값만 달랑 출력되기 때문입니다.
3. 아무도 믿지 않고 증명하는 법: 암호학의 반격
결국 기존 추첨의 핵심 문제는 "추첨 주체가 제공하는 결과를 무조건 믿어야 한다(Trust)"는 점에 있습니다.
현대 암호학은 이 '신뢰'를 '수학적 검증(Verification)'으로 대체하려는 시도를 시작했습니다.
누군가를 믿을 필요 없이, 결과가 나오자마자 누구나 1초 만에 조작 여부를 계산해 볼 수 있게 만드는 것입니다.
① 커밋먼트 기법 (Commitment Scheme)
카지노 딜러가 카드를 섞은 뒤, 결과가 적힌 종이를 상자에 넣고 열쇠로 잠근 채 손님들 눈앞에 내놓는 것과 같습니다.
[1단계: 커밋 (Commitment)]
추첨 관리자 ──(비밀 난수 + 시드) >>> [ 해시 함수 (SHA-256) ] >>>. [ 해시값 공개 ] (수정 불가한 봉인)
[2단계: 공개 및 검증 (Reveal & Verify)]
추첨 완료 후 ──(원본 데이터 공개). >>> 누구나 해시값 재계산. >>> 공개된 해시값과 일치 여부 검증
-
커밋(Commit): 관리자는 추첨에 사용할 난수와 시드값을 미리 정한 뒤, 이를 암호화 해시 함수로 비벼 만든 '해시값(Commitment)'을 사전에 대중에 공개합니다. 해시값만 보고는 원본 난수를 역산할 수 없습니다.
-
개방(Reveal): 추첨이 끝난 후, 관리자는 원본 난수를 공개합니다.
-
검증(Verify): 대중은 공개된 원본 난수를 직접 해시 함수에 넣어 사전에 공개됐던 해시값과 정확히 일치하는지 확인합니다.
이 방식을 쓰면 관리자가 추첨 중간에 슬그머니 난수를 바꿀 수 없습니다. (이미 해시 값으로 비벼진 값은 공개됨)
바꾸는 순간 해시값이 완전히 달라져 조작이 즉시 폭로되기 때문입니다.
② 블록체인과 VRF (Verifiable Random Function)
더 나아가 중앙 관리자 자체를 없애기 위해 블록체인 네트워크를 활용합니다.
대표적인 기술이 검증 가능한 난수 생성 함수(VRF)입니다.
단 한 명의 서버가 난수를 만드는 것이 아니라, 네트워크에 참여한 수많은 검증 노드들이 암호화 징표를 교합하여 난수를 생성합니다.
이 난수는 결과가 나오기 전까지는 누구도 예측할 수 없고(Unpredictable),
결과가 나온 후에는 누구나 그것이 정당하게 생성되었음을 수학적으로 증명(Verifiable)할 수 있습니다.
4. 완벽한 추첨을 향한 남겨진 질문
암호학적 기법과 블록체인 VRF의 도입으로 인류는 비로소 '조작 불가능한 추첨'의 문턱까지 다다랐습니다.
하지만 기술이 완벽해진다고 해서 현실의 추첨 문제가 모두 해결될까요?
검증 코드가 너무 어려워서 일반 대중이 암호학적 증명을 이해하지 못하고 외면한다면 어떻게 될까요?
다음 편에서는 기술적 완벽함을 넘어, 인간의 욕망과 제도가 얽힌 현실 세계에서
'완벽한 공정함'을 완성하기 위한 마지막 열쇠를 다룹니다.