如何使用CBC和HMac?Mcrypt PHP
如何使用CBC和HMAC 我在网上找不到足够的信息 你怎么打静脉注射?当你以后需要解密时,你怎么知道它是什么?(把它放进数据库会不会违背目的?) 什么是HMAC,它是否受到黑客攻击的保护 加密文本保留在数据库中。如果有人入侵数据库,他们可能也可以访问文件管理器,除非他们找到了执行SQL注入的方法。脚本如何知道使用哪个IV和密钥,而黑客不知道 当对多段文本进行加密时,最好的方法是什么?这些文本只会在网站中被编写它的用户看到?(用户始终将其视为纯文本。)如何使用CBC和HMac?Mcrypt PHP,php,security,mcrypt,hmac,cbc-mode,Php,Security,Mcrypt,Hmac,Cbc Mode,如何使用CBC和HMAC 我在网上找不到足够的信息 你怎么打静脉注射?当你以后需要解密时,你怎么知道它是什么?(把它放进数据库会不会违背目的?) 什么是HMAC,它是否受到黑客攻击的保护 加密文本保留在数据库中。如果有人入侵数据库,他们可能也可以访问文件管理器,除非他们找到了执行SQL注入的方法。脚本如何知道使用哪个IV和密钥,而黑客不知道 当对多段文本进行加密时,最好的方法是什么?这些文本只会在网站中被编写它的用户看到?(用户始终将其视为纯文本。) 我现在使用ECB(该网站尚未发布beta版)
我现在使用ECB(该网站尚未发布beta版),但我听说CBC更安全。静脉注射的主要目的是每种加密都不同。这不是秘密。标准做法是为每次加密创建一个随机IV,并将其存储为密文的前缀 HMAC是一个MAC,它确保只有知道密钥的人创建的消息才被接受为有效消息。重要的是在加密后应用MAC,并包括IV.e.
HMAC(IV+加密(…)
),从而在解密前验证它。这可以避免某些攻击,例如填充预言
还值得考虑使用经过身份验证的加密模式,例如AES-GCM,它以一种安全的方式将身份验证和加密结合起来。在这种情况下,一定不要重复使用静脉注射
在哪里存储密钥是一个困难的问题,并且非常依赖于应用程序。正如您所注意到的,将密钥存储在与数据库相同的系统上并不会给您带来太多好处 有时,最好从用户的密码派生密钥,使用带有salt的慢速KDF,例如PBKDF2。有时您可以将其存储在客户机上。有时,您可以将其存储在具有较小攻击面的不同服务器上
要想知道在哪里存储它,你需要明确的要求和一个威胁模型。IV的主要目的是使每个加密都不同。这不是秘密。标准做法是为每次加密创建一个随机IV,并将其存储为密文的前缀 HMAC是一个MAC,它确保只有知道密钥的人创建的消息才被接受为有效消息。重要的是在加密后应用MAC,并包括IV.e.
HMAC(IV+加密(…)
),从而在解密前验证它。这可以避免某些攻击,例如填充预言
还值得考虑使用经过身份验证的加密模式,例如AES-GCM,它以一种安全的方式将身份验证和加密结合起来。在这种情况下,一定不要重复使用静脉注射
在哪里存储密钥是一个困难的问题,并且非常依赖于应用程序。正如您所注意到的,将密钥存储在与数据库相同的系统上并不会给您带来太多好处 有时,最好从用户的密码派生密钥,使用带有salt的慢速KDF,例如PBKDF2。有时您可以将其存储在客户机上。有时,您可以将其存储在具有较小攻击面的不同服务器上 要想知道在哪里存储它,您需要明确的需求和威胁模型