공개 및 개인 키가 필요한 암호화 알고리즘 인 것으로 보입니다. 클라이언트 서버 애플리케이션에서 암호화를 제공하기 위해 둘 중 하나를 선택하는 이유는 무엇입니까?
공개 및 개인 키가 필요한 암호화 알고리즘 인 것으로 보입니다. 클라이언트 서버 애플리케이션에서 암호화를 제공하기 위해 둘 중 하나를 선택하는 이유는 무엇입니까?
답변:
RSA
RSA 암호화 및 복호화는 교환
적이므로
메시지 M에 서명하기
위해 RSA 체계 {(e, R), (d, p, q)}
가 주어진 경우 디지털 서명 체계로 직접 사용할 수 있습니다 .
S = M power d (mod R)
서명을 확인하려면 다음을 계산합니다.
M = S power e (mod R) = M power ed (mod R) = M (mod R)
RSA는 암호화 및 디지털 서명 모두에 사용할 수 있습니다.
단순히 지수가 사용되는 순서를 반대로 사용하면됩니다. 서명을 만드는 비밀 지수 (d), 서명을 확인하기위한 공개 지수 (e). 다른 모든 것은 동일합니다.
DSA (Digital Signature Algorithm)
DSA는 ElGamal의 변형이며 Schnorr 알고리즘은 320 비트 서명을 생성하지만 512-1024 비트 보안 보안은 다시 이산 로그 계산의 어려움에 달려 있습니다.
DSA 키 생성은
처음으로 공유 된 글로벌 공개 키 값 (p, q, g) 선택 :
큰 소수 p = 2 전력 L을 선택합니다.
여기서 L = 512 ~ 1024 비트이고 64의 배수입니다.
q를 선택하고, p-1의 160 비트 소수 인자를
선택합니다. g = h를 선택합니다.
모든 h1에 대해 power (p-1) / q
그러면 각 사용자가 개인 키를 선택하고 공개 키를 계산합니다.
choose x compute y = g power x (mod p)
DSA 키 생성은 El Gamal과 관련이 있지만 다소 복잡합니다. 주로 계산 속도를 높이고 결과 서명의 크기를 줄이는 데 사용되는 보조 160 비트 모듈러스 q를 사용하기 때문입니다.
메시지에 서명하기위한 DSA 서명 생성 및 확인 M
무작위 서명 키 생성 k, k 계산
r = (g power k (mod p)) (mod q)
s = k-1. SHA (M) + xr (mod q)
send 서명
을 확인하는 메시지 가있는 서명 (r, s) , 다음을 계산합니다.
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g power u1.y power u2 (mod p)) (mod q)
v = r이면 서명이 확인됩니다.
서명 생성은 메시지 당 임시 서명 키 k를 사용하는 ElGamal과 다시 비슷하지만 먼저 mod p를 계산 한 다음 mod q를 수행하여 결과 크기를 줄입니다. 해시 함수 SHA의 사용은 여기서 명시 적입니다. 검증은 또한 두 개의 계산을 비교하는 것으로 구성되며, 이는 El Gamal보다 약간 더 복잡하지만 관련이 있습니다.
거의 모든 계산이 mod q이므로 훨씬 빠릅니다.
그러나 RSA와 달리 DSA는 디지털 서명에만 사용할 수 있습니다.
DSA 보안
잠재 의식 채널의 존재는 DSA뿐만 아니라 여러 방식 (임의 번호를 선택해야하는 모든 방식)에 존재합니다. 좋은 알고리즘이 아닌 "시스템 보안"의 필요성을 강조합니다.
아래 AVA의 답변을 확인하십시오 .
내 예전 대답이 틀린 것 같아
를 참조 man ssh-keygen
하면 DSA 키의 길이는 NIST의 FIPS 186-2를 준수하기 위해 정확히 1024 비트로 제한됩니다. 그럼에도 불구하고 이론적으로 더 긴 DSA 키가 가능합니다. FIPS 186-3은이를 명시 적으로 허용합니다. 또한 1024 비트 길이의 RSA 또는 DSA 키로 보안이 더 이상 보장되지 않습니다.
결론적 으로 2048 비트 RSA 키가 현재 최선의 선택입니다.
보안 SSH 연결을 설정 하려면 안전한 암호화 키 쌍 기술을 선택 하는 것 이상을 수반 합니다. Edward Snowden의 NSA 폭로를 고려할 때, 이전에 충분하다고 생각했던 것보다 훨씬 더 경계해야합니다.
한 가지 예를 들자면 안전한 키 교환 알고리즘을 사용하는 것도 똑같이 중요합니다. 다음은 현재 최고의 SSH 강화 방법에 대한 좋은 개요입니다 .
ssh-keygen
다른 비트 크기의 키도 허용합니다 (저는 ssh-keygen
RHEL에서 생성 된 2048 비트 DSA 키를 사용 합니다).