A5流密码算法
0x01 A5/1流密碼算法的基本用法
作用:
用于蜂窩式移動電話系統語言和數字加密
過程:
A5/1算法用于用戶的手機到基站之間的通信加密,通信內容到基站后先解密變成明文,然后再進行基站到基站之間,以及基站到用戶手機之間的信息加密,完成通信內容在通信過程的加密保護。
應用環節:
只需考察用戶A到基站1之間通信內容的加解密,中間消息的傳送由基站到基站之間的加密完成,而接受方B對消息的加解密與用戶A到基站1之間的通信完全類似,只不過用戶B先解密消息
基本密鑰KA1
預置在SIM卡中,與基站1共享。
?生存期:一旦植入SIM卡將不再改變。
?用途:用來分配用戶和基站之間的會話密鑰。
會話密鑰k:
在每次會話時,基站產生一個64比特的隨機數k。僅用于一次通話時間。
加密方式
一次通話使用一個會話密鑰,對每幀使用不同的幀密鑰。按每幀228比特分為若干幀后逐幀加密,每幀處理方式相同,其中114比特為發送,114比特用來接收數據。明文密鑰流結合方式:逐位異或
0x02 密鑰流產生步驟
A5/1算法使用3個線性反饋移位寄存器,簡稱為LFSR。三個寄存器的分別為19位、22位、23位。這里要使用三個共包含64位二進制的線性反饋移位寄存器,這個設計絕非偶然。絕非巧合的是,A5/1算法的密鑰K也是64位。該密鑰用于三個線性反饋移位寄存器的初始填充,也就是說,該密鑰用于充當三個寄存器的初始值。這三個寄存器用密鑰填充之后,就可以開始生成密鑰流了。
每個回合步驟可以拆分為:取KEY,反饋多項式(Feedback Polynomial),位移
1、取key
取三個寄存器的最后一位,也就是19位、22位、23位,進行XOR操作,得到的結果為這一輪Key的一位。
2、反饋多項式
LFSR進行位移的前置操作,具體可以分成兩步:判定是否需要進行位移,判定新的充填的值
2.1 判斷是否需要移位
這里使用的是擇多原則,三個寄存器中選擇三個鐘控信號,19位中的第8位,22位,23位中皆為第10位,兩種二進制0,1,必定有0或1數量居多,居多的寄存器需要進行位移操作。就是上圖的黃色部分
2.2 判定新的充填的值:
這里需要用到反饋多項式:
XOR后得到的值是充填到第0位的值。
3、移位
三個寄存器,由上一步的判定后進行位移,空出第0位用于充填反饋多項式得到的值。
0x03 密鑰產生例子
1、假設有以下三個初始移位寄存器(先只要知道有三個移位寄存器(就是普通寄存器),分別有19位,22位,23位)
2、然后是如何開始生成秘鑰的,假設有三個寄存器目前的狀態是這樣:
3、接下來開始進行規定的流程
取key,得到第一個密鑰值為1
(1)首先找到X8=1,Y10=0,Z10=1
(2)取數量最多的作為結果M=Maj(X8,Y10 , Z10 )= Maj(1,0, 1)=1;(如果是M=Maj(0,0,1)=0)
(3)因為M=1,且X8=1,M=X8,所以X寄存器需要左移一位,那么因為左移,第一位就空出來了,則 X0=1, 所以最后X寄存器變為
同理:
所以最后得到的三個移位寄存器是
秘鑰是S0=1,
就這樣得到了另一位秘鑰,如果需要64位秘鑰,則按照上述進行循環64次操作即可。
0x04 A5/1算法弱點
移位寄存器太短容易遭受窮舉攻擊,A5/1算法把主密鑰作為算法中三個寄存器的初始值,長度為64比特。如果利用已知明文攻擊,只需要知道其中兩個寄存器的初始值,就可以計算出另一個寄存器的初始值,這只需要240步就可以得出寄存器LFSR-1和LFSR-2的結構。
利用了GSM通信加密中的兩個安全漏洞,可以通過離線迭代計算生成一個彩虹表,它包含有密鑰和其相對應的輸出密碼。這個彩虹表的大小為984GB。得到了彩虹表之后,安全專家就可以在短短的九秒內確定用于加密通信數據的密鑰。
參考:
https://www.cnblogs.com/gambler/p/9074356.html
https://blog.csdn.net/jerry81333/article/details/78641362
https://www.bilibili.com/video/av58596164?p=17
總結
- 上一篇: 颐和园儿童需要买票吗
- 下一篇: 检查男人不育到固原哪家医院好