这是我一直想学习的。当我设计一个多个组件相互通信的系统(软件或硬件)时,如何在协议中实现一些简单的加密或其他功能来实现一些基本的安全性?

无论如何,我可以更改协议,因为我可以低级访问传输/接收的一系列字节。

编辑: 我对嵌入式编程、用于协议安全的简单在线加密感兴趣。

有帮助吗?

解决方案

你说“基本安全”但这并不意味着什么。你的威胁模型是什么?你在防御什么样的攻击?如果您要传输信用卡数据,那么您将需要使用强大的加密,例如RSA。但我想不出一个需要“少”的例子。保护。如果你担心黑客会拆解你的代码,它已经被游戏结束了 - 如果它有趣或有价值,它们就会破解它。如果没有,你就浪费了时间来实现它。

其他提示

到目前为止,最简单的解决方案是使用SSL套接字而不是普通的套接字,即HTTPS / FTPS风格。

HTTP和HTTPS之间的协议完全没有区别,唯一的区别是它们在不同的端口上运行(通常为80对443),一个使用普通套接字,另一个使用SSL加密套接字。

从头开始设计它时,不要实现基本加密。正确地正确实施加密非常困难。

相反,请专注于使用您平台上提供的加密......您的平台是什么?

编辑:

有关加密列表,请参阅此 SO帖子替代方案,其中一些应该在嵌入式环境中运行良好(例如 CryptoPP TomCrypt )。

OAuth 可能会让您感兴趣,以便允许各种API之间的访问控制。

如果你纯粹想要一个加密的数据通道,那么最好只是在你的协议上加一层;通过SSL或SSH。

如果您正在进行嵌入式编程,那么加密问题在哪里?

例如,只要你停留在同一个处理器上,加密就没用了。

如果您担心设备上的处理器,那么加密可能很困难,因为dsp不一定具有任何复杂加密的备用空间。

如果你想要快速,那么对称算法是你最好的选择,并且你可以做很多好事,比如Blowfish或IDEA。您可以存储唯一的对称密钥,因此如果它们可以将设备拆开,则只会发现一个密钥,但每个设备都应该拥有自己的密钥。

只需将每个密钥绑定到序列号,这样如果您正在与服务器通信,那么将序列号与数据包一起传递,网络服务器可以查找正确的对称密钥并快速解密。

如果你想进行快速硬件加密,对于我的MSEE论文,我开发了一个使用任意顺序微积分的加密系列,这很难确定密钥,因为它可以在使用微带线的硬件电路中,因为它有没有处理,它将被直接绑在天线之前,并且一切都将被加密。

设计安全系统时需要考虑很多事情。仅举几例:

  • 对称/非对称加密方案的选择
  • 加密算法(AES、Blowfish、DES)
  • 选择已知协议(例如SSL)
  • 密钥管理和分发
    • 单个主密钥(如果被黑客攻击,整个系统都会受到损害)
    • 每个设备的密钥(密钥分发可能更困难)
    • 保护主要分销渠道
  • 潜在的黑客是否可以轻松访问示例设备?例如。X-box 等消费产品与锁定在电话交换机中的盒子。如果黑客拥有物理访问权限,则更难防范黑客攻击。
  • 人为因素——社会工程等。
  • 系统的安全程度取决于其最薄弱的环节。

我建议你阅读 布鲁斯·施奈尔的 初学者的材料。

OAuth绝对是一个考虑因素。除此之外,您可能需要考虑 WS-Security 。通过Web服务进行传输,您可以保持平台和语言无关,并且添加WS-Security意味着加密和解密位于应用程序层(端到端)。因此,只要您确信邮件一旦离开发件人就是安全的,您知道它们将保持安全,直到客户端实际收到邮件(这意味着它不会被服务器解密,然后传递给客户端) / receiver,但接收应用程序收到消息后。)

所以基本上你要OAuth来保护/验证各种应用程序,而WS-Security则要保护它们之间传递的消息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top