
你的位置:云开YUNapp(中国)Kaiyun·官方网站-登录入口 > 新闻 > 开yun体育网事先把数据库的数据解密-云开YUNapp(中国)Kaiyun·官方网站-登录入口
配景开yun体育网
蔚来被绑架 225 万好意思元,大批数据遭露馅!
凭据收罗好意思丽传的截图披露,黑客似乎掌捏着蔚来里面职工数据 22800 条、车主用户身份证数据 399000 条、用户地址数据 6500000 条、注册用户数据 4850000 条、企业及企业代表有关东谈主数据 10000 条、订单数据 490000 条、退单数据 90000 条,出售的金额以 0.1-0.25 比特币不等。
蔚来公司和蔚来创举东谈主李斌也齐出来谈歉,并快乐对因本次事件给用户酿成的亏本承担攀扯。
数据安全
目下企业齐也曾数字化办公了,在提高成果的同期,数据安全亦然重中之重,好多公司为了追求成果,却忽略安全这方面的使命。从上头的论说看,蔚来此次露馅的数据包含:用户身份证、地址,这些数据守秘级别齐是最高的,在数据库存储也应该要加密存储。
而加密存储就波及以下几个问题:
1、加密存储的花式;
2、加密存储后,数据怎样展示;
3、加密存储怎样微辞搜索。
今天就给人人共享下,MySql数据加密的惩处决策、以及怎样惩处以上的问题。
Mysql加密决策
Mysql自己自带的加密设施,分为2种:
1、不行逆加密算法:
PASSWORD,ENCRYPT,MD5,SHA。
2、可逆的加密算法:
AES_ENCRYPT、AES_DECRYPT 和 ENCODE、DECODE。
以上两组分辨为可逆的加解密函数,齐是复返一个二进制字符串,要以BLOB类型存储。不外ENCODE与DECODE,在MySql 5.7后也曾取消,况兼安全性比拟低,提出不要遴荐。
在面目开采中,比如密码等极少的数据,不波及披露和搜索的业务需求,不错遴荐不行逆加密,但大部分数据,咱们如故需要遴荐可逆的加密花式。
Mysql 加密存储
底下咱们以AES_ENCRYPT、AES_DECRYPT 为例子,来先容下怎样惩处,数据加密存储与查询。
1、创建表
最初先创建一张表,唯有一个字段data,用来存储解密后的数据,sql语句如下:
CREATE TABLE `tab_aes` (`data` VARCHAR(250) NULL DEFAULT NULL COLLATE 'utf8_general_ci')COMMENT='数据加密存储表'COLLATE='utf8_general_ci'ENGINE=InnoDB;
2、插入数据
通过Sql语句插入加密的数据,1ql语句如下:
INSERT INTO tab_aes VALUES( TO_BASE64( AES_ENCRYPT('要加密的本色','秘钥') ) );
TO_BASE64函数把加密的二进制诊治为Base64,便捷咱们稽察。
插入的甘休如下:
3、查询复返解密数据
SELECT CAST( AES_DECRYPT( FROM_BASE64(tab_aes.data), '秘钥') AS CHAR CHARACTER SET utf8 ) FROM tab_aes
解密后,要用CAST把字符串编码转为UTF8,不然复返是乱码。
微辞搜索
数据加密存储与解密数据,这些齐莫得太大问题,加密存储产生最大的问题,等于微辞搜索,对于微辞搜索有以下决策:
1、数据预加载至内存数据库
此决策是步地开动的技术,事先把数据库的数据解密,并加载至内存中,比如遴荐MongoDB,此决策存在的优污点如下:
优点:
数据安全,查询性能速率快
污点:
业绩器占用内存大;
数据表无法关系查询;
内存数据与数据库要及时保存一致,需要畸形使命量。
2、步地及时加载数据,并解密处理
此决策是,用户触发恳求的技术,步地及时加载并解密,保存至内存,诚然此决策惩处了与数据库同步的问题,但也存在其他问题,此决策优污点如下:
优点:
数据安全,查询性能速率快、数据处理天真。
污点:
业绩器内存不行控,俄顷内存容易飙升,可能导致业绩器不剖析;
数据表无法关系查询。
3、在Sql语句处理微辞搜索
若是数据量比拟少,以上两种决策可能不会产生太大的影响,但对于大多数面目以上两种决策如故不靠谱的。
在Sql语句处理微辞搜索,也有以下几种决策:
3.1、及时解密搜索
径直在数据库端,把加密的数据解密。
SELECT CAST( AES_DECRYPT( FROM_BASE64(tab_aes.data), '秘钥') AS CHAR CHARACTER SET UTF8 ) FROM tab_aesWHERECAST( AES_DECRYPT( FROM_BASE64(tab_aes.data), '秘钥') AS CHAR CHARACTER SET UTF8 ) LIKE '要加密%'
优点
搜索天真
污点:
无法行使索引,搜索性能慢;
数据需要先解密,导致性能慢。
3.2、字段冗孑遗储
咱们齐知谈MySql微辞搜索,唯有当匹配伊始、粗略匹配扫尾的技术,索引才会顺利。是以咱们不错膨胀一个字段,用来存储伊始和扫尾加密后的数据。
创建表sql语句如下,新增一个字段data_ext,并设置索引:
CREATE TABLE `tab_aes` (`data` VARCHAR(250) NULL DEFAULT NULL COLLATE 'utf8_general_ci',`data_ext` VARCHAR(250) NULL DEFAULT NULL COLLATE 'utf8_general_ci',INDEX `data_ext` (`data_ext`) USING BTREE)COMMENT='数据加密存储表'COLLATE='utf8_general_ci'ENGINE=InnoDB;
比如,要加密的本色为:123456789,字段data_ext取字段data,伊始和扫尾3个字符存储,储存步地为:AES(123) , AES(789),插入数据的sql语句如下:
INSERT INTO tab_aes VALUES( TO_BASE64( AES_ENCRYPT('要加密的本色','秘钥')), CONCAT(TO_BASE64( AES_ENCRYPT('要加密','秘钥')), ',', TO_BASE64( AES_ENCRYPT('本色','秘钥'))));
存储甘休如下:
相应的微辞搜索sql语句如下:
SELECT CAST( AES_DECRYPT( FROM_BASE64(tab_aes.data), '秘钥') AS CHAR CHARACTER SET UTF8 ) FROM tab_aesWHEREtab_aes.data_ext LIKE CONCAT(TO_BASE64(AES_ENCRYPT(('要加密'),'秘钥')),'%')AND tab_aes.data_ext LIKE CONCAT('%',TO_BASE64(AES_ENCRYPT(('本色'),'秘钥')))AND tab_aes.data_ext LIKE CONCAT(TO_BASE64(AES_ENCRYPT(('要加密'),'秘钥')),'%', TO_BASE64(AES_ENCRYPT('本色','秘钥')));
通过Explain分析甘休,该查询sql语句索引是顺利的。
此决策优点:
1、搜索性能高;
2、因循表关系搜索。
此决策也有以下污点:
1、匹配字符数是固定,若是业务有变,需要再行更新数据库;
2、数据存储需要畸形使命量;
3、冗尾数据,需要畸形的存储空间。
写在临了
任何一种决策齐有其优点,也有它的局限性,但有一丝的是,数据安全是最遑急的,任何企业切不行只为了业务发展,而忽略安全的遑急性。
- End -开yun体育网
Powered by 云开YUNapp(中国)Kaiyun·官方网站-登录入口 @2013-2022 RSS地图 HTML地图