知方号

知方号

基于openssl库实现AES加密(C语言)

基于openssl库实现AES加密(C语言)

一、AES加密算法

 

1.1 AES算法结构

 

AES(Advanced Encryption Standard)算法是一种常见的对称加密算法,其具体的加密传输流程如图1所示:

图1  AES数据加密流程

 

对于对称加密算法而言发送端和接收端使用相同的密钥K,而加密函数E(P,K)和解密函数D(C,K)是一组逆运算。

 

对称加密算法的优势是算法公开、计算量小、加密速度快、加密效率高。其安全性主要由密钥保证。对称加密的缺点主要体现在多用户通信场景中,密钥分发和管理比较困难。

 

AES为分组密码,分组密码也就是把明文分成长度相同的组,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度为128位,即每个分组为16个字节,推荐的加密轮数为10轮。即在加密公式C = E(P,K)中,会将一个轮函数执行10次。在这10次执行中,前9次的操作是完全一致的,只有第10次有所不同。AES的核心就是实现一轮中的所有操作。

 

AES的整体结构如下图所示,加密的轮函数包括4个操作:字节代换、行位移、列混合和轮密钥加。最后一轮迭代不执行列混合。另外,在第一轮迭代之前,先将明文和原始密钥进行一次异或加密操作。

 

图2 加解密函数的构成

 

1.2 算法的性能与应用

 

AES是美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)于2001年发布的高级加密标准。旨在取代DES成为新一代的分组加密标准,现已广泛应用于各个领域。目前现有方法无法对AES算法的解密机制进行破坏,只能针对密钥的安全性进行攻击,也就是对密钥进行穷举攻击。

 

以本模块中使用的AES-128算法为例,平均需要尝试2^128≈1.7×10^38个128bit的随机数作为密钥进行加解密运算,方能找到正确的密钥。以比特币运算网络为例,比特币网络在全球范围内调用了非常庞大的硬件资源以达到极高的运算效率,每秒钟操作的Hash运算(SHA-256)可高达2.5644×10^19次。则使用全球范围的运算资源需要6.6345×10^18秒,即2104亿年方能破解,大约是宇宙大爆炸时间的15倍。同样以比特币运算网络为例,破解密钥消耗的电量约为1.1201×10^22kWh,费用则是达到了1.368×10^13亿美元,约是全球GDP总和的1400万倍。

 

AES算法在信息安全相关领域中已得到广泛应用。WLAN的IEEE803.11协议使用AES加密算法保障无线网络的通信信道安全性;https的协议栈中也包含使用AES算法加密的SSL安全套接层协议;支付宝开放平台和微信小程序也将AES算法作为通用的加密算法。

 

二、openssl库

 

SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。