의사 난수
난수를 암호 응용 분야에서 생성 할 때는 보통 알고리즘 기법에 기초해서 생성한다.
이런 알고리즘은 입력 값을 알면 출력 값을 정확히 알 수 있고, 통계적으로는 무작위성을 갖지 못하는 수열을 생성한다.
하지만 생성된 수열이 여러 가지 무작위성 테스트를 무사히 통과 할 수 있는데 이런 수열을 보통 의사 난수라 표현한다.
진성 난수를 생성하는 방법으로는 보통 TRNG를 사용한다
의사 난수의 경우에는 PRNG를 사용한다
하드웨어적 난수 생성 방법(TRNG) - 진성 난수 생성
TRNG는 입력 값으로 실제 랜덤한 정보를 사용하는데 이 입력 값을 보통 엔트로피 소스라고 한다.
엔트로피 소스는 컴퓨터의 물리적 환경에서 얻을 수 있는 값으로 키 입력 타이밍 패턴, 디스크 전기 작용, 마우스 움직임, 시스템 클럭의 순간 값 등을 사용한다. 알고리즘의 입력으로 이런 값들 또는 이들의 조합을 사용하면 랜덤한 바이너리를 출력 할 수 있다.
TRNG는 유사한 값들을 단순히 변화시켜 입력으로 사용하고, 바이너리를 출력 하는 것이다.
소프트웨어적 난수 생성 방법 (PRNG) - 의사 난수 생성
PRNG에 입력 되는 값은 고정 된 값이다. 이런 고정된 입력 값을 보통 종자(seed)라고 하는데, 입력 값이 같으면 출력 값이 같게 되는 결정적 알고리즘을 이용해 비트열을 생성해낸다.
피드백 경로를 통해 알고리즘 출력 값이 다시 입력 값으로 사용되어 다른 비트열을 생성하기도 한다.
하지만, 출력 값이 입력 값에 따라 결정 되기 때문에, 공격자가 알고리즘과 종자 값을 알면 출력 비트 스트림을 정확히 알 수 있다.
이러한 의사 난수는 진성 난수와 비교할 때 무작위성이나 예측 불가능성 면에서 약할 수 있지만, 많은 암호화 애플리케이션에서 사용되며, 무작위성 테스트를 통과하는 데 충분합니다.
의사 난수 함수(PRF)
고정된 길이 의사 난수 비트열을 생성하는데 사용되는 함수이다.
예로는 대칭 암호 키와 비표에 이용 된다.
생성되는 비트열만 다르지 PRNG와 PRF는 차이점이 없다
이 두 경우 모두 동일한 알고리즘을 사용할 수 있다. 모두 입력 값으로 종자가 필요하고 출력 된 값은 무작위성과 예측 불가능 성을 가져야 한다.
PRNG와 PRF의 차이점
PRNG와 PRF의 주요 차이점은 생성되는 비트열의 길이와 용도입니다.
PRNG는 무한 길이의 비트열을 생성하며 대칭 스트림 암호와 같은 애플리케이션에서 사용됩니다.
반면, PRF는 고정된 길이의 의사 난수 비트열을 생성하며, 대칭 암호 키 생성이나 비밀 토큰에 사용됩니다.
이 두 경우 모두 동일한 알고리즘을 사용할 수 있으며, 입력 값으로 종자(seed)가 필요하고 출력 된 값은 무작위성과 예측 불가능성을 가져야 합니다.
그러나 PRF는 일반적으로 입력 값을 변경하여 다양한 길이의 출력을 생성하는 데 사용되는 반면,
PRNG는 일정한 길이의 출력을 생성하는 데 사용됩니다.
레퍼런스
- [[Notes/난수|난수]]
'Computer Science > Security' 카테고리의 다른 글
스트림 암호란 무엇인가 (0) | 2023.03.31 |
---|---|
난수란 무엇인가 (0) | 2023.03.31 |
AES (0) | 2023.03.29 |
3중 DES Overview (0) | 2023.03.29 |
DES Overview (0) | 2023.03.29 |