一、密碼學基礎
密碼學要解決信息的機密性、完整性和不可否認性。其中:
機密性:對傳遞的信息進行加密就可以實現機密性,保證信息不泄漏給未經授權的人。(對稱、非對稱加密)
完整性:防止信息被未經授權的人篡改,保證信息不被篡改。(單向散列、消息認證碼、數字簽名)
不可否認性:能夠保證信息行為人不能否認其信息行為。(對應的技術數字簽名)
身份認證:也能實現身份認證。(對應技術有消息認證、數字簽名)
1.1、密碼學基本元素
明文(plain text):希望得到保密的原始信息
密文(cipher text):明文經過密碼變換后的消息
加密(encryption):由明文變換為密文的過程
解密(decryption):由密文恢復出明文的過程
加密算法(encryption algorithm):對明文進行加密時采用的一組規則
解密算法(decryption algorithm):對密文進行解密時采用的一組規則
秘鑰(key):控制加密和解密算法操作的信息
1.2、密碼學的分類
密碼學的密碼算法可以分為:對稱加密(Sysmmetric Cryptography)和非對稱加密(Asymmetric Cryptography)
以及用於確認數據完整性的單向散列(One-Way Hash Funcrion)又稱密碼校驗(Cryptographic Checksum)、指紋
(Fingerprint)、消息摘要(Message Digest)。
1.2.1 對稱加密
特點:在加密和解密使用同一秘鑰。
優點:加密或解密運算速度塊,加密強度高,算法公開。
缺點:秘鑰分發難,更新周期長,不便於管理。
對稱密碼算法有AES算法(Advanced Encryption Standard)又稱高級加密標准Rijndael加密發,屬於非保密、
公開披露的,在各種平台上易於實現、速度快,設計簡單,密文和明文長度一致,硬件支持、加密芯片。DES也
是對稱密碼算法,就是老了。對稱密碼中分組密碼模式:ECB(Electronic CodeBook)模式,電子密碼本模式,
明文與密文一一對應,存在一定風險。CBC(Cipher Block Chaining)模式,密文分組鏈接模式,初始化向量IV,
每次加密時隨機產生。OFB模式稱為輸出反饋模式,在OFB模式中,XOR所需的比特序列(秘鑰流)可以事先通過
密碼算法生成,和明文分組無關。只需要提前准備好所需要的秘鑰流,然后進行XOR運算就可以了。具體參考下圖:


1.2.2 非對稱加密
非對稱密碼算法的秘鑰分為加密秘鑰和解密秘鑰。發送者使用加密秘鑰(公鑰)對消息
加密,接受者使用解密秘鑰(私鑰)對密文進行解密。公鑰和私鑰一一對應,形成秘鑰對。
非對稱密碼基於數學上的難題,正向生成公鑰和私鑰很容易,但是通過公鑰逆向生成私鑰
是困難的。
非對稱密碼算法-RSA
RSA是非對稱加密中最著名的加密算法,與1977年由Rivest、Adi Shamir和Len Adlenman
三人共同發明的,RSA基於大整數分解素因子困難,一旦發現就能破解,可以用來加密也
可以用來簽名。還有其他的非對稱加密,比如ECC、ELGAmal、Rabin。
1.2.3 混合加密系統
混合加密就是對稱加密和非對稱加密的結合。由於對稱加密算法速度快,強度高,而非對
稱加密算法效率低,但能夠解決秘鑰配送問題。因此可以通過非對稱加密配送對稱秘鑰,
再采用對稱秘鑰用來加密的方式,實現網絡的秘鑰配送與通信加密。
一般實踐中,發送者通過數字證書獲得接收者的公鑰(防止偽裝),然后每次生成對稱加
密用的秘鑰,用接收者的公鑰對對稱密碼算法的密鑰進行加密,同時用對稱密碼算法的秘鑰加
密數據得到密文。因為對稱密碼只對當前的一條信息負責,而非對稱密碼會影響到過完和未來
所有通信,因此公鑰密碼強度應該高於對稱密碼私鑰。

一般是用接受者的公鑰加密對稱秘鑰,35114因為是雙向認證,可以用設備的公鑰先加密一個VKEK,
然后設備用私鑰解密得到VKEK。因為VEK每一個小時變化,如果用平台的公鑰加密的話,非對稱
加密頻率太高,那么用VKEK只用一次就好了,但是要保證VEKE的可靠性。
1.2.4 單向散列
單向散列技術是為了保證信息的完整性,防止信息被篡改的一項技術,有一個輸入和輸出,輸入稱為
消息,輸出稱為散列值。特點:一種采集信息的“指紋”的計數;無論消息長度,計算出的長度是不變的;
快速計算;消息不同,散列值不同,需要具有抗碰撞性,弱抗碰撞性是給定散列值,找到和該消息具
有相同散列值的另一條消息是困難的,強抗碰撞性是任意散列值,找到散列值相同的兩條不同的消息
是困難的;具有單向性,不可由散列值推出原消息。對應的技術有MD、SHA。

單向散列函數的應用
①檢測消息是否被篡改
②基於口令的加密:將口令和salt隨機數混合計算其散列值。
③消息認證碼(MAC):將共享密鑰和消息混合后計算的散列值,可以檢測並防止通信過程中
的錯誤、篡改以及偽裝。
④數字簽名。
⑤挑戰應答(challenge-response)方式認證。
二、密碼學應用
消息認證碼是一種確認完整性並進行認證的計數,輸入包括任意長度的消息和一個發送者與接受
者共享的秘鑰,輸出固定的長度數據。(無法向第三方證明這個消息是教官發送的)

2.2、數字簽名
在非對稱加密中,私鑰用來解密,公鑰用來加密。
在數字簽名技術中,私鑰用來加密,公鑰用來解密。
2.3、數字證書
CA私鑰加密用戶的公鑰和一些相關的信息(有效時間、發證機關、序列號)生成數字證書。
CA機構類似公安局,哈希值類似身份證號,對哈希值簽名就是蓋章。
數字證書的組成:
1、版本;
2、序列號;
3、簽名算法;(ey:sha256RSA)
4、簽名哈希算法;(ey:sha256)
5、頒發者;
6、有效期;
7、使用者;
8、公鑰;(ey:RSA)
9、增強型秘鑰用法;
10、使用者秘鑰標識符;
11、頒發機構秘鑰標識符;
12、頒發者備用名稱;
13、使用者備用名稱;
14、指紋算法;(ey:sha1)
15、指紋;(ey:實際是指紋的密文,在客戶端會用CA的公鑰解密,是唯一的。最終會用簽名算法
和簽名哈希算法對指紋進行簽名。)
2.4、SSL
2.5、國產密碼算法的總結
①SM1 :為對稱加密,其加密強度與AES相當,該算法不公開,調用該算法時,需要通過加密芯片接口
進行調用,秘鑰長度和分組長度為128位。
②SM2 :為非對稱加密,基於ECC,該算法已經公開。SM2橢圓曲線公鑰密碼算法是我國自主設計的
公鑰秘鑰算法,包括SM2-1橢圓曲線簽名算法、SM2-2橢圓曲線秘鑰交互協議、SM2-3橢圓曲線加密
算法,分別用於實現數字簽名秘鑰協商和數據加密等功能。與RSA不同,由於該算法基於橢圓曲線上
點群離散對數難題,故其簽名速度和秘鑰生成速度都快於RSA,256位的SM2密碼強度已經比2048位
的RSA密碼強度高。
③SM3:SM3雜湊算法是由我國自主設計的密碼雜湊算法,可以參考MD5理解,適用於商用密碼應
用中的數字簽名和驗證消息認證碼的生成與驗證以及隨機數的生成,可滿足多種密碼應用的安全需
求。為了保證雜湊算法的安全性,其產生的雜湊值不應太短,例如MD5輸出128比特雜湊值,輸出
長度太短,影響其安全性。SHA-1算法的輸出長度為160比特,SM3輸出的長度為256位,因此SM3
算法的安全性要高於MD5和SHA算法。
④SM4:無線局域網標准的分組數據算法,對稱加密、秘鑰長度和分組長度均為128位。要保證一
個對稱密碼算法的安全性的基本條件是具備足夠的秘鑰長度,SM4算法和AES算法具有相同的密鑰
長度分組長度128,因此安全性上高於3DES算法。
三、密碼學誤用
3.2、關於密碼學的常識
1)不要使用保密的密碼算法
2)低強度密碼比不加密更危險
3)任何密碼都有破解的一天。(量子計算可以在根本上解決此問題,因為量子糾纏可以實現一次性密碼本算法)
4)密碼只是信息安全中的一環,人更重要。
