吴 曦,于鸿洋,邬震宇
(电子科技大学电子工程学院 四川成都 610054)
1 引 言
作为数字电视新的发展方向,基于硬盘的PVR机顶盒受到消费者的欢迎。同时,由于PVR将录制的能力赋予用户,使得对节目内容的非法复制、传播成为可能,这将给运营商造成巨大的经济损失。因此对硬盘中所存储节目内容进行持久保护的必要性逐渐被广播提供商所认识和要求。AES算法是由美国国家标准和技术研究所(NIST)用时3年,历经2轮评估,选出的高级加密算法。AES的所有设计原则都是公开的,没有专利权方面的问题,任何人都可以通过正常渠道得到并使用这种算法。作为新一代的数据加密标准,AES汇聚了强安全性、高性能、高效率、易用和灵活等优点,加密速度快,对内存要求低,非常适合应用在嵌入式平台上。本文在分析AES加密算法原理的基础上,着重说明算法的实现步骤,用C语言完整地实现了AES算法的加/解密操作,并在PVR机顶盒中实现应用。
2 AES加密/解密算法原理简介
AES算法属于分组密码算法,它的输入分组、输出分组及加/解密的中间分组长度都是128 b。密钥长度有3种:128,192和256 b。
AES算法基于置换和代换运算。置换是对数据重新进行排列,代换是将一个数据单元替换为另一个。本文采用的AES-128算法输入为128位数据,密钥长度也是128位。每一轮都需要1个与输入分组具有相同长度的扩展密钥参与。
AES算法主要由3部分组成:轮变化、圈数和密钥扩展。本文详细介绍AES加/解密算法中各部分的实现步骤;结合C语言,实现高级加密算法AES在PVR数字电视机顶盒中的应用。所采用的AES-128算法的加/解密模块程序流程图如图1所示。
2.1 加密变换
AES加密算法的每一轮加密都使用代替和混叠并行地处理整个数据分组状态。主要是通过对5个子模块SubBytes,ShiftRows,MixColumns,AddRounke和GetNewEncrypt的循环调用实现。
Subbyte变换即s盒置换,是AES算法中是惟一的非线性变换。它对状态中的每个字节用S-box