我正在审核我们团队开发的产品代码,其中信用卡信息存储在本地数据库中。如果没有互联网连接,可以访问此数据库。我遇到了加密方法。
编写这部分代码的开发人员通过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秒。
答案 0 :(得分:1)
我可以看到有一个块流阻塞密码here的引用,其中提到了Bruce Schneier的书“应用密码学”。
我从未见过堆叠同一个密码(如链接所示),这个想法是每个方都信任一个不同的密码......所以在堆叠AES时没有额外的安全性AES,除了暴力攻击外。
我会将其中一个AES密码与另一个密码密码交换,因此如果两个密码中的一个受到攻击,那么您的数据仍然是安全的。