序列密碼--A5-1算法

A5-1算法

基本原理

A5-1算法用于蜂窩式移動電話系統(tǒng)中的語音加密,主要用于用于的手機到基站之間的加密通信。通信內(nèi)容到基站后先脫密變成明文,然后在進行基站到基站之間、以及基站到用戶手機之間的信息加密,完成通信內(nèi)容在通信過程的加密保護。
  每次通話的時候,基站會產(chǎn)生一個64比特的隨機數(shù),與我們手機sim卡內(nèi)本身帶的一個密碼利用一種加密算法生成一個密鑰,這個密鑰就是這次通話過程中使用的主密鑰,此密鑰的生命周期為這一次通話的開始到結(jié)束。一旦通話完成,那么這個密鑰也就沒有用了。
  該加密算法把整個通訊的數(shù)據(jù)劃分為每一幀來進行加密。每一幀是有228比特,其中發(fā)送端給接收端的數(shù)據(jù)114比特,接收端反饋給發(fā)送端的數(shù)據(jù)有114比特。除了上面提出的基站給出的64比特的總密鑰,針對每一幀的加密,還有一種叫做會話密鑰,這種會話密鑰每加密一幀都會改變,會話密鑰的生成是由幀號來決定的。每一次的會話密鑰都會產(chǎn)生一個228比特的亂數(shù)來加密這一幀的數(shù)據(jù)。加密的方式是異或。幀號一共用22比特的二進制數(shù)來表示,也就是說一次通話只能傳遞2^22次方的通訊數(shù)據(jù),因為每一次通話只有這么多幀可以進行加密數(shù)據(jù)并且傳遞。

A5-1算法基于三個線性移位反饋寄存器實現(xiàn)的。三個LFSR的級數(shù)分別是19 22 23。
f1(x) = x^19 + x^18 + x^17 + x^14 + 1
f2(x) = x^22 + x^21 + 1
f3(x) = x^23 + x^22 + x^21 + x^8 + 1
三個反饋多項式如上所示。

所用工具

根據(jù)上面所講的,如果要實現(xiàn)a5-1的加密算法,我們需要哪些工具:首先是明文,其次是64位的密鑰,三個LFSR,以及幀號。
  算法的輸入應(yīng)該就是三個LFSR的初始值,算法的輸出就是我們加密明文所需要的亂數(shù)。

實現(xiàn)步驟

算法總體來說分為三個部分,初始化,運算,輸出亂數(shù)



首先是初始化部分:
(1)將三個寄存器內(nèi)的所有位全都賦值為0
(2)將三個寄存器做64次的移位操作,每第i次操作,寄存器的反饋內(nèi)容都先與密鑰中的第i位進行異或,然后把這樣異或的結(jié)果作為寄存器此次的反饋內(nèi)容。三個LSFR都要并行的做這樣的工作64次。
(2)將三個寄存器做22次的移位操作,沒第i次操作,寄存器的反饋項都先與幀序號的第i位進行異或,將異或的結(jié)果作為寄存器的最終反饋內(nèi)容,同樣,三個LSFR也都要并行做22次。
上述三步做完,A5-1加密算法的初始化操作也就做完了。另外需要注意的是,A5-1加密算法的LSFR是左移操作,并且,密鑰和幀號都是從最低位到最高位編號。
當初始化步驟完成的時候,此時三個LSFR的狀態(tài)合稱為S0狀態(tài)。

接下來是計算和輸出部分:
大家可以看到,上面的邏輯結(jié)構(gòu)圖中,有一個叫做鐘控的部分,他有三個輸出三個輸入,三個輸入是分別來三個LSFR的某一個固定位,輸出0或者1, 輸出0表示此次這個LSFR不會工作,也就是不會發(fā)生移動等等,輸出的是1的話,那么這個LSFR此次就會移動一位并且得出反饋的結(jié)果。也就是說這個鐘控在控制著三個LSFR的工作與否。
首先根據(jù)鐘控的方式三個LSFR連續(xù)移動100次,但是不輸出亂數(shù),此時應(yīng)該只是做一個混亂的操作。因為LSFR在移動過程中,每一位寄存器內(nèi)的數(shù)值都會不一樣,所以在鐘控決定每個寄存器運行與否的結(jié)果時也會不相同。
接下來會三個LSFR會接著進行連續(xù)的114次的移動,也是根據(jù)鐘控的方式。這一次的移動過程中,三個寄存器將分別把最高位寄存器的值輸出,然后三個值做異或運算,形成第i個亂數(shù)。這次114次移動會生成一個114位的亂數(shù),用于對手機到基站這一段的數(shù)據(jù)加密。
之后再進行一次100次的移動和114次的移動,結(jié)果和上面說的相同,最終產(chǎn)生的114位密鑰用于基站到手機這段的通訊數(shù)據(jù)加密。

關(guān)于鐘控:
鐘控將第一個寄存器的第八位,第二個寄存器的第10位,第三個寄存器的第10位。抽取這三個位用于控制三個LSFR的動作與否。他們決定的原則類似少數(shù)服從多數(shù),三位一共有8種排列方式,當三位中1的個數(shù)多余0的個數(shù)時,那么這三位是1的對應(yīng)的寄存器將會移動, 為0的不會,如果三位數(shù)中0的個數(shù)多余1的個數(shù)時,那么三位之中是0的對應(yīng)的寄存器將會移動。

根據(jù)上面的步驟就可以算出當我們把通訊數(shù)據(jù)切割成每一幀,然后對每一幀進行加密傳輸?shù)臅r候,所需要的那個加密的亂數(shù)是怎么得來的。至于加密過程很簡單,就是明文和亂數(shù)的異或操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Guide to BluetoothSecurity原文 本出版物可免費從以下網(wǎng)址獲得:https://doi.o...
    公子小水閱讀 8,781評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,612評論 19 139
  • 本文主要介紹移動端的加解密算法的分類、其優(yōu)缺點特性及應(yīng)用,幫助讀者由淺入深地了解和選擇加解密算法。文中會包含算法的...
    蘋果粉閱讀 11,679評論 5 29
  • 杭州市翠苑一小 四一班 七色花假日小隊 2017年8月17日,暑假,驕陽似火。杭州市翠苑第一小學四一班...
    無名同學閱讀 550評論 0 2
  • 第一次使用Markdown,哈哈看看效果 試試語法 無序 有序 斜體 粗體 開始記錄今天的回報工作。 上午起來 ...
    yeban閱讀 281評論 0 1

友情鏈接更多精彩內(nèi)容