title: 密碼技術總結 date: 2018-07-07 01:26:57 tags: 加密碼技術 categories:
從明文通訊到對稱加密
非對稱加密(公鑰加密)
混合密碼系統
單向雜湊函式——檔案被修改了嗎?
訊息認證碼——訊息是偽裝者發的嗎?
數字簽名——訊息到底是誰寫的
證書——公鑰合法了
為什麼要加密呢?不妨先看看明文通訊
eve 可以直接竊聽到alice與bob的通訊過程,通過抓包就可以檢視到通訊內容,如果郵件內容是羞答答的,怎麼可以被其他人看到呢?(邪魅微笑)
在逼格滿滿的咖啡廳,你正在愉快的刷著微博,逛著知乎,瀏覽豆瓣,你以為你連著免費wifi爽歪歪,
圖,喝咖啡,玩手機
然後其實被他筆記本造的wifi,
圖,黑客
凱撒密碼(字母代換)
將乙個字母表向指定方向平移n位,解密反之,n為金鑰 。
金鑰只可能是0-25共26個,用1-25每個數作為金鑰嘗試解密,很容易發現明文,從而得出金鑰是幾。(暴力破解)簡單替換密碼
兩個字母表中字母之間隨機一一對應, 金鑰是替換表。
金鑰空間是 26!= 2^88。所以考慮使用(頻率破解)。對稱密碼標準
aes
目前採用的是rijndael
演算法,rijndael
的分組長度可以是以32bit為單位在128到256範圍內選擇。目前aes 規定分組長度只能有128,192,256三種。
aes 一輪的步驟:
其中步驟的含義為:
subbytes: 每個位元組的值(0-255的任意值)為索引,從一張擁有256個值的替換表(s-box)中查詢對應的值處理。將乙個1位元組的值替換成另乙個1位元組的值。
shiftrows:將4個位元組為單位的行(row)按照一定的規則左平移。
mixcolumns:將乙個4位元組的值進行位元運算,變成另乙個4位元組的值。
addroundkey :將mixcolumns的輸出與輪金鑰xor。
alice 和 bob 使用相同的秘鈅來加解密訊息,也就是對稱加密,上面提到的加密演算法都是對稱加密。
這樣,即使第三者 eve 竊聽到通訊過程,那麼 eve 也只能看到奇奇怪怪符號組成的密文
這樣alice和bob就可以放心的互相通訊了嗎?對啊!當然不是,這只是解決了機密性的問題,對稱加密的金鑰需要被傳送給對方,對方才能解密,但直接傳送,秘鑰也會被竊聽,這就是秘鑰配送問題。
公鑰加密又叫非對稱加密,這類加密演算法中存一對秘鑰:
公鑰和私鑰匙是天生一對,乙個確定的公鑰加密的資訊,只有他的私鑰才能解密資訊。
使用公鑰加密對資訊進行加密通訊的流程如下:
rsa是一種非對稱加密演算法,是2023年由羅納德·李維斯特(ron rivest)、阿迪·薩莫爾(adi shamir)和倫納德·阿德曼(leonard adleman)一起提出的,並以他們名字的首字母命名。
name
value
秘鑰數 e 和 數 n
秘鑰數 d 和 數 n
加密過程$$ 密文 = (明文^e) mod(n )$$
解密過程$$ 明文 = (密文^d) mod (n )$$
原理詳情:
阮一峰的網路日誌——rsa演算法原理(一)
阮一峰的網路日誌——rsa演算法原理(二)
加密運算強度大,費時間,比如rsa加密過程是對明文求指數運算後再取模,這顯然比aes運算量要大。有何優化方案嗎?有,結合對稱加密與公鑰加密。
單項雜湊函式就是生成檔案「指紋」的方法。單項雜湊函式也稱為訊息摘要函式(message digest function
),雜湊函式,雜湊函式。
根據任意長度的訊息計算出固定長度的雜湊值。
能快速計算出雜湊值。
抗碰撞性,訊息不同,雜湊值也不同。
具備單向性,根據雜湊值無法計算出訊息。
md5md5(message digest):一般128位的md5雜湊被表示為32位十六進製制數字,例如
9e107d9d372bb6826bd81d3542a419d6 = md5("the quick brown fox jumps over the lazy dog");
其強抗碰撞性已經被攻破,已經不再安全。
sha-1/2/3 (secure hash algorithm)
sha1: 已經被列為「可謹慎運用的密碼清單」,為了保持相容性才使用;其強抗碰撞性已經 被攻破。
sha2:由 sha-256 和 sha-512衍生出6種版本,顯然鑑於內部狀態,sha-256系列更適合32位cpu。
名稱輸出長度
內部狀態長度
備註sha-224
22432 * 8 = 256
將sha-256的結果截掉32位元
sha-256
25632 * 8 = 256
sha-521/224
22464 * 8 = 512
將sha-512的結果截掉288位元
sha-512/256
25664 * 8 = 512
將sha-512的結果截掉256位元
sha-384
38464 * 8 = 512
將sha-512的結果截掉128位元
sha-512
51264 * 8 = 512
sha3:2023年選拔出名為keccak的演算法作為sha3,結構完全不同sha-2,適用各種裝置,硬體上實現效能高,更安全。
使用單向雜湊函式能實現完整性的檢察,但是有些如果主動攻擊者mallory偽裝成alice,向bob同時傳送了訊息和雜湊值。這時bob能通過單向雜湊函式檢察訊息的完整性,但是卻沒能識別出這條訊息是mallory偽裝成bob傳送的,無法被認證。
訊息認證碼(message authentication code) 是一種與金鑰相關聯的單項雜湊函式。
重放攻擊
訊息認證碼解決了完整性與偽裝問題,仍然無法解決「對第三方證明」和「防否認」問題。這就需要數字簽名來解決。
設想要防否認,只要簽名只能由訊息傳送者生產就ok了。
數字簽名對簽名者的秘鑰和驗證者的秘鑰進行了區分,使用驗證簽名無法生產簽名。簽名秘鑰只由簽名者持有。
這和公鑰密碼有點相似了。事實上,簽名就是公鑰密碼「反過來」實現的。 對於訊息簽名,速度太慢,因為每個訊息的雜湊值是不一樣的,所以一般只需要對訊息的雜湊值進行簽名就可以了。
資訊保安公告。
公鑰證書。(得到合法的公鑰)
ssl/tls。
通過對雜湊值簽名我們可以解決完整性,篡改,偽造問題,但是用於驗證簽名的公鑰是否是真正的傳送者的呢?中間人可以用自己的私鑰簽名,並把自己的公鑰傳送給接受者。 為驗證公鑰是否合法,我們需要使用證書。
證書就是我們信任的第三方對傳送者的公鑰加上了他們的數字簽名。相當於身份證一樣的東西。這裡的第三方包括例如賽門鐵客等機構,也可以是自己組織內部成立的乙個機構。
證書主要包含:
證書序號。
證書頒發機構。
公鑰所有者。
sha-1 指紋。
md5指紋。
證書id。
有效期起始時間。
有效期結束時間。
雜湊演算法。
秘鑰id。
秘鑰用途。
鼠繪技術內幕概述
1b 內幕一 什麼是鼠繪?鼠繪之前需要什麼樣的準備工作?1b 鼠繪,顧名思義就是指應用鼠繪的硬體支援,在flash等繪畫軟體上進行的影象繪製過程 這裡所指的硬體就是滑鼠 現在的滑鼠款式型號不計其數,什麼樣的鼠繪最適合用於鼠繪,正常我們用的普通滾輪滑鼠 滾動要均勻 就已相當不錯,如果條件充許的話,建議...
git submodule總提示輸入密碼
在使用git clone git時,若git專案內有父子模組關係 submodule 有兩種方法可以處理 2 先git clone git將主 父 模組clone下來 然後進入專案檔案,使用git submodule init初始化子模組管理 最後使用git submodule update將子模組...
實現google suggest技術過程總結
在 ivony 的指導下,我對 google 的google suggest 技術進行了相關的研究。並且取得了一定的成果,基本成功實現了它的功能。下面對其中用 js建立其顯示效果的控制項過程來個總結。在這裡我先介紹一下實現該控制項的過程。我將這個過程為為幾個步驟來實現。首先觸發txt1後,首先對鍵盤...