에이엠디 프로세서의 난수 생성기 버그 논의
1. 이게 뭔가요?
프로그래머들이 이용하는 개발자 소통 게시판에 올라온 글을 바탕으로, 에이엠디 회사의 중앙처리장치가 하드웨어 난수, 즉 컴퓨터가 내부 부품의 물리적 현상을 이용해 무작위로 숫자를 만들어내는 명령어를 실행할 때 특정 조건에서 숫자 0이 절대 만들어지지 않는 현상을 분석한 내용입니다.
2. 왜 화제인가요?
컴퓨터 부품이 직접 만들어내는 무작위 숫자에서 특정 숫자만 누락되는 예외가 존재한다는 점은 하드웨어 설계상의 결함이나 회로 작동 방식에 의문을 품게 만들기 때문에 기술 전문가들 사이에서 주목을 받고 있습니다.
3. 핵심 내용
개발자 제세는 저수준 프로그래밍 언어인 어셈블리어로 화면에 데이터를 도표로 그리는 프로그램을 만들다가, 컴퓨터 부품이 무작위 숫자를 만들어내는 기능인 rdrand와 rdseed를 사용할 때 에이엠디 프로세서에서만 16비트 크기의 무작위 숫자 0이 전혀 생성되지 않는 현상을 우연히 발견했습니다. 인텔 프로세서에서는 0이 아무 문제 없이 정상적으로 생성되었으며, 32비트나 64비트 크기로 숫자를 요청할 때는 가장 낮은 자릿수 부분에서 0이 나올 수 있지만 요청한 크기 전체가 정확히 0이 되는 값은 에이엠디 프로세서에서 여전히 나오지 않았습니다. 이 문제를 확인하기 위해 작성자는 테스트 프로그램을 제작하여 공유했고, 다른 사용자들과 함께 실험한 결과 에이엠디 제품군에서는 수일 동안 단 하나의 0도 나오지 않는 현상이 지속되었습니다. 에이엠디 측에 이 문제가 전달되어 내부 조사가 진행 중이나 담당자가 초기 답변을 인공지능으로 대충 작성한 것처럼 보이는 등 명확한 원인 설명은 아직 나오지 않은 상태입니다. 토론에 참여한 다른 개발자들은 하드웨어 제조업체가 제공하는 무작위 숫자 생성기의 내부 회로가 어떻게 작동하는지 상세히 알기 어렵고, 과거부터 이러한 보안 하드웨어에는 예측하기 어려운 수학적 결함이나 숨겨진 백도어, 즉 보안을 몰래 우회하는 통로가 존재할 수 있다는 의견을 나누었습니다. 또한 프로세서 모델에 따라 난수 생성 성능이 제각각이며 작동 속도에 영향을 받는 정도도 다르다는 점이 측정 결과로 확인되었습니다.
4. 나에게 어떤 영향이 있나요?
일반 사용자가 컴퓨터를 일상적으로 사용할 때는 이 현상을 눈치채거나 직접적인 불편을 겪지 않습니다. 하지만 하드웨어 명령어를 직접 불러와 무작위 숫자를 활용하는 저수준 프로그래밍 개발자에게는 프로그램 동작에 예기치 않은 변수가 될 수 있으므로, 암호화처럼 완벽한 무작위성이 절대적으로 필요한 중요한 작업에서는 하드웨어 명령에만 전적으로 의존하기보다 운영체제가 제공하는 암호화 전용 난수 생성 방식을 함께 섞어 사용하는 것이 안전합니다.