WireGuard VPN의 개발자인 Jason A. Donenfeld는 최근 Linux 커널의 /dev/random 및 /dev/urandom 장치 작동을 담당하는 RDRAND 난수 생성기의 새롭고 업데이트된 구현을 발표했습니다 .
XNUMX월 말에 Jason은 임의의 컨트롤러 유지 관리자로 등록되었으며 이제 재작업의 첫 번째 결과를 게시했습니다.
이번 발표에서는 새로운 구현 방식의 가장 큰 특징은 엔트로피 혼합 연산에 SHA1 대신 BLAKE2s 해시 함수를 사용한다는 점 이라고 언급했습니다.
BLAKE2s 자체에는 내부적으로 기반을 두는 좋은 속성이 있습니다.
RNG가 이미 확장에 사용하고 있는 ChaCha 순열이므로
참신함, 독창성 또는 놀라운 CPU에 문제가 없어야 합니다.
이미 사용 중인 것을 기반으로 하기 때문입니다.
또한, 이번 변경으로 문제가 있는 SHA1 알고리즘을 제거하고 RNG 초기화 벡터 덮어쓰기를 방지함으로써 의사난수 생성기의 보안이 향상되었다는 점도 주목할 만합니다 . BLAKE2s 알고리즘은 SHA1보다 성능이 우수하기 때문에 의사난수 생성기의 성능 향상에도 긍정적인 영향을 미쳤습니다(인텔 i7-11850H 프로세서를 탑재한 시스템에서 테스트한 결과 속도가 131% 향상되었습니다).
또 다른 장점은 엔트로피 혼합을 BLAKE2로 전송함으로써 사용되는 알고리즘이 통합된다는 점입니다. BLAKE2는 이미 무작위 시퀀스를 추출하는 데 사용되는 ChaCha 암호에 사용됩니다.
BLAKE2s는 일반적으로 더 빠르고 확실히 더 안전하지만, 심각한 취약점이 발견되었습니다. 더욱이 현재의 난수 생성기(RNG) 구조는 명시된 대로 SHA1 함수를 완전히 활용하지 않으며 , RDRAND가 "신뢰할 수 있는" 것으로 구성되지 않은 경우에도 RDRAND 출력으로 IV를 덮어쓸 수 있도록 허용하고 있어 잠재적으로 악의적인 IV 옵션이 존재할 수 있습니다.
또한 길이가 짧다는 것은 믹서에 다시 입력할 때 절반만 비밀로 유지한다는 것을 의미하며 , 이는 순방향 비밀성이 2^80비트에 불과하다는 것을 뜻합니다. 다시 말해, 해시 함수의 선택이 시대에 뒤떨어졌을 뿐만 아니라, 그 사용 방식 또한 그다지 좋지 않습니다.
또한 getrandom 호출에 사용되는 암호화 안전 CRNG 의사 난수 생성기가 개선되었습니다.
또한 , 엔트로피 추출 시 속도가 느린 RDRAND 생성기 호출 횟수를 제한함으로써 성능이 최대 3,7배 향상될 수 있다는 점도 언급되었습니다 . 제이슨은 RDRAND 호출이 CRNG가 완전히 초기화되지 않은 상황에서만 의미가 있으며, CRNG 초기화가 완료된 경우에는 RDRAND 호출 여부가 생성된 시퀀스의 품질에 영향을 미치지 않으므로 RDRAND를 호출하지 않고도 처리할 수 있음을 보여주었습니다.
이 타협은 이 두 가지 문제를 해결하는 동시에 가능한 한 원본에 가까운 일반적인 구조와 의미.
구체적으로 특별히:a) IV 해시를 RDRAND로 덮어쓰는 대신, 문서화된 BLAKE2 "소금" 및 "개인" 필드를 입력합니다. 이러한 유형의 사용을 위해 특별히 제작되었습니다.
b) 이 함수는 완전한 해시의 결과를 엔트로피 수집기, 우리는 길이의 절반만 반환합니다. 해시, 전에 했던 것처럼. 이것은 증가 2 ^ 80에서 사전 비밀 구축 2^128 훨씬 더 편안합니다.
c) 원시 "sha1_transform" 함수를 사용하는 대신, 대신 완성과 함께 완전하고 적절한 BLAKE2s 기능을 사용합니다.
이 변경 사항은 커널 5.17에 포함될 예정 이며, 이미 개발자인 테드 초(랜덤 드라이버 유지 관리를 담당하는 두 번째 담당자), 그렉 크로아-하트만(리눅스 커널 안정성 유지 관리 담당), 그리고 장-필립 오마송(BLAKE2/3 알고리즘 개발자)의 검토를 마쳤습니다.
마지막으로, 더 자세한 내용을 알고 싶으시다면 다음 링크에서 확인하실 수 있습니다.