《密码技术与物联网安全:mbedtls开发实战》

举报
华章计算机 发表于 2019/12/16 12:49:38 2019/12/16
【摘要】 本节书摘来自华章计算机《密码技术与物联网安全:mbedtls开发实战》 一作者是徐 凯 崔红鹏 。

物联网核心技术丛书

密码技术与物联网安全:

mbedtls开发实战

 

密码技术与物联网安全 立.jpg

徐 凯 崔红鹏 编著

 

 

 


 

Foreword·推荐序一

物联网已经成为在云计算、大数据、AI之后的又一个重要的基础技术,吸引了众多的产业链上下游参与者,在全球范围内呈现迅猛发展的态势。物联网在智能生活、智慧城市、智能制造、物流管理、健康医疗等众多的领域已经有多样化的应用场景和业务落地。物联网应用的普及和物联网技术的成熟将推动世界进入万物互联的新时代,数以百亿计的设备会接入网络,拥有百万亿连接的数字化物联世界即将到来。

物联网IoT的核心理念是把物理世界中的物体联接上网络和云端,通过对物的模型化抽象来提升对物的认知,通过对物的数据化分析来提升物的智能,从而实现物理世界的最终数字化。作为坚信这一理念的践行者,阿里云IoT以解决产业数字化转型升级中的痛点为出发点,通过全面搭建IoT基础设施,打造使能平台,完善生态系统,推动物联网向智能网发展。阿里云IoT已经构建了云管边端一体化的安全的物联网体系,在云侧推出了物联网平台和开发者平台,在管侧发布了国内首个LoRa城域物联网并试运营,在边缘侧发布了边缘计算产品,在端侧提供了适用于不同设备的物联网开源操作系统,建设了物联网标准化联盟,为众多的物联网芯片商、开发者、应用方案商等各种参与方搭建了开放的物联网市场,通过整合场景化的生态应用,为智能生活、智能工业、智慧城市等各行业提供数字化物联的基础设施,助力于物理世界的数字化。

数字化的物联网世界,离不开物联网安全技术的应用。随着物联网终端设备的规模不断增大,随之而来的威胁也越来越大,各种物联网安全事件层出不穷。针对物联网设备的攻击,如漏洞利用、数据泄露、恶意软件、大规模DDoS攻击等造成了大量的资产损失或品牌影响。因此,保障物联网的安全显得至关重要并且刻不容缓。从物联网安全的角度,需要结合多种多样、多种维度的安全技术,如设备的身份安全,设备跟云端的安全接入,各种数据链路的安全通信协议,云端安全防护,设备运营监控等。通过对这些安全技术的广泛应用,构建从设备、边缘、网络到云服务间的安全全链路防护体系,为数字化的物联世界提供可靠的安全基础保障。

本书的两位作者,正是构建安全的数字化物联网世界的践行先锋和布道者。本书的诞生,最初是从解决实际的设备安全连接问题出发,通过对基础密码技术的深入研究,在总结安全开发实践经验的基础上,形成了物联网安全的重要知识积累。在数字化物联世界的理念下,对物联网安全有着积极思考的两位作者进行了勇敢的尝试,最终把这些内容和知识归结成书,实属不易,令人赞叹!本书的内容既涵盖了密码学的基础数论知识,涉及大量安全密码算法和技术原理,又包含了安全连接协议,mbedtls软件框架和安全开发实用工具,还提供了大量的工程实践案例和指导建议。对物联网安全有兴趣的读者,可以从本书了解到物联网安全的基础知识和应用技术;物联网安全的开发者,也可以通过本书提供的工程移植样例以及示例代码,提升对物联网安全协议和基础安全算法的理解;物联网设计架构师,可以通过本书提供的参考解析和性能分析,获得先验性的实践经验和安全指导。正如作者在书中所言,传播知识比学习知识更有价值。真诚地希望本书的推出,能够为物联网安全开发者赋能,让广大的物联网从业者受益,为构建安全的数字化物联世界贡献知识与力量。

 

阿里云智能IoT事业部 总经理 库伟

2019年2月

 

 

Foreword·推荐序二

伴随着传感器、遥感、移动互联、大数据、云计算等技术的不断发展,物联网在各行业得到了广泛应用。2016年,国家“十三五”规划中指出:要积极推进云计算和物联网发展,推进物联网感知设施规划布局,发展物联网开环应用。这显示了国家非常重视物联网基础设施的建设和推广。

在物联网应用高速发展的同时,物联网安全将面临严峻的挑战。大量物联网设备将直接暴露在网络上,如果有部分设备存在安全隐患,那么攻击者可以通过丰富的攻击手段获取用户隐私,影响用户的财产安全甚至人身安全。在一些大规模的物联网系统中,存在安全漏洞的主机可能会被恶意代码感染成为僵尸主机,变成僵尸网络的一部分,对互联网上的业务造成严重影响。

物联网安全问题主要包括设备安全、网络安全和应用安全,解决物联网安全问题需要分步走,其中设备安全更多的是解决物理攻击造成的影响。设备面临的物理攻击手段主要包括:版图攻击、计时攻击、能量分析攻击、电磁攻击和故障攻击。清华大学硬件安全和密码设备实验室在可重构计算和芯片安全领域深耕多年,形成了完善的芯片安全解决方案,在物理攻击防护方面有丰富的知识积累,在此基础上实现了多种主流国密和商密密码学算法,并提供了完善的密钥管理机制和可信计算服务,可以适用于各类安全应用系统进行高速、安全的密码运算。

本书两位作者的写作初衷是解决设备安全连接问题,让设备更安全的连接网络,为推动物联网系统的网络安全和应用安全贡献力量。本书是一本理论结合实践的物联网安全书籍,按照数论基础知识、密码学算法、TLS/DTLS协议、物联网安全协议CoAPs的结构展开。密码学算法部分除了理论知识,还提供了相关工具和mbedtls示例代码,可以帮助读者更好地学习理解。本书中对密码学中较为重要的算法进行详细描述,如认证加密算法GCM/CCM和椭圆曲线算法。在TLS/DTLS协议相关章节中,对协议实现进行详细描述,并使用网络抓包数据作为示例样本,按照密钥交换、密钥计算、对称加密的结构进行展开,详细描述每个过程的具体流程。在物联网安全协议CoAPs章节中,详细描述了物联网安全协议 CoAPs 的实现方法,可以在占用较少资源的情况下为物联网设备提供安全连接服务。为了对开发者有一定的指导意义,本书提供了丰富的示例,所有示例均基于嵌入式硬件平台实现,示例中更加关注硬件资源的消耗情况。

本书的两位作者作为物联网安全的探索者和实践者,为构建安全稳定的物联网系统提供了重要的知识积累,对于物联网开发者或爱好者而言,本书可以提供实践经验和安全指导,值得一读。

 

清华大学硬件安全和密码设备实验室主任   刘雷波教授

 

 

 

Preface·前言

为何写作本书

2015年,我和本书的另一位作者崔红鹏同在无锡物联网产业研究院从事无线传感网方面的开发工作。那年,物联网概念虽然已被炒作多年,但无论是技术路线还是开发手段都还处于摸索阶段。2015年,共享单车才刚刚出现,NBIoT还在协议制定阶段,云计算也没有迎来爆发式增长。当时工作室采购了一套带网络接口的STM32F4开发板,我们想利用这块开发板进行一次HTTPS实验:把STM32F4开发板作为HTTPS服务器,用浏览器作为HTTPS客户端,通过浏览器访问开发板提供的HTTPS服务。我们想将这个嵌入式HTTPS实验作为学习物联网安全的第一步。但万事开头难,我们始终没有完成这个嵌入式HTTPS实验,冗长的调试信息和复杂的握手过程使我们不知所措。在排错过程中,我们查阅了大量的资料,发现了一个又一个新名词或概念,例如SSL、TLS、RSA加密、数字签名和椭圆曲线等,这些密码学基础知识让我们一头雾水。除了一个又一个新名词或概念之外,我们还了解到“RSA已经被破解了”或“哈希算法SHA1已经被破解”这些网络传言,这些真真假假的网络传言让我们在排错过程中束手束脚,生怕使用了不安全的算法。经过几天的努力,我们把问题总结为“TLS握手过程的证书校验出现了问题”。由于大量基础知识的缺失,我们并没有完成这次HTTPS实验。虽然嵌入式HTTPS实验并没有成功,但是我们还是总结了以下经验教训:

1)相对于资源受限制的物联网终端而言,HTTPS协议非常复杂,运行时也需要消耗大量资源。我们也开始思考是不是存在更合适的物联网终端的安全连接方案。

2)HTTPS涉及TLS协议和密码学基础知识,这些内容都需要花时间和精力系统学习。

3)该实验通过PolarSSL开源组件实现SSL/TLS,而SSL/TLS正是HTTPS的安全传输层。如果要熟练掌握嵌入式HTTPS,首先需要掌握PolarSSL。2015年,Polar更名为mbedtls,开启了物联网安全应用的新篇章。

当时我们还有另外一个共识:要想让物联网设备安全地联网,应该分为两步—第一,让物联网设备方便地连接网络;第二,让物联网设备安全地连接网络。

为了完成“两步走”的第一步,我在2016年到2017年间编写了国内第一本关于物联网专用协议CoAP的图书—《IoT开发实战:CoAP卷》,这本书解决了物联网设备方便连接网络的问题。CoAP好比互联网应用中的HTTP,而互联网应用不仅有HTTP,还有HTTPS,我想物联网应用中也应该有CoAPs。2017年到2018年间,三大运营商—中国电信、中国移动和中国联通在国内大力推进NBIoT网络建设,市面上出现了各种各样的NBIoT模组。2018年3月底,阿里巴巴宣布物联网成为继电商、金融、物流和云计算之后的第5条“主赛道”,从此,物联网进入了“云连物”时代。NBIoT和云计算的脱颖而出极大地推动了物联网的发展,当百万亿连接不再是遥不可及的梦想时,物联网应用不再满足于“方便”,同时对“安全”也提出了更高的要求。

在这种大背景下,2017年6月,我找到了本书的另一位作者崔红鹏,此时他已经在清华大学无锡应用技术研究院从事安全芯片的开发工作。我表示希望结合mbedtls写一本详细描述物联网连接安全的图书,我们很快达成了共识并付诸实践。我已经有编写技术图书的经验,我本以为上一次的成功经验可以使这次图书编写变成一次“愉快的写作之旅”,但是没过多久我就发现自己错了。物联网连接安全涉及大量密码学知识,而密码学又涉及很多数学基础知识,例如初等数论和抽象数学等。数学基础知识的缺失使得图书的编写过程举步维艰,我们花费大量的时间学习各种数论公式,甚至还研究公式或定理的证明过程。大学毕业之后很少有系统地学习数学理论知识的机会,这次特殊的自主学习经历让我们深刻体会到了数学的力量,那些经典的公式居然在几百年之后依然发挥着巨大的作用。

目标读者

本书适合物联网工程师、嵌入式工程师和Web开发工程师阅读。

对于物联网工程师而言,通过本书可以系统地学习物联网安全连接的基础知识。本书借助深入浅出的示例讲解密码学算法,这些算法是构成物联网连接安全的利器。

对于嵌入式工程师而言,本书详细讲解了mbedtls不同模块的使用方法,这些使用方法可以帮助你构建物联网安全应用。本书还分析各种安全算法的性能,这些分析结果将帮助你在实际项目中做出正确的选择。

对于Web开发工程师而言,通过本书可以从设备角度了解物联网连接安全的限制条件,在这些限制条件下,物联网设备不能直接使用互联网应用中常见的安全套件。

总而言之,本书试图消除物联网工程师、嵌入式工程师与Web开发工程师之间的知识鸿沟,在物联网连接安全方面达成共识。

如何阅读本书

本书主要内容分为三部分。

第一部分:第1~3章。第一部分是全书的基础。第1章主要讲解密码学安全常识、mbedtls和OpenSSL相关基础知识。本书虽然以mbedtls为核心,但在多个章节中使用了OpenSSL工具,所以在第1章的后面部分将详细讲解OpenSSL的安装和使用方法。第2章介绍mbedtls的安装和使用方法,由于本书的大多数硬件示例均基于Zephyr构建,所以第2章还介绍了Zephyr的构建过程和使用方法。第3章讲解数论基础知识,包括素数、模运算、群、域和有限域等概念,这些数论知识是密码学算法的基础。

第二部分:第4~12章。第二部分主要讲解密码学6种主要密码技术—单向散列函数、对称加密算法、消息认证码、随机数、公钥密码和数字签名。第二部分还介绍了多种密码技术,分别是SHA256、AES、HMAC、GCM、CCM、CTR_DRBG、RSA、DH、ECDH、DSA、ECDSA和X.509,每章均包括原理说明和mbedtls示例代码,试图通过理论结合实践的方式向读者展现mbedtls的全貌,其中椭圆曲线相关的ECDH和ECDSA涉及较多数学知识,是本书较难理解的内容。

第三部分:第13~16章。第三部分主要包括mbedtls移植与性能分析、TLS/DTLS/CoAPs等内容。mbedtls性能分析部分将比较各种安全算法,这些分析结果可以帮助读者在实际项目中做出正确选择。第三部分还介绍了TLS和DTLS协议,虽然TLS协议异常复杂且仍在不断发展,但它是物联网连接安全的核心协议。第14章详细介绍TLS协议,包括TLS握手协议、密钥交换、密钥计算和对称加密等,这些是本书最复杂的内容。为了讲解CoAPs,第15章还介绍了DTLS协议,重点介绍了DTLS协议与TLS协议之间的联系与区别。最后一章介绍了CoAPs,CoAPs可被理解为CoAP协议与DTLS协议的结合,它将成为物联网连接安全的主流协议。

相关资料

本书提供多个基础示例,这些示例代码可以帮助读者更好地了解mbedtls。

示例代码仓库网址为:https://github.com/iotwuxi/iot_security。

勘误与支持

由于作者水平有限,书中难免有错误之处,恳请读者批评指正。如果读者在阅读过程中发现任何问题,可通过邮件与本书的两位作者取得联系。

徐凯的邮箱:xukai19871105@126.com

崔红鹏的邮箱:xianrenqiu90@126.com

徐凯的致谢

感谢机械工业出版社华章公司的编辑,没有他们的策划与鼓励就不会有这本书。

感谢阿里巴巴阿里云IoT无锡团队的汪亮(画安)和罗日健(悠仔),感谢他们营造了一个具有创新精神的工作环境,这种氛围激励我不断前进;感谢一起并肩战斗的小伙伴们,他们是黄浩(先道)、赵峰(新安)、林达(靖明)、龙超(瞻龙)、吴叶俊(安悟)、庞海亮(胖亮)、谢娟(无鱼)、刘愿(毕险)、李迪晞(平休)、彭微(师尘)、三帖(张云);感谢阿里云IoT的两位师兄李锟(怀明)和杨骁 (羽升);感谢崔杨(懿侬),是他让我明白“传播知识比学习知识更有价值”。

感谢我的导师江南大学君远学院院长张秋菊教授,感谢您帮助我开启物联网世界的大门。

感谢我的妻子左文娟一如既往地支持我写作,感谢家人的默默付出与包容。

崔红鹏的致谢

感谢微纳电子实验室的朱敏、吴有余、张继璠和龚雪,是他们为实验室创造了良好的工作环境和学习氛围。感谢实验室与我一起工作的同事,他们是:杨锦江、王宇峰、孙进军、徐翔、张扣、姚俊、张沛、李植、章俊、李康、胡永鑫、赵新成、赵启义、徐健、郭唯、贾德存、蒋广隶。

感谢妈妈和老婆的默默付出,是她们让我有充足的时间和精力完成写作。在此祝家人健康快乐。

 

 

 

 

Contents·目录

推荐序一

推荐序二

前言

第1章 物联网安全概述  1

1.1 本章主要内容  1

1.2 物联网安全基础  1

1.2.1 物联网安全与互联网安全  1

1.2.2 物联网安全与密码学  2

1.3 密码学安全常识  3

1.3.1 柯克霍夫原则  3

1.3.2 Alice和Bob  4

1.3.3 Eve和Mallory  4

1.4 mbedtls简介  5

1.4.1 密码学工具箱  5

1.4.2 TLS/DTLS协议  6

1.4.3 X.509证书  6

1.5 OpenSSL简介  7

1.5.1 源代码安装  7

1.5.2 命令行工具简介  8

1.5.3 摘要命令 dgst  8

1.5.4 对称加密命令 enc  8

1.5.5 SSL命令 s_server   9

1.6 本章小结  11

第2章 mbedtls入门  12

2.1 本章主要内容  12

2.2 mbedtls 体系结构  12

2.3 Linux mbedtls 安装  13

2.3.1 安装 CMake  13

2.3.2 使用 CMake 安装 mbedtls  14

2.4 Linux mbedtls 示例  17

2.4.1 Base64示例  17

2.4.2 遍历 mbedtls 安全套件  20

2.5 Zephyr OS 简介  24

2.6 Zephyr 开发环境搭建  25

2.7 Zephyr 硬件平台选择  26

2.7.1 资源介绍  27

2.7.2 Ubuntu中安装STLink工具  28

2.8 Zephyr 应用示例开发  28

2.8.1 编写 CMakeLists.txt  29

2.8.2 编写 prj.conf  29

2.8.3 编写 main.c  29

2.8.4 编译与运行  30

2.9 Zephyr mbedtls 示例   31

2.9.1 Base64示例  31

2.9.2 大数运算示例  35

2.10 本章小结  39

第3章 数论基础知识  41

3.1 本章主要内容  41

3.2 素数  42

3.3 模运算  43

3.3.1 模数  43

3.3.2 同余  43

3.3.3 模算术运算  44

3.3.4 模逆运算  44

3.3.5 模重复平方  46

3.4 群  47

3.4.1 群的基本概念  47

3.4.2 循环群  48

3.4.3 子群  49

3.5 域  50

3.5.1 域的基本概念  50

3.5.2 有限域和素域  50

3.5.3 扩展域GF(2m)  52

3.5.4 GF(2m)加法和减法  53

3.5.5 GF(2m)乘法  53

3.5.6 GF(2m)逆操作  55

3.6 欧拉函数  56

3.7 欧拉定理  56

3.8 费马小定理  57

3.9 离散对数  57

3.9.1 模算术–指数  57

3.9.2 模算术–对数  58

3.9.3 离散对数问题  59

3.10 本章小结  59

第4章 单向散列函数  60

4.1 本章主要内容  60

4.2 单向散列函数原理  60

4.2.1 单向散列函数性质  61

4.2.2 单向散列函数应用  62

4.3 单向散列函数的实现方法  63

4.3.1 MD算法家族  63

4.3.2 SHA算法家族  63

4.4 SHA256 详细描述  64

4.4.1 预处理  64

4.4.2 哈希计算  66

4.4.3 具体示例  68

4.5 mbedtls 单向散列应用工具  69

4.5.1 hello  69

4.5.2 generic_sum  69

4.6 mbedtls SHA256示例  70

4.6.1 示例描述  70

4.6.2 示例代码  70

4.6.3 代码说明  72

4.6.4 编译与运行  74

4.7 本章小结  74

第5章 对称加密算法  76

5.1 本章主要内容  76

5.2 对称加密算法原理  76

5.3 分组密码模式  77

5.3.1 ECB(电子密码本)模式  77

5.3.2 CBC(密码分组链接)模式  78

5.3.3 CTR(计数器)模式  79

5.4 PKCS7填充方案  81

5.5 AES算法概述  82

5.6 AES 算法详细说明  84

5.6.1 字节替换  84

5.6.2 行移位  86

5.6.3 列混合  87

5.6.4 轮密钥加法  87

5.6.5 轮密钥生成  88

5.7 AES算法动手实践  90

5.8 mbedtls 对称加密应用工具  91

5.8.1 aescrypto2  91

5.8.2 crypt_and_hash  92

5.9 mbedtls AES示例  93

5.9.1 示例描述  93

5.9.2 示例代码  94

5.9.3 代码说明  96

5.9.4 编译与运行  97

5.10 本章小结  99

第6章 消息认证码  100

6.1 本章主要内容  100

6.2 消息认证码原理  100

6.3 消息认证码实现方法  102

6.3.1 单向散列算法实现  102

6.3.2 分组密码实现  102

6.3.3 认证加密算法实现  102

6.4 HMAC算法  102

6.5 CBC-MAC和CMAC  104

6.5.1 CBC-MAC  104

6.5.2 CMAC  104

6.6 认证加密CCM  106

6.6.1 输入数据格式化  106

6.6.2 认证和加密  108

6.7 认证加密GCM  109

6.7.1 GHASH  110

6.7.2 GCTR  110

6.7.3 认证和加密  111

6.8 mbedtls HMAC示例  112

6.8.1 示例代码  113

6.8.2 代码说明  114

6.8.3 编译与运行  116

6.9 mbedtls GCM 示例  117

6.9.1 示例代码  117

6.9.2 代码说明  119

6.9.3 编译与运行  120

6.10 本章小结  121

第7章 伪随机数生成器  122

7.1 本章主要内容  122

7.2 随机数概述  122

7.3 随机数生成器  123

7.3.1 真随机数生成器  123

7.3.2 伪随机数生成器  124

7.4 CTR_DRBG算法  125

7.4.1 参数情况  125

7.4.2 生成过程  125

7.5 mbedtls 随机数应用工具  126

7.5.1 gen_entropy  126

7.5.2 gen_random_ctr_drbg  127

7.5.3 gen_random_havege  127

7.6 mbedtls CTR_DRBG示例  128

7.6.1 示例代码  128

7.6.2 代码说明  130

7.6.3 编译与执行  131

7.7 mbedtls 大素数生成示例  132

7.7.1 示例代码  133

7.7.2 代码说明  135

7.7.3 编译与执行  135

7.8 mbedtls 自定义熵源接口  136

7.9 本章小结  137

第8章 RSA算法  138

8.1 本章主要内容  138

8.2 RSA算法原理  138

8.3 RSA 算法详细说明  140

8.4 RSA加速技术  141

8.4.1 中国剩余数定理  142

8.4.2 动手实践  142

8.4.3 性能对比  143

8.5 RSA 填充方法  144

8.5.1 PKCS1-V1_5  144

8.5.2 OAEP  145

8.6 mbedtls RSA应用工具  146

8.6.1 rsa_genkey  146

8.6.2 rsa_encrypt  147

8.6.3 rsa_decrypt  148

8.7 mbedtls RSA加解密示例  148

8.7.1 示例代码  149

8.7.2 代码说明  151

8.7.3 编译与执行  153

8.8 本章小结  155

第9章 DH密钥协商  156

9.1 本章主要内容  156

9.2 DH密钥协商数学基础  156

9.3 DH密钥协商详细说明  157

9.3.1 DH共享参数  157

9.3.2 DH密钥协商  158

9.3.3 DH具体实践  158

9.3.4 DH密钥协商安全性分析  159

9.4 常用共享参数  161

9.5 mbedtls DH应用工具  162

9.5.1 dh_genprime  163

9.5.2 dh_server  164

9.5.3 dh_client  165

9.6 mbedtls DH示例  165

9.6.1 示例代码  166

9.6.2 代码说明  168

9.6.3 编译与执行  170

9.7 本章小结  172

第10章 ECDH密钥协商  173

10.1 本章主要内容  173

10.2 椭圆曲线定义  173

10.2.1 实数域上的椭圆曲线  174

10.2.2 有限域上的椭圆曲线  175

10.3 椭圆曲线上群操作  176

10.3.1 群操作几何描述  176

10.3.2 群操作代数描述  177

10.3.3 群操作动手实践  178

10.4 椭圆曲线离散对数问题  180

10.5 常用有限域上的椭圆曲线  181

10.6 ECDH密钥协商  183

10.6.1 ECDH共享参数  184

10.6.2 密钥协商过程  184

10.6.3 动手实践  184

10.7 mbedtls椭圆曲线模块  185

10.8 mbedtls ECDH示例  187

10.8.1 示例代码  188

10.8.2 代码说明  190

10.8.3 编译与执行  192

10.9 本章小结  193

第11章 数字签名RSA、DSA和ECDSA  194

11.1 本章主要内容  194

11.2 数字签名原理  194

11.3 RSA 数字签名  196

11.3.1 RSA数字签名详细说明  196

11.3.2 RSA数字签名动手实践  197

11.3.3 RSA签名填充方法  197

11.4 DSA数字签名  199

11.4.1 DSA数字签名详细说明  199

11.4.2 DSA签名动手实践  200

11.5 ECDSA数字签名  201

11.5.1 ECDSA数字签名详细说明  201

11.5.2 ECDSA动手实践  203

11.6 mbedtls 数字签名应用工具  204

11.6.1 rsa_genkey  204

11.6.2 rsa_sign  204

11.6.3 rsa_verify  205

11.7 mbedtls RSA签名示例  205

11.7.1 示例代码  206

11.7.2 代码说明  208

11.7.3 编译与执行  209

11.8 mbedtls ECDSA示例  211

11.8.1 示例代码  211

11.8.2 代码说明  214

11.8.3 编译与执行  215

11.9 本章小结  216

第12章 数字证书X.509  217

12.1 本章主要内容  217

12.2 数字证书原理  217

12.3 X.509证书标准  219

12.3.1 证书结构  219

12.3.2 证书名称  219

12.3.3 证书实例  220

12.4 mbedtls X.509应用工具  224

12.4.1 cert_req  225

12.4.2 req_app  226

12.4.3 cert_write  227

12.4.4 cert_app  229

12.5 mbedtls X.509示例  231

12.5.1 示例代码  232

12.5.2 代码说明  234

12.5.3 编译与执行  236

12.6 本章小结  237

第13章 mbedtls 移植与性能分析  238

13.1 本章主要内容  238

13.2 mbedtls移植  238

13.2.1 时间相关  239

13.2.2 网络相关  240

13.2.3 内存分配相关  241

13.3 mbedtls算法性能说明  243

13.3.1 单向散列函数  243

13.3.2 AES算法  244

13.3.3 AES-GCM和AES-CCM  245

13.3.4 伪随机数生成器  246

13.3.5 RSA  247

13.3.6 DHE和ECDHE  248

13.3.7 ECDSA  248

13.3.8 ECC内存优化  250

13.4 本章小结  253

第14章 TLS  254

14.1 本章主要内容  254

14.2 TLS原理  254

14.2.1 TLS设计目标  256

14.2.2 TLS框架说明  256

14.3 TLS密码套件  257

14.4 TLS记录层协议  258

14.5 密码规格变更协议  260

14.6 警报协议  260

14.7 握手协议  261

14.7.1 握手协议概述  261

14.7.2 完整握手过程  263

14.7.3 会话恢复  270

14.8 TLS密钥交换  271

14.8.1 密钥交换算法对比  271

14.8.2 ECDHE密钥交换  272

14.8.3 ECDH与ECDHE的区别  275

14.9 TLS密钥计算  276

14.9.1 伪随机数生成函数  276

14.9.2 主密钥计算  278

14.9.3 KeyBlock计算  278

14.9.4 密钥计算示例  279

14.10 对称加密  281

14.10.1 分组加密  281

14.10.2 认证加密  284

14.10.3 对称加密示例  285

14.10.4 对称加密结果长度对比  287

14.11 mbedtls TLS应用工具  287

14.11.1 基础示例说明  289

14.11.2 启动 ssl_server2  290

14.11.3 抓取网络数据  290

14.11.4 启动 ssl_client2  291

14.11.5 分析网络数据  291

14.12 构建TLS服务器  293

14.12.1 生成证书  293

14.12.2 编写HTML页面  295

14.12.3 启动s_server   295

14.12.4 验证服务器  295

14.13 构建TLS客户端  296

14.13.1 配置文件  297

14.13.2 示例代码  298

14.13.3 代码说明  301

14.13.4 编译与执行  304

14.14 本章小结  306

第15章 DTLS  307

15.1 本章主要内容  307

15.2 DTLS概述  307

15.3 DTLS与TLS区别  308

15.3.1 记录层协议变化  308

15.3.2 握手协议变化  309

15.4 PSK密钥交换  313

15.4.1 PSK Identity  313

15.4.2 密钥交换详细过程  314

15.4.3 PSK与X.509证书传输开销比较  317

15.5 DTLS对称加密变化  317

15.6 mbedtls DTLS应用工具  318

15.6.1 基础示例说明  319

15.6.2 启动 ssl_server2  319

15.6.3 抓取网络数据  320

15.6.4 启动 ssl_client2  320

15.6.5 分析网络数据  321

15.7 构建DTLS服务器  322

15.8 构建DTLS客户端  322

15.8.1 配置文件  323

15.8.2 示例代码  324

15.8.3 代码说明  327

15.8.4 编译与执行  329

15.9 本章小结  331

第16章 CoAPs  332

16.1 本章主要内容  332

16.2 CoAPs原理  332

16.3 CoAPs安全说明  333

16.4 构建CoAPs服务器  333

16.4.1 服务器代码  334

16.4.2 代码说明  335

16.4.3 pom.xml文件  336

16.4.4 构建与执行  337

16.5 构建CoAPs客户端  338

16.5.1 示例代码  338

16.5.2 代码说明  339

16.5.3 编译与执行  340

16.6 本章小结  341

参考文献  342


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200