加密芯片DM2016在數(shù)字電視加密中的應(yīng)用
下面以BlowFish算法為例介紹加密算法在嵌入式系統(tǒng)中的應(yīng)用。
32位微處理器誕生后,Blowfistl算法在加密速度上超越了DES,引起了人們的關(guān)注。Blowfish算法沒(méi)有注冊(cè)專利,不需要授權(quán),可以免費(fèi)使用。正是由于這些特點(diǎn),它廣泛應(yīng)用于很多產(chǎn)品中。在這里,BlowFish算法用來(lái)加密64位的字符串,BlowFish算法使用2個(gè)“盒”——unSigned long pbox[18]和unsigned long sbox[4,256]。BlowFish算法中,有一個(gè)核心加密函數(shù):BF_En。該函數(shù)輸入64位信息,運(yùn)算后以64位密文的形式輸出。用BlowFish算法加密信息需要2個(gè)過(guò)程,即密鑰預(yù)處理和信息加密。
以密鑰預(yù)處理為例,這時(shí),BlowFish算法的源密鑰——pbox和sbox是固定的。要加密一個(gè)信息,需要自己選擇一個(gè)。key,用這個(gè)key對(duì)pbox和sbox進(jìn)行變換,得到下一步信息加密所需的key_pbox和keg_sbox。具體的變換算法如下:
①用sbox填充key_sbox。
②用自己選擇的key以8個(gè)一組去異或pbox,用異或的結(jié)果填充key_pbox。key可以循環(huán)使用。例如,選的key是”abcdefghijklmn”,則異或過(guò)程為
keg_pbox[O]=pbox[O]abcdefgh
keyr_pbox[1]=pbox[1]ijklmnab
…………
如此循環(huán),直到key_box填充完畢。
③用BF_En加密一個(gè)全“O”的64位信息,用輸出的結(jié)果替換key__pbox[O]和key_pbox[1]。此時(shí),i=O。
④用BF_En加密替換后的key_pbox[i]和key_phox[i+1],用輸出替代key_pbox[i+2]和key_phox[i+3]。
⑤i=i+2,繼續(xù)第4步,直到key_pbox全部被替換。
⑥用key_pbox[16]和keyl_pbox[17]做首次輸入(相當(dāng)于上面的全“O”輸入),用類似的方法替換key_sbox進(jìn)行信息加密。信息加密就是用函數(shù)把待加密信息x分成32位的兩部分:xL和xR,再用BF_En函數(shù)對(duì)輸入信息進(jìn)行變換。
以下是初始化sbox、pbox及定義全局變量key_pbox、key_sbox的C程序例子。
結(jié) 語(yǔ)
隨著嵌入式系統(tǒng)越來(lái)越廣泛的應(yīng)用,安全保密問(wèn)題也越來(lái)越受到重視。密碼學(xué)為其提供了正確的理論基礎(chǔ)。同時(shí),性能優(yōu)良的硬件(如DM2016)成為實(shí)現(xiàn)其安全保密的物質(zhì)基礎(chǔ)。二者的有效結(jié)合為防止嵌入式系統(tǒng)開發(fā)成果被仿制或剽竊提供了有力的保障。
評(píng)論