新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 实现安全的USB传输

实现安全的USB传输

作者:时间:2013-08-31来源:网络收藏
随着越来越多的嵌入式设计趋向于与计算机进行通信,对USB连接的需求正在持续增长。USB没有内置来保护总线上通信的数据,对于某些应用来说,这可能是一个问题。

  USB定义了多组指定设备工作方式的设备类别。这些设备中有许多已具有预定义的格式,设备必须遵守这些数据格式才能正常工作。这使得鼠标、键盘和U盘等设备可在所有平台上工作,而无需在首次连接时安装驱动程序。这些设备实际不需要任何类型的,因为其所含数据是已知的。其他不使用预定义数据格式的设备可以灵活地发送自定义应用数据。由于大多数USB都是针对预定义数据应用,而不是自定义应用设计的,因此没有针对这些设备类型的内置安全或加密机制。

  对于自定义USB应用的开发人员来说, USB分析仪的廉价(甚至免费)和易用使问题更加棘手。这些分析仪可捕捉USB通信,因此任何人只需非常少的专业技术知识便可看到USB通信并可能获得机密信息。

  设计注意事项

  创建更安全的USB自定义应用的第一步是选择满足应用需求的加密算法。现在有多种算法可供选择,它们在提供的安全性、大小、加密或解密数据块所需时间以及对各种编译器的固有支持方面有所差异。高级加密标准(Advanced Encryption Standard,AES)是一个很好的选择,因为它相当安全。例如,美国政府已批准将AES用于标有SECRET(机密)和TOP SECRET(绝密)且对密钥大小有不同要求的应用(http://www.cnss.gov/Assets/pdf/cnssp_15_fs.pdf)。AES可通过一段规模不大的代码(约8 KB)实现。就提供的安全级别而言,AES是一种较好的算法。此外,。NET Framework默认支持AES。

  .NET framework默认支持的算法还有数据加密标准(Data Encryption Standard,DES)和三重数据加密标准(Triple Data Encryption Standard,TDES),它们都能用来替代ASE算法,因而对此无需花费过多时间。与AES相比,它们速度较慢,安全性较差且代码更大,但仍在许多应用中使用。

  微型加密算法(XTEA)的第二版也是一个备选算法。它在默认情况下不受编译器工具支持,但其非常简单且容易实现。XTEA是最小的可用算法之一,特别适合于存储空间较小的应用。XTEA的安全级别不如AES明确,因为它尚未经过严格的测试。但根据迄今为止执行的测试来看,它还是比较安全的。有关各种加密算法的更多信息,请参见图1以及Microchip应用笔记AN953和AN1044。

图1 AES和XTEA加密算法比较

  选择加密算法时首先要考虑其有效密钥大小以及是否应该使用加密。一些国家(包括美国)将具有特定密钥大小的算法视为军需品。因此,这些算法的出口会受到限制。根据算法类型和所用密钥大小,应用程序可能需要政府批准才能出口。

  选择算法后,下一步是考虑块大小对应用的影响。在本例中,AES的块大小为16字节。这意味着应用通过USB总线发送的数据量必须是16字节的倍数。如果需要发送小于16字节的数据载荷,则需要填充数据以满足块大小要求。如果使用填充法将数据块补充完整,还必须将这些字节传送到解密设备。加密算法的设计机制是:只要某一位出错或丢失,数据块便无法解密。

  Microchip Technology(美国微芯科技公司)提供免费的USB协议栈,其中包括多个自定义应用风格的演示,以及AES、DES、XTEA和其他加密算法的实现。该协议栈可在微芯公司的网站中找到,数据加密库(部件编号SW300052)也可在网站内找到。该协议栈和数据加密库可与免费的Microsoft Visual Studio C++ Express Edition编译器及其对AES算法的固有支持相结合,以创建加密的自定义USB应用示例。

  需要考虑的最后一点是加密密钥的生成和维护。对于目前可用的高级加密算法而言,数据失窃的根源通常并不是加密算法,而是系统背后的人。对称加密算法(例如AES、TDES和XTEA)具有快速、小巧和安全等优点。其主要缺点是双方必须都知道同一密钥才能加密或解密数据。一旦系统被破解,就会始终保持在破解状态,因此破解将来的传输不再需要额外的精力。这正是存在非对称加密算法的主要原因。非对称算法创建一个公钥和一个私钥,这样在交换信息时无须使用共享密钥。这有助于防止系统的共享密钥泄露并保护系统免遭“破解”,因为每次连接都生成一个新算法。非对称算法常用于交换惟一生成的可用对称密钥,以使后续通信安全快速。非对称算法的主要缺点是,与对称加密算法相比,需要占用大量固件空间才能实现,且速度非常慢。本文介绍的示例中使用对称加密算法,非对称算法的实现过程十分相似。

c++相关文章:c++教程



上一页 1 2 下一页

评论


技术专区

关闭