總金額: 會員:NT$ 0 非會員:NT$ 0 
(此金額尚未加上運費)
電子電信技術 電腦技術 計算技術、計算機技術
 
 
 
 
密碼技術與物聯網安全:mbedtls開發實戰
 叢書名稱: 物聯網核心技術叢書
 作  者: 徐凱/崔紅鵬
 出版單位: 機械工業
 出版日期: 2019.03
 進貨日期: 2019/5/14
 ISBN: 9787111620013
 開  本: 16 開    
 定  價: 593
 售  價: 474
  會 員 價: 435
推到Facebook 推到Plurk 推到Twitter
前往新書區 書籍介紹 購物流程  
 
內容簡介:

本書是國內一本理論結合實踐的物聯網安全書籍,包括數論基礎知識、密碼學演算法、TLS/DTLS協定、物聯網安全協定CoAPs等部分。本書試圖打破物聯網工程師、嵌入式工程師與Web開發工程師之間的知識鴻溝,通過圖文並茂的方式說明密碼技術與物聯網安全。

本書具有以下特點:

密碼學演算法部分除了理論知識之外,還包括mbedtls示例代碼,可以幫助讀者更快地理解晦澀難懂的密碼技術。本書基於嵌入式硬體平臺描述密碼學演算法性能,通過示例代碼分析密碼學演算法資源消耗情況,並給出實戰建議。
?緊扣物聯網安全發展趨勢。認證加密演算法部分,本書詳細描述了認證加密演算法CCM模式和GCM模式;橢圓曲線演算法部分,本書詳細描述了橢圓曲線密碼演算法的數學基礎以及安全原理;

TLS/DTLS協定部分。本書以物聯網終端的角度詳細描述TLS/DTLS協議的實現過程,按照金鑰交換、金鑰計算、對稱加密等部分展開,並總結了物聯網設備使用TLS/DTLS協定的建議;

物聯網安全協定CoAPs部分。本書詳細描述了物聯網安全協議CoAPs,CoAPs依賴DTLS協議,它可在佔用較少資源的情況下為終端設備提供安全連接能力。


作者簡介:

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


圖書目錄:

推薦序一
推薦序二
前言
第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


章節試讀:

為何寫作本書
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章講解數論基礎知識,包括素數、模運算、群、域和有限域等概念,這些數論知識是密碼學
顯示部分資訊

 
  步驟一.
依據網路上的圖書,挑選你所需要的書籍,根據以下步驟進行訂購
選擇產品及數量 結 帳 輸入基本資料 取貨與付款方式
┌───────────────────────────────────────────────────┘
資料確定 確認結帳 訂單編號    

步驟二.
完成付款的程序後,若採用貨到付款等宅配方式,3~7天內 ( 例假日將延期一至兩天 ) 您即可收到圖書。若至分店門市取貨,一週內聯絡取書。

步驟三.
完成購書程序者,可利用 訂單查詢 得知訂單進度。

注意事項.
● 付款方式若為網路刷卡必須等" 2 ~ 3 個工作天"確認款項已收到,才會出貨.如有更改書籍數量請記得按更新購物車,謝謝。

● 大陸出版品封面老舊、磨痕、凹痕等均屬常態,除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。

● 至2018年起,因中國大陸環保政策,部分書籍配件以QR CODE取代光盤音頻mp3或dvd,已無提供實體光盤。如需使用學習配件,請掃描QR CODE 連結至當地網站註冊並通過驗證程序,方可下載使用。造成不便,敬請見諒。

● 我們將保留所有商品出貨權利,如遇缺書情形,訂單未達免運門檻運費需自行負擔。

預訂海外庫存.
商品到貨時間須4週,訂單書籍備齊後方能出貨,如果您有急用書籍,建議與【預訂海外庫存】商品分開訂購。