Java Keytool 유틸리티로 키 저장소를 만들 때 키는 어떻게 보호됩니까? 설명서를 읽었을 때 각 개인 키에 키 암호가 있으며 저장소에 저장소 암호가 있다는 것을 알고 있습니다.keytool은 키를 어떻게 보호합니까?
그러나 데이터를 보호하기 위해 어떤 메커니즘이 사용됩니까? 암호화 암호입니까? 그렇다면 알고리즘은 무엇입니까? keytool이 JKS 파일을 작성할 때 보호 기능을 수행하는 방법에 특히 중점을 둡니다.
Java Keytool 유틸리티로 키 저장소를 만들 때 키는 어떻게 보호됩니까? 설명서를 읽었을 때 각 개인 키에 키 암호가 있으며 저장소에 저장소 암호가 있다는 것을 알고 있습니다.keytool은 키를 어떻게 보호합니까?
그러나 데이터를 보호하기 위해 어떤 메커니즘이 사용됩니까? 암호화 암호입니까? 그렇다면 알고리즘은 무엇입니까? keytool이 JKS 파일을 작성할 때 보호 기능을 수행하는 방법에 특히 중점을 둡니다.
Sun의 기본 JKS 키 저장소는 주로 독점 알고리즘을 사용하며 주로 표준 알고리즘에 대한 제한 사항을 내보내기합니다. 알고리즘은
이
는 일 독점 구현이다sun.security.provider.KeyProtector
(가) 알고리즘의 설명이며,이 클래스에서 구현되며, 보호 (또는 일반 텍스트 버전을 복구 할 때 사용하도록 내보낼 알고리즘 of) 민감한 키. 이 알고리즘은 범용 암호로 의도되지 않습니다. 이것은 알고리즘이 키 보호를 위해 작동하는 방식입니다 : p - 사용자 암호 s - 임의 소금 X - xor 키 P - 보호 키 Y - 보호 키 R - 키 스토어에 저장되는 내용 1 단계 : d1 = digest (p, s) d1을 X에 저장합니다. 2 단계 : 사용자의 비밀번호를 가져 와서 이전 단계의 다이제스트 결과를 추가하고 해시합니다. dn = 다이제스트 (p, dn-1). dn을 X에 저장합니다 (이전에 저장된 다이제스트에 추가). X의 길이가 개인 키 P의 길이와 일치 할 때까지이 단계를 반복하십시오. 3 단계 : XOR X와 P를 입력하고 결과를 Y : Y = X XOR P에 저장하십시오. 4 단계 : s, Y 및 요약을 저장하십시오 (p , P) 결과 버퍼 R : R = s + Y + digest (p, P). 여기서 "+"는 연결을 나타냅니다. (참고 : digest (p, P)는 결과 버퍼에 저장되므로 키가 복구되면 복구 된 키가 실제로 원래 키와 일치하는지 확인할 수 있습니다. R은 키 저장소에 저장됩니다. 보호 된 키는 다음과 같이 복구됩니다. 1 단계와 2 단계는 소금이 임의로 생성되지 않지만 4 단계의 결과 R (첫 번째 길이 (s) 바이트)에서 가져 오는 것을 제외하고는 위와 같습니다. 3 단계 (XOR 연산)는 일반 텍스트 키를 생성합니다. 그런 다음 암호를 복구 된 키와 연결하고 R의 마지막 길이 (digest (p, P)) 바이트와 비교합니다. 일치하는 경우 복구 된 키는 실제로 원래 키와 동일한 키입니다.
사용되는 알고리즘은 사용하는 키 저장소에 따라 다릅니다 (예 : 스마트 카드 일 수 있음).
three encryption options와 JDK와 썬 배송 (디스크 파일에) 소프트 토큰을 생성하는 기본 키 스토어 :
기본 : "JKS", 독자적인 키 스토어 타이프 (형식). 알고리즘에 대해 잘 모르겠습니다. 개인 키에 대한 3-DES
"PKCS12"여러 옵션이있는 표준 형식 (OpenSSL이 그것을 읽을 수 있습니다)하지만, 일반적으로 3-DES를 사용하여
"JCEKS", 또 다른 독점 형식 및 인증서는 RC2-40입니다. 세 경우 모두에서
당신은 개인 데이터 (대칭, 개별 암호를 사용) 암호화가 있고, (키 저장소 암호를 사용하여) 암호화 다이제스트에 의해 보호 전체 키 저장소의 무결성.
완벽했습니다. 감사! – bethlakshmi