【问题标题】:openssl ssl encryptionopenssl ssl加密
【发布时间】:2010-03-30 00:32:55
【问题描述】:

我想讨论一下openssl的读写方法。
假设我有如下数据结构:

/---------------------------------------------------- ----\ |我的标题 |有效载荷 | \-------------------------------------------------- ----/ | | \ / \ / 未加密 加密 我认为正确的算法是这样的: 发送: 用我自己的标题构建 my_header。 使用加密功能加密 PAYLOAD 将 my_header 和 PAYLOAD(加密)附加到一个缓冲区 使用常见的 POSIX 函数发送它,就像 send 或 sendto 接收: 使用常见的 POSIX 函数,就像 recv 或 recvfrom 一样。 提取 my_header 和 PAYLOAD(加密) 用解密函数解密 PAYLOAD 最后我得到了 my_header 和 PAYLOAD(解密)。

如果您遇到上述问题,您的方法是什么。由于 openssl 对发送到 SSL_write 函数 (CMIIW) 的所有数据进行加密。

谢谢。

也许,合适的问题是,openssl中可以用来加解密PAYLOAD的加解密函数是什么?

【问题讨论】:

  • 能否请您告诉我们标头和有效负载之间存在什么样的逻辑连接?他们真的需要在同一个框架中吗?标头是否需要解密?这可能会有所帮助。
  • 嗯,我只是想知道,如果我们遇到这种问题怎么办。我相信 openssl 可以做这些事情,我想。

标签: encryption ssl openssl


【解决方案1】:

实际上,您可以让 OpenSSL 为您完成很多繁重的工作。

您可以像以前一样创建网络原语并将文件描述符与 Open SSL 上下文相关联,该上下文将处理 SSL 握手、加密和解密。我忽略了很多细节,但 openssl 网站和本书中的示例代码:

http://www.amazon.com/Network-Security-OpenSSL-John-Viega/dp/059600270X

会很有启发性。这本书也可以在线获得,但我相信您必须付费才能访问它。

在 OpenSSL 的发行版中,您可以找到大量示例代码,详细说明如何执行此操作。

祝你好运。

【讨论】:

    【解决方案2】:

    OpenSSL 附带一个 libcrypto 库,通常用于在 SSL 上下文之外执行独立加密。

    http://www.openssl.org/docs/crypto/evp.html

    或者,库的生物部分可能更接近您想要的: http://www.openssl.org/docs/crypto/bio.html

    但是,如果您真的打算通过网络发送此内容,那么我会质疑不加密标头的安全性。加密不仅关乎隐私,还关乎确保数据在传输过程中不被修改。如果有人可以监控您的流量,那么他们通常也可以篡改流量。

    如果您希望标头未加密以便可以在wireshark 中读取它以进行调试,那么我建议在您的应用程序中创建一个标志以完全启用/禁用加密以在调试环境中使用。

    【讨论】:

    • 除非加密数据包含某种签名。这种模式在某些特殊情况下很有用。
    【解决方案3】:

    如果您正在构建一个加密协议,我就是这样做的,假设 my_header 包含足够的信息并且没有任何东西本身需要保持安全,例如会话密钥。低级别的网络数据包(请参阅 tcpdump/libpcap)只是一个 char*(“字符串”),您可以通过沿数组移动不同长度来提取不同的标头 - 您的建议听起来就像这样。

    【讨论】:

      【解决方案4】:

      当您使用 TLS/DTLS 时,您可以选择:加密整个帧,或者什么都不加密。

      如果您想在帧中包含一些未加密的数据,那么您可能不需要 TLS/DTLS。但是,您可以使用 OpenSSL 计算您的标头的哈希(使用 SHA 或任何其他相关的哈希算法)并将其添加到帧的末尾以避免篡改。

      对于帧的加密部分,您必须在对称和非对称密码算法之间进行选择。但在不知道你想达到什么目标的情况下,我无法就此提出真正的建议。

      请记住,对称算法通常更快,但首先需要密钥交换。为此,您可能会使用非对称算法,但是,您正在重新发明 TLS/DTLS ;)

      【讨论】:

        猜你喜欢
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        • 2017-01-14
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多