C++의 난수 엔진은 암호학적으로 안전하지 않다

Everything should be a random number generator

cppreference의 C++ 난수 라이브러리 문서는 균등 난수 비트 생성기와 분포를 정리한다. 선형 합동, Mersenne Twister, subtract-with-carry, 그리고 C++26에 추가된 Philox 엔진의 속도·상태 크기·주기 트레이드오프를 비교하고, 시드와 직렬화로 재현 가능한 시뮬레이션을 지원한다는 점을 설명한다. 다만 이 엔진들은 모두 암호학적으로 안전하지 않아 보안 용도에는 OpenSSL의 RAND_bytes 같은 암호 라이브러리를 써야 한다고 명시한다.

이 난수 엔진들은 어느 것도 암호학적으로 안전하지 않다. 보안이 필요한 작업이라면 그 목적에 맞는 암호 라이브러리(예: OpenSSL RAND_bytes)를 사용해야 한다.

이 날의 다른 글

2026-11-08