AES加密原理和AOE工程实践
在AI业务的开发的过程中,我们常常需要对模型文件进行加密。
我们从以下几个方面来说一说AES的加密原理以及AOE里的工程实践。
- 常见的加密算法
- AOE对模型加密需求的思考
- AES的加密原理
- AOE工程实践-AES和AOE的结合
常见的加密算法
常见的加密算法,主要分为两种:
对称加密,采用单密钥的加密方法,同一个密钥可以同时用来加密和解密。常用的对称加密算法有DES,3DES,AES等。
非对称加密,需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。常用的非对称加密算法有RSA,Elgamal,ECC等。
用个比喻来理解一下这2种不同的加密方式:
对称加密:假设有一个密码箱,A设置了一个密码锁好箱子,B知道这个密码以后,输入这个密码就可以打开箱子,这个密码就是秘钥,A和B使用相同的密码。
非对称加密:有一把锁和一把唯一的钥匙,A用锁把箱子锁好,B只有用这把钥匙才能打开这个箱子。这把锁就可以理解为公钥,是公开的。这把钥匙可以理解为私钥,是不公开的,是不在网络里传输的,只有私钥的拥有者才能打开这个箱子。
简单比较一下他们的差异:
功能特性 | 对称加密 | 非对称加密 |
---|---|---|
密钥特征 | 加密方和解密方使用同一个密钥 | 加密方和解密方使用不同的密钥 |
加密效率 | 效率高,速度快 | 速度慢 |
密钥安全性 | 传输过程中容易泄漏 | 安全性高 |
在实际的应用中,一般都是对称加密和非对称加密算法相结合,这样既可以保证加密的速度,也可以保证秘钥传输的安全性。以AES和RSA结合为例,有一种通用的做法,在向服务器发送一段数据信息的时候,先用AES算法对数据进行加密,再使用服务器的RSA公钥对AES的密钥进行加密后,最后数据和加密后的AES KEY上传到服务器。这样只有知道了服务器RSA私钥,才能解开得到正确的AES KEY,最终用AES KEY才能解开这段密文。
对模型加密需求的思考
深度学习中,模型训练是最关键和最有挑战性的。不仅需要有丰富的经验定义出合适的模型,还需要有大量的数据集,经常需要3-4天才能训练出一个模型。出于对知识产权的保护或者商业保护,我们常常需要对训练出来的模型文件进行加密。思考一下我们对模型加密的需求:速度要快,安全性要高,不依赖服务器的情况下本地也能加密解密。另外还需要有一个摘要算法来校验,保证模型的完整性。我们初步考虑使用AES算法,摘要算法使用MD5。下面我们来看看AES算法是如何工作的。
AES的加密原理
AES,Advanced Encryption Standard,是对称加解密算法的最经典算法之一,标准的AES加密位宽是每个块128bit,密钥分为128bit,192bit,256bit,这就是通常说的AES-128,AES-192,AES-256。我们从几个方面来具体了解一下AES加密。
- AES加密过程
- AES解