【发布时间】:2016-02-27 10:50:33
【问题描述】:
我一直在检索 SSL 握手后生成的 Key_block。我实现了一个简单的 Client.cpp/Server.cpp 程序,它可以很好地交换加密数据。
我想检索 key_block,因为我想重新使用它并在另一次通信中执行我自己的加密,但无需再次握手。
我试过了:
ssl->s3->tmp.key_block
但它会检索一个空字符串 (?!),当然
ssl->s3->tmp.key_block_length
检索 0 值。
我在 SSL_accept(ssl) 成功后调用这些方法。
一旦我能够捕捉到这个 key_block,我就需要找到 SSL_write(...) 使用的加密函数
希望你能听到我的声音,因为 openSSL 文档在我看来似乎是加密的.. =)
【问题讨论】:
-
密钥块仅在握手期间使用,用于构造几个不同的工作密钥;如果这是您想要的,没有单一的“the”键或“the”函数可以用来模仿 SSL_write。如果您只想将共享密钥用于其他用途,那么自 1.0.1 起的 OpenSSL 版本实现 rfc5707 以生成派生的共享密钥;参见
tls1.h头文件中的SSL_export_keying_material。 -
非常感谢 dave_thompson_085 !我将尝试从这些函数中获取共享秘密。我在 openSSL 文档上挣扎了一个星期,你有什么特别的圣经要推荐,还是你只是花了很多时间在这个主题上才知道这种东西?
标签: c ssl openssl cryptography