- 本课程为精品课,您可以登录eeworld继续观看:
- TI 智能门锁解决方案 (3)
- 登录
- 课程目录
- 课程笔记
好 大家可以看到这张图
这张图的话就是...
我们的一个系统板
那设计好之后它会面临和存在的问题
我们首先从左往右去看因为左边蓝色区域里面
它是讲的板机的安全性能
板机的话分为几个部分
我相信大家去做这种设计的话可以看到我们的一些产品
他会有片外的flash和片外的RAM
那片外的flash和片外的RAM其实是非常不安全的
因为我可以通过总片的方式把所有数据导出来
也可以直接把flash或者RAM的数据直接copy出来
那这个的话是非常不安全的这个是一个不安全的因素之一
第二个的话我们看接口
从接口的话可能会有185接口可能会有窗口
可能会有其他的通信接口那这些通信接口的话
其实我都是可以把里面的数据给导出来或者说
我可以通过去观察
我这些通讯接口上面发送的数据
然后我去暴力破解你的这个芯片的指令期
也就是说你芯片和外设肯定会有一个交互的一个
自定义的协议如果我破解了这套协议
那我就知道我该发什么样的指令给你你会完成什么样的动作
从而去破解你智能门锁的一个设计流程
就是我们自己设计软件的流程
那这一块的话属于我们硬件上面的环节
那另外我们要去连接网络
那连接网络的话不可控的因素就会更多
那大家其实可以看到就包括
我们的电脑或说我们的服务器
其实都会存在非常不安全的一些隐患
那其中的话会有一些硬件问题那另外一部分的话
就是我们的黑客其实更多的会去从软件产品上去做攻击
所以说在这里就引出一个话题就是说怎么样去在不安全的信道里面
安全的去传输我们的报文也好数据也好
这是一个非常大的话题
那这涉及到的问题就是我们的密码学
密码学 OK
所以说不管是蓝牙还是WiFi
都会存在一个问题就是
在
我的数据通过无线技术
做交付的时候
我们会存在一个made in the middle就是说中间人
就是说我从一端,A端传到B端如果我中间站了一个人的话
我可以接听到你所有的这些报文那这个时候你的信息是并不安全的
那我们怎么样去保证我们的信息安全不被中间人所截获
以及即使你截获可能你截获的是已经加密过的报文
或是说已经是乱码当然你就不可能去做解密
这是一道非常有学问的东西那我在后面会去讲解
但是我想说的是TI不管是从硬件层面上
还是从软件层面上都有去考量怎么去
确保
我们平台的安全性怎么样去帮助大家在
这个智能门锁上提高我们的安全等级
OK 那我们可以看到从安全的角度上来说
刚才是一个系统板的方式那这个我们做了一个归纳
就是一个三角形我们可以从下往上去看
那最下面的话就是我们最根本的一个安全的保证
第一个安全的保证就是说
我们的调适接口
因为调适接口的话我们是通过ARM的平台
那调适接口的话都是通过接太的
那我相信这个大家也都知道就是说我们最后在[听不清]完成之后
我们一定会把接太口给锁掉然后不让其他的用户可以通过接太口
把我内部的flash或者说片外的一些数据
通过接太的方式读出来这是第一点
那第二点就是说我们每个device的话
它都会有一个唯一的一个unique的ID号
那这个ID号的话可以用就去做我们的加密
也可以用作我们产品的追踪那这也是我们必须要的
那第三个的话就是我们的加密算法
那加密算法的加速器我们是以硬件的方式
然后固化在我们的ROM里面那这样的话包括我们的哈希函数
包括我们的这个ECC加密、椭圆加密
包括我们AES[听不清]加密的这些算法的话
我们都是有固化在我们的芯片里面
那不管是做网络链接也好或是说我们自己去规定
我们的椭圆加密算法也好那这些加密引擎的话
都可以去帮助我们去更快地去实施我们的加密算法
OK 那这是我们最基石这是我们的基石
就是我们芯片一定要有的那在我们芯片之上的话
我们会去跑一个操作系统或者说我们有可能不去跑操作系统
那我们自己会写一个逻辑的函数
按照我们的逻辑表然后规划一个流程表
然后按照我们的流程表去做那这样的话其实
还会存在几个问题第一个问题的话就是存储
我们会经常把网络数据
存在我们的flash里面
或者片外的flash里面那这个存储的数据是否安全
这个存储的数据是否
已经被我签名认证过的
是一个我信赖的程序但另外一个的话就是说
我的跑的这一套程序里面可能会涉及到一些
我的密钥的一些管理那这些密钥的话
和我的应用层的这种程序的话它是不是合在一起呢?
都放在一个大程序里面去跑还是说它其实是分开的
必须通过相应的这种mailbox的机制然后才可以去访问我的密钥
以及我的关键的一些被加密过的一些报文
这是我们从程序的角度上要去做考虑的
那再往上一层的话就是说我们的软件的IP的保护
包括我们自己的一些应用层的程序那我们可以来做一些保护
该怎么去做那最上面的话就是说
我们这个硬件的加密那硬件的就是物理层的加密
物理层的加密和保护的话也就是说
我们在板机的设计上面的话片外的flash这个数据挪到[听不清]
会不会被其他的客户也挪到他自己的程序上来或是说我换一个
把这个flash换到另一个板上去这个系统板是否可以依然的跑起来
就是从物理层的角度上面
我们需要去做加密考量的一些问题
所以说问题会比较多问题是方方面面的
那我们是把问题做了其中的归纳
那也是从芯片的角度和我们应用的层面去解决了这些问题
OK 那这个的话就是对刚才我讲的做了一个归纳
就是说包括调适接口的一个安全性能
包括我们这个存储的安全性能包括我们物理层的安全性能
包括我们这个加密的加速器包括我们这个网络链接安全
非常多
那后面的话我就给大家
去做重点的几个介绍
那第一个的话我们可以看到的是
我以我们的WiFi芯片为例
因为最终我们要去接入网络的话WiFi是一个必不可少的一个芯片
去做链接
那TI的WiFi芯片的话是目前市面上面
可以说是安全性能和低功耗
做得最好的一款产品
那我们的产品我们可以从左下角的框图
可以看到它其实是分为两个不同的部分
那一个部分就是我们的cortex M4的核
那这个核的话它主要去做一些我们的应用层
那在此外的话它会有一个专门的NWP层
那NWP层它又处理各种网络的连接相关的数据和事件
以及它会去做我们加密的保存
所以我们所有的数据加密
都是放在NWP层上面去做的
那我们的应用层是完全没有办法
去干预和访问这样一个NWP
它读取我们NWP它的加密报文它只有通过mailbox的机制
然后去加密或者解密我的报文但是它没有法去读取我的报文
OK 那这是这样一个框图去介绍
那下面我们也分了几个不同的阶段第一个就是从存储角度上面来说
我们怎么去做加密的然后从软件的运行角度上来说
我怎么通过mailbox的机制
然后去做加密的
那另外一块的话就是在网路链接层也就是说我们的SSL
就是说我们传统的WiFi加密方式那TI做了哪些事情
怎么去做的以及为什么我们可以在两百个毫秒以内
可以快速连接WiFi
建立这种安全链接
去访问服务器
好 给大家讲一个非常基本的
概念就是说我们的加密
那这个加密的话大家可以看到
其实方式有非常的多那最简单的方式就是说
我从A要传给B一个报文那我A是以明文的方式
然后我和B规定我们有一个密钥那这个密钥的话我们都是一样的
那这样的话,A的信息的话通过密钥加密之后传输给B
那B通过这把密钥去做解密然后我就可以读到我的这个原文
那这样会存在几个问题第一个问题的话就是
中间有一个人他可以去截获这个报文只是说他截获的这个报文是乱码
他看不到,但是呢你发不同的如果说我们的密钥是一定的话
那你发A我可能最后解密之后可能是C
你发B我最后解密是成D
那这样我通过反向编码的话其实我可以慢慢的暴力破解
就是知道你这个密钥到底是什么意思
这样的话我就可以去截获你的这个报文
然后我去做翻译那基本上可以去做到
我和你最后自己去解密这个报文
基本上是一致的这是一种方式
那第二种方式的话就是因为你们这个密钥
它是一成不变的那这个一成不变的密钥的话
是会被...第一是会被破解掉第二个话会被别人窃取
那我一旦窃取了你这个密钥那你所有发的报文
我是都可以去做解密的所以说密钥是一种
非常
不安全的加密方式但是它也是我们现在
用做多的一种加密方式
所以说我们有很多不管是通过蓝牙也好小无线也好
或者说WiFi也好去做数据传输那我可能会规定一个密钥
这个密钥的话服务器知道
那我们的芯片知道那我的芯片在传输数据的时候
我首先会通过AES去做加密那加密完之后我就通过明文去传输
传输之后我的服务器
再通过我的密钥去做解密
那这样的话没问题这是一个最basic的一个
保证我信息安全的一种方式但是呢其实我们会有
很多非常高端的一些当然也不是TI专利啦
那这个是从密码学的角度上我们会有很多的算法
然后去解决这样的一个问题那非常典型的就是说
我们有椭圆加密的方式那也就是说我们可以去
规定一个公钥和一个私钥那公钥的话会分发给ABCD有很多人
那这个公钥的话就是说大家都会有那私钥的话只有我的这个
发报文的人会有我会用私钥去做加密
然后发这个信息让大家都可以用
这个公钥去做解密
但是反着是不可行的这些是不同的加密方式
OK
好那我们知道这样的
加密方式我们可以做什么
第一我可以做数据加密第二我可以做数字签名
那数字签名的方式
就是你被我认证之后
我就知道我们之前有过这种交互那后面的话我就会首先去
去加载你这个程序的时候我就会去看你有没有被我数字签名过
如果你有被我数字签名过我是认可你的
然后我才会去执行你如果不是的话
我觉得你是非法的那我就不会去执行你
那这样一个好处就是说我们稍微看一下
有一个概念叫secure bootsecure boot是什么意思?
就我们的WiFi芯片是需要片外挂一个flash
我们所有的程序的话会放在片外的flash
大家可以做一个实验我觉得非常有意思
如果说拿TI的产品或者说拿其他公司的产品
当然他们可能都会用片外的flash那我们把这个flash从一个板子
悍下来放到另外一个板子上去大家可以看一看
它的这个板机是否可以跑起来
那TI的这个如果说我们把flash
从一个板子换到另一个板子
它是跑不起来的为什么跑不起来?
就是因为这个secure boot那首先第一次的话
我会去把程序烧到片外的flash那片外的flash在第一次跑起来之后
然后它就会通过各种签名的方式它这种签名的方式如我们右边所示
那首先第一级bootloader的话我们是会放在我们的ROM里面
那第二级的bootloader的话我们会放在片外的flash里面
那片外的flash里面
它又会去加载我们的这个操作系统
如果有的话
它会去加载我们的这个操作系统
那操作系统跑起来之后最后才会去加载我们的应用层
它是这样一个流程的关系那如果说我的ROM板的
这个bootloader然后去加载我的第一级的
片外flash的bootloader发现这个片外的bootloader
是没有被签名过的那我不允许去执行
那同样的道理就是说我的第二级bootloader
去加载这个操作系统如果说我发现这个操作系统
是没有被我签名过的那我也不会去执行
同样的,我的操作系统
去加载我的应用层
那也会存在一个
我是否被签名过如果没有被签名过的话
那这个应用程序我不会被加载
那一方面这是从启动的
角度方面来说的话
我们通过这种哈希函数和加密的方式然后去做数字签名
然后去来认证我的每一块的程序是否是被我认证过的一个程序
那这从boot的角度上来说那另外一个角度上是说
我们去做OAD那OAD的话
我们会去把我们的应用程序做升级那这个升级后的程序
如果有黑客的话他可以去做伪造的升级
然后让我们去下载他的程序但是他的这个程序的话
如果是没有被签名过没有被我这个芯片认证的话
它如果一旦跑起来它是对我们这个智能
门锁有一个破坏性的
所以说我们一定要签名之后然后再去做OTA
然后去放在我们片外的flash那这个的话它就没办法去做破解
当然这块的话是要和服务器配合一起去做
那我们是从硬件的角度上和我们这个设计的角度上
去保证我们的这个片外的
flash的数据安全以及OTA的数据安全
那我们把这个流程叫做secure boot
那另外就是我们前面有讲到过的一个概念
如果说我们在跑这个操作系统的过程当中
那我们把这个应用层把我们的driver、把我们的RTOS
把我们的key management这所有的东西全部放在
我们的一颗MCU上去跑就会存在一个问题
如果我们遭受了网络攻击之后那所有的这些信息
它可以慢慢地渗透慢慢地渗透
把你所有的信息都拿到就把你片外的flash的所有信息都读出来
那这是非常危险的一个信号如果说我们所有信息都被拿出来之后
那这些密钥的话就会一一都被拿出来
所以说我们需要有一种机制我们把这种机制叫
trusted execution environment
那这个机制的话就是说我们把我们程序分为两块
第一块的话我们叫land safety一个叫safety
那land safety就是说我们可以去跑我们应用层
相关的协议栈也好
或说我们的driver也好
或是说我们自己的流程图也好没关系
但是说如果我们一定要去访问我们的这种密钥管理的一些
和加密的引擎的一些
这一块的事件的时候
我们必须要通过消息机制通过land safety的一个消息通道
然后去和我的security的就是safety的这个区域
然后去做信息沟通然后去把结果导向到我们的
land safety的这个区域里面来通过这个方式来去保证我的
加密这一块以及我的密钥这一块不会被任何人去读到这些数据
而且我所有的这个加密
以及解密的数据
都不可能被其他的就是
land safety的区域代码所知道
因为这块区域是不公开的你只能知道一个结果
你没办法知道我在里面
做了什么以及我临时的数据
都没办法去看到那这块的话我们就叫做TEE
那TEE的话就是
有一个trust zone的概念
这个的话其实也不是TI专利这个是ARM规定的一个安全规范
如果大家有兴趣的话大家可以去ARM的官网上
去看这些安全规范
好 那讲到这里的话那我们就来完整的去看一看
我们怎么样去做这个快速的链接也就是我们怎么样去通过
加密的这套机制去做快速链接这个的话就是我在后面有写到
Demo SSL这是一个我们通过SSL的socket
去和我们的service去做交互的一个过程
这个过程是WiFi联盟的一个规范这是我们用WiFi去连接服务器
通过这样一套流程其实我们可以把它变通一下
我们手机和我们智能门锁
去做开锁的情况之下
我们同样可以通过这个流程来完成密钥的交互
OK 好那我首先讲一下这个过程
首先的话就是我们在服务器端
会生成一个私钥和公钥的密钥对
然后我们的[听不清]就是我们的应用层
我们land safety的这个核它会去要求就是我要去知道你这个公钥
然后服务器就把公钥传给land safety的这个核
那land safety之后它就会告诉私钥
它就会告诉我们另一个safety的核就是说
这样吧
那你也生成一个密钥对那这个时候land safety
它也会生成一个密钥对密钥对的话包括一个公钥一个私钥
当然它不会把这个私钥告诉任何人包括land safety的核
它也不会告诉它会把它的这个publish
就是public的这个key给到
我们的land safety的核
然后land safety的核
把这个public的key
然后给到我们的服务器那服务器这边的话
它有一个自己的私钥和我们CC3220就是我们的
WiFi芯片生成的一个公钥通过这个私钥和公钥
然后通过椭圆曲线的算法然后它就会生成一个密钥
那这边的话我们3220的芯片它通过服务器端的公钥
和它自己的私钥然后它也会生成一个密钥
那其实通过这样一种方式的话其实我们最后的结果就是
服务器生成的密码就是我们这个key的密码
和我们的3220生成的
密码是一模一样的
但是这个密码其实都没有在空中去传输
都是通过一些加密的算法然后我们去生成这两个密钥
在生成完这两个密钥之后然后服务器就开始去传输数据
就它的数据首先是[听不清]数据然后通过生成的密钥
然后去做加密加密完之后明文的方式
就传给我们的M4那M4的话它其实没有
权限
去做任何事情它只能说就是OK
那我通过指令的方式把这个数据传给我们的NWP
也就是我们的网路处理器那网路处理器的话
会把这个数据保存保存之后通过我们的这个
刚才生成的密钥去做解密
然后去做执行
当然这个是SSL的一个过程它的这个过程的话
我们的cortex M4的核就是我们应用层的核
就是land safety的核是没有做任何的事情
那所有的事情的话都是服务器端
和我们的NWP网络处理器去做
这样的话就保证完整的数据安全因为数据安全不可能被
中间的任何一个人所截取包括我们M4的核也截取不了
因为我们NWP的核它是不公开的它所有的信息都不会公开
它只会告诉我们一个结果那它不会把这些信息公开
这样的话就完成了
整个SSL加密的过程
当然这个加密的过程
有依赖于ECC的加密算法
和AES的加密算法那这个加密算法的话
我们TI都是通过硬件的方式固化在我们的ROM里面
然后来去执行所以说我们可以把这个算法
生成密钥的这个过程以及我们椭圆曲线加密的算法
的时间做得非常简短那这样的话就可以使我们的
WiFi连接非常的迅速和快速那这样的一套流程是我们的
WiFi SSL加密的方式那我们如果换个角度上来说
我们可以完整地把这一套加密算法放在我们的蓝牙里面
放在我们的小无线里面好
猜你喜欢
换一换
推荐帖子