【问题标题】:Adding a TLS/SSL layer to communications..?在通信中添加 TLS/SSL 层..?
【发布时间】:2008-10-09 11:59:00
【问题描述】:

我的东西由几个组件组成,其中一些是用 C 编写的。由于我想添加一些安全功能,我正在考虑通过 SSL/TLS 层进行通信。

你能给我一些好的库来做这个吗(如果可能的话)?

【问题讨论】:

    标签: c ssl


    【解决方案1】:

    GnuTLS(请注意,它主要是 LGPL 而不是 GPL,因此您可以链接到它)。至少我更喜欢它的 API 而不是 OpenSSL

    还有 Mozilla 的NSS

    【讨论】:

    • 是的,GnuTLS,恕我直言,对程序员来说更简单。
    【解决方案2】:

    我们使用axTLS,它在我们的服务器 (.NET) 和我们的嵌入式系统(Linux 和 uClinux)上都运行良好。我们无法让 OpenSSL 在 uClinux 上正常工作。
    axTLS 的功能还没有 OpenSSL 完整,所以在使用它之前请确保它满足您的要求。

    【讨论】:

      【解决方案3】:

      OpenSSL怎么样?

      【讨论】:

      • 警告,该许可证虽然是免费的,但与 GPL 兼容,这对某些应用程序来说可能是个问题。
      • 需要明确的是,它不是 GPL。它使用 Apache 许可证,该许可证有很大不同,并且不需要发布更改。
      • @bortzmeyer:你的意思是不兼容。是的 - 我知道这是一个拼写错误,但只是为了澄清这一点。
      【解决方案4】:

      我建议您不要花时间尝试在您的应用中实现 SSL 功能。相反,您可以只使用现有的 SSL 隧道软件,该软件会在您现有的套接字应用程序前面创建一个 SSL 隧道。

      Internet --- [SSLTunnel] --- Your App
      

      例如,您可以告诉 SSL 隧道侦听端口 443 (https),​​并将所有解密的数据包转发到端口 80 (http)。对于您的自定义应用程序,它只会看到解密的数据包。

      有很多免费的应用程序可以做到这一点。只需谷歌即可。

      【讨论】:

      • 如果在应用程序中实现是指使用库,那么使用 SSL 隧道软件有什么好处?在我看来,您增加了复杂性和开销,因为您需要执行 IPC 等。您不能强制 SSL(例如,您不能在登录页面上强制 SSL)或实施 STARTTLS。
      • 这是哲学的。取决于您订阅的内容。我尝试减少需要编写/维护的代码量。如果不需要,那何必呢。我什至会放弃编写简单的套接字应用程序,而只使用 inetd 之类的东西。
      • 我会说代码量的差异可以忽略不计(通常只有几行。如果您使用更高级别的库,则更少)。
      • 如果你需要更多的复杂性,事情会变得更复杂,例如如果您需要执行客户端验证,则需要更多行等。编码可能只是微不足道的努力,但测试的努力却是微不足道的。您需要针对所有可能的安全攻击检查代码。这是不平凡的。即使 ssl 库“好”,应用程序的实现也可能存在缺陷。
      • 但是你确实需要把它放在某个地方。如果您需要通过证书进行客户端验证而不是再次 - 您需要 IPC,这可以说比使用库简单得多。是的 - 安全性很困难,是的,将代码分成独立的部分通常会有所帮助,但我看不出它比使用库要简单得多。
      【解决方案5】:

      CyaSSL 将是一个很好的选择。这是一个用 C 语言编写的嵌入式 SSL 库,已针对速度和大小进行了优化。它最多可以比 OpenSSL 小 20 倍,而且速度也快很多。

      功能列表中包括 30-100kb 的最小大小和 OpenSSL 兼容层。完整的功能列表可以在 yaSSL 网站上找到:

      http://www.yassl.com/yaSSL/Products_cyassl.html.

      它在开源 GPLv2 和商业许可下双重许可(用于支持)。它非常频繁地更新新功能。我认为其中一个很酷的功能是支持来自 eStream 项目的 RABBIT 和 HC-128 流密码。

      【讨论】:

        猜你喜欢
        • 2022-08-18
        • 2011-03-10
        • 2016-02-07
        • 1970-01-01
        • 2016-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多