密码学Python:Diffie-Hellman密钥交换实现

我目前正在尝试使用python加密模块构建Ephemeral Diffie-Hellman算法的实现.对于我们的目的而言,对用户进行身份验证非常重要. Alice和Bob都有一个公钥 – 私钥对和一个由证书颁发机构签名的证书,以便能够验证他们的公钥并将其链接到他们的身份.

使用Authenticated DH意味着将使用上述私钥对发送的消息(参见图像)进行签名.

有关使用python加密库的DH的文档可以在这里找到:
https://cryptography.io/en/latest/hazmat/primitives/asymmetric/dh/

但是,我似乎无法理解所描述的交换功能实际上做了什么.
有人能够向我解释在DH算法中将它置于何处?
最好使用下图的类比:

DH-algorithm

提前致谢!

最佳答案
在他们的例子中(来自Alice的POV),private_key是橙色颜料,peer_public_key是浅蓝色颜料. shared_key是最后的棕色涂料.这当然意味着你需要做两次,一次是鲍勃,一次是爱丽丝.

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

转载注明原文:密码学Python:Diffie-Hellman密钥交换实现 - 代码日志