SSL看起来非常臃肿,我想做的事情,我对OpenSSL充满激情仇恨(NSS可能是可用的)。我需要在两个节点之间打开一个用于RPC /加密RPC /事件流/加密事件流的TCP通道。我正在使用协议缓冲区来定义和复用不同的流量来源。RFC /建议:关于安全/不安全的rpc /事件流协议设计
我不想用SSL开始。我需要经过身份验证的安全密钥建立(认证diffie-hellman),然后可能是基于块密码的流对象来加密和解密加密的事件流和加密的RPC。
我首先想到的是通过构建SSL实现节省编码时间和设计时间,前提是我可以从SSL实现中获取套接字句柄,并将其用于未加密的交换以及加密的交换。但是这可能最终会是一个丑陋的实现,而且我知道这样做可能与ssl协议不兼容(即TCP状态和SSL状态之间的强耦合)。
我的第二个想法是,通过打开多个套接字节省编码时间和设计时间。但是众所周知,多路协议设计是邪恶的。
第三个想法是,我只是加密一切,但所讨论的服务服务于高性能事件开关的能力,并且它具有在同一台机器上运行的数据库服务器。这种方法的开销不能满足,因为大多数流量都是明文的。
因此,这些方法对我来说似乎并不令人满意。因此,我得出的结论是,使用cryptopp和boost :: asio我可以推出我自己的解决方案并构建自己的协议(我已经必须这样做)。我是一个功能非常强大的系统程序员,我有工程师的理解应用加密技术。
我都重复使用,在这种情况下,我希望我可以重用SSL,但我不认为我可以。任何建议,你可以给我从你的经验在类似的情况下(你必须设计或在网络协议工作),将不胜感激。对我产生最大印象的建议会得到嘀嗒。:D
p.s.,我的应用程序还需要执行一些我正在使用cryptopp的异域加密。
我不知道你是什么意思的“臃肿”,但它听起来像你试图重新创建SSL。事实上,你在你的问题上做了很多假设。事实上,您可以在已连接的TCP连接上层叠SSL连接,许多SSL升级协议都依赖于这种行为。 – 2011-02-10 00:19:22