淺談對稱加密中的流加密

2020-12-25 聊聊密碼學

之前介紹的對稱加密算法都是分組加密,如DES,3DES,SM4等。被加密的原文需要分成組,每組長度與密鑰長度相同,再分別加密。實際上,對稱加密裡還有一種類型算法叫做流加密。所謂流加密,就是使用一個與原文同樣長度的密鑰,與原文數據按位進行異或操作,得到的結果就是密文。解密過程和加密類似,就是用同樣的密鑰,對密文在進行按位異或,得到明文。這和異或運算的原理有關,假設P是原文,K是密鑰,E是密文,⊕代表異或運算,則有如下加密算式:

E = P⊕K

根據異或運算原理,相同的數異或結果為0,任何數與0異或得到的是它本身,故可推導如下解密算式:

E⊕K= P⊕K⊕K

=P⊕0

=P

可以這麼理解,流加密就是給原文數據的每一位依次戴個帽子,把原數據隱藏起來,解密就是摘掉帽子,把原數據露出來。因此它的優點就是簡單快捷。看到這裡估計你也意識到了,既然加解密方法這麼簡單,那麼流加密的重點應該在密鑰上吧?事實確實如此,比如,我們以A、B為明文,使用同樣的密鑰K,進行流加密得到加密結果E(A)和E(B),則根據異或運算特點可以做出如下算式:

E(A)⊕E(B)⊕B=(A⊕K)⊕(B⊕K)⊕B

=A⊕B⊕(K⊕K)⊕B

=A⊕B⊕0⊕B

=A⊕B⊕B

=A⊕0

=A

可以看出,只要拿到兩個密文和一個明文,就可以計算出另一個明文。實際中,密文是比較容易拿到的,而攻擊者也完全可以自己提交一個明文送給系統加密。即在密鑰相同的情況下,明文是很容易被計算出來的。因此流加密的安全性來源於其密鑰的安全性。實際上,資訊理論的祖師爺香農早在1948年就在理論上證明了如果流加密的密鑰要不小於與被加密原文長度加密的密鑰做到一次一密。這樣的加密就實現了「完善保密性」,也就是「絕對安全」。當然,目前這種「絕對安全」只能無限趨同,不可能真正做到。

流加密的密鑰可分為同步流密碼和自同步流密碼。同步流密碼是指密鑰流的生成過程是獨立的,明文及密文不參與其中;而自同步流密碼(也叫異步流密碼)中的密文參與到密鑰流的生成。

同步流密碼一般採用偽隨機數生成算法生成隨機數列作為密鑰組成部分。顯然,密鑰的隨機性越強,明文中的統計特徵被覆蓋得更好,加密的強度也就越高。在現實中經常使用的一種方法是用線性反饋移位寄存器(LFSR)來生成偽隨機序列。線性反饋移位寄存器是一種電路,它是許多密鑰流生成器的基本部件;非常適合硬體的實現;可以產生大周期序列;可以產生具有良好統計性質的序列;易於利用代數方法對其進行分析。

除了線性反饋移位寄存器外,還有一種基於較短的一串給定密鑰,派生出無限長(實際上達到原文長度即可)的偽隨機密碼流的流加密方法。具有代表性的是就RC4(Rivest Cipher 4)算法。RC4採用一個256位元組的狀態向量S,256位元組的暫時向量T,和用戶自定義的密鑰輸入構成。通過自定義的密鑰生成暫時向量之後,狀態向量S與暫時向量T通過一系列的置換算法產生可用於加密的偽隨機密鑰流,參與加密。

流加密最重要的就是密鑰,但容易出問題的也是密鑰。

首先流加密屬於對稱加密,那就有一個密鑰交換的問題,也就是加解密雙方事先得有一個辦法可以安全地交換密鑰。但流加密的密鑰長度是和明文一樣長的,而且只能使用一次,交換的成本相對加密行為來說不低。而且,既然能安全交換密鑰,為什麼不直接安全交換同樣長度的明文呢?

其次,流加密安全性來源於密鑰的隨機性,也就是偽隨機序列的隨機性。但前面隨機數一文說過,並不存在真隨機數。像RC4算法、WEP協議、DVD使用的數據加密協議,由於設計或其他限制,也都存在密鑰隨機序列在一定條件下重複出現的概率。這些都會影響流加密的安全效果。

總體來講,由於本身密鑰的使用成本及安全性問題,流加密在實際應用中出現的頻率遠低於分組加密。但流加密的一些優點,也被分組加密算法所吸收應用,如通過不同的工作模式實現類似流密碼算法的特性。

相關焦點

  • 加密算法科普:des、aes加密、對稱、非對稱加密、Hash算法都是啥
    DSA (數字籤名用)常見的 Hash 算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1分組加密算法中,有ECB,CBC,CFB,OFB這幾種算法模式什麼是對稱密碼算法網絡安全通信中要用到兩類密碼算法,加密一般分為對稱加密(Symmetric Key Encryption)和非對稱加密(Asymmetric Key
  • 對稱加密和非對稱公鑰加密有什麼區別
    隨著網際網路的飛速發展,加密技術也越來越強大,與其他技術不同。 密碼學使用先進的數學原理和方法傳輸存儲數據。 在該保存方法中,只有數據的接收者需要進行數據的讀取和處理。「加密是密碼學的核心概念,以「除了接收者以外誰都無法解密」的方式對消息進行編碼。
  • 三分鐘了解對稱加密和非對稱加密是如何工作的?
    為了解決這個問題,就有了非對稱加密。非對稱加密( Asymmetric Cryptography )非對稱加密,又稱公鑰加密,它解決了對稱加密的缺陷,使得比特幣更安全。非對稱加密和對稱加密,兩者的主要區別在於:對稱加密使用共享(單一)密鑰加密解密數據,而非對稱加密使用密鑰對解密數據。如下圖所示,兩把鑰匙不同。
  • 什麼是非對稱加密?
    豪華陣容的背後只有一個目的,就是使用強大的加密算法來保護個人信息和隱私免受攻擊。而非對稱加密算法也是比特幣存在的重要基石,中本聰在密碼學基礎之上用代碼創造了比特幣,將非對稱加密推向了一個嶄新的高潮。了解非對稱加密之前,我們先要理解什麼是對稱加密?
  • 數據加密中的DES加密算法詳解
    [摘要] 本文詳細介紹了DES數據加密算法的原理,並給出了一個例子演示了如何使用c#中的加密包進行DES算法加密,最後對DES進行了評價。本文引用地址:http://www.eepw.com.cn/article/202130.htm[關鍵詞] 加密 對稱 非對稱 DES 密鑰 明文 密文從最初的保密通信發展到目前的網絡信息加密,信息加密技術一直伴隨著信息技術的發展而發展。作為計算機信息保護的最實用和最可靠的方法,信息加密技術被廣泛應用到信息安全的各個領域。
  • 區塊鏈丨對稱加密算法
    在前面的文章中,有提到「對稱加密算法」,這是一種相對應用得比較早的加密算法之一,其技術也是比較成熟的。在執行對稱加密時,數據發出方將需要明文(之前的文章中有解釋)和加密密鑰一起輸入至加密算法中進行處理,使之變成更為複雜的加密密文,之後再將密文發布出去。
  • 區塊鏈丨非對稱加密算法,區塊鏈的加密秘訣!
    前面講到了對稱加密算法,今天講講非對稱加密算法。可以說非對稱算法是對稱算法的升級,因為非對稱算法是基於對稱算法而被研究出來的。非對稱算法與對稱算法的不同之處在於非對稱算法省去了對稱加密算法時要分發密鑰的麻煩,所以說是對稱加密算法的升級。在非對稱加密算法中同樣具有兩種密鑰:私鑰(private key)和公鑰(public key)。
  • 【深度】關於非對稱加密你知道多少?
    現在恭喜你,你只用了半分鐘的時間就了解了百年對稱加密史。1、什麼是「對稱加密」?恭親王奕訢想告訴慈禧:「當心肅順、端華、戴桓。加解密互為逆操作的加密方式,就是對稱加密。對稱加密功能強大,除了可以完成信息傳輸,還可以幫你處理人際關係。比如,你是個學霸,睡你上鋪的弟兄求你幫忙,要你考試時把選擇題答案寫在紙條上傳給他。他平時待你不薄,沒事還送你一點比特幣,所以你惴惴不安,一邊擔心監考老師撲上來把你人贓俱獲,一邊又怕傷及兄弟情分,但是還好,你突然想到了對稱加密。
  • 加密類型:5種加密算法以及如何選擇正確的算法
    在本文中,我們將學習對稱和非對稱加密及其用於加密數據的流行加密算法。讓我們對其進行哈希處理。加密類型1:對稱加密顧名思義,對稱加密方法使用單個加密密鑰來加密和解密數據。對這兩個操作使用單個鍵使其成為一個簡單的過程,因此稱為「對稱」。
  • 一種基於DES加密算法的加密方法
    摘要:本發明公開了一種基於DES加密算法的加密方法,其加密方法採用服務端與客戶端共享密鑰集文件,實現通信過程中使用動態密鑰的對稱加密方法,建立密鑰集文件,密鑰集文件由三個互相垂直方向的X、Y、Z組成的長方體形的三維模型;伺服器端在X、Y有效值範圍內隨機一個坐標,確定一組密鑰,進行DES加密;將選取的X、Y分別值轉換為4位16進位數
  • 什麼是加密算法?
    Java的加密知識也是Java常見的領域之一,加密技術的底層確實很複雜,運用了大量的數學知識,要弄明白非常複雜。但是Java語言中運用密碼加密工具卻是非常簡單。我們在Java裡面運用這些加密技術,只需要把原理和使用場景等搞明白就可以了,具體底層實現不用研究。
  • 區塊鏈中的密碼學系列之對稱加密算法DES(六)
    前言DES是一種數據加密標準( Data Encryption Standard) , 有30多年歷史,是一種對稱密碼算法,是第一個得到廣泛應用的密碼算法,是一種分組加密算法,輸入的明文為64位,密鑰為64位(實際上只有56位,原因是每隔7個比特設置一個奇偶校驗位),生成的密文分組長度為64位。但是現在已經不再安全。課件來自我們老師上課的PPT。2.
  • 怎樣加密我愛你「i love you」(十種加密方法)
    很多時候對喜歡的人說「i love you」不容易說出口,今天我給大家介紹一下加密版的「i love you」,你告訴心儀的他或她時或許會徒增幾分勇氣,而且會讓對方感覺你有點博學和幽默。電腦鍵盤加密法:8192914331619171。和手機鍵盤加密法相似,81含義是數字8所在列與第1行字母交叉的i,71含義是數字7所在列與第1行字母交叉的u。
  • 軟體加密鎖CodeMeter的5種加密方式,如何選擇最適合的加密方案
    如果僅通過API校驗,不採用AxProtector和IxProtector對代碼進行加密,實現代碼靜態加密、動態加密或資源加密,程序中的加密點最終都會在內存中還原,通過調試工具可以找到加密點,並通過內存補丁替換掉加密點,破解成本及破解時間都比較少。
  • SSL協議之數據加密過程詳解
    酒吧蹦迪別想了,去網吧都會被管制,兄弟打電話叫你出去浪怎麼辦,當然是做暗語加密了!比如兄弟A想叫我出去玩,我們先制定好暗語:吃烤串=酒吧,吃火鍋=蹦迪,吃麻辣燙=網吧,加板凳=有妹子,於是一個加密方法就誕生了,這個加密方法只有我和A知道,女朋友就算聽到了也只當我們是正常聚餐。這種我和A知道,別人不知道的加密方法就是一種對稱加密算法,對稱加密算法也是我們日常最常見的加密算法。
  • DES、RC4、AES等加密算法優勢及應用
    程式設計師捍衛自己珍貴的代碼,全靠花式的加密算法。代碼加密有多重要?程式設計師半年做出的產品,盜版者可能半天就能完全破解。  加密算法的本質,首先是為了對數據進行保密並防止篡改,其次更具有了身份驗證的功能。像是你跟女友約定好的話術,這句話一說出來,她就知道是什麼意思,並且知道說話的人是你,但任何其他人根本不知道你們在說什麼。  根據密鑰類型的不同,加密算法分為對稱和非對稱兩種。
  • 用OpenSSL加密文件
    / 怎樣用對稱密碼加密文件?Openssl的子命令,用於用對稱密碼加密或解密一個文件.-des3the algorithm is des3.使用des3算法.-eencrypt a file.It's counterpart is '-d',decrypt.加密文件.與之相對的是-d,表示解密.
  • 大黃蜂視頻加密
    大黃蜂視頻加密 圖像處理 大小: 23.43 MB 版本: 1.60
  • RSA加密與破解
    如果一對一的話,那麼兩人需要交換一個密鑰。為了更安全,總部需要給每個特工都設計一個不同的密鑰。如果是FBI這樣龐大的機構,恐怕很難維護這麼多的密鑰。在現代社會,每個人的信用卡信息都需要加密。一一設計密鑰的話,銀行怕是要跪了。 對稱加密的薄弱之處在於給了太多人的鑰匙。如果只給特工鎖,而總部保有鑰匙,那就容易了。特工將信息用鎖鎖到盒子裡,誰也打不開,除非到總部用唯一的一把鑰匙打開。只是這樣的話,特工每次出門都要帶上許多鎖,太容易被識破身份了。總部老大想了想,乾脆就把造鎖的技術公開了。
  • 密碼學 RSA加密與破解
    如果一對一的話,那麼兩人需要交換一個密鑰。一對多的話,比如總部和多個特工的通信,依然可以使用同一套密鑰。為了更安全,總部需要給每個特工都設計一個不同的密鑰。如果是FBI這樣龐大的機構,恐怕很難維護這麼多的密鑰。