더북(TheBook)

다음은 토큰 생성기로 사용할 난수 생성기의 세 가지 분류입니다.

 

안전한 난수 생성기(Secure Random Number Generator, SRNG)

안전한 의사 난수 생성기(Secure Pseudo-Random Number Generator, SPRNG)

안전하지 않은 의사 난수 생성기(Weak Pseudo-Random Number Generator, WPRNG)

 

‘안전한 난수 생성기(SRNG)’는 토큰을 생성하는 ‘이론적으로 가장 안전한’ 방법입니다. 암호학 관점에서 충분히 안전한 난수를 토큰으로 사용하지요. 단, ‘안전하다’는 말은 ‘암호학적으로 안전하다’는 의미입니다. 엄밀히 말해 난수는 이상적인 개념이기 때문입니다. 진짜 난수는 현실에서 구현하기가 거의 불가능하므로 여기서 말하는 ‘암호학적으로 안전한’은 통계를 냈을 때 암시를 찾을 수 없는 정도를 의미합니다. 안전한 난수 생성기에서는 어떤 입력 값을 넣었을 때 항상 예측할 수 없는 새로운 값이 나와야 하며, 이전에 생성된 난수로 다음 난수를 추정하기가 불가능해야(충분히 어려워야) 합니다. 안전한 난수 생성기는 사용자가 암호화 키 같은 어떤 값을 입력하지 않아도 독립적으로 난수를 생성합니다(초기 입력 값도 정해져 있지 않고 생성 과정도 고정되지 않아야 진정한 난수라고 할 수 있습니다). 즉, 안전한 난수 생성기로 생성한 토큰은 ‘복호화가 불가능’하여 토큰의 기본 개념을 만족시킵니다. 여기서 복호화는 토큰과 매칭되는 원본을 얻거나 유추하는 것을 말합니다.

‘안전한 의사 난수 생성기(SPRNG)’는 안전한 난수 생성기의 대안입니다. 의사 난수(Pseudo-random Number)는 난수화를 수행하는 특정한 과정에 어떤 입력 값을 넣어 생성한 값입니다. 난수를 생성하는 방법이 정해져 있고 입력 값을 안다면 그다음 의사 난수를 예측할 수 있습니다. 컴퓨터의 난수 생성기로 생성된 ‘난수’는 엄밀히 말해 모두 ‘의사 난수’입니다. 의사 난수인 토큰이 주위 환경이나 입력 값에 독립된 안전한 의사 난수 생성기에서 생성된다면 그 토큰은 (암호학적으로) 안전하다고 할 수 있습니다. 토큰과 연결될 개인정보와 상관없이 얻은 값이고 이전의 다른 토큰과도 아무런 연관이 없기 때문입니다. 안전한 의사 난수 생성기 역시 안전한 난수 생성기처럼 ‘복호화가 불가능해야 한다’는 토큰의 기본 개념을 만족할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.