엔트로피는 TCP 시퀀스 번호 및 암호화 키/매개변수 생성과 같은 많은 보안 기능에 중요합니다. 제가 이해하기로는 cat /dev/random
악의적이거나 잘못 작성된 스크립트에 숨는 것과 같은 간단한 작업을 통해 엔트로피 풀이 고갈된다는 것입니다 . 이는 공격자가 권한이 없는 로컬 계정을 장악하고 시스템에 더 깊이 침투하려고 시도함으로써 수행될 수도 있습니다.
대부분의 시스템은 암호화된 보안 의사 숫자 생성기(의사 숫자 생성기 /dev/urandom
)를 대신 사용하므로 /dev/random
엔트로피 풀을 고갈시키면 보안에 어떤 영향을 미칠지 궁금합니다. 예를 들어, 새로 생성된 SSL 인증서가 낮은 엔트로피 풀로 생성되면 개인 키를 추측하기가 더 쉽습니까? 나는 그것에 대해 읽었 man 4 random
지만 시스템이 엔트로피를 어떻게 처리하는지 여전히 잘 모르겠습니다.
답변1
이 질문의 오류는 "엔트로피 소진"과 같은 것이 없다는 것입니다. (어떤 의미에서든 우주가 당신이 살 수 있는 엔트로피를 모두 소모할 때까지는 엔트로피가 없어지지 않습니다.)
암호화용으로 설계된 임의 생성기에는 엔트로피 소스와 엔트로피 소스를 "평활화"하는 방법이라는 두 가지 요소가 필요합니다. 엔트로피의 근원은아니요무작위 비트의 소스로서 제거해야 할 편견이 있습니다. 무조건적인 엔트로피 소스는 암호화에 좋지 않습니다. 컨디셔닝(즉, 엔트로피 소스를 균일한 무작위 비트 소스로 변환)은 다음과 같이 수행됩니다.암호학적으로 안전한 의사 난수 생성기(줄여서 CSPRNG). CSPRNG에 충분한 엔트로피가 주입되면 우주에서 최소한 몇 번의 수명 동안 실행될 수 있습니다.
Linux는 /dev/urandom
주기적으로 추가 엔트로피를 다시 시드하는 CSPRNG를 사용합니다. 주기적으로 다시 시드하면 시스템 부품이 손상되어 어떤 방식으로든 무작위 생성기의 내부 상태가 유출되는 것을 방지할 수 있습니다.
Linux는 /dev/random
주기적으로 추가 엔트로피를 다시 시드하는 CSPRNG를 사용합니다. (익숙하게 들리시나요?) Linux는 CSPRNG 알고리즘이 심각하게 손상되어 엔트로피가 빠르게 누출되어 차단된다고 가정하는 내부 계산을 유지합니다 /dev/random
. 그러나 CSPRNG 뒤에 있는 암호화폐를 신뢰하지 않는다면 /dev/random
처음에 제공되었던 암호화폐나 사용하게 될 다른 암호화폐도 신뢰할 수 없습니다.
따라서 엔트로피가 부족하다고 해서 시스템이 어떤 식으로든 더 취약해지는 것은 아닙니다.
Linux의 유일한 위험 /dev/urandom
은 예측 가능한 출력을 제공한다는 것입니다.씨앗을 제대로 뿌리기 전에. "일반" 데스크탑 또는 서버 시스템에서 일상적으로 사용하는 경우 엔트로피 풀을 디스크에 유지하므로 이는 문제가 되지 않습니다. 새로 설치된 시스템이 있거나 읽기 전용 미디어에서 라이브 시스템이 부팅된 경우 이는 걱정할 사항입니다. (실시간 시스템은나쁜장기 키가 생성되는 곳! ) 시스템에 충분한 엔트로피가 있으면 영원히 유지됩니다.
전문 암호학자들이 이 문제에 대해 어떻게 생각하는지 알고 싶다면 다음을 읽어보세요.토마스 보닌의또는토마스훈의.
^ 질소엔트로피 비트 수는 2입니다.질소그것을 알아내기 위해 수학을 해보세요. 초당 10억 비트를 생성하고 적절한 안전 수준인 128비트에서 시작하면 1개의 우주 생명은 한계보다 훨씬 낮은 296 비트인 약 1조 비트를 생성할 수 있는 시간을 제공합니다.
답변2
아니요, 지속적으로 임의의 비트를 읽는다고 해서 /dev/{u,}random}
시스템의 다른 부분을 공격하는 것이 더 쉬워지는 것은 아닙니다. (즉, 공격자가 출력으로부터 생성기의 내부 상태를 예측할 수 없는 한. 그러나 누구도 그렇게 할 수 없을 것으로 간주됩니다.)
/dev/{,u}random
기본적으로 동일한 후속 난수 생성기가 시드되면 항상 충분한 "임의성"을 사용할 수 있습니다. 장치에서 많은 수의 무작위 비트를 읽어도 시스템 의사 숫자 생성기의 내부 상태는 변경되지 않으므로 생성된 숫자의 품질이 저하됩니다.
인용하다http://2uo.de/myths-about-urandom@roaima는 댓글에서 다음과 같이 언급했습니다.
엔트로피가 낮아지면 어떻게 해야 할까요?
그것은 중요하지 않습니다.
기본 암호화 구성 요소의 설계로 인해 우선 충분한 임의성(일명 엔트로피)이 있는 한 공격자가 결과를 예측하는 것이 불가능합니다. "충분"의 일반적인 하한은 아마도 256비트일 것입니다. 더이상.