라바 램프의 무용성: 무작위가 실제로 의미하는 것
요약
본 글은 현대 컴퓨터 시스템의 난수 생성(RNG) 방식과 암호학적 무작위성 개념에 대한 심층적인 논의입니다. 핵심적으로, 난수는 단일 시드에 의존하는 것이 아니라 여러 독립적인 엔트로피원을 해시 함수를 통해 지속적으로 섞어 재시딩됩니다. 따라서 라바 램프와 같은 추가 장치를 사용한다고 해서 시스템 보안이 절대 낮아지지는 않습니다. 다만, 암호학적 목적과 물리적 무작위성 요구 사이의 차이점 및 실제 난수 생성기의 작동 원리에 대한 오해를 바로잡고 있습니다.
핵심 포인트
- 현대 RNG는 여러 독립적인 엔트로피원을 해시로 섞어 지속적으로 재시딩되며, 단일 시드에 의존하지 않는다.
- 라바 램프와 같은 추가 장치 사용이 시스템 보안을 저하시키지 않으며, 이는 이미 다양한 소스의 데이터를 함께 처리하기 때문이다.
- 암호학적 무작위성(예: 예측 불가능성)과 모든 가능한 결과를 생성할 수 있는 물리적 무작위성은 다른 개념이다.
- 실제 난수 생성기는 주기적으로 재시드되지만, 그 과정은 과장되어 설명되어서는 안 되며, 필요한 비트 수는 256비트로 충분한 경우가 많다.
이 글은 잘못 알고 쓴 데다 약간 흥을 깨는 글처럼 보임. 현대 난수 생성은 여러 독립적인 엔트로피원을 쓰고, 컴퓨터가 동작하는 동안 이를 계속 엔트로피 풀에 해시로 섞어 넣음
컴퓨터에 단 하나의 “무작위 시드”가 있는 게 아니라, 실행 중에 seed = hash(seed, new_data) 같은 방식으로 여러 소스의 엔트로피를 이용해 계속 다시 시드됨. 라바 램프를 촬영한 카메라 데이터를 추가한다고 해서 시스템 보안이 절대 낮아지지 않음. 엔트로피 풀에 들어간 데이터는 이미 들어간 다른 데이터와 함께 해시됨. 공격자가 모르는 정보가 아주 조금이라도 있으면 안전하도록 설계되어 있어서, 무작위성이 제각각인 데이터를 많이 섞어도 보안은 손상되지 않음 라바 램프는 시스템 보안을 해치지 않고, 개인적으로는 시스템의 일부를 이루는 즐겁고 기능적인 예술 작품이라고 봄. 난수 품질도 극히 미세하게 올려 주며, 무작위성과 엔트로피 개념을 시각적으로 보여 줌
맞지만, 커널 난수 생성기들은 이미 30년 넘게 다양한 하드웨어 무작위성을 사용해 왔고, 얼마나 “계속” 또는 “끊임없이” 재시드되는지는 과장하지 않는 게 좋음
하드웨어에서 무작위성은 계속 수집되지만, Linux 난수 생성기는 주기적으로 재시드됨. 부팅 후 첫 1분 동안은 몇 초마다, 이후에는 1분에 한 번 정도로 느려짐
기존 시스템이 그렇지 않다고 말하거나 암시했다는 인상을 어디서 줬는지 모르겠음. 여기서는 라바 램프 부분을 제외하면 기존 시스템을 설명하려던 게 아니라, 실제로 우리에게 필요한 것이 얼마나 적은지, 즉 256비트면 된다는 점을 강조하고 싶었음
라바 램프를 촬영한 카메라 데이터를 추가해도 보안이 줄지 않는다는 말에는 공격 표면이 떠오름. 임베디드 컴퓨터와 그 컴퓨터와 서버 사이의 네트워크 통신을 추가하는 셈임. 내게는 이렇게 더해지는 낮은 위험이, 실제로 라바 램프가 필요해질 말도 안 되게 낮은 위험보다 훨씬 커 보임
철학적 구분을 다르게 표현하면 이렇게 됨: 가능한 결과가 몇 개인가, 그리고 결과가 얼마나 예측 가능한가
암호학적 목적에서는 예측 가능성을 2^-256 수준으로 정착시켰지만, 흥미롭게도 가능한 결과 수가 훨씬 더 큰 흔한 과정들이 있고, 아무리 가능성이 낮아도 모든 가능한 결과를 낼 수 있기를 원할 때가 있음. 그런 상황에서는 암호학적 무작위성이 부족할 수도 있음
표준 카드 한 벌은 52!개의 섞임이 있고, 이는 약 2^226이라 암호학적으로 무작위인 시드로 모든 섞임을 만들 수 있음. 하지만 Uno를 하거나 여러 벌의 카드를 함께 섞으면 256비트 난수 생성기는 모든 섞임을 만들 만큼 상태가 충분하지 않음. 시스템의 사용자 공간 무작위성이 전부 커널에서 오고, 커널이 모든 하드웨어 무작위성을 256비트 CSPRNG로 흘려보낸다면, Las Vegas에서 카드를 섞기에는 충분하지 않을 수도 있음 :-)
글에서 빠진 것은 재시드인데, 빠른 키 삭제와 상호작용하는 방식, 그리고 초기 시드를 얻는 어려움을 보여 준다는 점에서 흥미로운 주제임. 글은 Linux가 CPU 지터만 쓰는 듯 암시하지만 이는 지나친 단순화임. Linux는 많은 무작위성 소스를 쓰고, 지터 춤은 최후의 수단으로만 사용함
그렇지 않음. 현실에서는 절대로 그런 식으로 하지 않음
실제 세계에서는 2^128개의 표본조차 얻을 수 없음. 사실 그보다 훨씬 적고, 그래서 AES-128도 여전히 많은 용도에 충분히 안전함. 가능한 결과 수가 2^256보다 클 때 “모든 가능한 결과를 실행”한다는 건 완전히 불가능함. 잊어버리는 게 좋음. 그런 건 존재하지 않음
블랙잭에서 카드 한 벌이 아니라 6벌을 쓸 때도, 실제로 모든 가능한 섞임에 확률을 균등하게 분포시키는 섞기 과정을 원하는 게 아님. 가능한 한 많이 표본을 뽑아 봐도 차이를 구분할 수 없을 만큼 좋은 분포면 됨. 섞임 수가 2^256, 심지어 2^128로 제한되어도 차이를 못 느낄 것임
글에서 재시드를 뺀 것은 의도적임. 의심되는 침해와 일부 보안 업데이트 같은 특정 시점에만 재시드가 필요함. 난수 생성기 상태를 비휘발성 메모리에 유지하는 것보다 더 단순하거나 안전하다면 재부팅 때도 해당됨. 그래서 “재시드”라고 하기보다는 새 초기 시드로 다시 시작한다고 보는 편을 선호함
정상 동작 중 재시드는 전혀 필요하지 않음. 구현해 봐야 복잡성만 늘어남
Linux가 CPU 지터만 쓴다는 암시는 확인했어야 했음. 내가 이해한 바로는 부팅 시점에는 그게 유일하다고 봤음. 특히 사용자 입력과 네트워크 입력이 있기 전에는 그렇다고 생각했음. 알고 있는 다른 소스가 있나? 하드웨어 난수 생성기 지원은 이미 있을 것 같음
가능성과 예측 가능성의 구분을 보니 Shamir, Rivest, Adleman의 논문이 떠오름. 이 논문은 두 사람이 전화로 가상 카드 덱을 이용해 안전한 포커를 치는 것이 수학적으로 불가능하다고 증명함
할 수 없음. 그런데 그 점은 제쳐 두고, 안전하게 하는 방법은 이렇다…
흥미로움. 기억이 맞다면 진짜 무작위 소스를 읽는 것은 블로킹 작업이라, 커널에 무작위 바이트가 충분하지 않으면 충분한 무작위성을 읽을 때까지 시간이 꽤 오래 걸릴 수 있음
추측하자면, 난수 생성 하드웨어 카드는 비트 밀도뿐 아니라 단위 시간당 비트 수로도 측정되는 병렬 무작위성 소스를 얻기 위해 존재했을 것 같음
개별 주장 중 크게 동의하지 않는 부분은 많지 않지만, 전체 논지는 흐릿하게 느껴졌음. 글은 “현대 암호는 사람들이 생각하는 것보다 훨씬 적은 진짜 무작위성만 필요하다”를 중심으로 쌓아 올린 뒤, “따라서 라바 램프는 공격 표면을 넓히므로 더 나쁘다”로 착지함
두 주장 모두 참일 수 있지만, 결론으로 이어지는 흐름은 거칠게 느껴짐
솔직히 서사 구조가 별로 만족스럽지는 않음. 그래도 결론의 절반은 제목에 이미 써 두긴 했음
LavaRand는 20년도 더 전에 이미 이런 일을 하고 있었음. 당시에는 귀여웠지만, 그 시절 카메라 센서는 훨씬 작았고 렌즈 등의 예측 가능한 특성 때문에 엔트로피 소스로는 좋지 않았음 라바 램프를 좋아하긴 하지만, 수백 개짜리 벽의 전력 소모는 장난감 같은 장치치고는 꽤 크다고 봄
자기 홍보에 가까움. 링크를 거의 공유하지 않다가, 공유할 때는 자기 링크를 올림. 최근 5개 게시물 중 5개가 자기 자료를 가리킴
“stories and comments”를 어떻게 해석하느냐에 달려 있음
“저자가 커뮤니티에 참여하는 것은 좋지만, 제품 발표나 자기 작업으로 트래픽을 몰기 위한 쓰기 전용 도구로 악용해서는 안 된다. 경험칙상 자기 홍보는 자신의 stories와 comments의 4분의 1 미만이어야 한다.”
게시글 15개에 댓글 1399개라면 분명 커뮤니티에 참여하고 있음. 자기 게시글마다 자기 댓글을 90개 넘게 달고 있는 게 아니라면 말임
Cloudflare는 라바 램프에서 얻은 엔트로피를, University of Chile는 지진 데이터를, 기억이 맞다면 EPFL은 방사성 붕괴 측정값을, 그 밖의 여러 참여자는 다양한 자료를 drand 네트워크의 최초 키 생성식에 기여했음
CSPRNG를 쓸 수도 있었을까? 물론임. 하지만 그러면 재미가 어디 있나?
재미는 괜찮음. 라바 램프는 예쁘고, 그들의 파동 벽은 정말 아름다움. 선을 넘는 지점은 그것이 실제로 보안에 도움이 되는 척할 때임
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기