TI智能门锁解决方案3
Loading the player...
将在30s后自动为您播放下一课程
好 大家可以看到这张图 这张图的话就是...
我们的一个系统板 那设计好之后 它会面临和存在的问题 我们首先从左往右去看 因为左边蓝色区域里面 它是讲的板机的安全性能 板机的话分为几个部分 我相信大家去做这种设计的话 可以看到我们的一些产品 他会有片外的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 boot secure 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加密的方式 那我们如果换个角度上来说 我们可以完整地把这一套加密算法 放在我们的蓝牙里面 放在我们的小无线里面 好
好 大家可以看到这张图 这张图的话就是...
我们的一个系统板 那设计好之后 它会面临和存在的问题 我们首先从左往右去看 因为左边蓝色区域里面 它是讲的板机的安全性能 板机的话分为几个部分 我相信大家去做这种设计的话 可以看到我们的一些产品 他会有片外的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 boot secure 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加密的方式 那我们如果换个角度上来说 我们可以完整地把这一套加密算法 放在我们的蓝牙里面 放在我们的小无线里面 好
好 大家可以看到这张图
这张图的话就是...
我们的一个系统板
那设计好之后 它会面临和存在的问题
我们首先从左往右去看 因为左边蓝色区域里面
它是讲的板机的安全性能
板机的话分为几个部分
我相信大家去做这种设计的话 可以看到我们的一些产品
他会有片外的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 boot secure 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加密的方式 那我们如果换个角度上来说
我们可以完整地把这一套加密算法 放在我们的蓝牙里面
放在我们的小无线里面 好
好 大家可以看到这张图 这张图的话就是...
我们的一个系统板 那设计好之后 它会面临和存在的问题 我们首先从左往右去看 因为左边蓝色区域里面 它是讲的板机的安全性能 板机的话分为几个部分 我相信大家去做这种设计的话 可以看到我们的一些产品 他会有片外的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 boot secure 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加密的方式 那我们如果换个角度上来说 我们可以完整地把这一套加密算法 放在我们的蓝牙里面 放在我们的小无线里面 好
好 大家可以看到这张图
这张图的话就是...
我们的一个系统板
那设计好之后 它会面临和存在的问题
我们首先从左往右去看 因为左边蓝色区域里面
它是讲的板机的安全性能
板机的话分为几个部分
我相信大家去做这种设计的话 可以看到我们的一些产品
他会有片外的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 boot secure 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加密的方式 那我们如果换个角度上来说
我们可以完整地把这一套加密算法 放在我们的蓝牙里面
放在我们的小无线里面 好
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
TI智能门锁解决方案3
所属课程:TI智能门锁解决方案
发布时间:2018.08.02
视频集数:4
本节视频时长:00:21:20
TI智能门锁解决方案。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>