php – 在MySQL中使用/存储加密密钥的最佳方法是什么?

前端之家收集整理的这篇文章主要介绍了php – 在MySQL中使用/存储加密密钥的最佳方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我打算使用 MySQL,它内置加密功能来加密/解密某些表中的某些列.我所关心的是我需要将密钥存储在某个地方.我可以将密钥存储在文件中,并控制该文件的权限以及访问该文件的应用程序的权限,但这是否足够?我也可以创建一个Web服务来获取关键或某些东西.

我在一个小商店,我将是唯一一个(可能是另一个人),可以访问应用程序所在的机器.编辑:我应该补充说,面向Web应用程序的Web部分将需要解密数据,除非我添加了一个层次.

我看起来很恶心,但没有人似乎有一个防弹的答案.

这些问题是您必须解决的问题之一吗?鉴于我使用MysqLPHP(可能是Python)有没有更好的方法来处理?

我不知道如果使用MysqL构建加密将是您的问题的最佳解决方案.

PHPM_CRYPT软件包被认为是非常好的,它可以灵活地选择最适合您需求的算法.

将密钥存储在其他服务器上有一个很大的优点:密钥与加密数据不在同一台机器上).所以只要攻击者对受攻击的机器没有足够的控制权,就无法得到钥匙.
如果攻击者对数据进行完全控制,那么他们很有可能会查询该Web服务的密钥.

然而,将密钥从一台机器传输到另一台机器打开了需要保护的整个新区域.可能涉及更多密钥和更多加密层,从而增加错误的机会.

*)另一个选项是在网络服务器启动时输入密码,并将其保存在内存中.

可能的解决方
如果看到使用的解决方案使用以下方法来加密具有Web访问权限的用户文件(我不确定您的环境,但可能会有所帮助):

>在用户创建时,为新用户分配一个长随机密钥.
>该随机密钥存储在用户记录中的加密列中.
(只有这个列被加密才能影响其他记录的性能!)
>随机密钥列的加密使用1个主密码,存储在文件或内存中.
(更好的选择是在盯着您的网络服务器时输入密码,并将其存储在内存中.)
(另一种方法是让用户输入密码并将其用于加密/解密随机密钥列,但是我不知道这是否会增加或减少安全性)
>需要加密的每个文档都使用该用户随机密钥进行加密,然后存储在磁盘上.
>文件文件系统中的最小权限存储.

这种方法的优点是:
随机密钥在数据库中加密.因此,您还可以与加密列结合使用数据库服务器的附加安全性.
2.文件存储有不同的密钥,如果攻击者持有密钥,则只有部分文档被泄露.

然而:如果攻击者掌握了主密码并对用户表进行了读取访问,则整个系统再次被破坏.

猜你在找的PHP相关文章