killBase系列 -- 密碼學(二)

前言

由於排版不理想,因此直接用兩個文檔承載,有什麼不便,還請擔待。
killBase -- 密碼學(一) 傳送門html

附錄

1. DES 詳細加密過程

1. **對輸入的密鑰進行變換**。
    用戶的64bit密鑰,其中第8, 16, 24, 32, 40, 48, 56, 64位是校驗位, 使得每一個密鑰都有奇數個1。因此密鑰事實上是56位。對這56位密鑰進行以下表的換位。

57, 49, 41, 33, 25, 17,   9,  1, 58, 50, 42, 34, 26, 18, 10,  2, 59, 51, 43, 35, 27, 19, 11,  3, 60, 52, 44, 36, 
63, 55, 47, 39, 31, 23, 15,  7, 62, 54, 46, 38, 30, 22, 14,  6, 61, 53, 45, 37, 29, 21, 13,  5, 28, 20, 12,   4,

表的意思是第57位移到第1位,第49位移到第2位,...... 以此類推。變換後獲得56bit數據,將它分紅兩部分,C[0][28], D[0][28]。

2. **計算16個子密鑰**,計算方法C[i][28] D[i][28]爲對前一個C[i-1][28], D[i-1][28]作循環左移操做。16次的左移位數以下表:

 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16   (第i次)
 1,  1,  2,  2,  2,  2,  2,  2,  1,  2,  2,  2,  2,  2,  2,  1    (左移位數)

3. **串聯**計算出來的C[i][28] D[i][28] 獲得56位,而後對它進行以下變換獲得48位子密鑰K[i][48]

14, 17, 11, 24,  1,  5,  3, 28, 15,  6, 21, 10, 23, 19, 12,  4, 26,  8, 16,  7, 27, 20, 13,  2,
41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32,

表的意思是第14位移到第1位,第17位移到第2位,以此類推。在此過程當中,發現第9,18,22,25, 35,38,43,54位丟棄。

4. 對64bit的明文輸入進行換位變換。換位表以下:

58, 50, 12, 34, 26, 18, 10,  2, 60, 52, 44, 36, 28, 20, 12,  4,
62, 54, 46, 38, 30, 22, 14,  6, 64, 56, 48, 40, 32, 24, 16,  8,
57, 49, 41, 33, 25, 17,   9,  1, 59, 51, 43, 35, 27, 19, 11,  3,
61, 53, 45, 37, 29, 21, 13,  5, 63, 55, 47, 39, 31, 23, 15,  7

表的意思就是第一次變換時,第58位移到第1位,第50位移到第2位,...... 依此類推。獲得64位數據,將這數據先後分紅兩塊L[0][32], R[0][32]。

5. 加密過程,對R[i][32]進行擴展變換成48位數,方法以下, 記爲E(R[i][32])

32,  1,  2,  3,  4,  5,   
 4,  5,  6,  7,  8,  9,
 8,  9, 10, 11, 12, 13, 
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25, 
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32,  1,

6. 將E(R[i][32])與K[i][48]做異或運算,獲得48位數,將48位數順序分紅8份,6位一份,B[8][6]。

7. 使用S[i]替換B[i][6]。過程以下: 取出B[i][6]的第1位和第6位連成一個2位數m, m就是S[i]中對應的行數(0-3),取出B[i][6]的第2到第5位連成一個4位數n(0-15),n就是S[i]中對應的列數,用S[i][m][n]代替B[i][6]。S是4行16列的對應表,裏面是4位的數,一共有8個S,定義以下:

S[1]:
   14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7, 
  0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8, 
  4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0, 
  15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,
S[2]:
    15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10, 
    3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5, 
    0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15, 
    13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,
S[3]:
    10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8, 
    13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1, 
    13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7, 
    1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,
S[4]:
    7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15, 
  13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9, 
  10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4, 
  3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14, 
S[5]: 
  2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9, 
  14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6, 
  4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14, 
  11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3, 
S[6]: 
  12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11, 
  10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8, 
  9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6, 
  4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13, 
S[7]: 
  4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1, 
  13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6, 
  1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2, 
  6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12, 
S[8]: 
  13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7, 
  1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2, 
  7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8, 
  2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11,

8. 將從B[i][6]通過S獲得的8個4位數連起來獲得32位數。對這個數進行以下變換:

   16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10, 
  2,8,24,14,32,27, 3, 9,19,13,30, 6,22,11, 4,25,

  獲得的結果與L[i][32]做異或運算,把結果賦給R[i][32]。

9. 把R[i-1][32]的值賦給L[i],從5開始循環。直到K[16][48]結束。

10. 將最後的L,R合併成64位,而後進行以下轉化獲得最後的結果。這是對第4步的一個逆變化。
 40, 8, 48, 16, 56, 24, 64, 32, 
 39, 7, 47, 15, 55, 23, 63, 31, 
 38, 6, 46, 14, 54, 22, 62, 30, 
 37, 5, 45, 13, 53, 21, 61, 29, 
 36, 4, 44, 12, 52, 20, 60, 28,
 35, 3, 43, 11, 51, 19, 59, 27, 
 34, 2, 42, 10, 50, 18, 58, 26, 
 33, 1, 41,   9, 49, 17, 57, 25

2. https 的加密算法

因爲以前看過 https 是 由 secure socket layer 實現的。 也是經過 公鑰私鑰 保證其安全性,因此在學習這篇文章的時候,就想 https 是由哪一種 加密算法 作爲其 底層實現的呢。 所以,就有了下面這部分。java

關於 https 與 http 的區別 請看個人這篇博客,再也不贅述。網絡基礎知識程序員

原理:算法

  • 瀏覽器把自身支持的一系列Cipher Suite(密鑰算法套件,後文簡稱Cipher)[C1,C2,C3, …]發給服務器;segmentfault

  • 服務器接收到瀏覽器的全部Cipher後,與本身支持的套件做對比,若是找到雙方都支持的Cipher,則告知瀏覽器;windows

  • 瀏覽器與服務器使用匹配的Cipher進行後續通訊。若是服務器沒有找到匹配的算法,瀏覽器(以 Chrome 56爲例)將給出錯誤信息:瀏覽器

下面講一下如何分析。安全

  1. 準備: 經過能夠抓取網絡包的工具,這裏經過 Wireshark 分析。關於wireshark 的介紹請點擊這裏.查看瀏覽器發送給服務器的 Ciper服務器的 Ciper服務器

  2. 流程:網絡

    • 瀏覽器首先發起握手協議, 一個'Client Hello'消息,以下圖,按照Protocol協議順序排序,而後,找到Client Hello,選中,依次查找 'Secure Sockets Layer' -> TLSv1.2 Record Layer -> Handshake protocal ->Ciper Suites.

    • 能夠看到, Cipher有不少。總共16,第一個是Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)。

    • 若是按照順序繼續尋找第一個 Info 爲'Sever Hello' 的報文,能夠找到相應的Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) 。.

  3. Cipher介紹:

    • 密鑰交換算法,用於決定客戶端與服務器之間在握手的過程當中如何認證,用到的算法包括RSA,Diffie-Hellman,ECDH,PSK等

    • 加密算法,用於加密消息流,該名稱後一般會帶有兩個數字,分別表示密鑰的長度和初始向量的長度,好比DES 56/56, RC2 56/128, RC4 128/128, AES 128/128, AES 256/256

    • 報文認證信息碼(MAC)算法,用於建立報文摘要,確保消息的完整性(沒有被篡改),算法包括MD5,SHA等。

    • PRF(僞隨機數函數),用於生成「master secret」。

    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b):

      • 基於TLS協議

      • 使用 ECDHE,ECDSA做爲密鑰交換算法

      • 加密算法 AES(密鑰與初始向量的長度爲128)

      • MAC 算法 SHA

  4. 總結:

Client端密鑰算法套件[C1,C2,C3],Server端密鑰算法套件[C4,C2,C1,C3],
則,IIS[(Internet Infomation Services)](),C2將被優先返回


3. wireshark 的使用問題

問題:第一次使用 wireshark 的時候,不顯示接口。緣由是。。。
剛開始使用 在windows 上須要 winpacp 而且開啓 npf 服務。
注: 若是 沒有安裝 winpacp ,想直接 經過 net start npf 開啓服務,將會提示。 發生系統錯誤2

  1. winpacp 安裝 。。。

這裏是下載網站
直接安裝便可。

  1. 開啓 npf 服務

打開 cmd ,輸入 net start npf ,提示:服務已經啓動。

  1. 進入界面,選擇相應的網卡。


這裏,能夠經過 網絡鏈接 看出來。

因此,個人是無線網絡鏈接。

  1. 最終界面


WireShark 主要分爲這幾個界面

  1. Display Filter(顯示過濾器), 用於過濾

  2. Packet List Pane(封包列表), 顯示捕獲到的封包, 有源地址和目標地址,端口號。 顏色不一樣,表明

  3. Packet Details Pane(封包詳細信息), 顯示封包中的字段

  4. Dissector Pane(16進制數據)

  5. Miscellanous(地址欄,雜項)

結語

發現排版,好像是有問題的,閱讀效果不理想,能夠去個人我的博客中。

都看到這裏了,點個關注,點波再走,QAQ。
你的小手輕點,是我最大的動力哦。

一隻想當程序員的1米88處女座大可愛如此說

參考

  1. DES 加密算法解析

  2. 分組加密的四種模式

  3. 阮一峯--RSA算法原理

  4. java中RSA加解密的實現

  5. 關於RSA算法密鑰長度/密文長度/明文長度

  6. https背後的加密算法

相關文章
相關標籤/搜索