AMD CPUのrdrandが0を生成できないバグ疑惑
원제: AMD's random number generator can't generate a 0?
왜 중요한가
rdrand/rdseed는 암호화 및 보안 애플리케이션에 광범위하게 사용되며, 특정 값의 배제는 난수 분포를 왜곡해 보안 취약성으로 이어질 수 있다.
2026年5月11日、アセンブリプログラマーのJessé氏がフォーラムで報告。AMD製CPU(Zen2が疑わしい)のrdrand/rdseed命令で16ビットモードを使用した場合、0が一切生成されないバグ疑惑が浮上した。同じコードをIntelプロセッサで実行すると0が正常に生成される。テスト用アプリが公開され、141回ダウンロードされている。
브라질의 어셈블리 개발자 Jessé는 차트 렌더링 코드 작성 중 우연히 AMD 프로세서에서만 발생하는 이상 현상을 발견했다. rdrand와 rdseed 명령어를 16비트 레지스터에 직접 사용하면, AMD CPU에서는 결과값이 절대 0이 되지 않는다는 것이다. 동일한 코드를 Intel 프로세서에서 실행하면 0이 정상적으로 출력된다.
발견 경위는 bar 차트 애플리케이션에서 첫 번째 바(0의 발생 횟수를 표시)가 AMD 호스트에서 색상이 변하지 않는다는 점이었다. rdrand(빨강), rdseed(파랑)를 담당하는 바가 완전히 정적인 반면, Jessé가 자체 개발한 TSC 기반 난수 생성 방식(초록)에서는 0이 정상 출력된다.
임시 해결책도 함께 제시됐다. rdrand와 rdseed를 32비트 또는 64비트 레지스터로 생성한 뒤, 하위 16비트 데이터만 그래프 표시에 사용하면 0이 나타난다. 즉, 16비트 전체가 0이 되는 '진짜 0'은 AMD에서 나오지 않지만, 상위 비트 포함 32/64비트 출력의 하위 16비트가 0이 되는 경우는 발생한다는 것이다.
포럼 참여자 revolution은 "AMD가 0을 난수로 인정하지 않기로 결정한 것이 아니길 바란다"며 냉소적인 반응을 보였다. 보안 전문가 sylware는 "하드웨어 가속 암호화를 절대 사용하지 말라는 경험칙이 있었다"고 언급했다. Jessé는 AMD에 이메일로 문의할 계획이며, 답변을 받으면 포럼에 공유하겠다고 밝혔다.