图 5。6 演示步骤六 26
图 5。7 加密中间信息一 27
图 5。8 加密中间信息二 27
图 5。9 加密中间信息三 27
图 5。10 加密中间信息四 28
图 5。11 白盒 AES 解密中间过程 28
图 5。12 PKCS5Padding 填充实例 29
图 5。13 复杂明文实例 29
表 2。1 轮数(Round)的不同取值 5
表 2。2 偏移量 C 与分组长度的关系[12] 7
表 4。1 结构体 code 构造 17
表 4。2 结构体 djb_t 构造 17
表 4。3 结构体 heap 构造 18
表 4。4 结构体 mmb_t 构造 18
表 4。5 结构体 mzd_block_t 构造 18
表 4。6 结构体 mzd_t 构造 18
表 4。7 结构体 mzd_t_cache 构造 19
表 4。8 结构体 mzp_t 构造 19
表 4。9 结构体 ple_table_t 构造 19
表 4。10 步骤 2 中的函数表 20
表 4。11 AES 加解密函数实现 23
1 绪论
1。1 研究背景
现如今,科学技术的发展如日中天,新技术和新设备如雨后春笋般纷纷冒出,人们直接 或者间接接触秘密信息的机会也越来越多,密码算法正在被广泛的使用,与此同时,基于秘 密信息的攻击也无处不在,密码算法的使用环境也变得可疑和危险。
在现代密码学中,一个完整的密码系统的组成分为密码算法、所有可能的明文和所有可能的密文。加密算法过程和解密算法过程可以表现为;
其中,E 代表加密算法,代表为密钥,C 代表密文,M 代表明文。 在密码学中,通常都会提出一个大前提;即该密码算法的执行环境(终端)是可信任的,
因此密钥的安全性就成为最先关注的问题。然而在现实生活中,这个大前提往往得不到满足, 这就使得密钥的安全性受到了极大的威胁。例如,当用户打开一个视频播放器,该视频播放 器可以自行对加密的视频信号进行解密,此时该视频播放器的运行环境可以看作是不安全的, 那么该软件的整个解密过程对于此用户(或攻击者)而言是可见的,这样得到密钥信息就很轻 而易举了。
1。3 本文主要工作
本文的主要工作围绕白盒 AES 算法的设计实现展开,使用 C/C++语言实现白盒 AES 算 法中的各主要功能模块,选择合理有效的数据结构建立算法中相应的各类查找表,实现在白 盒攻击环境下对字符进行加密和解密操作,同时能够有效的保护密钥信息。设计源代码实现 算法功能。