# 예측 불가능성 (Unpredictability)

암호학에서 예측 불가능성(unpredictability)은 공격자가 지금까지 나온 출력과 공개된 정보를 모두 알더라도 다음 값을 우연보다 의미 있게 잘 맞힐 수 없는 성질입니다. 키, 논스, 솔트 같은 비밀 값을 만드는 난수 생성기가 갖춰야 할 핵심 요건입니다.

## 자세히 알아보기

이 성질을 형식적으로 표현한 것이 다음 비트 검정(next-bit test)입니다. 출력 비트열의 처음 l비트를 보고 (l+1)번째 비트를 1/2보다 의미 있게 높은 확률로 맞히는 다항 시간 알고리즘이 없으면 그 생성기는 검정을 통과합니다. 이를 통과하는 생성기를 암호학적으로 안전한 의사난수 비트 생성기(CSPRBG)라고 하며, 앤드루 야오(Andrew Yao)는 이 검정을 통과하는 것이 모든 다항 시간 통계 검정을 통과하는 것과 같다는 점을 보였습니다.

예측 불가능성은 "통계적으로 고르게 보이는 것"보다 강한 조건입니다. 일반 용도의 의사난수 생성기는 출력 분포가 고르더라도 몇 개의 출력으로 내부 상태를 알아낼 수 있어 이후 값을 모두 맞힐 수 있습니다. 암호학적으로 안전한 생성기도 결정적 알고리즘이므로, 그 예측 불가능성은 시드에 담긴 엔트로피와 시드가 비밀로 유지된다는 전제에 달려 있습니다. 시드가 짧거나 노출되면 출력 전체가 예측 가능해집니다.

일상에서 말하는 "예측하기 어려움"(날씨, 시장 가격)과는 구별해야 합니다. 암호학의 예측 불가능성은 계산 능력이 제한된 공격자를 전제로 정의되고 검정할 수 있는 개념입니다.

## 블록체인·암호화폐에서는

지갑의 개인 키와 시드는 난수 생성기에서 만들어지므로, 생성기가 예측 가능하면 키도 추측될 수 있습니다. ECDSA 서명에서는 서명마다 새로운 비밀 값(논스 k)이 필요하며, 같은 개인 키로 서로 다른 두 메시지에 같은 k를 쓰면 개인 키를 계산할 수 있습니다. 2013년 8월에는 Android의 SecureRandom 결함 때문에 일부 비트코인 지갑 앱이 같은 논스를 재사용했고, 블록체인에 공개된 서명을 분석한 공격으로 자금이 도난당했습니다. 이후 서명할 메시지와 개인 키로 k를 결정적으로 유도하는 RFC 6979 방식이 서명 시점의 난수 품질에 대한 의존을 줄이는 방법으로 널리 쓰입니다.

## 쉽게 말하면

공정한 동전을 아무리 오래 지켜보며 앞뒤를 기록해도 다음 결과를 맞힐 확률은 여전히 반반입니다. 지난 기록이 다음 결과에 대해 아무것도 알려 주지 않는 상태, 그것이 예측 불가능성입니다.

## 예시

128비트 키를 예측 불가능하게 만들면 가능한 키는 2^128가지이고, 공격자는 이를 하나씩 시도하는 것보다 나은 방법이 없습니다. 반대로 생성기의 시드가 현재 시각처럼 짐작 가능한 값이라면, 키의 길이와 상관없이 공격자는 그 시드 후보만 시험하면 됩니다.

---
출처: https://achivx.kr/glossary/unpredictable-%EC%98%88%EC%B8%A1-%EB%B6%88%ED%97%88/ · ACHIVX 용어 사전 · 수정일 2026-10-20
