source

Tomcat을 시작하는 데 너무 많은 시간이 소요됨 - Java SecureRandom

factcode 2023. 7. 13. 21:10
반응형

Tomcat을 시작하는 데 너무 많은 시간이 소요됨 - Java SecureRandom

중복으로 표시하지 마십시오.이 두 가지 질문에 대한 후속 질문입니다.

이해해요, 대체하는 것.

securerandom.source=file:/dev/urandom

와 함께

securerandom.source=file:/dev/./urandom

$JAVA_PATH/jre/lib/security/java.security이 문제를 해결할 것입니다.

제가 묻고 싶은 것은 생산 과정에서 그렇게 해도 괜찮다는 것입니다.이것이 보안에 영향을 미칩니까(예: 세션 ID 예측 가능)?만약 이것이 덜 안전하다면, 충분한 엔트로피를 더 빨리 줄 수 있는 다른 방법이 있습니까?

갱신하다

구축에는 Openstack을 사용합니다(예: AWS, GCP 또는 기타 클라우드 프로바이더 사용).그래서 사운드 카드와 같은 하드웨어 장치를 추가하는 것은 저에게 선택사항이 아닙니다.

올바른 검색어를 사용하여 광범위하게 검색한 후, 저는 디지털 오션에 대한 멋진 기사를 발견했습니다.저는 단지 관련 부분을 여기에 인용하는 것입니다.

Linux에는 /dev/random과 /dev/urandom의 두 가지 일반적인 랜덤 장치가 있습니다.차단 장치이므로 /dev/random에서 최상의 랜덤성을 얻을 수 있으며 출력을 계속 제공하기 위해 충분한 엔트로피를 사용할 수 있을 때까지 기다립니다.엔트로피가 충분하다고 가정하면 /dev/urandom에서 동일한 품질의 랜덤성을 확인할 수 있습니다. 하지만 비차단 장치이기 때문에 엔트로피 풀이 다 떨어져도 "랜덤" 데이터를 계속 생성합니다.따라서 이전 데이터가 반복될 가능성이 훨씬 높기 때문에 품질이 낮은 랜덤 데이터가 생성될 수 있습니다.프로덕션 서버에서 사용 가능한 엔트로피가 낮을 때, 특히 이 서버가 암호화 기능을 수행할 때 많은 나쁜 일이 발생할 수 있습니다.

따라서 잠재적인 보안 위험이 있습니다.

엔트로피 풀 채우기 솔루션

Linux는 이미 여러 하드웨어 소스로부터 매우 우수한 품질의 랜덤 데이터를 얻지만, 헤드리스 머신은 일반적으로 키보드나 마우스가 없기 때문에 생성되는 엔트로피가 훨씬 적습니다.디스크 및 네트워크 I/O는 이러한 시스템에 대한 엔트로피 생성 소스의 대부분을 나타내며 매우 희박한 양의 엔트로피를 생성합니다.서버나 클라우드 서버/가상 머신과 같은 헤드리스 머신에서 전용 하드웨어 RNG 솔루션을 사용할 수 있는 경우는 거의 없기 때문에 비디오 카드, 사운드 카드 등과 같이 하드 디스크보다 "소음이 더 큰" 장치의 하드웨어 인터럽트를 사용하여 추가 엔트로피를 생성하는 여러 사용자 랜드 솔루션이 존재합니다.서버에 일반적으로 둘 중 하나를 포함하지 않기 때문에 불행히도 서버에 문제가 있음이 다시 한 번 입증되었습니다.

해결책: 해지드

HAVEGE 원칙과 이전에 연관된 라이브러리를 기반으로 한 해즈드는 프로세서에서 코드 실행 시간의 변화에 따라 무작위성을 생성할 수 있습니다.한 코드 조각이 동일한 하드웨어의 동일한 환경에서도 동일한 시간에 실행되는 것은 거의 불가능하기 때문에 단일 또는 여러 프로그램을 실행하는 타이밍은 임의의 소스를 시드하기에 적합해야 합니다.반복적으로 루프를 실행한 후 프로세서의 TSC(타임스탬프 카운터)의 차이를 사용하여 시스템의 랜덤 소스(일반적으로 /dev/random)를 시드합니다.

해지드 설치 방법

이 문서의 단계를 따르십시오.https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged

언급URL : https://stackoverflow.com/questions/40383430/tomcat-takes-too-much-time-to-start-java-securerandom

반응형