这可能是 工程师在面对嵌入式系统应用程序的安全性时可能提出的第一个问题。
不幸的是,有大量的“安全软件包”可用,并且对安全性不熟悉的嵌入式工程师可能只将安全性称为加密或病毒防护。尽管加密是安全性的一种工具,而病毒扫描程序从技术上讲可以提供安全性,但任何一种都无法提供所需的安全性。
幸运的是,如今,安全性已集成到许多应用程序中,所需的软件包通常由您的应用程序要与之交互的接口决定。如果您的应用程序是基于Web的,则可能会使用SSL / TLS(安全套接字层,也称为传输层安全性)。
其他应用程序使用IPSEC(Internet协议安全性)或CCMP(WPA2 Wi-Fi加密)等技术。知道首字母缩写的含义并不比知道需要支持的协议重要。一旦知道需要支持的协议,就可以购物了。
图1:常见应用程序和潜在的安全解决方案
明显的问题
问题2:如何为我的应用程序实现安全软件包? 根据应用程序的不同,这可能与运行启用了安全性的可执行文件一样简单。例如,如果您正在运行嵌入式Linux或Windows CE,则可能有一些应用程序可以提供所需的许多安全性,例如SSH(安全Shell)客户端。如果二进制文件不可用,则可能有源代码可用。
诸如OpenSSL和OpenSSH之类的开源程序包被认为是可用的那些安全协议的最佳实现,而最好的部分是它们可以免费使用。避免实施自己的安全协议。除非您是密码专家,否则您的实施很容易受到攻击。
问题3:系统的安全性如何? 一旦实现了应用程序并添加了所有安全协议,就自然会询问结果的安全性。在这里,您需要像罪犯一样开始思考,或雇用有此作为的人(尽管不建议雇用实际犯罪分子)。
如果收益足够大,那么攻击者可以利用的任何东西都是。安全的目的是使破坏安全的成本大于攻击者获得的价值。现代密码学依赖于数学,而使用现代计算机硬件则需要数以千计的时间才能完成。
不幸的是,那里的任何协议或算法都可能存在未被发现的漏洞,这使得破解它变得容易得多,并且硬件性能继续以惊人的速度提高,从而使“数千年”的数字大大减少。
剩下的问题将解决其中的一些问题,并希望对如何评估和部署安全的嵌入式应用程序有所了解。
非显而易见的问题
问题4:将在哪里部署应用程序? 对于嵌入式系统,在确定需要何种安全措施时,位置与任何其他因素一样重要。许多嵌入式应用程序可能会安装在攻击者不受限制地访问硬件的位置。
当攻击者具有物理访问权限时,基于软件的安全机制将失败,并且硬件机制也不会表现得更好。如果要在应用程序中实现世界一流的安全性,请确保所采用的物理安全性至少等于应用程序中的安全性。
问题5:谁是潜在的攻击者? 要列出潜在的攻击者列表,请考虑可以从破坏系统中受益的每个人。这可能包括商业竞争对手,恐怖分子,秘密的非法政府机构或无聊的青少年。
从攻击您的系统中受益最大的人通常最有可能攻击它,但是攻击者可能对您最关心的东西不感兴趣,这使我们提出了下一个问题。
问题6:哪些信息对攻击者最有价值?(提示:可能不是您想的那样) 这是一个技巧性的问题,因为攻击者甚至可能不会在追捕信息。如果您不满的客户可以关闭其支持网络的电表以获取免费电力,那么关闭您的应用程序可能就足够了。
在其他情况下,攻击者可能只是对控制硬件感兴趣。我们已经看到PC被劫持并变成了僵尸,这些僵尸充斥着受害者的网站,造成流量拥挤,或者关闭整个系统,并充斥着大量电子邮件”,攻击者可以从中赚钱。随着越来越多的设备联网,很有可能有人会将这些设备视为庞大的硬件资源池,可以加以利用。
问题7:无线网络安全与有线网络安全有何不同?除了有线网络中的物理传输介质之外,无线网络还增加了一层漏洞。
对于有线网络,传输介质是电线。窃听要窃听通信,需要与电线物理接触或紧密物理接近。电线可以穿过安全建筑物,地下,电线杆顶部或混凝土,从而限制了可能的物理接触。
对于无线网络,传输介质是空中。随着无线设备向各个方向广播信息,攻击者只需要一根天线即可访问。因此,大多数无线协议都采用某种类型的内置加密。
图2:有线安全与无线安全
问题8:我选择的硬件或软件会影响安全性吗? 由于更高质量的软件或通过特定的安全性增强功能,默认情况下某些系统将变得更加安全。
与已经部署了您要评估的系统的其他人进行检查,并尝试找出以前使用过哪些应用程序。寻找具有可靠记录的硬件安全功能,就像为应用程序选择软件安全协议时一样。
问题9:已知的针对我正在使用的安全技术的攻击是什么?如果您的应用程序需要很高的安全性,那么紧跟安全性消息至关重要。每天,成千上万的黑客和研究人员正在努力破坏安全性。
那些干得好的人会出名(或声名狼藉),因此有足够的动机对现有系统进行新的攻击。通过学习所有已知的攻击,确保您了解安全技术的当前状态,并及时了解报告。确保没有发现新的攻击。
问题10:我的系统真的需要最高级别的安全性吗? 最后一个问题提出了一种不同的安全性思考方式。很容易陷入需要绝对最好,最健壮,最强大的安全性这一理念,但是事实是您可能不需要那么多。
例如,考虑一下电表示例“您是否真的在乎是否有人可以窃听并查看从电表发送的数据?
使用现有的仪表,任何人所要做的就是步行并看一下表盘,因此,如果网络版本的加密级别最高,则可能无关紧要。您最担心的是信息被正确收集并交付而没有被篡改。
在不重新定义综合安全性实现的情况下,可以使用成本更低的方法来实现该结果。在评估应用程序的安全性时,请考虑真正需要多少安全性―通过避免使用不需要的安全性,可以节省大量的硬件成本和开发时间。