吳 曦,于鴻洋,鄔震宇
(電子科技大學(xué)電子工程學(xué)院 四川成都 610054)
1 引 言
作為數(shù)字電視新的發(fā)展方向,基于硬盤的PVR機頂盒受到消費者的歡迎。同時,由于PVR將錄制的能力賦予用戶,使得對節(jié)目內(nèi)容的非法復(fù)制、傳播成為可能,這將給運營商造成巨大的經(jīng)濟損失。因此對硬盤中所存儲節(jié)目內(nèi)容進行持久保護的必要性逐漸被廣播提供商所認(rèn)識和要求。AES算法是由美國國家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)用時3年,歷經(jīng)2輪評估,選出的高級加密算法。AES的所有設(shè)計原則都是公開的,沒有專利權(quán)方面的問題,任何人都可以通過正常渠道得到并使用這種算法。作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn),AES匯聚了強安全性、高性能、高效率、易用和靈活等優(yōu)點,加密速度快,對內(nèi)存要求低,非常適合應(yīng)用在嵌入式平臺上。本文在分析AES加密算法原理的基礎(chǔ)上,著重說明算法的實現(xiàn)步驟,用C語言完整地實現(xiàn)了AES算法的加/解密操作,并在PVR機頂盒中實現(xiàn)應(yīng)用。
2 AES加密/解密算法原理簡介
AES算法屬于分組密碼算法,它的輸入分組、輸出分組及加/解密的中間分組長度都是128 b。密鑰長度有3種:128,192和256 b。
AES算法基于置換和代換運算。置換是對數(shù)據(jù)重新進行排列,代換是將一個數(shù)據(jù)單元替換為另一個。本文采用的AES-128算法輸入為128位數(shù)據(jù),密鑰長度也是128位。每一輪都需要1個與輸入分組具有相同長度的擴展密鑰參與。
AES算法主要由3部分組成:輪變化、圈數(shù)和密鑰擴展。本文詳細(xì)介紹AES加/解密算法中各部分的實現(xiàn)步驟;結(jié)合C語言,實現(xiàn)高級加密算法AES在PVR數(shù)字電視機頂盒中的應(yīng)用。所采用的AES-128算法的加/解密模塊程序流程圖如圖1所示。
2.1 加密變換
AES加密算法的每一輪加密都使用代替和混疊并行地處理整個數(shù)據(jù)分組狀態(tài)。主要是通過對5個子模塊SubBytes,ShiftRows,MixColumns,AddRounke和GetNewEncrypt的循環(huán)調(diào)用實現(xiàn)。
Subbyte變換即s盒置換,是AES算法中是惟一的非線性變換。它對狀態(tài)中的每個字節(jié)用S-box