密碼技術與物聯網安全:mbedtls開發實戰

密碼技術與物聯網安全:mbedtls開發實戰

《密碼技術與物聯網安全:mbedtls開發實戰》是2019年機械工業出版社出版的圖書,作者是徐凱、崔紅鵬。

基本介紹

  • 中文名:密碼技術與物聯網安全:mbedtls開發實戰
  • 作者:徐凱、崔紅鵬
  • 出版社:機械工業出版社
  • ISBN:9787111620013
內容簡介,圖書目錄,作者簡介,

內容簡介

本書是國內一本理論結合實踐的物聯網安全書籍,包括數論基礎知識、密碼學算法、TLS/DTLS協定、物聯網安全協定CoAPs等部分。本書試圖打破物聯網工程師、嵌入式工程師與Web開發工程師之間的知識鴻溝,通過圖文並茂的方式說明密碼技術與物聯網安全。
本書具有以下特點:
?密碼學算法部分除了理論知識之外,還包括mbedtls示例代碼,可以幫助讀者更快地理解晦澀難懂的密碼技術。本書基於嵌入式硬體平台描述密碼學算法性能,通過示例代碼分析密碼學算法資源消耗情況,並給出實戰建議。
?緊扣物聯網安全發展趨勢。認證加密算法部分,本書詳細描述了認證加密算法CCM模式和GCM模式;橢圓曲線算法部分,本書詳細描述了橢圓曲線密碼算法的數學基礎以及安全原理;
?TLS/DTLS協定部分。本書以物聯網終端的角度詳細描述TLS/DTLS協定的實現過程,按照密鑰交換、密鑰計算、對稱加密等部分展開,並總結了物聯網設備使用TLS/DTLS協定的建議;
?物聯網安全協定CoAPs部分。本書詳細描述了物聯網安全協定CoAPs,CoAPs依賴DTLS協定,它可在占用較少資源的情況下為終端設備提供安全連線能力。

圖書目錄

推薦序一
推薦序二
前言
第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 驗證伺服器 29

作者簡介

徐凱 阿里雲IoT開發工程師,花名左相。物聯網技術實踐者與研究者,對物聯網傳輸協定、物聯網安全和物聯網數據存儲有常深刻的認識與理解。多年嵌入式與物聯網系統開發經驗,涉獵終端設備,邊緣計算與物聯網平台等多個領域。編寫大量關於物聯網套用、物聯網作業系統,物聯網傳輸協定相關的技術博文,博文廣受好評。著有《IoT開發實戰 CoAP卷》。
崔紅鵬 嵌入式軟體工程師,現就職於清華大學無錫套用技術研究院——微納電子與系統晶片實驗室。“CPU硬體安全動態監測管控技術”項目組成員,負責密碼學算法實現和SDK開發,該項目曾獲 “2018年世界網際網路大會15項全球領先科技成果”。物聯網安全愛好者,對嵌入式系統、密碼學技術和安全套用方案有深入研究,積極參與開源項目,為GmSSL和zephyr等開源項目貢獻過代碼。

熱門詞條

聯絡我們