Encryption openssl加密

Encryption openssl加密,encryption,ssl,openssl,Encryption,Ssl,Openssl,我想讨论一下openssl的读写方法假设我的数据结构如下: /-----------------------------------------------------\ | my_header | PAYLOAD | \-----------------------------------------------------/ | | \ /

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

/-----------------------------------------------------\ | my_header | PAYLOAD | \-----------------------------------------------------/ | | \ / \ / not encrypted encrypted I think the proper algorithm would be like this : SEND: build my_header with my own header. encrypt PAYLOAD with encryption function attach my_header and PAYLOAD (encrypted) to one buffer send it using common POSIX function just like send or sendto RECV: using common POSIX function just like recv or recvfrom. extract my_header and PAYLOAD(encrypted) decrypt PAYLOAD with decryption function at last i got my_header and PAYLOAD(decrypted). /-----------------------------------------------------\ |我的|头|有效载荷| \-----------------------------------------------------/ | | \ / \ / 未加密 我认为合适的算法如下: 发送: 用我自己的头构建我的头。 使用加密功能加密有效负载 将my_头和有效负载(加密)连接到一个缓冲区 使用公共POSIX函数发送它,就像发送或发送到 记录: 像recv或recvfrom一样使用公共POSIX函数。 提取my_标头和有效负载(加密) 使用解密函数解密有效负载 最后,我得到了我的_头和有效载荷(解密)。 如果您面临上述问题,您的方法如何。由于openssl加密发送到SSL_写入函数(CMIIW)的所有数据

谢谢


也许,恰当的问题是,什么是加密和解密函数,可以用来加密/解密openssl中的有效负载?

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

您实际上可以让OpenSSL为您做很多繁重的工作

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

会很有启发性。这本书也可以在网上买到,但我相信你必须付费才能阅读

在OpenSSL的发行版中,您可以找到许多示例代码,精确地说明如何做到这一点


祝你好运。

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

或者,库的bio部分可能更接近您想要的内容:

但是,如果你真的打算通过网络发送,那么我会质疑不加密报头的安全性。加密不仅仅涉及隐私,还涉及确保数据在传输过程中未被修改。如果有人能够监视您的流量,那么他们通常也能够篡改流量


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

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

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

对于帧的加密部分,必须在对称和不对称密码算法之间进行选择。但如果不知道你想要实现什么,我真的无法就此提出建议


请记住,对称算法通常更快,但首先需要交换密钥。要做到这一点,您可能会使用一种不对称算法,但随后,您将重新发明TLS/DTLS;)

除非加密数据包含某种签名。这种模式在某些特殊情况下很有用。您能告诉我们报头和有效负载之间存在何种逻辑连接吗?他们真的需要在同一个框架内吗?标题是否需要取消加密?这可能会有帮助。嗯,我只是想知道,如果我们面临这样的问题怎么办。我相信openssl可以做这些事情,我想。