하드웨어 엔트로피 소스를 활용한 진정한 난수 생성(TRNG)의 물리적 원리

📅 February 7, 2026 👤 Floyd Owen
물리적 현상에서 순수한 난수를 생성하는 마이크로칩의 추상적인 클로즈업 시각화로, 양자 효과와 열 노이즈를 활용한 하드웨어 난수 생성의 핵심 개념을 설명합니다.

하드웨어 엔트로피 소스의 물리적 기반: TRNG의 핵심

소프트웨어 기반 의사 난수 생성기(PRNG)는 결정론적 알고리즘에 의존합니다. 시드(Seed) 값을 알면 이후 모든 난수를 예측할 수 있어 암호학적 키 생성에는 근본적 취약점이 존재합니다. 진정한 난수 생성기(True Random Number Generator, TRNG)는 이 문제를 물리적 세계의 본질적 불확실성, 즉 엔트로피를 활용하여 해결합니다. 하드웨어 엔트로피 소스는 예측이 불가능한 아날로그적 잡음을 디지털 난수 비트열로 변환하는 장치입니다.

물리적 현상에서 순수한 난수를 생성하는 마이크로칩의 추상적인 클로즈업 시각화로, 양자 효과와 열 노이즈를 활용한 하드웨어 난수 생성의 핵심 개념을 설명합니다.

주요 하드웨어 엔트로피 소스의 작동 원리

각 소스는 고유한 물리적 현상을 기반으로 하며, 시스템의 보안 요구사항과 예산에 따라 선택됩니다. 단일 소스에 의존하기보다는 여러 소스를 결합하여 엔트로피 품질과 생산량을 극대화하는 것이 일반적입니다.

반도체 공정 잡음: 가장 보편적인 내장형 소스

현대 CPU나 전용 보안 칩 내부에 직접 구현되는 방식입니다. 추가 하드웨어 비용이 거의 들지 않아 대부분의 컴퓨터와 스마트폰에 내장되어 있습니다.

  1. 열 잡음(Johnson-Nyquist Noise): 도체 내부의 자유 전자가 열 에너지에 의해 무작위 운동을 하여 발생하는 미세 전압 변동입니다. 저항기 양단에서 이 잡음을 측정합니다. 온도에 비례하므로 예측 가능해 보일 수 있으나, 개별 전자의 운동은 양자 수준에서 본질적으로 무작위입니다.
  2. 반전층 잡음(Flicker Noise, 1/f Noise): 반도체 채널에서 캐리어(전자 또는 정공)의 포획과 방출 과정에서 발생하는 낮은 주파수 대역의 잡음입니다. 공정 불완전성에 크게 의존하기 때문에 예측 모델링이 극도로 어렵습니다.
  3. 방사성 붕괴 잡음(일부 고급 칩): 칩 패키지 내 미량의 방사성 동위원소(예: 니켈-63) 붕괴에서 발생하는 알파 입자를 검출하여 활용합니다. 이는 외부 환경에 거의 영향을 받지 않는 매우 순수한 엔트로피 소스입니다.

양자 광학 현상: 최고 수준의 엔트로피 품질

양자 역학의 근본적 불확정성 원리에 직접 기반한 소스로, 이론적으로 예측이 완전히 불가능합니다. 고가의 독립형 장비나 연구용, 군용 시스템에 주로 활용됩니다.

  1. 단일 광자 검출기의 사건 간격: 매우 약한 광원에서 단일 광자가 광검출기에 도달하는 시간 간격은 양자적 확률에 따라 결정됩니다, 이 간격을 측정하여 난수 비트를 생성합니다.
  2. 진공 상태의 양자 요동: 완전한 진공 상태라도 에너지가 절대적인 영(0)이 아닌 양자 요동이 존재합니다. 이 요동을 초고감도 광학 검출기로 측정할 수 있습니다.
  3. 광학 분기기 빔 스플리터: 단일 광자가 빔 스플리터(광학적 반투명 거울)에 입사했을 때, 반사될지 투과될지는 순전히 양자 확률적 사건입니다. 이를 두 개의 검출기로 판별하여 ‘0’ 또는 ‘1’을 생성합니다.

아날로그-디지털 변환기(ADC) 잡음

마이크나 온도 센서 등 정밀 측정용 ADC의 최하위 비트(LSB)를 샘플링하는 방법입니다. 센서 자체의 신호보다는 ADC 변환 과정에서 발생하는 양자화 잡음 및 내부 증폭기 잡음을 활용합니다.

  1. 고해상도(예: 24비트) ADC를 준비합니다.
  2. ADC 입력을 접지 또는 안정된 기준 전압에 연결합니다. 이론적으로는 일정한 디지털 값이 출력되어야 합니다.
  3. 한편 구체적으로는 내부 열 잡음과 양자화 오차로 인해 출력값의 최하위 몇 비트가 무작위로 요동합니다, 이 비트들을 주기적으로 수집합니다.
컴퓨터 칩의 단면 구조를 보여주며 전기적 잡음과 열적 변동이 하드웨어 엔트로피의 원천으로 작용하는 과정을 설명하는 상세한 다이어그램입니다.

엔트로피 수집에서 난수 출력까지: 신호 처리 체인

원시 엔트로피 신호는 편향되거나 상관관계가 있을 수 있습니다. 이를 암호학적으로 안전한 균일 분포의 난수로 가공하는 과정이 필수적입니다.

  1. 샘플링: 아날로그 잡음 신호를 정해진 샘플링 주기로 측정하여 디지털 값(예: 16비트 정수)으로 변환합니다.
  2. 주요 문제: 샘플링 주기가 너무 빠르면 연속된 샘플 간에 상관관계가 생길 수 있습니다. 잡음 대역폭과 나이퀴스트 주파수를 고려하여 주기를 설정해야 함.
  3. 소스 결합: 단일 소스의 결함을 보완하기 위해 여러 엔트로피 소스(예: 링 오실레이터 잡음 + ADC 잡음)의 출력을 XOR 또는 해시 함수를 통해 결합합니다. 한 소스가 공격당하거나 고장나도 시스템 전체의 엔트로피는 유지됩니다.
  4. 편향 제거(압축): 원시 비트열이 ‘0’과 ‘1’의 출현 확률이 정확히 50%가 아닐 수 있습니다. 이를 해결하기 위해 폰 노이만 편향 제거기나 암호학적 해시 함수(SHA-2, SHA-3)를 사용합니다.
    • 폰 노이만 방식: 비트 쌍(01은 ‘0’ 출력, 10은 ‘1’ 출력, 00/11은 출력 없음)을 처리합니다. 속도는 느리지만 추가적인 엔트로피 소모 없이 편향을 제거할 수 있습니다.
    • 해시 함수 방식: 수집된 원시 엔트로피 풀(예: 1024비트)을 해시 함수에 입력하여 고정 길이(예: 256비트)의 출력을 얻습니다. 이는 편향 제거와 동시에 예측 불가능성을 보장합니다.
  5. 엔트로피 풀 관리: 처리된 엔트로피는 커널의 엔트로피 풀(/dev/random 장치의 기반)에 지속적으로 공급됩니다. 애플리케이션은 /dev/random(엔트로피 풀이 부족하면 블로킹) 또는 /dev/urandom(블로킹 없이 해시 기반 출력 생성)을 통해 난수를 얻습니다.

시스템 적용 및 보안 고려사항

하드웨어 TRNG를 시스템에 통합할 때는 성능뿐만 아니라 공격 벡터를 고려한 설계가 필요합니다. 이는 본질적으로 과거 소프트웨어 방식의 알고리즘들이 가졌던 취약점을 보완하기 위한 과정이기도 합니다. 이러한 보안적 요구 사항이 어떻게 발전해 왔는지 이해하기 위해 컴퓨터 과학에서의 의사 난수 생성기(PRNG) 알고리즘의 역사적 변천사를 먼저 확인해 보는 것이 설계 방향을 잡는 데 도움이 됩니다.

공격 시나리오와 대응 방안

공격 1: 물리적 환경 조작. 공격자가 장치 온도를 극한으로 냉각시켜 열 잡음을 감소시키거나, 외부 전자기 간섭을 가하여 잡음 패턴을 왜곡할 수 있습니다.
대응: 온도/전압 센서를 장착하여 정상 작동 범위를 모니터링합니다. 범위를 벗어나면 엔트로피 수집을 중단하고 경고를 발생시킵니다. 여러 이종의 엔트로피 소스를 결합하여 단일 공격 경로를 차단합니다.

공격 2: 출력 예측 시도. 공격자가 초기 엔트로피 상태를 알기 위해 장치를 리셋한 후 처음 출력되는 난수열을 분석하려 할 수 있습니다.
대응: 장치 시작 시 자체 테스트(KAT, Known Answer Test)를 수행하고, 초기 엔트로피 풀을 안전하게 시드해야 합니다. 지속적 엔트로피 수집을 통해 풀의 상태를 빠르게 갱신하여 초기 상태의 영향력을 제거합니다.

공격 3: 백도어 삽입. 제조 과정에서 하드웨어나 펌웨어에 악성 회로/코드가 심어질 위험이 있습니다.
대응: 오픈소스 하드웨어 설계 및 검증 가능한 난수 생성 알고리즘 사용. 출력에 대한 통계적 테스트(NIST SP 800-90B)를 주기적으로 실행하여 비정상 패턴을 탐지합니다.

운영체제 수준 통합: Linux 예시

Linux 커널은 다양한 하드웨어 엔트로피 소스를 통합하는 프레임워크를 갖추고 있습니다. 하드웨어 드라이버는 엔트로피 소스로부터 수집한 데이터를 add_hwgenerator_randomness() 또는 add_device_randomness() 함수를 통해 커널 엔트로피 풀에 주입하며, 커널은 RDRAND/RDSEED 명령어(Intel/AMD CPU 내장 TRNG)가 사용 가능하면 이를 우선적으로 사용합니다.

사용자 공간에서는 /dev/hwrng 장치 파일을 직접 읽어 하드웨어 원시 엔트로피에 접근할 수 있으나, 대부분의 애플리케이션은 편향 제거 등 처리가 완료된 /dev/random 또는 /dev/urandom을 사용합니다. 타 운영체제의 난수 생성 방식과 대조한 보안 아키텍처 비교 자료를 검토해 보면, 리눅스의 이러한 설계는 하드웨어와 소프트웨어 엔트로피를 계층적으로 혼합하여 난수의 엔트로피 밀도를 극대화하는 데 최적화되어 있습니다.

중요 체크포인트: 가상화 환경(VM)에서는 호스트 머신의 엔트로피를 게스트 VM과 공유하는 메커니즘(예: VirtIO RNG)이 필수적입니다. 그렇지 않으면 여러 VM이 동일한 소프트웨어 상태에서 시작되어 난수 품질이 심각하게 저하될 수 있습니다.

전문가 팁: 엔트로피 풀 건강 상태 모니터링
Linux 시스템에서 cat /proc/sys/kernel/random/entropy_avail 명령어로 현재 사용 가능한 엔트로피 비트 수를 확인할 수 있습니다. 이 값이 지속적으로 2000 미만으로 낮다면, 시스템의 난수 생성이 블로킹되거나(/dev/random 사용 시) 소프트웨어 폴백에 과도하게 의존할 수 있습니다, 해결책은 haveged 또는 rng-tools 같은 사용자 공간 엔트로피 데몬을 설치하여 하드웨어 엔트로피 수집을 보조하거나, 애플리케이션 레벨에서 /dev/urandom 사용을 검토하는 것입니다. 단, /dev/urandom은 부팅 직후를 제외하면 현대 Linux 커널에서 암호학적으로 안전합니다.

관련 레시피