背景
用户对敏感数据的要求,数据机密性要求高。
整体方案
归根结底就是对存储的数据加密,针对加密对象、加密方式有所不同。大致可分为以下几类:
-
文件加密
可以对存储在硬盘驱动器或云存储中的文件进行加密。可以使用文件加密软件或操作系统自带的加密功能来实现。 -
磁盘加密
可以使用磁盘加密技术来对整个硬盘驱动器进行加密,确保所有存储在硬盘驱动器上的数据都受到保护。 -
数据库加密
对于关系型数据库,可以使用数据库加密技术来保护数据。数据库加密技术可以加密整个数据库或仅加密敏感数据的列。
大家可以根据需求,选择合适的技术手段来实现相应的方案。
如果是面向云的且不存在资金压力,各云厂商提供KMS服务,可购买使用。
参考方案
-
关于Mysql加密技术的方案:
加密方式一:对称加密
对称加密是最常见的加密方式之一,也是最简单的加密方式之一。对称加密的特点 是加密和解密使用相同的密钥。MySQL数据库支持多种对称加密算法,包括AES、DES、3DES等。
加密方式二:非对称加密
非对称加密是一种比对称加密更加安全的加密方式。非对称加密需要使用公钥和私钥进行加密和解密。公钥可以自由传播,而私钥只能由拥有者持有。MySQL数据库支持多种非对称加密算法,包括RSA、DSA等。
加密方式三:哈希加密
哈希加密是一种将任意长度的消息压缩到固定长度的算法。哈希加密的特点是不可逆,即无法从哈希值推算出原始消息。MySQL数据库支持多种哈希加密算法,包括MD5、SHA-1、SHA-2等。
加密方式四:SSL加密
SSL加密是一种基于公钥加密和对称加密相结合的加密方式。SSL加密通过使用公钥加密对称密钥,然后使用对称密钥加密数据,从而保证了数据的安全性。MySQL数据库支持SSL加密方式,可以在MySQL连接中启用SSL。
加密方式五:TDE加密
TDE加密是一种在存储层面对数据库进行加密的方式。TDE加密可以保证数据在磁盘上的安全性,即使磁盘被盗或者数据被窃取,也无法读取数据。MySQL数据库支持TDE加密方式,可以通过使用第三方工具实现。
-
综合考虑加解密效率、安全性、数据回溯、数据查询等方面,选择AES作为实践示例:
特点:
1、与其他对称加密方式相比,加密盐可随机生成,安全性更好些
2、与非对称加密相比加解密速度快,适合数据量大的场景
3、与哈希加密相比解密可以获取原始数据,方便数据回溯和查询
加密 (binary 二进制,存储时要注意数据类型)
AES_ENCRYPT(column,salt)
解密 (binary)
AES_DECRYPT(column, salt)
加密 (string 转换为16进制字符串,方便存储为字符串)
HEX(AES_ENCRYPT(column,salt))
解密 (string)
AES_DECRYPT(UNHEX(column), salt)
建表:
CREATE TABLE `user` (
`id` bigint NOT NULL COMMENT '主键ID',
`username` varchar(32) DEFAULT NULL COMMENT '用户名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
插入数据:
INSERT INTO `user`(`id`,`username`) VALUES (1,HEX(AES_ENCRYPT('Kevin','123456')));
更新数据:
UPDATE `user` SET `username` = HEX(AES_ENCRYPT('Xiao Min','123456')) WHERE `id` = 1;
模糊查询:
SELECT
id,
AES_DECRYPT(UNHEX(username),'123456') AS 'username'
FROM
user
WHERE
CONVERT (AES_DECRYPT(UNHEX(username),'123456') USING UTF8) LIKE '%M%'