密碼技術繪總

2021-09-24 08:19:34 字數 3749 閱讀 8432

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後,首先對鍵盤...