新聞中心

        EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 基于MC9S08JS16和AES的USB Key設(shè)計

        基于MC9S08JS16和AES的USB Key設(shè)計

        作者: 時間:2010-12-15 來源:網(wǎng)絡(luò) 收藏


        的主循環(huán)對State矩陣執(zhí)行4個不同的操作,規(guī)范中被稱為SubBytes(字節(jié)替換)、ShifiRows(行位移變換)、MixColumns(列混合變換)和AddRound(輪密鑰加)。加密算法使用了一個由種子密鑰字節(jié)數(shù)組生成的密鑰調(diào)度表,規(guī)范中稱之為密鑰擴展例程(Expans-ion)。
        下面簡單分析AES(128 bits密鑰)的加密過程:

        SubBytes例程是一個代替操作,它將State矩陣中的每個字節(jié)替換成一個由Sbox決定的新字節(jié),Sbox是初始化的1個16x16的矩陣。比如State[0,1]的值為0xXY,則被替換為Sbox表中Sbox[X,Y]的值。
        ShifiRows是一個置換操作,它將State矩陣中的字節(jié)向左旋轉(zhuǎn)。State的第0行向左旋轉(zhuǎn)0個位置,State的第1行向左旋轉(zhuǎn)1個位置,State的第2行向左旋轉(zhuǎn)2個位置,而第3行則向左旋轉(zhuǎn)3個位置。
        MixColumns列混合變換過程,在該變換中將狀態(tài)的每列視為有限域GF(28)中的多項式且被一個固定的多項式
        ,GF代表伽羅瓦域,將其用矩陣形式表示為:

        乘積矩陣中的每個元素是系數(shù)矩陣中第i行元素與State矩陣第j列元素State[j]的乘積之和。這里的加法和乘法都定義在有限域GF(28)上;加法即按位異或,乘法遵循GF(28)上的多項式乘法規(guī)則。
        AddRound輪密鑰加過程,State矩陣中的元素通過與一個輪密鑰進行逐位異或而得。
        KeyExpansion密鑰擴展例程,用于產(chǎn)生密鑰調(diào)度表W[]。例程用到了2個子例程RotWord和SubWord以及1個輪常數(shù)表Rcon。RotWord將接收1個4字節(jié)的數(shù)組并將它們向左旋轉(zhuǎn)1位,SubWord例程使用替代Sbox對給定的一行密鑰調(diào)度表進行逐字節(jié)替換。該過程的循環(huán)為:

        2.3 AES加密算法的優(yōu)化
        從式(1)矩陣函數(shù)可以看出,在軟件實現(xiàn)過程中,只需關(guān)注如何實現(xiàn)State矩陣元素在GF(28)中與OxO1,0x02,0x03的乘法和加法。GF(2 8)中用0x01的乘法相當(dāng)于普通算數(shù)中用l做乘法并且結(jié)果也同樣,任何值乘以0x01等于其自身;用0x02做乘法,只要被乘的值小于0x80,這時乘法的結(jié)果就是該值左移一比特位,如果被乘的值大于或等于Ox80,這時乘法的結(jié)果就是左移一比特位再用值Ox1b異或,它防止了”域溢出”并保持乘法的乘積在范圍以內(nèi);用0x03做乘法時可以分解為2的冪之和,即0x03=0x02+Ox01。對程序進行優(yōu)化,采用查表法,將16x16的Sbox表分別與Ox01,0x02,0x03相乘產(chǎn)生與Sbox相對應(yīng)的3個256字節(jié)表:XtimeSbox[256]=Sbox[256],Xtime2Sbox[256],Xtime3Sbox[256]。將產(chǎn)生的表存儲于code區(qū)。MixColumns過程與SubByte操作可通過以下程序完成:



        關(guān)鍵詞: AES Key MC9 S08

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 遂昌县| 合水县| 广灵县| 长海县| 上高县| 固原市| 黄山市| 石门县| 宁晋县| 句容市| 曲靖市| 通州区| 固始县| 广东省| 河北省| 兴城市| 梅河口市| 宝应县| 新乐市| 泸西县| 宾阳县| 武夷山市| 舞钢市| 无锡市| 鄯善县| 鲁甸县| 阳新县| 肃南| 蓝山县| 盐山县| 龙山县| 工布江达县| 岫岩| 新郑市| 类乌齐县| 繁峙县| 林口县| 汤阴县| 鹰潭市| 吉安县| 安丘市|