openssl ssl加密
我想讨论一下openssl的写入和读取方法。
假设我有一个数据结构如下图所示:openssl ssl加密
/-----------------------------------------------------\ | 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).
如何是你的方法,如果你面对一个问题,像上面。由于openssl加密了所有发送到SSL_write函数(CMIIW)的数据。
谢谢。
也许,在apropriate问题是,什么是可用于加密/ OpenSSL中解密有效载荷的加密和解密功能?
如果你正在构建一个加密协议,那就是我该怎么做,假设my_header
包含足够的信息,而本身并不需要保证安全性,比如会话密钥。处于低级别的网络数据包(请参阅tcpdump/libpcap)只是一个char *(“字符串”),并且通过沿阵列移动不同的长度来提取不同的头文件 - 您建议的内容听起来就像这样。
你实际上可以让OpenSSL为你做很多繁重的工作。
您可以创建网络作为原语和之前的文件描述符以开放的SSL上下文,它将处理SSL握手,加密和解密相关联。我掩饰了很多细节,但示例代码的OpenSSL的网站,并在这本书:
http://www.amazon.com/Network-Security-OpenSSL-John-Viega/dp/059600270X
将是非常有益的。这本书也可以在网上找到,但我相信你必须付费才能访问它。
在OpenSSL的发行版中,您可以找到很多示例代码,以说明如何执行此操作。
祝你好运。
OpenSSL的带有其通常用于将SSL上下文之外执行独立加密libcrypto库。
http://www.openssl.org/docs/crypto/evp.html
或者,你想要什么库的生物部分可以更接近: http://www.openssl.org/docs/crypto/bio.html
但如果你真的打算通过网络发送这一点,那么我会质疑安全性未加密的标题。加密不仅仅是隐私,更重要的是确保数据在传输过程中未被修改。如果有人能够监控您的流量,那么他们通常也可以篡改它。
如果您想报头unecrypted所以你可以在Wireshark的阅读进行调试,那么我建议你的应用程序完全启用了在调试环境中使用/禁用加密作出标志。
除非加密数据包含某种签名。这种模式在某些特殊情况下可能很有用。 – ereOn 2010-03-30 06:37:02
当您使用TLS/DTLS,您可以选择:你加密法的整体框架,或者什么都没有。
如果你想在框架一些未加密的数据,那么你可能不需要TLS/DTLS。然而,您可能会使用OpenSSL来计算您的标题的散列(使用SHA或任何其他相关的散列算法)并将其添加到帧的末尾以避免篡改。
对于帧的加密部分,您必须在对称密码算法和非对称密码算法之间进行选择。但是,如果不知道你想达到什么目的,我无法就此提出建议。
请记住,对称算法通常更快,但首先需要密钥交换。要做到这一点,你可以使用不对称算法,但是,然后,你重新创建TLS/DTLS;)
你能告诉我们在头和有效载荷之间存在什么样的逻辑连接?他们真的需要在同一个框架中吗?标题是否需要加密?这可能会有所帮助。 – ereOn 2010-03-30 06:47:15
嗯,我只想知道,如果我们面临这样的问题会怎么样。我相信openssl可以做这样的事情。 – deddihp 2010-03-30 14:00:17