随着智能家居等物联网生态逐步普及,更多的传统设备物联网化呈现急剧增长趋势,智能锁就是一个很好的例子,智能锁锁可以提供一些典型的功能比如:远程解锁,智能手机集成,高级身份验证方法等。但作为一个个人安防设备,安全是消费者最为关注的问题,现在我们就来看看一个优秀智能锁开发者如何来从开发角度来提高安全性。
最近安全实验室RISCURE在一些智能锁设备中设备中分析了内部,反向设计了固件和相应的智能手机应用程序,并尝试了几次攻击,看看锁是否可能受到损害。总结如下:
(1)可以使用外部设备上的物理攻击打开第一个锁,通过一些练习,这个锁可以在几分钟内被打开。
(2)可以对无线通信协议使用加密攻击来打开第二个锁,使得门在一小时内被远程打开而不用锁或门使用物理的方式。
(3)第三把锁被充分保护,以抵御测试者的攻击。但是也发现了这一点上的副作用:锁容易受到拒绝服务的攻击,阻止合法用户解锁。。
这些研究结果表明,智能锁可以带来新的风险,应该更强调智能锁在发展过程中的安全。根据分析,结合在评估安全嵌入式设备方面拥有丰富的经验,这里总结了以下,对智能锁开发人员提供了13条建议。
1:正确使用密码学
许多智能锁依赖于加密算法来验证用户并保持身份验证标记保密。虽然一般来说,标准的加密算法是被认为非常安全,它们的实施和组合方式通常决定了实际情况安全级别。
避免使用专有的加密协议
密码专家对标准加密算法和协议进行了广泛的审查和研究。这些标准的算法安全性已经非常成熟且经过大量验证,但是一些开发人员却通过构建新的加密算法或以不设计使用的方式组合现有加密算法。但效果往往适得其反,但在许多情况下,由于算法的不成熟,设备往往更容易受到攻击。
使用高强度的随机数生成器
对于安全通信,身份验证和设备密钥生成,使用高熵随机数至关重要。确保用于加密目的的随机数是从高质量的随机数发生器获得的,也就是要做到真随机性。比如时间或者其他可预测的值作为种子的伪随机数是很容易被黑的。
不要在所有设备上存储相同的秘密
如果在其他设备中也发现了涉及预共享密钥的锁密码,主要风险是它很容易受到攻击而且不需要攻击者在现场,一般采用一锁一密的方式是最佳的。
不要使用弱密钥生成或派生
如果根据攻击者已知的可预测数据或生成密钥,那么攻击者可以直接确认密钥。
安全地存放和运输钥匙
许多开发人员声称具备强大的加密技术,但重要的是确保保存在硬件中的密钥不能轻易被读取,也要确保无线通信信道或云端系统中的漏洞不被旁路攻击或者窃听。
2:关闭测试和调试功能
在开发嵌入式设备时,开发人员通常使用调试接口,测试功能或“后门”来支持他们的开发过程。在构建生产版本时,尽可能地关闭这些调试机制,因为它们对于想攻击该设备的人来说也非常有用。,测试者已经在智能锁上使用这些接口来获取内部存储器的固件和运行时间。这显着减少了反向工程和理解固件所需的时间。
在某些情况下,开发人员选择使逻辑上无法访问测试功能。但是,我们建议从代码库中完全删除此功能的执行,因为一些逻辑攻击可以重新启用测试功能。此外,保持测试功能通常会导致调试字符串仍然包含在固件中并被引用。这会导致固件上的逆向工程的可能性。
3:安全更新机制
与任何其他软件产品一样,智能锁上运行的固件可能包含错误和漏洞。嵌入式设备通常支持固件升级,通常使用从网上下载的映像。安全地实施此更新机制非常重要。我们推荐:
(1)·正确验证更新映像。例如,通过在对新固件编程之前验证加密签名。·
(2)防止固件降级,因为这会带来重新引入漏洞的风险。
(3)确保未经所有者同意,无法从外部调用软件更新机制。
除了真实性之外,还应考虑固件的机密性。轻松访问固件,例如,当它可以从互联网上下载时,简化了反向工程过程。
4:防止外部设备的影响
不要信任来自在恶劣环境中运行的设备或接口的命令。这包括通过无线通信信道发送的命令以及外部设备比如安装在门外的按键所发送的命令。由于攻击者已经(或通过一些努力可以获得)控制这些外部设备,命令可以很容易地监控,复制或修改。
如果外部键盘对用户进行身份验证,则此外部按键应仅发送认证数据到内部单元,或者它应该执行到内部单元的安全通道并实施防篡改。无论如何,请确保他人难以添加窃听装备到外部设备。
5:实施缓和中继攻击
假设智能锁在其密钥(例如,移动电话)非常接近时自动打开。在这种情况下,攻击者可以使用另一个通信通频道来缩短智能锁和所有者智能手机之间的距离并打开锁。这种中继攻击可以看作是一种中间人攻击,其中通信没有被修改。我们建议实施针对此类攻击的缓解措施; 例如,通过要求所有者的故意行动(例如,按下按钮以打开门)或对通信加强严格的时间要求。
6:使用安全编码实践
许多软件漏洞都是由不安全的编码实践引起的,例如数据长度的内存副本来自不受信任来源。这可能导致缓冲区溢出,从而成功利用智能锁。我们建议实施安全编码实践,例如正确的输入验证,安全的默认返回值和深度防御(即实现多层安全机制)。
7:防止异常活动
在被分析的智能锁上,我们进行了多次攻击,包括成功和不成功,这将被智能锁内的软件所识别如果它可以监视异常活动的话,通常,暴力攻击(例如,暴力输入PIN)或加密攻击需要对智能锁发送大量的请求以实现破解的目标。
我们建议监控通信异常活动并采取适当措施。例如,限制对智能锁的请求数并通知所有者。请注意实施这些应对措施不得导致拒绝服务(DOS)攻击的可能性。例如,在十次尝试失败后仍保持门关闭也会阻止智能锁的合法用户进门。
8:实施适当的撤销支持
在某些情况下,打开智能锁的密钥可能会受到损害或丢失,例如当带有智能锁密钥的智能手机被盗时。另一个例子是攻击者试图出售使用过的锁,同时仍然持有有效的解锁标记。为了防止未经身份验证的访问,智能锁的开发人员应该提供撤销可能受到攻击的密钥的功能。我们建议确保撤销机制不仅依赖于密钥设备来删除标记,而且还主动对锁进行干涉来 确保以前有效的密钥被删除或被列入黑名单。
9:防止物理攻击
当智能锁还包括外部单元在恶劣环境中操作时,必须考虑对该外部单元的半侵入性和侵入性攻击。特别是如果外部单元发送对内部单元的“机密”消息,可以将外部单元物理地改变为持续发送“机密”消息。在没有其他漏洞的情况下,攻击者可能会尝试执行更高级的攻击例如故障注入或侧通道分析。
故障注入攻击旨在通过引入环境异常来干扰目标的正常操作,如电压尖峰或电磁脉冲。干扰可能导致目标跳过执行某些代码,或执行完全不同的代码 - 从而达到绕过身份验证的最终目标。这些攻击特别适合带外部单元的锁,攻击者通常可以控制电源。
侧信道攻击使用来自电子电路的泄漏来恢复秘密信息。例如,攻击者可能能够测量芯片的功耗或电磁辐射来恢复加密算法中使用的密钥,利用执行的漏洞而不是算法本身的弱点。
甚至内部单元也可能被侧通道分析或故障注入所攻击。有一个最近的例子表明,长距离边通道可能攻击到混合信号芯片所发射的无线电信号。像这样的芯片通常在智能锁中找到。因此,我们建议,组件在恶劣环境中运行时受到故障注入和侧通道分析攻击时,应采取应对措施。
10:拒绝服务攻击
与网上的服务器类似,智能锁可能会在使用拒绝服务(DoS)攻击的时候遭受攻击,攻击者试图阻止合法请求来打开门。攻击者的目标可能是为了破坏某个品牌的声誉。攻击可能是由以下原因引起的:导致某种内存损坏的无效命令。故意保持连接打开(例如,蓝牙或Wi-Fi)。中止(恶意)固件升级尝试。我们建议考虑这些类型的攻击,并确保任何外部请求经过适当的验证和处理。
11:对于“钥匙”的攻击
对于智能锁,传统密钥由数字版本取代。这可能是按键,智能卡,RFID标签或智能手机。特别是当密钥在智能设备上使用时,例如智能手机,必须考虑此设备的攻击。第三方应用程序可能会尝试访问身份验证令牌或钥匙打开门。此外,攻击者可能会创建一个请求身份验证令牌的假锁。智能手机可能会认为锁是一个合法的,并泄露秘密信息。
我们建议在锁和密钥之间实现相互身份验证(双向认证)。
12:保障后端系统
许多智能锁使用在云端运行的后端系统来保持客户端更新和管理密钥或令牌。因此,后端系统的安全性就像锁本身安全一样重要。对后端系统的攻击甚至可以更好地扩展,并允许攻击者获得对大量锁的控制。对保护后端系统的不同方法的详细分析超出了本文的目的。我们建议考虑适当的安全机制。这意味着在很大程度上取决于系统的架构。
13:这不仅仅是打开门
智能锁不仅应该保护门。考虑用户的隐私也很重要。作为一个例如,窃贼使用邮件堆积作为居民休假的指标。在一个锁中我们已经确定了可能通过展示等效数字来发现最后一次使用锁是什么时候。这项检查可以快速执行,一个窃贼可以开车和周围扫描智能锁几天,并同时建立一个所有房屋的哪些锁一直没被使用的示意图。由于此信息对于锁的所有者不可见,因此他们不知道并且不会采取任何对策。
-
智能安防
+关注
关注
13文章
642浏览量
53460 -
智能锁
+关注
关注
18文章
1066浏览量
39077
原文标题:开发智能锁中提高安全性的13个关键方法
文章出处:【微信号:iotbanks,微信公众号:iotbanks】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论