Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

진정한 난수 생성기(TRNG)란 무엇일까? 원리와 랜덤성 소스 완벽 정리

진정한 난수 생성기(TRNG)란?

진정한 난수 생성기(True Random Number Generator, TRNG)는 비결정론적(nondeterministic) 소스를 이용해 무작위성을 만들어내는 장치입니다. 대부분의 TRNG는 예측이 불가능한 자연 현상을 측정하는 방식으로 동작하며, 대표적인 측정 대상으로는 방사선 활동의 펄스 검출기, 기체 방전관, 누설 커패시터 등이 있습니다.

인텔(Intel)은 구동되지 않은 저항 양단에 걸리는 전압을 샘플링하여 열잡음(thermal noise)을 추출하는 상용 칩을 개발한 바 있습니다. 이처럼 TRNG는 일반적으로 하드웨어 방식으로 구현되며, 물리적 현상에서 직접 난수를 얻습니다.

TRNG가 안전한 이유

TRNG가 생성하는 난수는 예측하기 매우 어렵습니다. 그 이유는 TRNG가 무작위 값을 만들어낼 때 예측 불가능한 물리적 소스를 기반으로 하기 때문입니다. 따라서 TRNG로부터 얻은 난수는 동일한 값을 재현하기 어려워 보안 관점에서 매우 안전한 접근 방식으로 평가됩니다.

컴퓨터에서 활용 가능한 진짜 랜덤성 소스

컴퓨터에서도 적절한 주의를 기울이면 진정한 무작위 시퀀스를 생성할 수 있는 다양한 랜덤성 소스를 활용할 수 있습니다.

1. 사운드/비디오 입력

많은 컴퓨터에는 마이크의 소리나 카메라의 영상 입력과 같은 실제 세계의 아날로그 신호를 디지털화하는 입력 장치가 내장되어 있습니다.

흥미로운 점은, 아무것도 연결되지 않은 사운드 디지타이저의 '입력' 값이나 렌즈 캡을 덮은 카메라의 입력 값이 사실상 열잡음이라는 것입니다. 시스템이 충분한 이득(gain)을 가지고 있어 미세한 신호까지 감지할 수 있다면, 이러한 입력만으로도 상당히 품질 좋은 랜덤 비트를 얻을 수 있습니다.

2. 디스크 드라이브

디스크 드라이브는 회전 속도에 작은 무작위 변동을 가지는 것으로 알려져 있으며, 이는 혼돈(chaotic)적인 공기 난류 때문에 발생합니다. 저수준(low-level) 디스크 탐색 시간(seek-time) 계측 기능을 활용하면 이러한 무작위성을 포함하는 일련의 측정값 시퀀스를 얻을 수 있습니다.

다만 이런 데이터는 일반적으로 상관관계가 매우 높기 때문에 상당한 후처리 과정이 필요합니다. 그럼에도 불구하고 약 10여 년 전의 실험 결과에 따르면, 적절한 처리를 거치면 당시의 느린 컴퓨터에 장착된 느린 디스크 드라이브조차 분당 100비트 이상의 우수한 품질의 무작위 정보를 생성할 수 있었습니다.

편향(bias) 제거를 위한 디스큐잉 알고리즘

TRNG는 출력에 특정 방식의 편향(bias)이 나타날 수 있습니다. 예를 들어 0보다 1이 더 많거나, 그 반대의 경우가 그렇습니다. 이러한 편향을 줄이거나 제거하기 위해 비트 스트림을 변환하는 다양한 방법이 개발되었으며, 이를 디스큐잉(de-skewing) 알고리즘이라고 부릅니다.

대표적인 디스큐잉 방법 중 하나는 비트 스트림을 해시 함수(hash function)에 통과시키는 것입니다. 해시 함수는 임의 길이의 입력으로부터 n비트 출력을 생성합니다. 디스큐잉을 위해서는 m ≥ n 조건을 만족하는 m비트 단위의 입력 블록을 해시 함수에 통과시키면 됩니다.

TRNG와 의사난수 생성기(PRNG)

TRNG는 하드웨어 기반이라 속도와 비용 측면에서 한계가 있으며, 반면 수식(formula) 기반의 의사난수 생성기(Pseudo Random Number Generator, PRNG)는 종류도 많고 활용도 쉽습니다. 참고로 TRNG는 물리적 소스뿐 아니라 비물리적(non-physical) 노이즈 소스도 활용할 수 있습니다.

논리 소자에서의 물리적 노이즈 소스

논리 소자(logic device)는 항상 명확한 상태(clear state)에 있어야 한다는 전제가 있기 때문에, 물리적 노이즈 소스의 활용에는 상당한 제약이 따릅니다. 그럼에도 난수를 생성하려면 통제할 수 없는 무작위 현상이 반드시 필요합니다.

논리 소자에서 난수 생성에 일반적으로 사용되는 물리적 현상은 다음과 같습니다.

  • 클록 지터(Clock Jitter) − 클록 엣지(clock edge)가 이상적인 위치에서 벗어나 발생하는 변동량입니다.
  • 메타안정성(Metastability) − 회로가 불명확한 상태를 정해지지 않은 시간 동안 유지할 수 있는 성질을 말합니다.
  • 혼돈(Chaos) − 초기 조건에 극도로 민감하게 반응하는 결정론적 시스템의 예측 불가능한 거동을 의미합니다.
  • 아날로그 신호(Analog Signals) − 다이오드의 샷 노이즈(shot noise), 열잡음(thermal noise) 등이 여기에 해당합니다.