<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    VPN:MD5認證算法原理

    VSole2021-09-20 10:51:23

    MD5(Message-Digest Algorithm 5,信息摘要算法第5版)是計算機廣泛使用的散列算法(也稱“哈希算法”或“雜湊算法”)之一,采用帶密鑰的運算時,可同時用于消息完整性檢測和消息源身份認證。它是由MD2、MD3和MD4版本一路發展而來,是Ronald Rivest 于1991年設計發布的,用于取代MD4。

    1. MD5算法基本認證原理

    盡管不同版本的MD算法的具體原理肯定有所區別,但它們的基本工作機制卻是一樣的:都是先在發送端將一個隨機長度的消息(在帶密鑰運算的情況下,除包括原始消息外,還要同時包括雙方共知的密鑰)最終“壓縮”(當然,這里并不是簡單的壓縮,需要經過一系列的各種邏輯運算,以打亂原始消息的次序,生成的是一段看不懂的密文)成一個128位的消息摘要(也稱哈希值),并隨著原始消息一起發送。

    原始消息,連同摘要消息一起到了接收端后,再采用相同的方法對所接收到的原始消息(在帶密鑰運算的情況下,還要包括雙方共知的密鑰)進行“壓縮”,看生成的消息摘要是否與隨著原始消息一起發送過來的消息摘要一致,一致則認為所接收的消息是完整的,在傳輸途中沒有被非法篡改。

    因為在帶密鑰的MD5消息摘要的運算中,不是直接基于原始消息進行計算的,還要與機密的預共享密鑰(采用預共享密鑰認證方法時),或者本端的公鑰(采用數字證書認證方法時)結合起來計算的,而預共享密鑰和本端公鑰只有發送者和接收者才知道的,所以能保證摘要計算的機密性,產生獨一無二的“數字指紋”,起到了消息源身份認證的目的。

    MD5摘要運算是不可逆的(即具有單向性,也稱之為“單向密鑰”),不可通過摘要消息還原出原始的消息。當然,其實所有身份認證算法都是這樣的,僅用于認證,不需要在接收端進行數據還原。也正因為如此,MD5算法通常不認為是一種加密算法,不具有解密能力。

    MD5算法的消息完整性驗證和消息源身份認證的基本過程可用圖1來描述。圖中的“MAC”就是指摘要消息。MD5算法的總體消息摘要運算過程如下:

    圖1 MAC類算法基本工作原理示意

    (1)把包括密鑰和初始消息在內的二進制比特串(假設稱之為“原始消息”),以及位于最后位置、新增的用于記錄要原始消息(包括密鑰和初始消息)的二進制64位長度一起被劃分成一個個的512位(16個32位字長)的塊。

    雖然理論來說MD5算法可以計算的消息長度是任意的,即不受限制的,但是由于用于表示消息長度的二進制位只有64位,所以實際上它也最多只能計算264位的消息。如果消息長度超過這個值,則只會對低264位的消息進行計算。

    (2)這些512位的塊再經過多輪“與”(And)、“或”(OR)、“非”(NOT)、“異或”(AOR)邏輯算法(具體算法我們可以不做了解)處理,最終會輸出四個32位分組,將這四個32位分組級聯后將生成一個128位散列值(消息摘要)。

    2. MD5算法消息填充原理

    因為大多原始數消息,加上用于表示原始消息長度的64位后可能仍不能恰好被512整除,也就是原始消息的二進制位數除以512后的余數不是488(512?64=448)。這時就表明需要對原始消息進行填充處理了。這里又有兩種情況:一是余數小于448,另一種就是余數大于448。

    如果原始消息二進制位數除以512后的余數小于448,則先在原始消息的最后一個512位塊的最后填充一個1,然后再填充若干位0,使得該塊的原始消息總長度等于448位,然后加上用于標識原始消息長度的64位,正好形成一個512位的塊。

    如一個有600位的消息,則可劃分成兩個512位的塊:第一個塊是512位全部為原始消息;第二個塊中有88位原始消息,然后進行填充:先在最后填充1位“1”,再填充359位“0”,使得88位原始信息+1位1+359位0=448位,最后再附上64位用于標識原始信息長度(600)的值。

    如果如果原始消息二進制位數除以512后的余數大于448,這時要新增一個512位的塊了。首先是在原始消息的最后一個512位塊的最后填充一個1,然后再填充若干位0,使得該塊的原始消息總長度等于512位;接著再新增一個塊,前面448位均填充0,再加上用于標識原始消息長度的64位,形成新的一個512位塊。

    如有一個1000位的消息,則最終會劃分成三個512位的塊:第一個塊是512位全部為原始消息;第二個塊中有488位原始消息,然后進行填充:先在最后填充1位“1”,再填充23位“0”,使得488位原始信息+1位1+23位0=512位;最后是一個新增的塊,也要進行填充:先在前面填充448位0,最后再附上64位用于標識原始信息長度(1000)的值。

    3. MD5算法的主要應用

    MD5除了應用于各種三層VPN通信的數據完整性驗證和消息源身份認證外,在我們在日常IT應用中也常見到它的身影,也經常用于數字簽名。

    如我們常常在某些軟件下載站點的某軟件信息中看到其MD5值,它的作用就是用于在我們下載該軟件后對下載回來的文件用專門的軟件(如Windows MD5 Check等)做一次MD5校驗,以確保我們獲得的文件與該站點提供的文件為同一文件。利用MD5算法來進行文件校驗的方案被大量應用到軟件下載站、論壇數據庫、系統文件安全等方面。

    另外,MD5還廣泛用于操作系統的登陸驗證上,如UNIX、各類BSD系統登錄密碼、數字簽名等諸多方。如在UNIX系統中用戶的密碼是以MD5(或其他類似的算法)經Hash運算后存儲在文件系統中。當用戶登錄的時候,系統把用戶輸入的密碼進行MD5 Hash運算,然后再去和保存在文件系統中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統的合法性。避免用戶的密碼被具有系統管理員權限的用戶知道。

    二進制摘要算法
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    VPN:MD5認證算法原理
    2021-09-20 10:51:23
    MD5(Message-Digest Algorithm 5,信息摘要算法第5版)是計算機廣泛使用的散列算法(也稱“哈希算法”或“雜湊算法”)之一,采用帶密鑰的運算時,可同時用于消息完整性檢測和消息源身份認證。它是由MD2、MD3和MD4版本一路發展而來,是Ronald Rivest 于1991年設計發布的,用于取代MD4。
    SHA算法基本認證原理
    2021-09-22 07:46:12
    SHA(Secure Hash Algorithm,安全哈希算法主要適用于數字簽名,也是一種不可逆的MAC算法,但比MD5算法更加安全。目前它有三種主要的版本,即SHA-0、SHA-1、SHA-2和SHA-3。其中SHA-2和SHA-3版本中又有多種不同子分類,如在SHA-2中又根據它們最終所生成的摘要消息長度的不同又包括SHA-224、SHA-256、SHA-384和SHA-512等幾種。
    淺談程序的數字簽名
    2022-08-17 08:31:54
    發送方通過私鑰加密后發送給接收方,接收方使用公鑰解密,通過對比解密后的Hash函數值確定數據電文是否被篡改。android中的數字簽名有2個主要作用:1、能定位消息確實是由發送方簽名并發出來的,其他假冒不了發送方的簽名。它是一個全文件的簽名方案,它能夠發現對 APP的受保護部分進行的所有更改,從而有助于加快驗證速度并增強完整性保證。
    經過 16 輪迭代的 DES 算法已被證明具有充分的對抗統計分析和線性分析的能力。DES 算法的改進方案對 DES 算法的改進原則是使用 RSA 保護DES 密鑰,同時在加密前,對明文增加亂序和干擾處理。為了增加暴力破解的難度,密文包頭部字段中必須包含一些有助于提高暴力破解難度的信息,并且不能顯著影響密文包頭的 RSA 解密效率。亂序加密算法為,表明第i 組的密文由明文各組的第比特排列而成。
    ?微信小程序逆向分析
    2023-07-03 09:00:42
    WeChatAppEx.exe 版本:2.0.6609.4以融智云考學生端為例。網上已經有關于微信小程序解密的非常優秀的文章,本著學習的目的便不參考相關內容。筆者水平實在有限,如發現紕漏,還請讀者不吝賜教。拓展的,我們分別觀察RSI與RDI指向的內存區域。事實上,這一部分解密過程與微信圖片解密相同。目的是用int8類型的值a3填滿rbp至8個字節,進行8個字節分組異或。至此,尾部部分解密告一段落。
    惡意軟件是指由網絡犯罪分子設計的惡意程序,可通過創建后門入口來獲得對計算設備的訪問權,從而竊取個人信息、機密數據,實施對計算機系統的破壞。為了更好地防護惡意軟件,避免由惡意軟件造成的危害,必須對惡意軟件進行分析,以了解惡意軟件的類型、性質和攻擊方法。
    AI安全論文第19篇介紹惡意代碼分析經典論文DeepReflect,希望您喜歡
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类