유사난수

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

유사난수(pseudorandom number)는 난수를 흉내내기 위해 알고리즘으로 생성되는 값을 가리킨다. 이때 유사난수를 생성하는 알고리즘을 유사난수 생성기(pseudorandom number generator, PRNG)로 부른다.

유사난수는 알고리즘의 상태에 의해 값이 정해지므로 생성된 수열은 일정한 주기를 가지며, 따라서 난수의 예측 불가능성을 가질 수 없다. 예측 불가능성이 필요한 경우 하드웨어와 같이 외부 신호를 이용하는 하드웨어 난수 생성기를 사용한다.

유사난수는 몬테카를로 방법과 같은 확률 계산에 사용되며, 암호학에서도 중요하게 사용된다.

암호학적으로 안전한 유사난수 생성기[편집]

암호학에서는 암호학적으로 안전한 유사난수 생성기(cryptographically secure PRNG), CSPRNG를 사용한다. CSPRNG는 일반적인 유사난수와 비교하여 몇 가지 암호학적 성질을 만족해야 하며, 이는 암호학적으로 안전한 유사난수가 난수열의 일부를 관측했을 때 나머지를 예측하는 것이 힘들어야 하기 때문이다.

암호학적으로 안전한 유사난수 생성기에는 스트림 암호, 블록 암호(OFB/CTR 운용 모드 사용) 등 암호화 알고리즘을 이용한 방법, 블룸 블룸 슙처럼 안정성이 수학적으로 증명된 알고리즘이 존재하며, 이외에도 Yarrow 알고리즘과 같이 유사난수 생성기와 외부 난수 신호를 결합하여 보안성을 높이는 방법이 존재한다.