2017-05-10 1 views
2

현재 Im은 Python 암호화 모듈을 사용하여 Ephemeral Diffie-Hellman 알고리즘의 구현을 구현하려고합니다. 사용자를 인증하는 것이 우리의 목적에 중요합니다. Alice와 Bob은 공용 - 개인 키 쌍과 인증 기관이 서명 한 인증서를 가지고 공용 키를 검증하고이를 자신의 ID에 연결할 수 있습니다.암호화 Python : Diffie-Hellman 키 교환 구현

인증 된 DH를 사용한다는 것은 위의 개인 키를 사용하여 보낸 메시지 (이미지 참조)가 서명됨을 의미합니다.

파이썬 암호화 라이브러리를 사용하여 DH에 문서

는 여기에서 찾을 수 있습니다 : https://cryptography.io/en/latest/hazmat/primitives/asymmetric/dh/

그러나, 나는이 기술 교환 기능이 실제로 무엇을하는지 이해할 수없는 것. 누구나 DH 알고리즘에서 어디에 위치를 설명 할 수 있습니까? 은 바람직하게는 다음과 같은 이미지의 비유를 사용하여 :

DH-algorithm

사전에 감사!

답변

1

(예 : Alice의 POV에서) private_key은 주황색 페인트이며 peer_public_key은 하늘색 페인트입니다. shared_key는 끝에 갈색 페인트입니다. 물론 Bob을 위해서는 한 번, Alice에게는 한 번을 두 번해야합니다. python2에서

예제 코드 :

from cryptography.hazmat.backends import default_backend 
from cryptography.hazmat.primitives.asymmetric import dh 

parameters = dh.generate_parameters(generator=2, key_size=512, backend=default_backend()) 

a_private_key = parameters.generate_private_key() 
a_peer_public_key = a_private_key.public_key() 

b_private_key = parameters.generate_private_key() 
b_peer_public_key = b_private_key.public_key() 

a_shared_key = a_private_key.exchange(b_peer_public_key) 
b_shared_key = b_private_key.exchange(a_peer_public_key) 

print 'a_secret: '+a_shared_key 
print 'b_secret: '+b_shared_key