摘 要:PVR機頂盒是數字電視新的發展趨勢,作為運營商收入的主要來源,數字電視節目流的加密保護也得到越來越多的認識和重視。對利用AE算法加密高清數字電視PVR機頂盒中所存儲的高清電視節目內容,實現版權保護進行研究。重點介紹AE算法的具體實現步驟和優化,及其在PVR機頂盒上的應用,用C語言完成該算法并對其在嵌入式環境和普通PC機上的執行效率進行了比較。
關鍵詞:機頂盒;PVR;DE;AE
Application of AE Encryption Arithmetic in the PVR B
WU Xi,YU ongyang,WU Zhenyu
(chool of Electronic Engineering,University of Electronic cience and echnology of China,Chengdu,61004,China)[J12/3]
Abstract:Digital V has entered into millions of households,PVR set-top-box with digital V is a new development trendAs operators′ main source of income,digital television encryption to protectflow has been more and more awareness and attentionBased on the principle of AE arithmetic,the encryption and decryption process are described,the application in the high-definition digital television programs stored by the content encryption is introduced,copyright protection to achieve the study focuses on the actualization and optimization of the AE algorithm and its PVR set-top-box in the applicationBesides,the application using C language is accompolished,and the encryption and decryption speed of the arithmetic are compared
Keywords:set-top-box;PVR;DE;AE[J12/3]
1 引 言
作為數字電視新的發展方向,基于硬盤的PVR機頂盒受到消費者的歡迎。同時,由于PVR將錄制的能力賦予用戶,使得對節目內容的非法復制、傳播成為可能,這將給運營商造成巨大的經濟損失。因此對硬盤中所存儲節目內容進行持久保護的必要性逐漸被廣播提供商所認識和要求。AE算法是由美國國家標準和技術研究所(NI)用時3年,歷經2輪評估,選出的高級加密算法。AE的所有設計原則都是公開的,沒有專利權方面的問題,任何人都可以通過正常渠道得到并使用這種算法[1]。作為新一代的數據加密標準,AE匯聚了強安全性、高性能、高效率、易用和靈活等優點,加密速度快,對內存要求低,非常適合應用在嵌入式平臺上。
本文在分析AE加密算法原理的基礎上,著重說明算法的實現步驟,用C語言完整地實現了AE算法的加/解密操作,并在PVR機頂盒中實現應用。
2 AE加密/解密算法原理簡介
AE算法屬于分組密碼算法,它的輸入分組、輸出分組及加/解密的中間分組長度都是128 b。密鑰長度有3種:128,192和26 b[1]。
AE算法基于置換和代換運算。置換是對數據重新進行排列,代換是將一個數據單元替換為另一個[2]。本文采用的AE-128算法輸入為128位數據,密鑰長度也是128位。每一輪都需要1個與輸入分組具有相同長度的擴展密鑰參與。
AE算法主要由3部分組成:輪變化、圈數和密鑰擴展[3]。本文詳細介紹AE加/解密算法中各部分的實現步驟;結合C語言,實現高級加密算法AE在PVR數字電視機頂盒中的應用。所采用的AE-128算法的加/解密模塊程序流程圖如圖1所示。
21 加密變換
AE加密算法的每一輪加密都使用代替和混疊并行地處理整個數據分組狀態。主要是通過對個子模塊ubBytes,hiftRows,MixColumns,AddRounke和GetNewEncrypt的循環調用實現。
ubbyte變換即盒置換,是AE算法中是惟一的非線性變換。它對狀態中的每個字節用-box做一個置換。每個字節的前4位指定盒的行值,后4位指定了盒的列值,然后取出盒中對應行和列的元素作為輸出代替該字節。
hiftRow完成基于行的循環移位操作。它將狀態中的行按照不同的偏移量進行循環移位,一般情況下,第0行不動,第1行循環左移1個字節,第2行循環左移2個字節,第3行循環左移3個字節[4]。