出于安全原因,我想将 SSL 握手和所有其他 Internet 流量分开,并通过两个单独的网络发送它们。
有没有办法做到这一点,还是我需要自己写?如果是这样,有什么建议吗?
出于安全原因,我想将 SSL 握手和所有其他 Internet 流量分开,并通过两个单独的网络发送它们。
有没有办法做到这一点,还是我需要自己写?如果是这样,有什么建议吗?
尽管我完全不知道这种拆分如何以任何明智的方式提高安全性,但将握手与 SSL 连接中的其他流量区分开来是相当容易的。在 SSL 中,所有内容都作为记录发送,格式为:
为了实现您想要的,您将查看第一个标头字节,它编码记录的类型:此值等于 20、21、22 或 23,其中 23 表示“应用程序数据”,而其他值用于管理处理(握手消息使用类型 22,安全参数切换使用简单的 21;警报使用类型 20)。所有这些都在RFC 5246 的第 6 节中指定。
有了这些知识,实现一个过滤器就相当简单了,它以一种方式发送类型为 23 的记录,并以另一种方式发送其他类型的记录。与操作系统和应用程序交互可能很困难;特别是如果您想对无法以任何方式修改的现有应用程序执行此操作。此外,您将需要客户端和服务器来实现“在两个单独的网络上”的拆分。
我不知道有任何现有的工具可以完成这项工作。
我不确定这将如何提高安全性,除非您的 SSL 流量在到达您的机器(代理、负载平衡器等)之前被解密。
如果您真的想跳出框框,您可以考虑在一台机器上安装一个软件路由器,该路由器根据 Tom 建议的过滤器路由流量。这可能会简化这种工具的开发。