【摘要】 为解决目前市场上流行的蓝牙智能锁安全性不高,易被破解的问题,我设计了一款新型蓝牙智能锁。此款智能锁运用加密短信验证,TOTP动态密码,第三方验证等技术提高其安全性能。本文详细介绍了智能锁的系统架构,锁具物理结构,功能场景和工作原理,并针对各场景的破解方案进行安全性分析,归纳设计中的薄弱环节及防护措施。同时根据设计特点对智能锁的适用场景进行了简要说明。
4.工作原理
本款智能锁的设计:借助手机、服务器利用加密短信验证方式完成开启步骤。它的核心建立在TOTP动态密码技术基础上,此技术被广泛应用与网银的安全操作中。其系统结构如图2所示:
图2 系统拓扑结构图
图中服务器用途是用来存储用户手机号,购买产品信息,产品唯一ID,计算根据用户TOTP动态密码。
管理主机是管理员或客服人员管理服务器数据库中的数据的,人工注销用户。管理主机和服务器所在的网络是和互联网隔离的,属于私有网络。
短信猫池用来收发客户端和服务器端短信。因采用互联网组网易被黑客攻击,防范成本较高,为确保系统架构的健壮性,用户手机客户端与服务器端的数据通信方式采取加密短信的形式进行。
手机客户端和智能锁直接的通信方式采用蓝牙连接技术。
系统实现的基本原理:采用TOTP动态密码技术,在产品注册时设定唯一动态密码计算规则,在服务器端设定相同的动态密码计算规则,并将智能锁ID与注册用户手机号做一一绑定。即在相同的时间段内,服务端用户ID下计算的动态密码和出售给用户的智能锁计算的动态密码相同。智能锁通过手机客户端获取服务器上相应用户ID下计算的动态密码,与自身计算的动态密码相比较,比较正确开启,比较错误不开启。
智能锁的结构是由电控锁和触摸屏2部分组成,如图3所示:
图3 电控锁物理结构图
智能锁选用的电控锁是一款使用步进电机驱动的电控锁。将数据比对处理电路置入现成的锁体中并与其驱动控制电路相连接,电控锁的开启受控于数据比对处理电路。触摸屏在显示二维码,输入密码或切换场景操作界面时使用。如图所示电控锁和触摸屏之间的连接线是电源和通信复用线路,一旦两部分断开,电控锁将无法开启,可有效规避暴力破坏造成智能锁非正常开启的风险。5.实现过程
系统根据用户的实际需求,设置了注册、开锁、设置密码、忘记密码、手机挂失5个应用场景,如图3所示。
图3 系统用例图
5.1 注册
每个智能锁在出厂时都设置了唯一设备ID,服务器数据库中不记录任何信息。待用户第一次使用时进行用户注册,将用户手机号和锁ID绑定,一同记录在服务器数据库中,而后有服务器根据锁的信息生成唯一验证码计算规则,并将其通过激活的方式同步到锁体内,以实现锁和服务器间的同步验证。注册只能进行一次,以确保智能锁信息在数据库存储的唯一性。
智能锁在未激活前处于开启状态,待激活、预置密码两个步骤都进行后,方可使用。注册工作步骤如图4所示。
图4用户注册活动图
5.2 预置密码
为防止中间人攻击,重放信号,导致的非法开启。在使用TOTP动态密码的同时,又增加了用户设置个人密码(开箱密码)的环节,以增加非法开启的难度。在使用过程中,即便是冒用用户手机实施开锁,在不知道用户设置的预置密码的情况下,也是很难打开智能锁的。其工作步骤如图5所示。
每个功能界面的切换是通过九宫格图形密码锁输入固定的数字排序来实现的。
图5 预置密码活动图
5.3 开锁
开锁的过程是利用TOTP动态密码技术,通过手机加密短信的通信方式,将服务器产生的动态密码和智能锁产生的动态密码相比较,一致开锁成功,不一致开锁失败。因TOTP动态密码是有生命周期的,每组密码在不同的时间段是在不停变换的,增加了破解的难度。为了确保智能锁和服务器的时间同步,在每次通信时,智能锁首先会与手机时间同步。为确保手机设置时间的准确性,App客户端会定时通过网络校准时间。为了防止别人冒用手机开启智能锁,智能锁在使用前进行了个人密码预置,此密码只有用户个人掌握,只存储于智能锁内,一旦忘记密码,将需进入忘记密码环节进行密码重置。其开锁的工作步骤如图6所示。
图6 开锁活动图
5.4 忘记密码
用户在使用智能锁时,可能会忘记预置密码,针对这种情况设置了忘记密码功能。此过程是利用第三方认证技术,通过支付宝支付的形式获取操作用户的手机号,在与数据库中的手机号比对,发送相应手机号绑定的动态密码,而后有人工输入,智能锁自行比对完成验证过程。此场景考虑取证,记录操作人是谁,以便于倒查,设计了手机拍照取证环节。其工作步骤如图7所示。
图7 忘记密码活动图
5.5 更换手机
因系统采用手机操作,会遇到用户更换手机号或更换手机的情况,针对这种场景设计了更换手机的操作过程。此过程的核心思想是尽可能的延长授权时间,以增加非法开启的时间成本。更换手机的过程需要人工验证操作者的用户身份,需要在系统运行中设置客服人员。其工作步骤如图8所示。
图8 更换手机活动图
6.安全性分析
6.1 开锁过程的破解
要想进行开锁过程的破解需要3个必须条件:
以上3个条件必须全部具备方可开启智能锁。那么要想具备上述3个条件需要进行那些破解步骤呢?
首先最简易的方式是冒用用户手机。但要想冒用用户手机开启智能锁,需要预先知道用户预置到智能锁内的开箱密码,要是开箱密码不知道,通过破解方式获取需要通过图形密码锁的破解环节,理论上非正常开启的时间代价是巨大的,其行为是比较容易被用户发觉得。
如果拿不到手机,要想破解,需要先攻击服务器获取当前的动态密码,因服务器不联网,网络攻击是不存在的。服务器只通过短信方式通信,通信内容又是经AES加密的,AES加密破解的难度取决于是否知道私钥,其私钥每个用户都不同,本文中提及的私钥是有用户的手机号组成的,但其不完全是用户手机号,还可以添加激活码的部分信息在里面,这样即便知道用户手机号也无法知道其完整的私钥信息。AES破解是最大的破解难点。其次是要知道用户手机的IMEI码,知道用户的开箱密码,给破解工作增加了成本。
第三种可能,截获加密短信定向重发。因短信是经两次加密的,第二次加密过程是在用户手机内完成的,并且增加了用户个人属性信息,其开锁最终比对的动态密码又是有生命周期的,其时间窗口就是破解的给予时间。其破解的可能性很小。
6.2 忘记密码过程破解
假如非法用户盗取了用户的手机实施开锁,他需要知道用户的开箱密码,需要知道用户的屏幕解锁密码。先暂时不提手机的屏幕解锁密码,假如非法用户打算通过忘记密码的功能进行非法开锁,他会遇到怎样的难题呢?因忘记密码过程首先要进行第三方验证,要进行验证需要知道用户的支付宝密码。在不知道用户支付宝密码的情况下,这个步骤是无法进行的。除非是内部人行盗,而且,每一次忘记密码操作都会拍照记录操作人,这个给下一步的物品丢失破案缩减了难度。
6.3 更换手机过程破解
更换手机过程,是需要人工验证的,非法用户需要知道用户的一些基本信息,比如之前用的手机号。而且此授权时间需要经历24小时,并且申请了更换手机,系统会第一时间向原手机号发短信通知其行为,只要合法用户在24小时内做出反应,此过程就无法继续进行。非法用户的破解成本很大。
6.4 其他非正常方式破解
智能锁采用断电长闭方式。断电后智能锁处于上锁状态,无法开启。在不破坏锁体的情况下,无论是破坏触摸屏,还是采取截断通信线路接入破解电脑的方式,都无法控制锁的开启。因为锁体机械部分开启的指令是在锁体内部完成的,而非外界授予的,并且通信线路又是和供电线路复用的,在不能模拟出通信环境的情况下是无法实现信息传输的,这种设计给非正常开启的破解增加相当的难度,可有效延长防技术和防破坏开启时间。