2014-10-10 10 views
1

나는 mod_ssl을를 통해 추적 한과 OpenSSL을 FIPS 코드가 최선 내가 할 수와 나는 mod_ssl.conf 파일에 주어진 SSLRandomSeed 구성 매개 변수는 단순히 유용한 아무것도하지 않는 것을 믿는다 FIPS 모드는 mod_ssl에서 사용 가능합니다.mod_ssl을 활성화하고 SSLRandomSeed

코드를 ssl_init_Module()으로 추적하면 FIPS 모드가 설정되기 전에 ssl_rand_seed() 함수가 호출 된 것으로 나타납니다. ssl_rand_seed()은 지정된 SSLRandomSeed 정의 소스에서 시드를 수행하지만 FIPS 모드로 전환하면 아무 정보도 유지하지 않고 DRBG가 처음부터 다시 작성됩니다.

실제로 OpenSSL의 FIPS 모드는 OpenSSL 기본 코드에 정의 된 DEVRANDOM 매크로에 따라/dev/urandom,/dev/random 및/dev/srandom (이 순서대로)에서 소스로 이동하는 것처럼 보입니다 표준 Linux 타겟 용으로 컴파일 할 때 e_os.h.

누구나이 조합에 대해 경험이 있습니까?

처리 된 파일과 같이 런타임에 선택한 엔트로피 소스를 제공하는 방법에 대해 의견을 쓸 수 있습니까? 임의성 소스를 변경하려고 할 때마다 OpenSSL을 다시 컴파일하고 새로운 DEVRANDOM 정의를 제공해야합니까?

답변

0

처리 된 파일과 같이 런타임에 선택한 엔트로피 소스를 제공하는 방법에 대해 의견을 쓸 수 있습니까? 임의성 소스를 변경하려고 할 때마다 OpenSSL을 다시 컴파일하고 새로운 DEVRANDOM 정의를 제공해야합니까?

여기에는 세 가지 문제가 있다고 생각합니다. 첫째, FIPS 모드에서 작동 할 때 PRNG에 사용되는 것은 무엇입니까? 둘째, 당신은 어떻게 발전기에 씨를 뿌립니까? 셋째, 아파치/mod_ssl은 처음 두 모듈과 어떻게 통합됩니까?

먼저 FIPS_mode_enable이 성공하면 md_rand의 기본 OpenSSL 생성기가 전환됩니다. 사용 된 DRBG는 SP800-90 (Dual-EC 제너레이터 제외)에 지정됩니다. 기본적으로 AES/CTR 생성기입니다. 이전 시드가 더 이상 사용되지 않는다는 점에서 맞습니다. 이것은 일반적으로 Random Numbers OpenSSL 위키 페이지에서 논의됩니다.

둘째, 발전기는 자동으로 작동하여 양호한 작동 상태를 유지합니다. RAND 인터페이스가 기본 생성기에 대해 거의 불가지론이기 때문에 여전히 RAND_seed을 호출하여 생성기에 엔트로피를 추가 할 수 있습니다. 이것은 일반적으로 Random Numbers OpenSSL 위키 페이지에서 논의됩니다.

셋째, Apache/mod_ssl과 OpenSSL 간의 연결이 끊어졌습니다. 외관상으로는, 아파치/mod_ssl는이 세부 사항에 관하여 모른다. OpenSSL 및 특별히 RAND_* 인터페이스를 사용하는 방법을 이해하는 접착제 코드를 작성해야 할 것입니다. 아마도 사용자 정의 모드를 제공하여이 작업을 수행 할 수 있습니다.