CSPRNG는 암호학적 용도를 위한 결정적 생성기입니다. 의사난수라는 말이 취약함을 뜻하지는 않습니다. 명시한 가정 아래 공격자에게 저항하는 성질이 중요합니다. 알고리즘, 엔트로피 원천, 출력 사용 코드는 따로 평가해야 합니다.
RFC 4086은 암호학적으로 강한 수열과 일반 시뮬레이션 생성기를 구분합니다. 출력 일부를 안다고 나머지를 추측할 수 있어서는 안 됩니다. 통계 검정만으로는 이를 입증하지 못하며, 예측 가능한 seed는 복잡해 보이는 출력도 약화할 수 있습니다. [RFC 4086 — Cryptographically strong sequences]
NIST SP 800-90A Rev. 1은 Hash_DRBG, HMAC_DRBG, CTR_DRBG를 명세합니다. CSPRNG라는 표지가 모든 구현을 인증하지는 않습니다. 해시 함수 이름뿐 아니라 메커니즘, 매개변수, 엔트로피 획득 방식을 확인해야 합니다. [NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance]
Backtracking resistance는 현재 상태가 노출된 뒤에도 이전 출력을 보호합니다. Prediction resistance는 미래 출력과 관련되며 NIST SP 800-90A는 이를 새로운 엔트로피의 효과적인 투입과 연결합니다. 어느 한 성질도 다른 성질이나 단순한 다음 호출에 의한 회복을 자동으로 뜻하지 않습니다. [NIST SP 800-90A Rev. 1 — DRBG mechanisms and compromise resistance]
OpenSSL 3.5는 RAND_bytes()와 RAND_priv_bytes()가 성공 시 1, 기타 실패 시 0, 지원하지 않는 방식이면 -1을 반환한다고 명시합니다. 엔트로피 원천이 실패하면 생성을 거부할 수 있습니다. 앱은 확인하지 않은 버퍼를 사용하지 말고 결과를 검사해야 합니다. [OpenSSL 3.5 — RAND_bytes return values and errors]
libsodium randombytes_buf_deterministic()은 같은 seed로 같은 수열을 만들어 테스트 등에 유용합니다. 가상 머신 스냅샷을 복원하면 상태와 출력이 반복될 수 있습니다. 테스트 재현성이 복사본 사이의 독립적인 비밀을 보장하지는 않습니다. [libsodium — Random data and deterministic testing]
libsodium randombytes_uniform()은 단순 나머지 연산의 편향 없이 상한 미만에서 균등하게 선택합니다. 양질의 입력 바이트만으로 목표 범위에 올바르게 대응시킨다는 보장은 없습니다. 키는 해당 알고리즘의 규칙도 따라야 합니다. [libsodium — Random data and deterministic testing]
RFC 8439는 같은 키에서 nonce를 반복하지 않도록 요구하며, 무작위처럼 보인다고 유일성이 입증되지는 않습니다. 한편 RFC 6979는 서명 값 k를 결정적으로 만드는 방법을 설명합니다. 따라서 CSPRNG는 프로토콜 규칙의 만능 대체물이 아닙니다. [RFC 8439 — Nonce uniqueness] [RFC 6979 — Deterministic signing]
라이브러리 버전, 메커니즘, 초기화, 오류와 상태 복원·복제 후 동작을 기록하세요. OpenSSL과 libsodium 문서는 해당 함수들을 설명할 뿐 모든 지갑의 안전성을 설명하지 않습니다. 좋은 생성도 나중의 백업 유출을 막지는 못합니다. [OpenSSL 3.5 — RAND_bytes return values and errors] [libsodium — Random data and deterministic testing]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Cryptographic Entropy, Random Number Generator, Deterministic RNG, Seed Generation. 다음 항목에서도 이 글을 참조합니다 Dice Roll Entropy, Cryptographic Entropy, Random Number Generator, Deterministic RNG.