加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql – 静态加密和/或AES_ENCRYPT

发布时间:2021-03-31 07:41:35 所属栏目:编程 来源:网络整理
导读:我正在实行改造包括敏感数据的MySQL数据库的安详性.我正在全力把握一些术语.假如我领略了这种环境,有人可以汇报我: 静态加密 好像我可以在表级启用它.表中的全部数据都行使密钥加密.假如或人把握了备份文件或得到了对处事器的物分析见权限,那么数据将受到保

我正在实行改造包括敏感数据的MySQL数据库的安详性.我正在全力把握一些术语.假如我领略了这种环境,有人可以汇报我:

静态加密 – 好像我可以在表级启用它.表中的全部数据都行使密钥加密.假如或人把握了备份文件或得到了对处事器的物分析见权限,那么数据将受到掩护.虽然,这假定密钥存储在别处.

AES_ENCRYPT – 在我的表中插入/更新数据时,我可以行使AES_ENCRYPT(‘data’,’password’).通过SELECT查询数据时,我行使AES_DECRYPT

>假设我只是在苏息时行使加密,那么我必要在我的PHP代码中做任何差异的工作来查询数据吗?我的PHP代码是否必要通过我的PDO哀求将密钥发送到数据库?可能我可以行使我的通例代码查询数据库并自动处理赏罚解密?
>可能我误解了静态加密,我必要行使AES_ENCRYPT取代/ 最佳谜底 静止加密

静态加密是数据库中未行使/会见或更新的数据.移动中的加密就像TLS,个中数据(来自数据库)从处事器传输随处事器到赏识器,随处事器,再到赏识器等.假如颠末细心处理赏罚并以一种立场靠近,TLS在大大都环境下都是美满的.你必要做的不只仅是最低限度,才气真正实现安详.

一个典范的例子就是人们在他们的域名上从LetsEncrypt哪里得到了TLS证书,并以为溘然他们全部的对象都是安详的;可是他们没有加密他们的会话或他们的cookie,因此在他们的防止中留下了庞大的隐藏裂痕.

不要行使MySQL的内置加密体系.

我不能夸大这一点; MySQL内置的加密体系不得当现实的安详数据掩护.

请阅读my answer to a very similar question here的具体信息(我不想简朴地复制/粘贴).

好吧,那么,由于你僵持……在这里:

I have always understood NOT TO USE MySQL’s built in encryption fuctionality because the point of encryption of data at rest (in the SQL) is that if the server is compromised,the data is not at [as much] risk.

The problem with the MySQL built in functionality is that it doesn’t apply to when the data is passed to and from the “at rest” state,so the plaintext of any data can be recorded in MySQL logs (and elsewhere on the storage system,such as query lookups are not encrypted so you can from numerous lookups and their count results deduce column values) before/as it is encrypted. 07001.

Regarding encryption,you should use some tried and tested library like 07002.

??
??从我在本身对这个主题的研究中所看到的,Magnus提供应defuse/php-encryption的链接是阻止MySQL导致你粉碎数据的最佳要领之一,从不让MySQL措施/处事器看到明文您的数据的代价.

– 2017年5月7日宣布的谜底.

Bill Karwin’s answer to the same question还提供了一些有代价的特殊看法:

+1 to Martin’s answer,but I’ll add some info for what it’s worth.

MySQL 5.7 has implemented encryption at rest for InnoDB tablespaces (07005).

MySQL 8.0 will reportedly also implement encryption at rest for InnoDB redo log and undo log files (07006).

This still leaves unencrypted the query logs and the binary log. We’ll have to wait for some future version of MySQL for that.

Why does it take so long? The head of the security engineering for MySQL said at a bird-of-feather session at the Percona Live conference last month that they are being very careful to implement encryption right. This means implementing features for encryption,but also key security and key rotation,and other usage. It’s very complex to get this right,and they don’t want to implement something that will become deprecated and make everyone’s encrypted databases invalid.

– 2017年5月7日宣布的谜底.

竣事点:

安详性很伟大.假如你想要正确地做到并对你的掩护性洋葱皮有信念,那么你必要做许多工作(见下面的子弹);但你必要做的第一件事是:

界说您要掩护的人

当真.对付想要窃取您的明文名称和地点的人,与必要经受您的处事器的人对比,您必要采纳差异的计策,而不是仅仅由于想要删除数据的人.这是一个神话,你可以一向掩护全部人,按观念这是不行能的*;因此,您必要界说最也许的agressors,然后找出怎样最好地减轻他们的前进.

对付MySQL,有一些明晰的提议:

>将SQL和PHP生涯在统一台处事器上.不要长途会见MySQL数据.
>解除对SQL的外部会见(因此它只是localhost)
>恍惚您的表名和列名;假若有人冲入您的数据而且您在列用户名下有%$HDTBJ ^ BTUETHNUYT,那么他们知道这个乱码也许是一个用户名,因此他们在实行破解加密方面有一个很好的初步.
>重要提醒:真正锁定您的桌面会见权限;成立了很多MySQL用户,每个用户只有最低限度的特权来做他们必要的工作;你但愿用户只读取表格,只读取某些表格;用户写入某些表但无权会见其他表.假如MySQL上的任何一个用户遭到进攻,那么这是一个令人忧虑的题目.你没有自动丢失哪里的每一个数据.
>行使PHP加密处事.将加密密钥存储在完全独立的位置;譬喻,你有另一个处事器,你只能用于备份,你可以会见它只是为了获取加密密钥,因此,假如你的PHP / MySQL处事器被泄漏,你有一些空间来割断和锁定密钥处事器,以是你可以限定危险.假如密钥处事器也有备份,那么你真的不会受到太多侵害(取决于环境)
>配置大量手表和电子邮件告发者,以精确汇报您某些历程何时运行以及哪些处事器用户(不是职员而是措施)正在做什么.因此,您可以看到为什么不测的历程在破晓5点开始运行以实行丈量MySQL表的巨细. WTF?
>纵然数据库没有静止,你的MySQL AES_ENCRYPT数据也很有也许被“嗅探”,但假如网站遭到入侵(可能更糟糕的是,PHP代码不安详),那么按时进攻可以起浸染通过按时查询查找和数据包返返来输出数据内容.
>安详是一个黑洞;在某些时辰,你会想到“Sod this,我已经做得足够多了”.没有人有完全的安详性,一些很是专注的组织有足够的安详性.你必要知道在分开远方之前你乐意走多远.

*为什么不行能?由于要始终掩护您的数据免受全部威胁,以是它必要是不行读的,不行用的,就像哈希一样.哈希始终受到全部人的掩护.但哈希永久不会被狼藉.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读