【问题标题】:Cryptography Python: Diffie-Hellman key exchange implementation密码学 Python:Diffie-Hellman 密钥交换实现
【发布时间】:2017-10-08 17:56:14
【问题描述】:

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

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

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

但是,我似乎无法理解所描述的交换功能实际上是做什么的。 有谁可以向我解释在 DH 算法中的位置? 最好使用下图的类比:

提前致谢!

【问题讨论】:

    标签: python cryptography diffie-hellman


    【解决方案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
    

    【讨论】:

    • 就这个例子而言,最好指出parameters 是常见的油漆。也就是说,如果您要在 2 个不同的文件中运行它,则当前代码将生成不同的公共绘画集。您必须使用dh.DHParameterNumbers 来创建通用参数并使用parameters.parameter_numbers() 来生成数字。这些可以在没有加密的情况下通过网络发送。
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2012-09-07
    • 2023-03-19
    • 2010-09-29
    • 1970-01-01
    相关资源
    最近更新 更多