Laravel 的加密和解密助手有多安全?
Posted
技术标签:
【中文标题】Laravel 的加密和解密助手有多安全?【英文标题】:How secure is Laravel's encrypt and decrypt helpers? 【发布时间】:2021-05-06 16:34:56 【问题描述】:我想问一下,我正在构建一个应用程序,该应用程序需要对存储在数据库中的信息进行加密,以使应用程序的用户可以看到相同的加密数据,但已解密。
我知道 laravel 提供加密和解密助手,但我想知道它们的安全性。如果有人出于某种原因可以访问数据库,他们是否可以通过制作自己的 laravel 项目或类似的东西来解密该信息?
我可以手动创建一个使用密钥来正确加密或解密数据的加密和解密函数,但是阅读 laravel 的文档,他们鼓励用户使用 laravel 的内置助手,这就是我问的原因。
【问题讨论】:
除非他们也可以访问您的加密密钥,否则应该没问题。 【参考方案1】:Laravel 使用 AES-256 加密。它在 .env 文件中使用 APP_KEY。您必须保护它免于落入恶意手中。还要安全地存储它,否则如果丢失,您将无法再次解密数据。
这里有一些关于 AES-256 的描述以及暴力破解的难度,你可以参考这个link 了解更多细节。
平均而言,要暴力攻击 AES-256,需要尝试 2255 个密钥。 (这是密钥空间的总大小除以 2,因为平均而言,您会在搜索一半的密钥空间后找到答案。)所以执行此攻击所需的时间(以年为单位)只是 2255 / 2,117.8 万亿。
【讨论】:
没什么价值 Laravel 只支持原生的 AES-128-CBC 和 AES-256-CBC 加密。如果需要默认使用另一种加密,只需要实现the Encrypter contract并在服务提供者中重新绑定'encrypter'别名即可。 我猜,问题是关于 laravel 原生加密的安全性。以上是关于Laravel 的加密和解密助手有多安全?的主要内容,如果未能解决你的问题,请参考以下文章