483 / 691PRNG

Deterministic RNG

결정적 의사난수 생성기

결정적 생성기는 같은 상태와 입력으로 같은 결과를 반복합니다. 재현 가능한 테스트에 유용하지만 암호학적 안전성에는 적절한 메커니즘과 공격자가 모르는 비밀도 필요합니다.

Deterministic RNG는 고정된 알고리즘으로 수열을 만듭니다. 임의의 구현을 비교할 때 seed 일치만으로는 부족합니다. 알고리즘, 매개변수, 호출 순서, 추가 입력도 중요합니다. 결정적이라는 말은 취약함의 동의어도 안전성의 자동 증명도 아닙니다.

NIST SP 800-90A는 초기화, 생성, 재시딩을 갖춘 상태 기반 DRBG를 설명합니다. 재현성은 같은 메커니즘, 상태, 입력 순서에 적용됩니다. 원래 seed가 같아도 새로운 엔트로피나 다른 추가 입력은 출력을 바꿀 수 있습니다. [NIST SP 800-90A Rev. 1 — State, inputs and reseeding]

RFC 4086은 기존 시뮬레이션 생성기가 공격자에게 저항하지 못할 수 있다고 경고합니다. 암호학적으로 강한 수열은 출력 일부가 알려져도 예측하기 어려워야 합니다. 긴 주기나 통계 검정 통과만으로는 이 성질이 입증되지 않습니다. [RFC 4086 — Pseudorandom sequences and unpredictability]

libsodium randombytes_buf_deterministic()은 같은 seed에 같은 수열을 반환해 테스트에 유용합니다. 공개 테스트 seed는 다른 사람도 재현할 수 있습니다. 따라서 이런 입력은 실제 지갑의 비밀 자료가 아닙니다. [libsodium — Deterministic output and VM snapshots]

BIP32는 하나의 seed에서 키 트리를 만들며 파생 경로도 특정 가지를 결정합니다. 같은 seed와 경로를 복원하면 같은 키를 얻을 수 있습니다. 추가로 파생한 주소 자체가 원래 비밀에 독립적인 엔트로피를 더하지는 않습니다. [BIP32 — Hierarchical deterministic key derivation]

BIP39는 mnemonic과 passphrase에서 PBKDF2로 seed를 파생합니다. 같은 단어라도 다른 passphrase를 쓰면 다른 결과가 나옵니다. 복원 가능성은 단어 목록뿐 아니라 전체 입력과 후속 키 파생에 달려 있습니다. [BIP39 — Mnemonic and passphrase to seed]

RFC 6979는 비밀 키와 메시지에서 서명 값 k를 결정적으로 만듭니다. 이 문서는 키 쌍 생성 시 난수가 필요함을 명시적으로 유지합니다. 이 서명 단계에서 새 난수 입력을 제거해도 강한 초기 비밀의 필요성이 사라지지는 않습니다. [RFC 6979 — Deterministic signing and initial key generation]

libsodium은 가상 머신 스냅샷을 복원하면 생성기 출력이 반복될 수 있다고 경고합니다. 이는 의도적인 BIP32 키 복원과 다릅니다. 지갑 정체성 복원과 새로 요청한 값이 우연히 반복되는 일을 구분하세요. [libsodium — Deterministic output and VM snapshots] [BIP32 — Hierarchical deterministic key derivation]

알고리즘, 버전, 입력, 재시딩 동작, 예상 테스트 벡터를 기록하세요. 벡터 일치는 해당 예제를 확인할 뿐 실제 장치의 엔트로피 품질을 입증하지 않습니다. NIST SP 800-90A는 메커니즘과 입력 엔트로피 요건을 분리합니다. [NIST SP 800-90A Rev. 1 — State, inputs and reseeding]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 CSPRNG, Random Number Generator, HD Wallet, Seed Generation. 다음 항목에서도 이 글을 참조합니다 CSPRNG, COLDCARD RNG Incident (2026).

DOC · 001NIST SP 800-90A Rev. 1 — State, inputs and reseeding명세 ↗DOC · 002RFC 4086 — Pseudorandom sequences and unpredictability명세 ↗DOC · 003libsodium — Deterministic output and VM snapshots문서 ↗DOC · 004BIP32 — Hierarchical deterministic key derivation명세 ↗DOC · 005BIP39 — Mnemonic and passphrase to seed명세 ↗DOC · 006RFC 6979 — Deterministic signing and initial key generation명세 ↗
1차 출처 우선 · 투자 조언이 아닙니다