从Keys,Seed,Plaintext和Ciphertext确定加密算法

时间:2014-01-07 23:35:45

标签: security encryption cryptography

我们有软件在写入时加密我们数据库中的某些数据(如信用卡号,社会保险号等)(并在阅读时再次对其进行解密)。

我们希望能够自行解密该软件的 数据。


从分析数据来看,这就是我发现的:

var adminSoftwareUserName = "Admin";
var adminSoftwarePassword = "Password1";
var adminDatabaseUserID = "41646d696e"; // toHex("Admin")
var adminDatabasePassword = "0600ba25691008d870a958e99901048351281bf900"; // "06" + sha1("Admin:Password1").Truncate(-2) + "00"; weird, I know.
var seedValue = 5652653467996391684;
var adminMasterEncKey = "AQAj777KYvlNJ45LtB5DD1iOAOzLno5rdWTblRGYI8YWbXZ+75A=nNTLd6+81GoCnHsQYcisrprtBQyNRhDjKzScw7MpQBIsIpHseaQ8jq2pwvqfQ/DS1GxwQ2FV7N0/yTP/Qz5tuao+GsIpCBihXcdDJqQy4rTT+EEZQaYEgikRmGhZPSHw0HEJMnDHO1tkOsgtSDfrnecJ5HSGDN6/huVpEvCgWPl0HFtzTsD6zWYNGc70A9lH";
var ccNumEncKey = "AQAj777KsPF4Pc1SD0KyRthi7gXDhMz+BhGGmPvSjXAo8bwiJW0=qCqpVK/tmWyNd3q2faSOTlZC1Nn33DUfrv/kSnbFi9/QjAjZ+lF02//MWLpNZ0XGhV62tvCURBJFssgGlL6d2m4pKINX05TOEOzweQmCMS9Bgtl6E7FEw7U1BxjV4h1xKG5ZoSpiKY5ZQvCvmnEtRU5SrnbA+kYtPjR+rTMAEASnwbrWc0u1I4KbRBv+KXfe";

var plaintextCcNumber = "test";
//                                                                          | base64 here            |
var encryptedCcNumber = "AQAj777KFma5vZ9Bb1sX8+MFpkqa473IFWRShg+pKNmKwrm7BPg=zbDc68fp0zceSvevnNuG2g==";

每当我更改管理员密码时,两个密钥都会更新,密文也是如此。种子更改。

相同的明文值始终加密为相同的密文(只要密码/密钥未更新)。

加密的CcNumber具有base64编码部分。

即使密码/密钥更新后,密钥和密文始终以“AQAj777K”开头。


软件制造商提供的文档说明如下:

  

该软件符合PCI安全标准,要求使用标准算法和加密密钥长度加密持卡人信息。

     

当您创建管理员用户和其他用户帐户时,该软件会生成三条用于保护信用卡信息的信息:

     
      
  • 数据访问密钥:这是一个128位AES加密密钥,用于加密信用卡号。
  •   
  • 每用户主密钥:这是为每个用户生成的128位AES加密密钥。主密钥加密数据访问密钥的副本以及用户有权使用的任何其他加密密钥。
  •   
  • 密码派生密钥:这是使用种子值和每个用户密码生成的128位AES密钥。密码派生密钥用于保护每个用户的主密钥副本。
  •   
     

当设置管理员用户并且管理员创建其他用户帐户时,软件会创建这些密钥。管理员的主密钥用于管理其他用户的主密钥以及他们有权使用的每个用户的数据访问密钥副本。


我的问题:从提供的信息中,加密/解密的方法很容易猜到吗?

2 个答案:

答案 0 :(得分:1)

我看到了几种方法:由cryptoanalyst对软件进行(a)分析,并(b)与供应商联系。试用和错误方式不起作用,因为您不知道在加密之前对数据执行了哪些转换(如果有)。知道这一点需要ab以上。

答案 1 :(得分:-1)

为避免被删除,我首先要解决这个问题。

  

我的问题:从提供的信息来看,是方法   加密/解密很容易猜到?

根据提供的信息,可以确定用于加密和解密的方法。它们使用128位AES加密。理论上,您可以通过使用密码派生密钥获取每用户主密钥以及随后存储的数据访问密钥副本来访问数据访问密钥,但是您需要供应商使用的种子值(我假设你有一个用户密码,因为你应该可以访问管理员,这可能是任何东西。所以是的,这种方法很容易猜到。

但是,提交此答案是为了防止任何尝试解决QuickBooks问题的人使用此答案作为前进一步。虽然很明显该用户正在尝试解密加密的QuickBooks数据,但请不要尝试自己使用它。如果您的用户无法查看加密的AQAj777K'之外的数据。结果,然后使用管理员帐户删除并重新创建其用户帐户。这解决了帐户密码更改但数据未正确解密和重新加密时导致的问题。

请在搜索AQAj777K'之后,让未来的用户看看他们是否会在这里结束。结果。

由于主持人的回应而被编辑。