<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:AES加密算法原理

    Ann2021-09-26 12:14:34

    AES(Advanced Encryption Standard,高級加密標準)是美國國家標準與技術研究院(NIST)在2001年建立了電子數據的加密規范。它是一種分組加密標準,每個加密數據塊大小固定為128位(16個字節),最終生成的加密密鑰長度有128位、192位和256位這三種。

    另外,AES主要有五種工作模式(其實還有很多模式):ECB(Electronic codebook,電子密碼本)、CBC(Cipher-block chaining,密碼分組鏈接)、CFB(Cipher feedback,密文反饋)、OFB(Output feedback,輸出反饋)、PCBC(Propagating cipher-block chaining,增強型密碼分組鏈接)。

    1. AES的數據塊填充

    AES的加密數據塊大小為128位(16個字節),這涉及到一個填充的問題,因為一個數據很可能不是16個字節的整數倍。在AES加密算法中又涉及到No Padding(不填充)、PKCS5Padding、ISO10126Padding、Padding Mode.Zeros和Padding Mode.PKCS7這幾種填充模式。

    如果加密數據塊的長度正好是16字節,則需要再補一個16字節,各種支持填充的方式都是這樣的(即No Padding填充方式除外)。

    (1)No Padding

    這種模式就是不填充,即不足128位的加密數據塊加密后仍是原來的長度,原來是多少位,加密后的密鑰仍是多少位,這與AES的密鑰長度規定其實不符的,所以通常很少采用。這種填充方式也并不是所有AES工作模式都支持的,只有CFB、OFB模式支持,CBC、ECB和PCBC模式不支持。

    (2)PKCS5Padding

    PKCS5Padding填充方式的填充原則是:如果原始加密數據塊長度少于16個字節(128位),則需要補滿16個字節,填充的方式是缺多少個字節,就在后面補多少個所缺字節的值。

    如原始加密數據塊為winda_gz01,這里有10個字符,對應10個字節(每個字符用8位,即一個字節表示),這樣離16個字節的要求還差6個字節,這時就要在最后補6個“6”(這個“6”也要用8位二進制表示,即00000110)。

    如果原始加密數據塊恰好是16個字節的整數倍,則還要增加一個16字節的“16”,即16個“00010000”。

    (3)Padding Mode.PKCS7

    在PKCS5Padding填充方式中,所填充的塊是按一個字節(即8位)來計算的,而在Padding Mode.PKCS7填充方式中,對于填充的塊的大小是不確定的,可以在1~255之間,但填充值的算法與PKCS5Padding填充方式一樣。

    如果填充塊長度為8比特,原始加密數據塊長度為9個字節,則需要填充7個八位的“7”(也即相當于7個字節),使得加密數據塊仍為16個字節(128位)。所以當選擇的填充塊為8位時,Padding Mode.PKCS7填充方式與前面的PKCS5Padding填充方式是一樣的,只不過在Padding Mode.PKCS7填充方式中的填充塊大小可以不是8位,而是可在1~255之間根據需要選擇。

    填充塊長度的選擇是與原始加密數據塊大小有關的,必須要使得填充塊大小的n倍(n為整數),加上原始加密數據塊長度最終能為16個字節。如原始加密數據塊長度仍為9個字節,此時就不能選擇16位的填充塊長度了,否則填充塊就只有3.5倍了,顯然不行。

    (4)ISO10126Padding

    這種填充方式的填充原則是:填充塊通常也是8位(一個字節),但最后一直填充塊用來標識整填充字節序列的長度,其余填充塊可填充隨機數據。

    如原始加密數據塊長度為9個字節,要填充到16個字節,則需要填充7個字節,而在這7個填充字節(填充塊)中前6個字節可是隨機數值,但最后一個字節的值為二進制中的“7”(用來標識整個填充字節長度為7,對應的二進制為“00000111”)。

    如果原始加密數據塊恰好是16個字節的整數倍,則還要增加一個16字節,其中前面15個字節可以是隨機數值,但最后一個字節用來標識新填充的16個字節的值“16”,即最后一個填充字節為“00010000”。

    (5)Padding Mode.Zeros

    這種填充方式最簡單,就是不夠部分用“0”來填充。如原始加密數據塊長度為9個字節,要填充到16個字節,則需要填充7個字節的“0”。

    如果原始加密數據塊恰好是16個字節的整數倍,則還要增加一個16字節的“0”,每個字節都是8個“0”(即00000000)來填充。

    表1列出了三種最常用的AES工作模式對三種最常用的填充方式的支持。

    表1 AES工作模式對填充方式的支持

    從表中可以看出,在原始數據長度為16個字節的整數倍時,假如原始數據長度等于16×n,則使用No Padding時加密后數據長度等于16×n,其他情況下加密數據長度等于16×(n+1),即要新增一個16字節。在不足16的整數倍的情況下,假如原始數據長度等于16×n+m(其中m小于16),除了No Padding填充之外的任何方式,加密數據長度都等于16×(n+1),不夠16字節部要要根據對應填充方式填充到16字節。No Padding填充對于CBC、ECB和PCBC三種模式是不支持的,而CFB、OFB兩種模式下則加密后的數據長度等于原始數據長度。

    2. AES四種工作模式加/解密原理

    下面介紹ECB、CBC、CFB和OFB四種AES工作模式下對數據進行加密和解密的基本原理。

    (1)ECB模式加/解密原理

    ECB(電子密碼本)模式是最簡單的塊密碼加密模式,加密前根據數據塊大小(如AES為128位)分成若干塊,之后將每塊使用相同的密鑰單獨通過塊加密器加密,解密的過程與加密的過程相逆,所使用的是塊解密器。

    ECB模式的基本加密原理圖如圖1所示,基本解密原理如圖2所示。

    圖1 ECB模式數據加密原理示意

    圖2 ECB模式數據解密原理示意

    這種加密模式的優點就是簡單,不需要初始化向量(IV),每個數據塊獨立進行加/解密,利于并行計算,加/解密效率很高。但這種模式中,所有數據都采用相同密鑰進行加/解密,也沒有經過任何邏輯運算,相同明文得到相同的密文,所以可能導致“選擇明文攻擊”的發生。也就是攻擊者可以事先任意選擇一定數量的明文(通常不是一條,主要是為了最大限度地從中破解這些明文被加密的規律),讓被攻擊的加密算法為這些明文加密(當然這個明文發送者已具有一定權限,可以讓加密器為他發的數據進行加密),從而得到相應的密文。然后攻擊者通過對多組明文和密文的分析獲得關于加密算法的一些信息(如果不同明文中的相同片段,得到的某密文片段也一樣,就可以知道這些密文是代表什么意思了),以利于攻擊者在將來更有效的破解由同樣加密算法(以及相關鑰匙)加密的信息。

    在這里引用網上傳的一則例子來說明。那就是在1942年,第二次世界大戰過程中美國海軍情報局截獲了日本一條軍事情報,情報顯示“AF”(密文中的某個片段,并未解讀出)將會是下一個攻擊目標,密碼專家認為AF對應的是“Midway”(中途島),但是美國當局認為日本不可能攻打中途島。為了證實這一點,密碼專家想出了一個方法,要求中途島海軍基地的司令官以無線電向珍珠港求救,說“中途島上面臨缺水的危機”。不久后,美國海軍情報局便截奪到一則來自日本的信息,內容果然提到了“AF”出現缺水問題。結果“AF”便被證實為“中途島”的意思,也就是日本海軍的下一個攻擊目標。這可以說是“明文攻擊”的一個側面說明,是攻擊者主動發起的。

    (2)CBC模式加/解密原理

    CBC(密碼分組鏈接)模式是先將明文切分成若干小塊,然后每個小塊與初始塊或者上一段的密文段進行邏輯異或(⊕,XOR)運算后,再用密鑰進行加密。第一個明文塊與一個叫初始化向量(Initialization Vector)的數據塊進行邏輯異或運算。這樣就有效的解決了ECB模式所暴露出來的問題,即使兩個明文塊相同,加密后得到的密文塊也不相同。

    CBC模式的基本加密原理如圖3所示(以兩個數據塊為例進行介紹)。CBC的解密解密過程也可以看成是CBC加密過程逆過程,如圖4所示。

    圖3 CBC模式數據加密原理示意圖

    圖4 CBC模式數據解密原理示意

    從圖中可以看出,在CBC模式中引入了一個隨機的初始化向量(這是一個參數,需要事先設置),并且還采用了異或邏輯運算,不是直接把明文用密鑰加密,而且前后數據塊的加/解密是關聯的,所以相同明文不一定能得到相同的密文,加密的破解難度更大,不易被主動攻擊,安全性好于ECB,是SSL、IPSec通常采用的加/解密模式。

    CBC模式的缺點也是它的優點附帶的,那就是加密過程復雜,效率較低。其次,由于采用串行運算方式,所以只要其中一個數據塊的加/解密運算或數據傳輸錯誤都可能導致整個數據的加/解密失敗。另外,與ECB模式一樣在加密前需要對數據進行填充,不是很適合對流數據進行加密。

    (3)CFB模式加/解密原理

    與ECB和CBC模式只能夠加密塊數據不同,CFB(密文反饋)模式能夠將塊密文(Block Cipher)轉換為流密文(Stream Cipher)。CFB模式的基本加密原理如圖5所示,基本解密原理如圖6所示。CFB的加密過程分為兩部分:

    圖5 CFB模式的基本加密原理示意

    圖6 CFB模式的基本解密原理示意

    CFB以及OFB模式中解密過程也都是用的加密器,而非解密器。

    將前一數據塊加密得到的密文通過塊加密器利用密鑰再進行加密;

    將上一步加密得到的數據再與當前塊的明文進行邏輯異或運算。

    實際的加/解密原理比較復雜,作為網絡管理、維護人員可不深入了解。

    這種加密模式中,由于加密流程和解密流程中被塊加密器加密的數據是前一塊的密文,因此即使本塊明文數據的長度不是數據塊大小的整數倍也是不需要填充的,這保證了數據長度在加密前后是相同的。

    (4)OFB模式加/解密原理

    OFB(輸出反饋)模式不再是直接加密明文塊,其加密過程是先用塊加密器生成密鑰流(Keystream),然后再將密鑰流與明文流進行邏輯異或運算得到密文流,如圖7所示。解密過程是先用塊加密器生成密鑰流,再將密鑰流與密文流進行邏輯異或運算得到明文,如圖8所示。

    圖7 OFB模式的基本加密原理示意

    圖8 OFB模式的基本解密原理示意

    paddingaes
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    一位開發人員近日表示,在發現這款汽車的制造商使用不僅公之于眾,還從編程示例照搬的密鑰來保護系統后,他能夠在其汽車信息娛樂硬件上運行自己編寫的軟件。IVI接受受密碼保護的ZIP存檔這種形式的固件更新版。更新程序將使用私鑰對應的RSA公鑰來檢查數據是否使用正確的秘密私鑰來簽名。因此,他需要找到RSA私鑰才能執行下一步。
    Bypass Shellcode - Encryptor
    2022-01-03 08:55:10
    Bypass Shellcode - Encryptor
    為了避免下半輩子只能在幾平米的空間活動,我在某魚上淘到了一款藍牙鎖作為小藍車的平替。nRF藍牙抓包首先需要解決的問題是獲取藍牙鎖的MAC地址,因為最后我們需要使用gatttool直接通過MAC地址與藍牙鎖交互。比較好用的是nRF這個軟件,能夠直接掃描查看周圍的藍牙設備。使用gatttool嘗試連接并使用primary看查所有service:然后通過characteristics命令看查所有的特性:其中handle是特性的句柄,char properties是特性的屬性值,char value handle是特性值的句柄,uuid是特性的標識。
    請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與文章作者和本公眾號無關。0x02 ASP執行命令腳本這個腳本會被網站安全狗查殺,特征:Shell.Application,當Wscript.shell組件被卸載不可用時就會提示:[Err] ActiveX 部件不能創建對象,這時可嘗試用這個組件來執行命令。<%Set SA = CreateObjectSA.ShellExecute "cmd.exe"," /c set > C:\NpointSoft\npointhost2.2.0\web\1.txt","C:\NpointSoft\npointhost2.2.0\web","",0%>
    VPN:AES加密算法原理
    2021-09-26 12:14:34
    AES(Advanced Encryption Standard,高級加密標準)是美國國家標準與技術研究院(NIST)在2001年建立了電子數據的加密規范。它是一種分組加密標準,每個加密數據塊大小固定為128位(16個字節),最終生成的加密密鑰長度有128位、192位和256位這三種。
    一次成功的Shiro Padding Oracle需要一直向服務器不斷發包,判斷服務器返回,攻擊時間通常需要幾個小時。因為這些程序沒有對發包失敗拋出異常的情況做出處理,從而導致工具停止工作。最終,攻擊成功了,我虛擬機下花了不到1小時共計完成,但是在真實生產環境測試,攻擊成功一次DNS或者JRMPClient攻擊,程序需要跑大約4個小時左右,2次攻擊加起來近9個小時。
    一篇靜態免殺的文章
    在測試過程中遇到一個登錄框,看到前端加密的情況下對密碼處進行了簡單的加密分析在控制臺中打開網絡,匹配Fetch/XHR,可以看到password處進行了加密處理在js中全局搜索encrypt這里可以看到使用的是AES的ECB模式加密第一種方法使用python腳本來進行加密from Crypto.Cipher import AES
    Ann
    暫無描述
      亚洲 欧美 自拍 唯美 另类