【发布时间】:2016-01-31 15:33:15
【问题描述】:
我正在查看我们团队开发的产品的代码,该产品的信用卡信息存储在本地数据库中。在没有互联网连接的情况下可以访问该数据库。我遇到了加密方法。
编写这部分代码的开发人员在 AES 上通过 RABBIT 加密了 AES。我已经看到 AES over AES 的实现(我认为与 Triple DES 相同的概念),但我从未见过或研究过流上的堆叠块。我不知道由此得出的结果是一致的(即没有数据损坏)还是安全的。
我会假设它们会是因为我假设使用不同密钥的堆叠加密永远不会比一次性加密更安全。下面是我找到的代码示例。
function classSecureMessage(message){
this.secretA=security.randomAlphaNum(56);
this.secretB=security.randomAlphaNum(56);
this.secretC=security.randomAlphaNum(56);
var passStr=message;
passStr=CryptoJS.AES.encrypt(passStr, this.secretA);
passStr=CryptoJS.Rabbit.encrypt(passStr.toString(), this.secretB);
passStr=CryptoJS.AES.encrypt(passStr.toString(), this.secretC);
this.message=passStr;
this.decrypt= function(){
var passStr=CryptoJS.AES.decrypt(this.message, this.secretC).toString( CryptoJS.enc.Utf8 );
passStr=CryptoJS.Rabbit.decrypt(passStr, this.secretB).toString( CryptoJS.enc.Utf8 );
passStr=CryptoJS.AES.decrypt(passStr, this.secretA).toString( CryptoJS.enc.Utf8 );
return(passStr);
}
}
编辑:添加这个性能并不可怕。加解密信用卡数据耗时 0.012 秒。
【问题讨论】:
-
这种解决方案可能会让您的公司倒闭并让很多人不高兴。如果您要成为 VISA 或 Mastercard 商户,则禁止存储信用卡信息。
-
@DarkWander 不禁止存储信用卡信息。但是您必须获得 PCI 认证..
-
@DarkWanderer 没有指南明确规定,如果存储的信用卡信息必须使用“强”加密算法进行加密,以达到或超过 AES128 中规定的标准。并且在任何情况下都不能存储整个轨道数据。这是市场上几乎所有 POS 系统在无法立即处理信息时获取并存储信息的标准程序。
-
@EbbeM.Pedersen 我们完全符合 PCI 标准,经过了 firstData(我们的首选网关服务)的审核,并执行了第 3 方 PCI 合规性和风险评估。
-
好的,我的立场是正确的。我确实希望这些秘密存储在不同的位置(因为 AES 上的 AES 只有在那时才有意义)
标签: security encryption cryptography aes credit-card