版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> A5/1加密算法的設(shè)計(jì)與實(shí)現(xiàn)</p><p> Design and implementation</p><p> of A5 / 1 algorithm</p><p> 學(xué) 院:</p><p><b> 專 業(yè) 班 級: </b></p><p>
2、 學(xué) 號:</p><p><b> 學(xué) 生 姓 名: </b></p><p><b> 指 導(dǎo) 教 師: </b></p><p> 2014 年 6 月</p><p><b> 摘 要</b></p><p> GS
3、M電話系統(tǒng)屬于應(yīng)用最為廣泛的移動通信標(biāo)準(zhǔn)。移動網(wǎng)絡(luò)是一種共享媒體,任何用戶都可以攔截網(wǎng)絡(luò)來獲取自己想知道的媒體信息。當(dāng)媒體是共享的時候,任何用戶都可以在此共享媒體上收聽或發(fā)送信息。從而使得通信不再是私有的。當(dāng)媒體是共享的時候,隱私和身份驗(yàn)證都將會丟失,除非利用一些方法來恢復(fù)它們。這時,A5/1加密算法提供了相應(yīng)的方法,來恢復(fù)對隱私和身份驗(yàn)證的控制。</p><p> 現(xiàn)階段,針對A5/1加密算法進(jìn)行了可抵抗相關(guān)
4、攻擊的改進(jìn)的研究。針對算法的漏洞, 提出改進(jìn)的方法,來增強(qiáng)A5/1加密算法的安全性。由于A5/1加密算法具有硬件實(shí)現(xiàn)簡單、抗攻擊能力強(qiáng)等優(yōu)點(diǎn),所以它不僅可以應(yīng)用在GSM電話系統(tǒng)中,也可以在應(yīng)用方向上進(jìn)行推廣。例如,在A5/1加密算法改進(jìn)的基礎(chǔ)上,結(jié)合雷達(dá)網(wǎng)數(shù)據(jù)通信,實(shí)現(xiàn)對雷達(dá)網(wǎng)數(shù)據(jù)保密通信的需要。</p><p> 本論文中,主要是在對信息安全了解的基礎(chǔ)上,對A5/1加密算法進(jìn)行充分的研究,確切的理解算法的每一
5、個步驟。通過程序語言對A5/1加密算法進(jìn)行實(shí)現(xiàn),在此基礎(chǔ)上對算法進(jìn)行改進(jìn)。根據(jù)對A5/1加密算法已有的理解,對代碼進(jìn)行充分的測試并繼續(xù)修改,從而優(yōu)化了算法?;贏5/1加密算法的通信信息加密功能,我將對其進(jìn)行應(yīng)用推廣,達(dá)到實(shí)現(xiàn)對文件的加密,保證文件的安全性的目的。最后,為了能夠方便靈活的應(yīng)用A5/1加密算法,我對算法實(shí)現(xiàn)了界面化,使得其應(yīng)用起來簡單高效。</p><p> 關(guān)鍵詞:GSM;移動通信;A5/1;加
6、密</p><p><b> Abstract</b></p><p> GSM is most widely used cellular standard. Mobile network is the shared media, and any user of the media can intercept the network. When the media
7、 are shared, any one can listen to the media, or any one can transmit on the media. Thus communication is no longer private. When media are shared, privacy and authentication are lost unless some method is established to
8、 regain it. Cryptography provides the mean to regain control over privacy and authentication.</p><p> At this stage, For A5/1 encryption algorithm, There are methods to improvement of A5/1 algorithm against
9、 correlation attack. For A5/1 encryption algorithm weakness, Proposed improved methods to enhance security of the A5/1 encryption algorithm. Because it is of easy hardware implementation and high anti-attack feature. It
10、not only can be used in GSM telephone system but also can be spread to other direction of application. For example, based upon improving the A5/1 encryption algorithm, concerni</p><p> In this paper, mainly
11、 on the basis of understanding of information security, fully understand the point of view of the A5/1 encryption algorithm, understand exa-</p><p> ctly each st
12、ep of in this algorithm. Achieve the A5/1 encryption algorithm through programming language. On this basis, improvement the algorithm, according to understood of the A5/1 encryption algorithm. In order to optimization al
13、gorithm, fully test code, continue to modify and improve code. Since the A5/1 encryption algorithm can not only encrypt the communication of information, promotion of its application, encryption of the files to guar
14、antee safety of files. In the end, implementation of </p><p> Keywords: GSM; mobile communication; A5 / 1; encryption目 錄</p><p><b> 摘 要I</b></p><p>
15、AbstractII</p><p><b> 第1章 緒論1</b></p><p> 1.1 通信安全的重要性1</p><p> 1.2 A5/1加密算法的現(xiàn)狀1</p><p> 1.3 本論文工作的意義2</p><p> 1.4 本論文的主要工作2</p&
16、gt;<p> 第2章 A5/1加密算法3</p><p> 2.1 通信安全模型3</p><p><b> 2.2 流密碼3</b></p><p> 2.3 A5/1加密算法的描述4</p><p> 2.4 A5/1加密算法密鑰流的產(chǎn)生5</p><p&g
17、t; 2.5 A5/1加密算法的線性反饋移位寄存器6</p><p> 2.5.1 線性反饋移位寄存器6</p><p> 2.5.2 A5/1加密算法的線性反饋移位寄存器9</p><p> 2.5.3 基于線性反饋移位寄存器的鐘控規(guī)則9</p><p> 第3章 A5/1加密算法實(shí)現(xiàn)的詳細(xì)設(shè)計(jì)11</p>
18、;<p> 3.1 算法函數(shù)11</p><p> 3.2 算法的詳細(xì)設(shè)計(jì)11</p><p> 3.2.1 模2運(yùn)算11</p><p> 3.2.2 擇多原則13</p><p> 3.2.3 LFSR的移位操作14</p><p> 3.2.4 帶鐘控的LFSR操作15&l
19、t;/p><p> 3.2.5 密鑰流的初始化17</p><p> 3.2.6 輸出位的獲取20</p><p> 3.2.7 獲取密鑰流21</p><p> 3.2.8 加解密22</p><p> 3.2.9 輸出16進(jìn)制形式的明密文23</p><p><b>
20、; 第4章 測試25</b></p><p> 第5章 加密文件26</p><p> 5.1 計(jì)數(shù)器(CTR)模式26</p><p> 5.2 加密文件的詳細(xì)設(shè)計(jì)27</p><p> 第6章 A5/1加密算法界面化30</p><p> 6.1 界面的功能介紹30</p&
21、gt;<p> 6.2 流程圖30</p><p> 6.4 界面效果圖33</p><p><b> 第7章 結(jié)論36</b></p><p> 參 考 文 獻(xiàn)37</p><p><b> 致 謝39</b></p><p><
22、;b> 附 錄40</b></p><p><b> 第1章 緒論</b></p><p> 1.1 通信安全的重要性</p><p> 在過去,密碼學(xué)是軍隊(duì)獨(dú)家專有的領(lǐng)域,許多國家的安全機(jī)構(gòu)將大量的財力投入到自己的通信中,同時又千方百計(jì)地去破解別人的通信。而隨著密碼學(xué)的飛速發(fā)展,信息化已成為人類社會發(fā)展的大趨
23、勢,而且在如今的信息社會中,各個方向的行業(yè)都與信息息息相關(guān)的。因此,應(yīng)用密碼學(xué)去保證信息安全也變得越來越重要[1]。</p><p> 由于信息技術(shù)的發(fā)展和越來越廣泛的應(yīng)用,整個社會的運(yùn)作也越來越密切的依賴于信息技術(shù),依賴于各種信息系統(tǒng)的正常運(yùn)轉(zhuǎn)。例如國家的政治運(yùn)動、公司的市場策略、私人的信息數(shù)據(jù)這些都是秘密的。信息安全問題,關(guān)系到國家社會的穩(wěn)定,企業(yè)的興衰。這不僅得到了政府部門、金融部門重視,而且企業(yè)事業(yè)單位
24、和個人也越來越重視這一問題。所以,保證信息的安全是信息時代的迫切需要。如何保護(hù)信息不被竊取、篡改、破壞等已成為當(dāng)今社會普遍關(guān)注的重大問題之一[2]。</p><p> 1.2 A5/1加密算法的現(xiàn)狀</p><p> GSM電話系統(tǒng)[3]是應(yīng)用最為廣泛的通信系統(tǒng),A5/1加密算法是GSM電話系統(tǒng)中基本的加密算法,用來確保用戶傳輸信息的安全。對于大多數(shù)的人來說,手機(jī)安全和通話隱私已經(jīng)成
25、為日常問題。為了防止竊聽者能夠竊聽到用戶的通話,在用戶通信的GSM手機(jī)里采用了一套密碼系統(tǒng)和協(xié)議來提供身份驗(yàn)證和加密[4]。加密是在移動通訊中保護(hù)用戶信息和防止欺詐行為非常重要的技術(shù)。GSM電話系統(tǒng)用A5流產(chǎn)生器去加密傳送在基站與移動臺之間的數(shù)字用戶數(shù)據(jù)[5]。</p><p> 關(guān)于A5/1加密算法,它的基本思想是好的,效率非常高。它已知的弱點(diǎn)是寄存器太短不能抗窮舉攻擊。帶有較長的寄存器和稠密反饋多項(xiàng)式的A5
26、/1加密算法的變型是安全的?,F(xiàn)在有很多關(guān)于A5/1加密算法改進(jìn)的研究,一般通過對密鑰流的產(chǎn)生進(jìn)行改進(jìn)。也有根據(jù)算法的弱點(diǎn),研究算法的攻擊方法[6]。這兩個方向都促進(jìn)了A5/1算法的有效性。</p><p> 1.3 本論文工作的意義</p><p> 每個加密算法都有它的優(yōu)缺點(diǎn),相比較而言,對稱密鑰算法要比非對稱密鑰算法快很多,如果想實(shí)現(xiàn)非常高的傳輸速率,就必須選擇對稱密鑰算法進(jìn)行加密
27、。A5/1算法是比較優(yōu)秀的加密算法,我們的工作可以為生活實(shí)踐提供一種加密工具,用來保護(hù)合法重要信息的安全性。</p><p> 1.4 本論文的主要工作</p><p> 本論文的主要工作有:</p><p> 對通信安全的意義和實(shí)施辦法有初步的了解。</p><p> A5/1加密算法的描述進(jìn)行充分的理解,精確理解算法的每一個步驟。
28、</p><p> 完成算法的詳細(xì)設(shè)計(jì)。</p><p> 能夠用JAVA對算法進(jìn)行編程工作,并盡量考慮程序的優(yōu)化工作。</p><p> 對代碼進(jìn)行充分的測試,給出相應(yīng)的測試結(jié)果,保證算法的正確性。</p><p> 在算法模塊的基礎(chǔ)上,再對文件進(jìn)行加解密。</p><p> 對以上算法進(jìn)行界面化,使得操作
29、更加方便。</p><p> 第2章 A5/1加密算法</p><p> 2.1 通信安全模型</p><p> 通信安全模型[7]如圖2-1所示,此時通信發(fā)送方通過公開信道將消息發(fā)送給接收方,我們要保證信息不被攻擊者所截獲、篡改等時,就涉及到信息安全的問題。首先,要對通信的發(fā)送方所發(fā)送的消息進(jìn)行安全轉(zhuǎn)換,如加密、簽名等技術(shù),接收方在接收時進(jìn)行相關(guān)的逆變換,如
30、解密、驗(yàn)證簽名等。通過以上的工作,經(jīng)過安全轉(zhuǎn)換的信息即使在公開信道上被竊聽者截取到,也不能夠直接的看到信息的內(nèi)容。從而保證了信息的安全。</p><p> 圖2-1 通信安全傳輸模型</p><p><b> 2.2 流密碼</b></p><p> 流密碼[8]的加密方法是對字符逐位加密。將圖2-1中的消息加密為安全消息。它利用秘鑰K來
31、產(chǎn)生一個密鑰流,用此秘鑰流來加密明文串,從而得到相應(yīng)的密文串,加密方式如公式2-1所示。</p><p><b> (2-1)</b></p><p> 其中,是密文串,是明文,是加密函數(shù)。</p><p> 與分組密碼比,流密碼的優(yōu)點(diǎn)是運(yùn)算速度快[9]。因此主要應(yīng)用于對信息時效性要求較高的軍事、外交、無線通信等領(lǐng)域。由于獨(dú)立加密的特點(diǎn)也
32、說明了它是無錯誤傳播的,一個傳輸錯誤只影響一個符號,不影響后面的符號[10]。</p><p> 有以上介紹可知,流密碼含有以下幾種內(nèi)容:</p><p> 明文,需要進(jìn)行安全轉(zhuǎn)換的信息。</p><p> 密文,經(jīng)過安全轉(zhuǎn)換后的信息。</p><p> 秘鑰,用來產(chǎn)生秘鑰流的信息。</p><p> 密鑰流
33、,參與加解密的控制信息。</p><p> 密鑰流生成器,用秘鑰產(chǎn)生密鑰流的函數(shù)方法。</p><p> 加密算法,將明文通過一種規(guī)則轉(zhuǎn)換為密文的方法。此時需要密鑰流。</p><p> 解密算法,將密文通過一種規(guī)則轉(zhuǎn)換為明文的方法。此時需要密鑰流。</p><p> 2.3 A5/1加密算法的描述</p><p
34、> A5/1加密算法[11]是一種流密碼,通過密鑰流對明文加密,因此有流密碼的優(yōu)點(diǎn)。初始向量是64比特的會話密鑰和22比特的幀序列號。會話秘鑰在通話期間被使用,但是幀序列號在通話期間會改變。這樣,會生成唯一的 228 bit 密鑰流控制兩個方向的信道, 每個方向的 114比特密鑰流與114比特的明文/密文進(jìn)行異或運(yùn)算, 產(chǎn)生114比特密文/明文。加密過程如圖2-2所示。</p><p> 圖2-2 A5
35、/1加密算法</p><p> 2.4 A5/1加密算法密鑰流的產(chǎn)生</p><p> 密鑰流的生成[12]可以21分成三個階段,第一階段,3個移位寄存器初始全部設(shè)置為0,然后在64個周期內(nèi),將每個線性反饋移位寄存器都移位64次(不帶鐘控),每次移位后將密鑰k[i]( i=0, 1, 2,..., 63)與每個線性反饋移位寄存器的最低位比特異或;之后,在22個時鐘周期內(nèi),將每個線性反
36、饋移位寄存器都移位22次(不帶鐘控),每次移位后將22比特幀序列F[i](i=0, 1, 2, ..., 21)與每個線性反饋移位寄存器的最低位比特異或;記第一階段后的內(nèi)部狀態(tài)為S1。</p><p> 第二階段,由狀態(tài)S1出發(fā),按照鐘控規(guī)則移位100個周期,與第一階段不同的是,不進(jìn)行異或操作,舍棄密鑰流。記此時的內(nèi)部狀態(tài)為S2。</p><p> 第三階段:由狀態(tài)S2出發(fā),按照鐘控規(guī)
37、則對R1,R2,R3進(jìn)行移位操作。R1,R2,R3的最高位異或生成228比特的密鑰流,應(yīng)用于加/解密明/密文流。</p><p> 根據(jù)2.3 A5/1加密算法的描述和2.4 A5/1加密算法密鑰流的產(chǎn)生的內(nèi)容,可以總結(jié)出如圖2-3 A5/1加密算法結(jié)構(gòu)圖。</p><p> 圖2-3 A5/1加密算法結(jié)構(gòu)圖</p><p> 2.5 A5/1加密算法的線性
38、反饋移位寄存器</p><p> 2.5.1 線性反饋移位寄存器</p><p> 在流密碼中,對于需要加密的一組明文,通過密鑰流的控制來加密明文,密鑰流的一位加密明文的一位,因此實(shí)現(xiàn)了一次一密。這樣密鑰流就決定了流密碼的安全強(qiáng)度。在實(shí)際應(yīng)用中,密鑰流是一個偽隨機(jī)序列(看起來是隨機(jī)序列,不能夠重復(fù)產(chǎn)生,實(shí)際上只是它的序列周期足夠長,長到在實(shí)際應(yīng)用中能夠滿足在相當(dāng)長的有限序列內(nèi)都不是周期
39、性的)。所以,設(shè)計(jì)一個好的密鑰流生成器是至關(guān)重要的。</p><p> 下面,詳細(xì)介紹一種流秘鑰生成器--移位線性反饋移位寄存器。移位寄存器序列已經(jīng)被應(yīng)用于密碼學(xué)和編碼理論當(dāng)中。自電子時代開始以來,軍事密碼學(xué)就已經(jīng)使用基于移位寄存器的序列碼。</p><p> 一個反饋寄存器[13](feedback shift register)由移位寄存器和反饋函數(shù)組成(如圖2-4所示)。其中,移
40、位寄存器是一個位序列,位是移位寄存器長度的單位,如果是n位長,則為n-位移位寄存器。每次運(yùn)算時得到一位,此時,移位寄存器中全部向左移動一位。這樣最左端的位被舍去,最右端的位需要更新,根據(jù)寄存器中其他位計(jì)算得到最右端的位。最后,移位寄存器輸出一位,一般為bn的值。</p><p> 圖2-4 反饋移位寄存器</p><p> 線性反饋移位寄存器(Linear Feedback Shift
41、 Register, LFSR)(如圖2-5所示)是反饋移位寄存器的一種,反饋函數(shù)和寄存器中的某些位進(jìn)行異或,這些位被稱為抽頭序列(tap sequence)。 </p><p> 圖2-5 線性反饋移位寄存器</p><p> 下面,用4位線性反饋移位寄存器(如圖2-6所示)舉例說明線性反饋移位寄存器的工作原理:</p><p> 圖2-6 4位線性反饋移位
42、寄存器</p><p> 如圖2-6可知,抽頭位置是第一位和第四位,假設(shè)初始值是1111,在輸出序列重復(fù)之前(輸出序列從開始到重復(fù)前的長度稱為周期),能夠產(chǎn)生的狀態(tài)序列是:</p><p> 1111,1110,1101,1010,0101,1011,0110,1100,1001,0010,0100,1000,0001,0011,0111</p><p> 則
43、輸出序列為:111101011001000</p><p> 對于一個n-位線性反饋移位寄存器[14]有種內(nèi)部狀態(tài)(全部是零的狀態(tài)除外,因?yàn)檫\(yùn)算結(jié)果不能產(chǎn)生別的內(nèi)部狀態(tài)),即n-位線性反饋移位寄存器在重復(fù)之前,能夠產(chǎn)生位長的偽隨機(jī)序列。而線性反饋移位寄存器能夠產(chǎn)生種內(nèi)部狀態(tài)是需要某種抽頭序列[15]。為了能夠有最大周期的線性反饋移位寄存器,則要求抽頭序列加1后的多項(xiàng)式(多項(xiàng)式的階是移位寄存器的長度)是本原多項(xiàng)式
44、模2(一個n階本原多項(xiàng)式是不可約多項(xiàng)式,它能夠整除,不能整除,d是能夠整除)。</p><p> 假設(shè)線性反饋移位寄存器的長度是32,抽頭位置是在1、2、3、5、7處(抽頭從移位寄存器的左邊開始計(jì)數(shù),即抽頭的階數(shù)越低,越靠近移位寄存器的左邊)。則通過(32, 7, 5, 3, 2, 1, 0)產(chǎn)生的多項(xiàng)式如公式2-2所示。</p><p><b> (2-2)</b&g
45、t;</p><p> 多項(xiàng)式(2-8)是本原多項(xiàng)式模2,在重復(fù)之前,可以循環(huán)產(chǎn)生輸出序列。</p><p> 2.5.2 A5/1加密算法的線性反饋移位寄存器</p><p> A5/1有3個長度分別為19,22,23的線性反饋移位寄存器[16]R1,R2,R3。R1的抽頭序列是18、17、16和13,R2的抽頭序列是21和20,R3的抽頭序列是22、2
46、1、20 和7。則它們的生成多項(xiàng)式如公式2-3所示。且線性反饋移位寄存器的多項(xiàng)式均為本原多項(xiàng)式,故由R1,R2,R3產(chǎn)生的序列有最長周期。</p><p><b> (2-3)</b></p><p> 2.5.3 基于線性反饋移位寄存器的鐘控規(guī)則</p><p> A5/1的鐘控機(jī)制采用擇多邏輯[17],在每一輪中時鐘至少驅(qū)動2個LFS
47、R移位。有3個鐘控輸入(分別為每個線性反饋移位寄存器的中間位,即R1[8],R2[10],R3[10])和3個鐘控輸出(分別控制每個線性反饋移位寄存器的停/走)。每次移位前計(jì)算R1[8],R2[10]和 R3[10]中數(shù)量多的數(shù)字。例如3個比特為(0, 0, 0),則。擇多邏輯真值表[18]如表2-1所示。</p><p> 表2-1 擇多邏輯真值表</p><p> maj是指maj
48、ority(R1[8], R2[10], R3[10])的結(jié)果值。</p><p> L1,L2,L3分別表示R1,R2,R3是否移動的布爾值。</p><p> R1移位當(dāng)且僅當(dāng)公式2-4成立時,R2移位當(dāng)且僅當(dāng)公式2-5成立時,R3移位當(dāng)且僅當(dāng)公式2-6成立時。值相等的線性反饋移位寄存器會被驅(qū)動,不相等則不被驅(qū)動。移位后R1,R2,R3的異或即得最終密鑰流。</p>
49、<p><b> (2-4)</b></p><p><b> (2-5)</b></p><p><b> (2-6)</b></p><p> 帶鐘控規(guī)則的R1,R2,R3的操作過程[19]可如圖2-7所示。</p><p> 圖2-7 帶鐘控規(guī)則的LF
50、SR操作圖</p><p> 第3章 A5/1加密算法實(shí)現(xiàn)的詳細(xì)設(shè)計(jì)</p><p><b> 3.1 算法函數(shù)</b></p><p> 3.2 算法的詳細(xì)設(shè)計(jì)</p><p> 3.2.1 模2運(yùn)算</p><p> 關(guān)于32位數(shù)據(jù)二進(jìn)制位中1的個數(shù)是奇數(shù)還是偶數(shù),如果是奇數(shù),則返回
51、1,如果是偶數(shù),返回0。在32位中,所有0異或的結(jié)果是0,剩下的1中,兩兩異或?yàn)?,所以,當(dāng)有偶數(shù)個1時,異或結(jié)果為0,當(dāng)奇數(shù)個1時,異或結(jié)果為1。因此是32位相異或的結(jié)果。</p><p> int parity( int p )</p><p><b> {</b></p><p> p ^= p >> 16;</p
52、><p> p ^= p >> 8;</p><p> p ^= p >> 4;</p><p> p ^= p >> 2;</p><p> p ^= p >> 1;</p><p><b> p &= 1;</b></p&
53、gt;<p><b> return p;</b></p><p><b> }</b></p><p> 舉例說明函數(shù)的操作方法,如圖3-1所示。假設(shè)32位二進(jìn)制數(shù)p為0101111110100110 1110101100101101。</p><p> 圖 3-1 二進(jìn)制模2運(yùn)算</p>
54、;<p> 3.2.2 擇多原則</p><p> 首先,來說明如何取得鐘控位置的值。以R1為例,取得R1[8]的值(0或1),通過公式3-1取得。</p><p><b> (3-1)</b></p><p> 其中,R1是寄存器,R1MID是鐘控位置。如圖3-2獲取鐘控位置值,以二進(jìn)制圖的方式進(jìn)行詳細(xì)的運(yùn)算。</
55、p><p> 圖3-2獲取鐘控位置值</p><p> 由以上,同理可知R2[10]和R3[10]的值。</p><p> 由表2-1 擇多邏輯真值表可知,當(dāng)R1[8]、R2[10]和R3[10]的和大于等于2時,擇多結(jié)果值為1,否則為0。因此用和的值來判斷最終的結(jié)果值,如果和大于等于2,返回結(jié)果值1;否則,返回結(jié)果值0??捎脠D3-3擇多原則程序流程圖表示。<
56、;/p><p> 圖3-3擇多原則程序流程圖</p><p> 下面是具體擇多原則的實(shí)現(xiàn)方法。</p><p> int majority()</p><p><b> {</b></p><p> int sum = ( ( R1 & R1MID ) >> 8 ) +
57、( ( R2 & R2MID ) >> 10 ) + ( ( R3 & R3MID ) >> 10 );//R1[8]+R2[10]+R3[10]求和</p><p> if( sum >= 2 )//如果和大于2</p><p><b> {</b></p><p><b> re
58、turn 1;</b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> 3.2.3 LFSR的移位操作</p><p> 首先以R
59、1的二進(jìn)制的形式詳細(xì)描述具體的移位操作過程,如圖3-4 R1寄存器的移位操作。先得到抽頭位置的值,再通過parity(int a )來得到抽頭位置異或的結(jié)果。最后,當(dāng)寄存器左移一位,最低位通過抽頭異或值來更新。</p><p> 圖3-4 R1寄存器的移位操作</p><p> LFSR移位操作的詳細(xì)設(shè)計(jì)如下。其中r是移位寄存器,taps是抽頭序列,mask是掩碼位。</p>
60、;<p> int clockOne( int r, int taps, int mask )</p><p><b> {</b></p><p> int temp = r&taps;//取得抽頭序列的值</p><p> r = (r<<1)&mask;//向左移動一位</p>
61、<p> r |= parity( temp );//更新最低位的值</p><p><b> return r;</b></p><p><b> }</b></p><p> 3.2.4 帶鐘控的LFSR操作</p><p> 當(dāng)移位寄存器的鐘控位的值與擇多結(jié)果值相等時進(jìn)
62、行移位,否則,不進(jìn)行操作。程序流程圖如3-5所示。</p><p> 圖3-5帶鐘控的LFSR操作的程序流程圖</p><p> 首先,由3.2.2擇多原則的方法majority()可以獲得鐘控值,通過公式3-1和圖3-2可知獲取寄存器鐘控位置值的方法。下面則是帶鐘控的LFSR操作的詳細(xì)設(shè)計(jì)。</p><p> void clockControl()</
63、p><p><b> {</b></p><p> int temp = majority();//取得鐘控值</p><p> if( temp == ( ( R1 & R1MID ) >> 8 ) )//如果鐘控值等于R1[8]</p><p><b> {</b><
64、;/p><p> R1 = clockOne( R1, R1TAPS, R1MASK );//R1進(jìn)行移位操作</p><p><b> }</b></p><p> if( temp == ( ( R2 & R2MID ) >> 10 ) ) //如果鐘控值等于R2[10]</p><p><
65、;b> {</b></p><p> R2 = clockOne( R2, R2TAPS, R2MASK ); //R2進(jìn)行移位操作</p><p><b> }</b></p><p> if( temp == ( ( R3 & R3MID ) >> 10 ) ) //如果鐘控值等于R3[10]&
66、lt;/p><p><b> {</b></p><p> R3 = clockOne( R3, R3TAPS, R3MASK ); //R3進(jìn)行移位操作</p><p><b> }</b></p><p><b> }</b></p><p>
67、 3.2.5 密鑰流的初始化</p><p> 密鑰流的初始化分為三部分,第一部分是64輪的會話密鑰與寄存器的操作,第二部分是22輪幀序列與寄存器的操作,第三部分為帶鐘控的寄存器的操作。流程圖如圖3-6所示。</p><p> 圖3-6密鑰流初始化流程圖</p><p> 第一部分中,首先是64個周期的寄存器和秘鑰之間的運(yùn)算。秘鑰是64比特位,在64周期中,每
68、一周期需要一比特位的秘鑰。密鑰存儲在byte數(shù)組中,如圖3-7所示。要獲得位秘鑰,要取得相應(yīng)byte數(shù)組中的某一個數(shù)據(jù),并進(jìn)行移位得到。</p><p> byte型變量占一個字節(jié),8位。所以,每8個周期從數(shù)組中取一個byte型秘鑰。通過key[i/8]取余的方式獲得分秘鑰(i代表第i周期)。然后將獲取的分秘鑰通過右移與1的方法即可獲得位秘鑰。圖3-7中第一行數(shù)字表示要想獲得相應(yīng)位的值所需要向右移動的移數(shù),即移
69、位數(shù)字。第二行是對應(yīng)的第幾周期。我們通過周期數(shù)字對8取余來得到移位數(shù)字。能夠獲得相同結(jié)果的二進(jìn)制計(jì)算是周期數(shù)字與7進(jìn)行與運(yùn)算。圖中以8和9來舉例說明。</p><p> 圖3-7獲取位秘鑰的方法</p><p> 第一部分中秘鑰流產(chǎn)生中的移位寄存器操作在3.2.3中已經(jīng)介紹。 </p><p> 第二部分中,在22周期中,每次取一位幀號。由于幀號存儲在一個in
70、t型變量中,相對應(yīng)位秘鑰的獲取,位幀號的獲取變得簡單許多。需要第幾位幀號即向右移動幾位并和1進(jìn)行與運(yùn)算即可。移位寄存器的操作不再贅述。</p><p> 第三部分中,只含有帶鐘控的移位寄存器的操作,此操作在3.2.4中已經(jīng)介紹。下面是秘鑰流產(chǎn)生的詳細(xì)設(shè)計(jì)。</p><p> void setKey()</p><p><b> {</b>
71、;</p><p> int i = 0;</p><p> int keyBit = 0;//位秘鑰</p><p> int frameBit = 0;//位幀號</p><p> for( ; i < 64; i ++ )//寄存器與秘鑰的64次周期循環(huán)</p><p><b> {&l
72、t;/b></p><p> keyBit = ( key[i/8] >> (i&7) ) & 1;//獲取位秘鑰</p><p> clockAll();//寄存器移位操作</p><p><b> //寄存器進(jìn)行計(jì)數(shù)</b></p><p> R1 ^= keyBit;<
73、;/p><p> R2 ^= keyBit;</p><p> R3 ^= keyBit;</p><p><b> }</b></p><p> for( i = 0; i < 22; i ++ )//寄存器與幀號的22次周期循環(huán)</p><p><b> {</b
74、></p><p> frameBit = ( frame >> i ) & 1;//獲取位幀號</p><p> clockAll();//寄存器移位操作</p><p><b> //寄存器進(jìn)行計(jì)數(shù)</b></p><p> R1 ^= frameBit;</p>&l
75、t;p> R2 ^= frameBit;</p><p> R3 ^= frameBit;</p><p><b> }</b></p><p> for( i = 0; i < 100; i ++ )//寄存器的100次周期循環(huán)</p><p><b> {</b></
76、p><p> clockControl();//帶鐘控的寄存器移位操作</p><p><b> }</b></p><p><b> }</b></p><p> 3.2.6 輸出位的獲取</p><p> 密鑰流中的每一位是由R1、R2和R3三個寄存器最高位相異或的
77、結(jié)果。通過與運(yùn)算和parity(int p)方法獲取最高位的值,再進(jìn)行異或。對此方法舉例說明,如圖3-8所示。</p><p> 圖3-8輸出位的獲取</p><p><b> 詳細(xì)設(shè)計(jì)如下。</b></p><p> int getOut()</p><p><b> {</b></
78、p><p> int temp = parity( R1&R1OUT ) ^ parity( R2&R2OUT ) ^ parity( R3&R3OUT );</p><p> return temp;</p><p><b> }</b></p><p> 3.2.7 獲取密鑰流</p
79、><p> 密鑰流共228位,分為兩部分存儲到byte數(shù)組中。通過帶鐘控的移位寄存器操作后獲得輸出位。輸出位從最高位存到最低位。輸出位通過左移移動到高位。移動的位數(shù)由周期得到,這與3.2.5中獲取位秘鑰相似。下面是獲取密鑰流的詳細(xì)設(shè)計(jì)。</p><p> void getKey()</p><p><b> {</b></p>
80、<p> int i = 0;</p><p> for( i = 0; i < 114; i ++ )</p><p><b> {</b></p><p> clockControl();</p><p> keyStreamA[i/8] |= (byte)( getOut()<&l
81、t;( 7 - ( i&7 ) ) ) ;//字節(jié)從最高位存</p><p><b> }</b></p><p> for( i = 0; i < 114; i ++ )</p><p><b> {</b></p><p> clockControl();</p>
82、;<p> keyStreamB[i/8] |= (byte)( getOut()<<( 7 - ( i&7 ) ) );</p><p><b> }</b></p><p><b> }</b></p><p><b> 3.2.8 加解密</b><
83、/p><p> 如圖3-9所示,加密和解密使用同樣的方法,明/密文與密鑰流進(jìn)行異或操作后,返回字節(jié)數(shù)組形式的密/明文。</p><p> 圖3-9加解密流程圖</p><p><b> 詳細(xì)設(shè)計(jì)如下。</b></p><p> byte[] encryption( byte pt[] )</p><
84、;p><b> {</b></p><p> int i = 0;</p><p> int len = pt.length;//數(shù)組長度<=15</p><p> byte cipherText[] = new byte[len];//密文</p><p> for( i=0; i < le
85、n; i ++ )</p><p><b> {</b></p><p> cipherText[i] = (byte)( pt[i]^keyStreamA[i] );</p><p><b> }</b></p><p> return cipherText;</p>&l
86、t;p><b> }</b></p><p> 3.2.9 輸出16進(jìn)制形式的明密文</p><p> 為了能夠清晰的了解到加解密前后的明密文,使用16進(jìn)制的形式輸出明密文。</p><p> void printHexText( byte pt[] )</p><p><b> {</b
87、></p><p> System.out.println( "加/解密前的明/密文:" );</p><p> for( int i=0; i < pt.length; i ++ )</p><p><b> {</b></p><p> System.out.print( I
88、nteger.toHexString( pt[i] & 0xFF )+ ", ");</p><p><b> }</b></p><p> byte ct[] = encryption( pt );</p><p> System.out.println( "\n加/解密后的密/明文:"
89、);</p><p> for( int i=0; i < ct.length; i ++ )</p><p><b> {</b></p><p> System.out.print( Integer.toHexString( ct[i] & 0xFF )+ ", ");</p><
90、p><b> }</b></p><p> System.out.println( "\n" );</p><p><b> }</b></p><p><b> 第4章 測試</b></p><p> 測試時[20],需要有會話密鑰、幀序列
91、號、明/密文,從而輸出密/明文。為了獲得有效地測試結(jié)果,通過控制變量的方法,對其進(jìn)行測試產(chǎn)生工作秘鑰的唯一性和算法的有效性[21]。即相同的會話密鑰、幀序列號,對于不同的明文產(chǎn)生不同的密文;相同的會話密鑰、明文,對于不同的幀序列號,將產(chǎn)生不同的密文;相同的幀序列號和明文,對于不同的會話秘鑰將產(chǎn)生不同的密文。解密的驗(yàn)證,只需將加密后的密文再進(jìn)行解密,解密后的明文與原始的明文對比是否相同。</p><p> 測試數(shù)
92、據(jù)如表4-1所示。</p><p><b> 表4-1 測試數(shù)據(jù)</b></p><p><b> 第5章 加密文件</b></p><p> 5.1 計(jì)數(shù)器(CTR)模式</p><p> 計(jì)數(shù)器模式[22]是分組密碼的工作模式中的一種,首先,將明文分組,每組明文長度相等,然后對每一組進(jìn)行
93、獨(dú)立的加密。加密時需要秘鑰和計(jì)數(shù)器對明文加密,加密如圖5-1所示。解密時需要相應(yīng)的秘鑰和計(jì)數(shù)器對密文解密,解密如圖5-2所示。</p><p> 圖5-1 CTR加密</p><p> 圖5-2 CTR解密</p><p> 計(jì)數(shù)器模式的優(yōu)點(diǎn)是高效的,由于每組數(shù)據(jù)不依賴于前面的數(shù)據(jù),所以是獨(dú)立處理的,可以并行實(shí)現(xiàn);加密算法的執(zhí)行不需要明密文的參與計(jì)算。當(dāng)給
94、出明密文時,只需進(jìn)行異或操作。這樣的加密模式也防止了錯誤的傳播,一個分組單元的損壞只影響對應(yīng)的單元。由于計(jì)數(shù)器的關(guān)系,對于相同的明文能夠加密成不同的密文,因此隱藏了明文的模式信息,這樣對與通過語言的頻率特征進(jìn)行攻擊變得不可行。</p><p> 5.2 加密文件的詳細(xì)設(shè)計(jì)</p><p> 以秘鑰為“keywords”,幀號為0x6935對文件A5_1.java進(jìn)行加密并保存在ciph
95、erA5_1.java中。通過文件輸入流讀取A5_1.java的內(nèi)容,以byte數(shù)組形式得到。通過文件輸出流將加密后的內(nèi)容保存到cipherA5_1.java中。同時對可能產(chǎn)生的異常進(jìn)行捕捉[21]。如圖5-3所示。</p><p> 圖5-3加密文件流程圖</p><p><b> 詳細(xì)設(shè)計(jì)如下:</b></p><p> import
96、 java.io.File;</p><p> import java.io.FileInputStream;</p><p> import java.io.FileOutputStream;</p><p> import java.io.FileNotFoundException;</p><p> import java.io
97、.IOException;</p><p> public class A5_File</p><p><b> {</b></p><p> public static void main( String args[] )</p><p><b> {</b></p>&l
98、t;p> int b = 0;//讀入緩沖區(qū)的字節(jié)總數(shù)</p><p> byte text[] = new byte[15];//保存分組明/密文</p><p> String key = new String( "keywords" );//秘鑰</p><p> int frame = 0x6935;//幀序列號</p
99、><p> A5_1 a = new A5_1( key, frame );//A5_1算法</p><p><b> a.run();</b></p><p><b> try</b></p><p><b> {</b></p><p> Fi
100、le file = new File( "A5_1.java" );//需要加密的文件</p><p> File copyFile = new File( "cipherA5_1.java" );//加密后保存的文件</p><p> FileInputStream fi = new FileInputStream( file );//文件輸入
101、類</p><p> FileOutputStream fo = new FileOutputStream( copyFile );//文件輸出流</p><p> copyFile.createNewFile();//創(chuàng)建新文件</p><p> while( ( b = fi.read( text ) ) != -1 )//如果因?yàn)橐呀?jīng)到達(dá)文件末尾而沒有更
102、多的數(shù)據(jù),則返回 -1</p><p><b> {</b></p><p> text = a.encryption( text );</p><p> fo.write( text, 0, b );</p><p><b> }</b></p><p> fi.
103、close();//關(guān)閉此文件輸入流并釋放與此流有關(guān)的所有系統(tǒng)資源</p><p><b> }</b></p><p> catch( NullPointerException npe )</p><p><b> {</b></p><p> System.out.println( &q
104、uot;文件名為空" );</p><p><b> }</b></p><p> catch( FileNotFoundException fnfe )</p><p><b> {</b></p><p> System.out.println( "文件未找到&quo
105、t; );</p><p><b> }</b></p><p> catch( SecurityException se )</p><p><b> {</b></p><p> System.out.println( "拒絕對文件進(jìn)行讀取訪問" );</p&g
106、t;<p><b> }</b></p><p> catch( IOException ioe )</p><p><b> {</b></p><p> System.out.println( "發(fā)生 I/O 錯誤" );</p><p><b&g
107、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p> 第6章 A5/1加密算法界面化</p><p> 6.1 界面的功能介紹</p><p> 界面含有兩個功能,一個是對字符串的加解密,另一個
108、是對文件的加解密。通過輸入秘鑰和幀號,即可實(shí)行以上功能。</p><p> 在界面輸入方面,要對其進(jìn)行檢查。秘鑰長度為8個字符,對于不等于8個字符的輸入,給出“請輸入8位字符的秘鑰!”的提示;幀號要求是數(shù)字,范圍在0到262143(0x3FFFF)之間,滿足了幀序列號是22位的要求,不在此范圍內(nèi)時,給出“請輸入正確范圍內(nèi)的幀號!”的提示,如果輸入非數(shù)字時,給出“請輸入正整數(shù)形式的幀號!”的提示;由于A5/1加密
109、算法產(chǎn)生的密鑰流是228比特位,一個方向114比特,所以最多可以加密14位字符,如果輸入的字符串超過14位,給出“輸入需要加/解密的字符串過長!”的提示;</p><p> 加解密字符串時,點(diǎn)擊“加/解密字符串”按鈕即可,在相應(yīng)的文本框內(nèi)會顯示出加/解密后的字符串;加解密文件時,點(diǎn)擊“加/解密文件”按鈕即可,加/解密完成后,會給出加解密完成的提示對話框。如果其中的文件不存在,也給出相應(yīng)的提示;在加/解密后的內(nèi)容
110、的存儲發(fā)生錯誤,也給出提示。</p><p><b> 6.2 流程圖</b></p><p> 圖6-1加解密字符串流程圖表示了通過界面模式進(jìn)行字符串加密的系統(tǒng)流程圖。圖6-2加解密文件流程圖表示了通過界面模式進(jìn)行文件加密的系統(tǒng)流程圖。</p><p> 圖6-1 加解密字符串流程圖</p><p> 圖6-2
111、 加解密文件流程圖</p><p><b> 6.4 界面效果圖</b></p><p> 圖6-3 初始化界面</p><p> 圖6-4 秘鑰驗(yàn)證警告對話框</p><p> 圖6-5 幀號整數(shù)驗(yàn)證警告對話框</p><p> 圖6-6 幀號整數(shù)范圍驗(yàn)證警告對話框</p>
112、<p> 圖6-7 字符串驗(yàn)證警告對話框</p><p> 圖6-8 文件加密完成提示對話框第7章 結(jié)論</p><p> 本論文對信息安全中的GSM系統(tǒng)進(jìn)行了簡單的介紹,對其中的A5/1加密算法進(jìn)行了細(xì)致的分析,從A5/1的初始化、密鑰流的產(chǎn)生至最后的加解密的內(nèi)容。</p><p> 通過此次畢業(yè)設(shè)計(jì),鍛煉了自己的實(shí)踐動手能力,從信息安全理論
113、知識,深入到詳細(xì)的A5/1加密算法的實(shí)現(xiàn),讓我對A5/1加密算法有了更深刻的認(rèn)識。</p><p> 至此,對A5/1加密算法的學(xué)習(xí)也只是一個初步的過程,本畢業(yè)設(shè)計(jì)只是完成了對字符串和文件的加解密的功能。還有對A5/1加密算法的改進(jìn)、抗攻擊等問題沒有了解,因此對A5/1加密算法以及其他信息安全知識的了解還遠(yuǎn)遠(yuǎn)不夠。在今后的日子中會不斷學(xué)習(xí),了解更多這方面的內(nèi)容。</p><p><
114、b> 參 考 文 獻(xiàn)</b></p><p> [1] 王昭. 密碼學(xué)教學(xué)與創(chuàng)新教育[J]. 計(jì)算機(jī)教育,2011, 1(6): 41-45.</p><p> [2] 李新生. 信息安全與國家安全[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2002, 1(6): 31-34.</p><p> [3] M.Mouly,M.B. Pautet. GSM數(shù)
115、字移動通信系統(tǒng)[M]. 北京:電子工業(yè)出版社,1996.</p><p> [4] 趙婷. 基于身份的可認(rèn)證密鑰協(xié)商協(xié)議研究[DB]. [2008-03-24] . </p><p> [5] 王琪華. GSM的網(wǎng)絡(luò)與GPRS網(wǎng)絡(luò)安全分析[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2005,26(2): 429-450.</p><p> [6] 陳偉, 胡云, 楊義先. 抗
116、相關(guān)攻擊的A5/1加密算法識別[J]. 電子與信息學(xué)報,2006, 11(1): 56-60.</p><p> [7] Man Young Rhee. Mobile Communication Systems and Security [M]. New Jersey: Wiley-IEEE Press, 2009.</p><p> [8] 王昭,袁春. 信息安全原理與應(yīng)用[M].
117、北京:電子工業(yè)出版社,2012.</p><p> [9] 康文濤. 現(xiàn)代信息加密技術(shù)[DB]. [2004-07-14] .</p><p> [10] 申延成. 流密碼的故障攻擊[DB]. [2010-04-25] . </p><p> [11] 左平,申延成,華宏圖. A5/1的故障分析[J]. 吉林大學(xué)學(xué)報(理學(xué)版),2013,51(1): 128-
118、131.</p><p> [12] Mark Stamp. Information Security Principles and Practice [M]. New Jersey:John Wiley & Sons,2011.</p><p> [13] Bruce Schneier. Applied Cryptography 2nd Edition: proto
119、cols, algorithms, and source code in C [M]. New York: John Wiley & Sons, 1996.</p><p> [14] S.W Golomb. Shift Register Swquences [M]. San Francisco: Holden-Day, 1967.</p><p> [15] 翟雪煥. 密碼函
120、數(shù)和序列密碼的若干問題研究[DB]. [2007-04-01] . http://d.g.w anfangdata.com.cn/Thesis_Y1246689.aspx.</p><p> [16] Briceno M, Goldberg I, Wagner D. A Pedagogical Implementation of A5/1 and A5/2 ”Voice Pricacy” Encryption
121、Algorithms [EB/OL] . [1999-10-23] .</p><p> [17] Kholosha A. Clock-controlled shift registers for key-stream generation [D]. Netherlands: Technische Universiteit Eindhoven, 2002.</p><p> [18]
122、陳偉,楊義先,鈕心忻. A5/1加密算法可抵抗相關(guān)攻擊的改進(jìn)方法[J]. 北京郵電大學(xué)學(xué)報,2006,29(4): 119-122.</p><p> [19] Barkan E, Biham E, Keller N. Instant ciphertext-only cryptanalysis of GSM [R]. Haifa: Technion-Computer Science Department Tec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- des加密算法的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文
- 基于rsa加密算法畢業(yè)論文--數(shù)據(jù)通信中的rsa加密算法的設(shè)計(jì)與實(shí)現(xiàn)
- rsa公鑰加密算法的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- RSA加密算法IP核的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于MCS51的IDEA加密算法的實(shí)現(xiàn).pdf
- AES加密算法的研究與IP核設(shè)計(jì)實(shí)現(xiàn).pdf
- 基于加密算法的gps航跡加密設(shè)計(jì)
- 嵌入混沌加密算法的IPSEC協(xié)議的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 外文翻譯--用于gsm加密算法中a51和a52修改后的流產(chǎn)生器
- 加密卡的研制與加密算法的FPGA實(shí)現(xiàn).pdf
- 基于混沌系統(tǒng)的圖像加密算法的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 軟件安全設(shè)計(jì)—保護(hù)技術(shù)與加密算法---畢業(yè)論文
- 基于兩種加密算法的加密解密系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于身份加密算法的身份管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 外文翻譯--用于gsm加密算法中a51和a52修改后的流產(chǎn)生器
- 加密算法
- RSA加密算法的研究與實(shí)現(xiàn).pdf
- 混沌加密算法的研究與實(shí)現(xiàn).pdf
- 基于Ising模型的QR碼加密算法的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 數(shù)字混沌加密算法研究與實(shí)現(xiàn).pdf
評論
0/150
提交評論