신기한 Hacker News · 2026-09-22

"AMD CPU에서는 0이 안 뽑힌다?" 하드웨어 난수 생성기 버그 의혹 제기

핵심 요약
  • 한 개발자가 AMD CPU에서 rdrand 및 rdseed 명령어로 16비트 난수를 생성할 때 숫자 0이 전혀 생성되지 않는 현상을 포착했습니다.
  • 인텔 프로세서에서는 0이 정상 출력되며, 32/64비트에서 하위 16비트를 추출할 때는 0이 나오지만 명령어 자체의 온전한 16비트 0은 나오지 않아 커뮤니티의 관심을 모았습니다.
  • 네티즌들은 "경영진이 0을 난수가 아니라고 착각해 막은 것 아니냐"는 황당한 추측부터 하드웨어 암호화의 신뢰성 문제까지 활발한 토론을 벌였습니다.
요약 어셈블리 프로그래밍 포럼 플랫 어셈블러(flat assembler)의 한 유저가 AMD 프로세서에서 기이한 난수 생성 버그를 발견했다는 글을 올려 커뮤니티에서 화제가 되었습니다. 작성자 Jessé는 콘솔 화면에 데이터를 차트로 렌더링하는 어셈블리 코드를 작성하면서 하드웨어 난수 생성 명령어인 'rdrand'와 'rdseed'를 테스트하던 중 우연히 이 현상을 포착했습니다. 작성자의 주장에 따르면, AMD 프로세서(특히 Zen 2 아키텍처로 추정) 환경에서 특정 크기(16비트 레지스터)로 난수를 생성하도록 요청했을 때 숫자 '0'이 단 한 번도 출력되지 않는 현상이 발생했습니다. 반면 동일한 테스트 코드를 인텔 프로세서에서 구동했을 때는 아무런 문제 없이 0이 정상적으로 생성되었습니다. 그는 자체 제작한 TSC 기반 난수 생성 기법과 rdrand, rdseed를 비교하는 GTK4 기반 차트 테스트 앱을 직접 공유하며 다른 유저들에게 검증을 부탁했습니다. 실제로 32비트나 64비트 레지스터 단위로 난수를 뽑은 뒤 하위 16비트만 잘라서 취할 때는 정상적으로 0이 포함되지만, 하드웨어 명령어 자체로 16비트 크기의 온전한 난수 0을 직접 요청하면 AMD 칩에서는 결코 나오지 않는다는 설명입니다. 이에 대해 포럼 유저들은 "AMD 고위 임원이 RDRAND 돌려봤다가 0 나오는 거 보고 고장 난 줄 알고 0 안 나오게 '수정'하라고 시킨 거 아니냐"는 농담 섞인 반응부터, 하드웨어 암호화 가속 장치 자체의 신뢰성과 백도어 가능성에 대한 보안적 토론까지 이어가며 흥미로운 반응을 보였습니다.
해외 반응 번역
32비트나 64비트 출력의 하위 16비트에서도 전부 0이 나오는 경우가 없나요?
네, 32비트나 64비트를 써서 하위 비트를 취할 때는 0이 나올 수 있고 그게 제가 첨부한 예제에서 제시한 우회 해결책입니다. 하지만 요청한 크기에 딱 맞는 '진짜 0'은 AMD에서는 절대 나오지 않습니다.
설마 AMD 쪽에서 0은 난수가 아니라고 멋대로 판단한 멍청한 짓은 아니길 바랍니다. 무슨 임원(C?O) 하나가 RDRAND 돌렸다가 0 나오니까 고장 났다며 엔지니어들한테 '고치라'고 시킨 거 아닐까요.
Sponsored · 광고