文獻標(biāo)識碼: A
文章編號: 0258-7998(2015)01-0118-04
中文引用格式:魏漢明,劉文怡,關(guān)詠梅,張彥軍,張國佳.基于漢明碼校驗的AES數(shù)據(jù)加密記錄器設(shè)計[J].電子技術(shù)應(yīng)用,2015,41(01):118-121
0 引言
數(shù)據(jù)記錄器是遙測系統(tǒng)中重要的組成部分,,可為飛行器的質(zhì)量評估及飛行器的技術(shù)改進提供數(shù)據(jù)依據(jù),。近些年半導(dǎo)體技術(shù)高速發(fā)展,固態(tài)記錄器以成為飛行記錄器的發(fā)展趨勢,,在現(xiàn)有的固態(tài)存儲介質(zhì)中,,基于NAND技術(shù)的非揮發(fā)性存儲器Flash(閃速存儲器)以其體積小、功耗低,、密度大,、編程和擦除速度快、成本低等優(yōu)點而被廣泛地運用于各個領(lǐng)域[1],。
同時為了防止數(shù)據(jù)記錄器中的信息被對手截獲,,需要對信息進行保密防護,常用的措施為采用加密編碼[2-3],。加密編碼對基于Nand Flash芯片的數(shù)據(jù)記錄器會產(chǎn)生一個問題,。Nand Flash芯片的物理特性使其在使用中有可能出現(xiàn)位翻轉(zhuǎn)的問題,即在一定的數(shù)據(jù)塊中產(chǎn)生了一比特的誤碼,,這個誤碼經(jīng)過加密編碼后會引起誤碼擴散,。如數(shù)據(jù)在采集后以16 B分組,經(jīng)加密編碼后存入Flash芯片中,,若在Flash芯片中出現(xiàn)了位翻轉(zhuǎn)錯誤,,那么該位所在的128 b加密數(shù)據(jù)在解密后一般得不到原來的明文數(shù)據(jù),那么原來出現(xiàn)在1 B的誤碼經(jīng)加密后擴散到了16 B中,。由此可見,,在加密存儲系統(tǒng)中,對誤碼的控制設(shè)計尤為重要,。漢明碼的二元線性分組碼中編碼效率高,,簡單實用,在分組數(shù)據(jù)內(nèi)能實現(xiàn)錯誤檢測和1比特的誤碼糾正[4],。本文將研究數(shù)據(jù)記錄器的AES加密設(shè)計及基于漢明碼的誤碼控制設(shè)計,。
1 系統(tǒng)方案設(shè)計
AES加密數(shù)據(jù)記錄器主要完成對遙測模擬信號的采集、加密及存儲,,同時嵌入漢明校驗碼增強存儲的可靠性,;記錄器中存儲的數(shù)據(jù)最后被讀取至計算機終端,,完成解密與分析。記錄器不能與計算機終端直接通信,,配套地面測試臺設(shè)備是計算機終端與數(shù)據(jù)記錄器通信的橋梁,。在傳統(tǒng)方案中,誤碼的糾錯工作在記錄器中完成,,數(shù)據(jù)從Flash中讀出時首先要在記錄器中緩存,,等到誤碼檢測與糾錯工作完成后才能將糾錯后的數(shù)據(jù)上傳給計算機,這樣會大大降低了數(shù)據(jù)傳輸速度,。本文設(shè)計的方案中將糾錯工作交由計算機完成,,這樣不僅能檢測和糾正NAND Flash芯片存儲的位翻轉(zhuǎn)錯誤,減輕了硬件系統(tǒng)的工作量,,保證了數(shù)據(jù)傳輸?shù)乃俣?,而且利用計算機能夠使糾錯工作結(jié)果更直觀[5-6]。系統(tǒng)的工作方案如圖1所示,。
AES加密數(shù)據(jù)記錄器以48 kHz的頻率對6路遙測模擬信號進行采樣,,然后將量化后的遙測數(shù)據(jù)分組加密,加密后的數(shù)據(jù)及生成的漢明校驗碼寫入NAND Flash芯片中,。采樣芯片采用ADS8365芯片,,單個芯片可并行實現(xiàn)6路差分通道的轉(zhuǎn)換,有益于小尺寸系統(tǒng)設(shè)計,;采樣精度可達16 bit,。存儲芯片采用三星公司的4 GB容量NAND Flash芯片K9WBG08U1M。整個加密記錄器的系統(tǒng)設(shè)計框架如圖2所示,。
2 關(guān)鍵技術(shù)實現(xiàn)
2.1 AES加密算法的FPGA實現(xiàn)
本文采用的密鑰長度為128 b,,狀態(tài)矩陣由4×4 B組成,則加密的迭代輪數(shù)為10,,每一輪的步驟為:(1)字節(jié)代換(s盒替換),,(2)行移位,(3)列混合(最后一輪沒有),,(4)輪密鑰加,。
字節(jié)代換即通過一個非線性的函數(shù),將原有字節(jié)替換成對應(yīng)字節(jié)的過程,。其實際運算操作為:首先將字節(jié)變換到GF(28)域上的乘法逆元,,再對字節(jié)進行一個仿射變換。字節(jié)代換可以簡化為一個簡單的查表操作,,AES定義了一個S盒(及逆S盒),,S盒是一個由16×16 B組成矩陣,矩陣共有256個元素(字節(jié)),。查表時,,字節(jié)的高4位作為行地址x,,低4位作為列地址y,指向S盒的第x行第y列的字節(jié),。為了簡化硬件的工作,,本文將采用官方S盒,且將S盒內(nèi)容初始化至FPGA的IP核ROM中,。
行移位是一個簡單的左循環(huán)移位操作,。對4×4的狀態(tài)矩陣,第1行不移位,,第2行左移1個字節(jié),第3行左移2個字節(jié),,第4行左移3個字節(jié)即可,。
列混合是將狀態(tài)矩陣與一固定矩陣相乘,狀態(tài)矩陣每一列的更新方式如下式所示:
式中涉及的操作有加法(異或)和乘法,,由于乘法在FPGA中直接實現(xiàn)較為復(fù)雜,,需要將乘法運算轉(zhuǎn)換為移位和加法運算。在有限域GF(28)上,,{02}乘以一字節(jié)b(x)=b7×7+b6×6+b5×5+b4×4+b3×3+b2×2+b1×1+b0×0,,若該字節(jié)的最高位b7為0,則可直接對b(x)在字節(jié)內(nèi)左移1位,,最低位補0即可,;若最高位b7為1則需在移位后再與{1B}異或。{03}乘以一字節(jié)時則將{03}分解為{02}+{01}再進行運算即可,。
輪密鑰加即將狀態(tài)矩陣與輪密鑰矩陣逐位異或即可,。
輪密鑰由初始密鑰經(jīng)過密鑰擴展操作得來。初始密鑰由用戶制定,,長度為128 b,,將其輸入到一個4×4的矩陣中,用數(shù)組W[i]表示密鑰中的某一列,,則初始密鑰可用W[0],、W[1]、W[2],、W[3]4個數(shù)據(jù)表示,;下一輪的擴展密鑰可用W[4]、W[5],、W[6],、W[7]表示……依次,最后一輪的擴展密鑰數(shù)據(jù)為W[40],、W[41],、W[42],、W[43]。各數(shù)組之間的關(guān)系為:
(1)若i非4的倍數(shù),,則有:
W[i]=W[i-4]⊕W[i-1](5)
(2)若i為4的倍數(shù),,則有:
W[i]=W[i-4]⊕T(W[i-1])(6)
式中T相當(dāng)與一個復(fù)雜的函數(shù),其具體的操作為:
?、僮盅h(huán):將自變量循環(huán)左移1個字節(jié),。如數(shù)組[w0,w1,,w2,,w3]經(jīng)過字循環(huán)變換為[w3,w0,,w1,,w2]。
?、谧止?jié)代換:使用S盒對每個字節(jié)進行代換,。
③輪常量異或:將前兩步的結(jié)果與輪常量Rcon[j]進行異或,,j表示輪數(shù),。輪常數(shù)的內(nèi)容(4個字節(jié))如表1所示,密鑰擴展過程如圖3所示,。
用戶定義了初始密鑰后,,由密鑰擴展運算就可以得到后續(xù)的10輪密鑰。為了簡化硬件工作,,密鑰擴展工作可由計算機完成,,然后將所有密鑰(共11×16=176 B)作為初始化文件載入FPGA ROM核中。這樣,,F(xiàn)PGA對于密鑰的相對操作可簡化為簡單的查表運算,。
為了加快執(zhí)行速度,F(xiàn)PGA程序中采用流水線設(shè)計,。根據(jù)AES加密算法的原理,,把程序主要劃分為輪密鑰加、S盒替換,、行變換,、列混合、加密輸出等5個模塊,。各模塊之間設(shè)由握手信號進行通信,,每個模塊只需完成自己的任務(wù)((1)AES加密步驟;(2)輸出指示信號和加密狀態(tài)(數(shù)據(jù)))即可,。
2.2 漢明碼校驗設(shè)計
漢明碼的FPGA實現(xiàn)較為簡單,,首先需要對數(shù)據(jù)進行分組設(shè)計,。由于使用的NAND Flash是4 KB每頁的結(jié)構(gòu),因此將一頁的4 KB數(shù)據(jù)分為一組,。將4 KB數(shù)據(jù)看成是4 096(行)×8(列)的矩陣,,數(shù)據(jù)在邊寫入Flash時可邊產(chǎn)生漢明校驗碼,完全不影響存數(shù)的速度,,最終生成12 bit的行奇校驗碼,、12 bit的行偶校驗碼、3 bit的列奇校驗碼,、3 bit的列偶校驗碼,,只需將這總共30 bit的校驗碼寫入Flash當(dāng)前頁的備用區(qū)即可。
行校驗碼與列校驗碼可以看成是獨立的,,而奇校驗碼與偶校驗碼是互補的,,行校驗碼最終指示出錯的“行”(字節(jié)),列校驗碼最終指示出錯的“列”(位),,二者相結(jié)合最終能定位到整個分組數(shù)據(jù)中的某一出錯位且糾錯。
為了方便,,以列校驗碼的生成做示例,。設(shè)列奇校驗碼為L_ECCo,列偶校驗碼為L_ECCe,,則有:
L_ECCo[2]=byte_n[7]^byte_n[6]^byte_n[5]^byte_n[4]
(n=0,,1……4 095)(7)
L_ECCo[1]=byte_n[7]^byte_n[6]^byte_n[3]^byte_n[2]
(n=0,1……4 095)(8)
L_ECCo[0]=byte_n[7]^byte_n[5]^byte_n[3]^byte_n[1]
(n=0,,1……4 095)(9)
L_ECCe[2]=byte_n[3]^byte_n[2]^byte_n[1]^byte_n[0]
(n=0,,1……4 095)(10)
L_ECCe[1]=byte_n[5]^byte_n[4]^byte_n[1]^byte_n[0]
(n=0,1……4 095)(11)
L_ECCe[0]=byte_n[6]^byte_n[4]^byte_n[2]^byte_n[0]
(n=0,,1……4 095)(12)
計算機軟件讀取Flash中的數(shù)據(jù)時也會按照同樣的方式生成漢明校驗碼,,此時設(shè)列奇校驗碼為L_ECCo′,列偶校驗碼為L_ECCe′,。計算機在數(shù)據(jù)分析前對數(shù)據(jù)進行校驗,,那么當(dāng)L_ECCo與L_ECCo′、L_ECCe與L_ECCe′分別完全相等時才認定數(shù)據(jù)存儲及傳輸正常(這里只以列校驗作說明),;若L_ECCo,、L_ECCo′、L_ECCe,、L_ECCe′ 4個參數(shù)的異或結(jié)果所有位都為1,,那么數(shù)據(jù)出現(xiàn)了可糾正的錯誤,出錯的位地址由L_ECCo′與 L_ECCo的異或結(jié)果表示,。
3 實驗結(jié)果
為了驗證設(shè)計的正確性,,對00~FF的循環(huán)遞增數(shù)據(jù)進行加密存儲,,數(shù)據(jù)源如圖4(a)所示。數(shù)據(jù)加密過程及漢明校驗碼生成程序仿真如圖4(b)所示,。加密數(shù)據(jù)最后以4 KB為單位打包上傳給計算機,。
同時,在加密數(shù)據(jù)上傳到計算機時,,故意將數(shù)據(jù)中的某一位翻轉(zhuǎn),,如第17 B(Byte16)的第4位(bit3),那么計算機收到的未校驗的加密數(shù)據(jù)如圖5(a)所示,,其中字節(jié)“C0”為誤碼字節(jié),,直接對圖5(a)數(shù)據(jù)進出解密,得到數(shù)據(jù)如圖5(b)所示,。數(shù)據(jù)分析報告稱出現(xiàn)16 B的錯誤,。由此可知,由于一個加密字節(jié)的位翻轉(zhuǎn)錯誤,,經(jīng)過解密后擴散到了原16 B的分組數(shù)據(jù)中,。
查看數(shù)據(jù)的漢明校驗碼,如圖6所示,,根據(jù)校驗信息對數(shù)據(jù)進行糾錯,,再解密,數(shù)據(jù)還原正確,,如圖7所示,,加密數(shù)據(jù)中第17 B已經(jīng)由“C0”糾正為“C8”。
4 結(jié)論
本文設(shè)計并實現(xiàn)了基于FPGA的AES加密存儲器,,利用計算機軟件完成部分設(shè)計(如密鑰的擴展和S盒的設(shè)計)后直接例化到FPGA ROM核中,,簡化了硬件設(shè)計;同時采用流水線技術(shù),,加快硬件加密速度,。另外,為了避免由于存儲芯片NAND Flash出現(xiàn)的位翻轉(zhuǎn)而造成加密系統(tǒng)的誤碼擴散問題,,在加密數(shù)據(jù)寫入存儲器前設(shè)計生成了漢明校驗碼,,而數(shù)據(jù)校驗則在計算機中完成,這樣能幾乎不改變硬件數(shù)據(jù)讀寫速度,,同時有效地提高了系統(tǒng)的可靠性,。
參考文獻
[1] 王建勛.基于NAND閃存的固態(tài)存儲技術(shù)研究與實現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),2010.
[2] 龔進.AES加密算法在電子系統(tǒng)中的優(yōu)化及應(yīng)用研究[D].太原:中北大學(xué),,2012.
[3] 陳鐵明,,葛亮,蔡家楣,等.TinyTCSec:一種新的輕量級無線傳感器網(wǎng)絡(luò)鏈路加密協(xié)議[J].傳感技術(shù)學(xué)報,,2011,,24(2):275-282.
[4] 陳鐵明,白素剛,,蔡家楣.TinyIBE:面向無線傳感器網(wǎng)絡(luò)的身份公鑰加密系統(tǒng)[J].傳感技術(shù)學(xué)報,,2009,22(8):1193-1197.
[5] 陳武.NandFlash糾錯碼的設(shè)計研[D].杭州:浙江大學(xué),,2011.
[6] 辛英.漢明碼糾錯檢錯能力分析與應(yīng)用[J].鹽城工學(xué)院學(xué)報:自然科學(xué)版,,2008,21(1):34.