CS/정보보호

[정보보호] PRNG(Pseudorandom Number Generator)

k9yuw 2023. 11. 21. 18:36

Asymmetric Ciphers에 기반한 PRNG(Pseudorandom Number Generator)

비대칭 암호 알고리즘은 키 쌍(private key, public key)을 사용하여 데이터를 암호화 및 복호화한다. 이러한 알고리즘은 output이 키에 의존하기 때문에, 특정 input에 대해 동일한 output을 생성하지 않는다. 즉 암호화된 데이터는 외부에서 봤을 때 무작위로 보이게 된다.

 

이러한 무작위로 보이는 출력을 사용하여 난수를 생성하는 PRNG를 만들 수 있다. PRNGS란, deterministic 알고리즘을 사용해 pseudorandom number을 생성하는 프로그램이다. 이는 완전히 random 하지는 않지만, 많은 randomness tests를 통과할 수 있다. Asymmetric 알고리즘은 AES와 같은 Symmetric 알고리즘보다 훨씬 느려서 이를 PRNG로 사용하는 것은 주로 효율적이지 않으나, 키 생성을 위한 짧은 pseudorandom bit sequence(ex 암호화 키) 이 목적이라면 사용될 수도 있다. RSA, ECC는 Asymmetric 알고리즘을 기반으로 PRNG를 통해 난수를 생성하여 키를 구성한다.

 


Cryptography에서 Random Numbers의 사용

암호학적으로 안전한 난수는1) 통계적으로 uniformly distributed, independent 해야 하고 2) 현재 난수의 값이 previous values로부터 예측하기 어려워야 한다. True random numbers는 완전히 무작위로 발생하는 숫자로, 앞서 설명한 조건에 부합하는 보안성이 높은 난수를 제공한다. 

 

<사용>

1. Authentication 프로토콜에서 Nonces(Number used Onces)

: authentication 프로토콜에서 replay attack을 방지하기 위해 Nonce를 비밀번호 등의 정보와 결합하여 매번 다른 값을 생성하여 서버에 전송된다면, 이전에 사용된 값으로 인한 공격이 방지된다. 

2. Session Key: 무작위로 선택된 세션 키는 통신의 보안성을 강화한다. 이 때 이전 통신에서 사용된 키와 구별되어야 한다.

3. Public Key Generation: 공개 키 알고리즘에서는 무작위로 생성된 prime numbers를 사용하여 공개 키를 생성한다. 

 


Block Ciphers를 기반으로 한 PRNG

이는 master key를 통해 session key를 생성한다. master key는 보통 안전하게 공유되는 키로, 장기적 보안 키로 사용된다. session key는 좀 더 짧은 수명을 가지는 일시적 키로, 특정 통신 세션 동안만 유효하다. 보안 통신이 시작될 때, 마스터키를 사용하여 세션 키가 만들어지며 이렇게 만들어진 세션 키는 세션 종료 후 폐기된다. 

 

 

RSA를 기반으로 한 PRNG

 

ECC를 기반으로 한 PRNG

이는 dual elliptic curve PRNG라고도 알려져있으며, ECC가 이미 구현되어 있는 시스템에서 사용할 수 있다. 

dual elliptic curve 선택이 적절하지 않은 경우 보안, 효율성에 문제가 발생할 수 있다는 controversy가 있었다. 

 

 


관련 논문 (읽어보고 요약 추가할 것)