開啟主選單
求真百科
搜尋
檢視 串流加密法 的原始碼
←
串流加密法
由於下列原因,您沒有權限進行 編輯此頁面 的動作:
您請求的操作只有這個群組的使用者能使用:
用戶
您可以檢視並複製此頁面的原始碼。
{| class="wikitable" style="float:right; margin: -10px 0px 10px 20px; text-align:left" |<center>'''串流加密法'''<br><img src="https://slidesplayer.com/slide/16282924/95/images/20/%E5%9C%963.26+%E4%B8%B2%E6%B5%81%E5%8A%A0%E5%AF%86%E6%B3%95.jpg" width="280"></center><small>[https://slidesplayer.com/slide/16282924/ 圖片來自slidesplayer]</small> |} 在[[密码学]]中,'''流密码'''('''Stream cipher'''),又譯為'''串流加密'''、'''資料流加密''',是一种[[对称加密]]算法,加密和解密双方使用相同伪随机加密数据流(pseudo-random stream)作为[[密钥]],[[明文]]数据每次与密钥数据流顺次对应加密,得到[[密文]]数据流。实践中数据通常是一个[[位]](bit)并用[[异或]](xor)操作加密。 该算法解决了对称加密[[完善保密性]](perfect secrecy)的实际操作困难。「完善保密性」由[[克劳德·香农]]<ref>[https://wiki.mbalib.com/wiki/%E5%85%8B%E5%8A%B3%E5%BE%B7%C2%B7%E9%A6%99%E5%86%9C 克劳德·香农],mbalib</ref> 于1949年提出。由于完善保密性要求密钥长度不短于明文长度,故而实际操作存在困难,改由较短数据流通过特定算法得到密钥流。 ==例子== ===WEP=== 一个失败的例子即[[WEP]]网络传输协议。 * 该协议中[[服务器]]和[[客户端]]共享同一密钥流,该密钥流由一段24位的数据[[初始向量|IV]]和一段密钥组成,表示为PRG(IV || k),通过异或操作对明文数据流加密。而IV最多组合情况为224个(约16M大小),因而攻击者可轻易暴力破解获取IV,或通过多次截取数据包(当数据流量足够大,密钥流必定多次重复)最终得到明文。 * 另一个弱点在于,802.11网卡重启后自动设置IV为初始状态0。两种情况下都能表明WEP安全性并不尽如人意。 WEP已被[[WPA]]和WPA2取代。 ===硬盘加密=== 当[[硬盘]]使用流加密时,同样会使用同一密码本对不同文本进行加密,因而调换两个文本中少量信息,可以得到同样的冗余结果。避免这个问题的方案通常是避免使用流加密。 ==概述== 伪随机[[密钥流]](keystream)由一个随机的种子(seed)通过算法(称为:PRG,pseudo-random generator)得到,k作为种子,则G(k)作为实际使用的密钥进行加密解密工作。 为了保证流加密的安全性,PRG必须是不可预测的。弱算法包括glibc random()函数,[[線性同餘方法|-:线性同余生成器:線性同餘方法]](linear congruential generator)等。 ===线性同余生成器=== 線性同餘方法 线性同余生成器中,令r[0]为seed,r[i] =(a * r[i-1] + b)mod p,其中>a,b,p均为[[常数]],则可轻易顺次推出整个密钥流,从而进行解密。 ===一次性密码本=== ==流加密攻击== ===多次使用同一密码本=== 一种严重的错误即反复使用同一密码本对不同明文进行加密。攻击者可利用这种方式对密文进行解密。 用p表示明文,C表示密文,k表示种子,PRG表示密钥流生成算法,则: * C1 = p1 xor PRG (k) * C2 = p2 xor PRG (k) 攻击者监听到此段消息(包含两段相同密钥流加密的密文)后,即可利用: * C1 xor C2得到p1 xor p2 足量的[[冗余]](此处表示p1,p2)则可破解明文。 == 參考文獻 == {{reflist}} [[Category: 310 數學總論]]
此頁面使用了以下模板:
Template:Main other
(
檢視原始碼
)
Template:Reflist
(
檢視原始碼
)
模块:Check for unknown parameters
(
檢視原始碼
)
返回「
串流加密法
」頁面