柚子快報邀請碼778899分享:ssl 解析HTTPS的加密
柚子快報邀請碼778899分享:ssl 解析HTTPS的加密
文章目錄
簡介加密原理對稱加密常用的對稱加密算法:簡單解析DES
非對稱加密常用的非對稱加密算法:簡單解析RSA算法公鑰和私鑰的制作:加密和解密過程:
加密過程數(shù)字證書摘要算法解析一下MD5算法
簡介
HTTPS 使用了 SSL (Secure Sockets Layer) 和 TLS (Transport Layer Security) 這兩種協(xié)議來實現(xiàn)安全通信。TLS 是 SSL 的后續(xù)版本,兩者在基本原理上相似。
加密原理
TLS 和 SSL 使用了兩種主要的加密機制:對稱加密和非對稱加密(混合加密),同時也使用了摘要算法和數(shù)字證書來保證數(shù)據(jù)的完整性和身份認證。
對稱加密
對稱加密又稱單密鑰加密,整個加密過程中只使用一個密鑰。所謂對稱其實就是使用一把密鑰加密,并使用同一把密鑰進行解密。
常用的對稱加密算法:
DES、3DES、AES、TDEA、Blowfish、RC2、RC4 和 RC5
簡單解析DES
DES算法的基本思想是通過多次迭代運算和置換,將輸入的64位明文數(shù)據(jù)加密成64位的密文數(shù)據(jù)。
DES算法的加密過程可以分為以下步驟:
密鑰的生成:從用戶提供的密鑰中,通過一系列置換和替換操作生成16個48位的子密鑰,用于后續(xù)的加密操作。 初始置換(IP):將64位的明文數(shù)據(jù)進行初始置換,得到L0和R0兩個32位的數(shù)據(jù)塊。 16次迭代運算:將L0和R0交替作為輸入,進行16次迭代運算,每次迭代都包括以下步驟: 1)將Ri-1進行擴展置換,擴展為48位的數(shù)據(jù)塊。 2)將擴展后的48位數(shù)據(jù)塊與子密鑰Ki進行異或運算,得到一個48位的中間結(jié)果。 3)將異或后的中間結(jié)果分為8個6位的數(shù)據(jù)塊,通過8個S盒進行代替置換,得到一個32位的中間結(jié)果。 4)將32位的中間結(jié)果進行置換,得到一個32位的數(shù)據(jù)塊。 5)將Li-1與上一步的Ri-1相加(模2加),得到Ri。 6)將Ri-1與上一步的Li-1相加(模2加),得到Li。 逆置換(IP-1):將最后一次迭代運算得到的L16和R16合并,進行逆置換,得到最終的64位密文數(shù)據(jù)。
? DES算法的解密過程與加密過程基本相同,只是使用的子密鑰是加密過程中生成的子密鑰的逆序。因此,DES算法是一種可逆加密算法。但由于DES算法的密鑰長度較短,易受到暴力破解攻擊
非對稱加密
? 在加密過程中,使用密鑰對(分別是私鑰和公鑰。公鑰可以對外發(fā)布,人人可見。而私鑰則自己保管,不外泄)中的一個密鑰進行加密,另一個密鑰進行解密。比如用公鑰加密,那么用私鑰解密;用私鑰加密,就用公鑰來解密。
常用的非對稱加密算法:
RSA、Elgamal、Rabin、D-H、ECC(橢圓曲線加密算法)等
問題:為什么私鑰可以解密被公鑰加密的數(shù)據(jù)?
答:歐拉函數(shù)、歐拉定理、互為質(zhì)數(shù)。
簡單解析RSA算法
? RSA的安全基于大數(shù)分解的難度。其公鑰和私鑰是一對大素數(shù)(100到200位十進制數(shù)或更大)的函數(shù)。從一個公鑰和密文恢復出明文的難度,等價于分解兩個大素數(shù)之積(這是公認的數(shù)學難題)。
RSA的公鑰、私鑰的組成,以及加密、解密的公式可見于下表:
公鑰和私鑰的制作:
加密和解密過程:
加密過程
TLS 和 SSL 的加密過程可以分為三個階段:握手階段、密鑰交換階段和數(shù)據(jù)傳輸階段。
(1)握手階段
選擇加密算法、服務器給客戶端傳遞公鑰、客戶端給服務器傳遞對稱加密的密鑰
? 1、客戶端向服務器發(fā)送一個連接請求,請求中包含了客戶端支持的加密算法和其他信息。
? 2、服務器會回復一個消息,其中包含了服務器的證書和公鑰,以及服務器支持的加密算法和其他信息。
? 3、客戶端使用服務器的公鑰來驗證證書的有效性,并選擇一個加密算法,生成一個隨機數(shù)作為對稱加密密 鑰,并使用服務器的公鑰來加密這個密鑰并發(fā)送給服務器。
(2)密鑰交換階段
服務器獲取到對稱加密的密鑰
? 在密鑰交換階段,服務器使用私鑰來解密客戶端發(fā)送的密鑰,并使用該密鑰來生成會話密鑰,即對稱加密密鑰。服務器和客戶端都持有該對稱加密密鑰,并用它來加密和解密后續(xù)的通信數(shù)據(jù)。
(3)數(shù)據(jù)傳輸階段
? 在數(shù)據(jù)傳輸階段,服務器和客戶端使用對稱加密密鑰來加密和解密通信數(shù)據(jù)。通信數(shù)據(jù)使用摘要算法計算摘要值,以保證數(shù)據(jù)的完整性。
數(shù)字證書
? 數(shù)字證書是一種由權威機構(gòu)頒發(fā)的電子文檔,用于證明證書中公鑰對應的私鑰是屬于服務器的。在 TLS 的加密過程中,客戶端需要驗證服務器的身份,這就需要使用數(shù)字證書。
? 服務器會將自己的數(shù)字證書發(fā)送給客戶端,客戶端會使用內(nèi)置的證書信任列表來驗證證書的有效性,如果驗證通過,則可以安全地建立連接。
摘要算法
? 摘要算法是一種用于保證數(shù)據(jù)完整性的算法。在 TLS 的加密過程中,數(shù)字證書的驗證以及數(shù)據(jù)傳輸?shù)耐暾远夹枰褂谜惴?。常用的摘要算法包?MD5、SHA-1、SHA-256 等,其中 SHA-256 是最常用的。
? 摘要算法會將輸入的數(shù)據(jù)轉(zhuǎn)換為一個唯一的固定長度的值,這個值通常稱為摘要或哈希值。摘要值可以用于檢測數(shù)據(jù)是否被篡改過。在 TLS 的加密過程中,服務器會將摘要值發(fā)送給客戶端,客戶端會使用同樣的摘要算法來計算接收到的數(shù)據(jù)的摘要值,并將其與服務器發(fā)送的摘要值進行比較,從而確定數(shù)據(jù)是否被篡改過。
解析一下MD5算法
? MD5 是一種單向哈希函數(shù),它將任意長度的輸入數(shù)據(jù)轉(zhuǎn)換成一個固定長度的輸出(通常是 128 位),該輸出值稱為哈希值或摘要值。MD5 的主要作用是用于驗證數(shù)據(jù)的完整性,因為只要數(shù)據(jù)稍微有一點改動,其生成的摘要值就會完全不同。
MD5 的加密過程可以簡述為以下幾步:
1、初始化
? MD5 算法在開始之前需要進行初始化。初始化過程中,算法會預處理一些常量和初始向量,以及初始化哈希緩存區(qū)。
2、數(shù)據(jù)填充
? 在填充數(shù)據(jù)之前,需要將原始數(shù)據(jù)進行一些處理。MD5 算法會將輸入數(shù)據(jù)按照 512 位進行分組,并在每個分組末尾填充一些位,以確保每個分組的長度都是 512 位。
3、數(shù)據(jù)處理
? 在數(shù)據(jù)填充之后,MD5 算法會對每個分組進行處理。處理過程中,算法會使用一些基本的位運算、邏輯運算、算術運算和置換運算,對每個分組進行迭代處理。處理過程中,算法會使用一個 128 位的緩存區(qū)來保存中間結(jié)果,最終得到一個 128 位的哈希值。
4、輸出
處理完成后,MD5 算法會將生成的哈希值輸出。
? MD5 算法已經(jīng)被證明不夠安全,因為它容易被碰撞攻擊。因此,現(xiàn)在已經(jīng)有更安全的哈希算法可以代替 MD5,例如 SHA-256 和 SHA-3 等。
碰撞攻擊:碰撞攻擊是指在MD5算法中構(gòu)造出兩個不同的輸入明文,但它們的哈希值相同的情況。這意味著攻擊者可以通過構(gòu)造這樣的輸入明文,使其經(jīng)過MD5算法后得到和正常明文相同的哈希值,從而欺騙系統(tǒng)進行身份驗證等操作。彩虹表攻擊:彩虹表攻擊是一種基于預先計算哈希值的攻擊方式。攻擊者事先計算出一張包含大量明文和哈希值對應關系的表,這個表稱為彩虹表。然后攻擊者在實際攻擊中,只需要對被攻擊的哈希值進行查詢即可快速找到對應的明文。這種攻擊方式雖然需要大量的計算資源和時間來預先構(gòu)建彩虹表,但在實際攻擊中卻能夠迅速破解MD5加密的密碼等敏感信息。
柚子快報邀請碼778899分享:ssl 解析HTTPS的加密
相關鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權,聯(lián)系刪除。