2014-01-07 137 views
2

我們有軟件在寫入數據庫時​​加密我們數據庫中的一些數據(如信用卡號碼,社會安全號碼等)(並在閱讀時再次對其解密)。從密鑰,種子,明文和密文確定加密算法

我們希望能夠在我們自己的軟件之外解密該數據以外的


從分析數據,這是我發現:

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加密密鑰用於加密信用卡號碼。
  • A 每個用戶主密鑰:這是爲每個用戶生成的128位AES加密密鑰。主密鑰加密數據訪問密鑰和用戶有權訪問的任何其他加密密鑰的副本。
  • A 密碼派生密鑰:這是使用種子值和每個用戶的密碼生成的128位AES密鑰。密碼派生密鑰用於保護每個用戶的主密鑰副本。

軟件在管理員用戶設置和管理員創建其他用戶帳戶時創建這些密鑰。管理員的主密鑰用於管理其他用戶的主密鑰以及他們有權訪問的每個用戶的數據訪問密鑰副本。


我的問題:從所提供的信息,對加密/解密的方法容易被猜到的?

+0

Mods:如果您認爲這更適合http://crypto.stackexchange.com/請移動它! :-) –

+0

對adminDatabasePassword的評論看起來不正確; sha1(「Admin:Password1」)是778e46b181151e5d4a52043c6034af5c29b97a9b。 – erickson

+0

@DavidMurdoch AFAIK,「猜密碼」的問題[不完全歡迎加密](http://meta.crypto.stackexchange.com/questions/100/do-we-want-challenge-analyse-this-questions-和如果那麼什麼約束-IF-任何)。 –

回答

1

我看到幾種方法:(a)分析加密分析軟件,(b)聯繫供應商。嘗試錯誤的方式將不起作用,因爲您不知道在加密之前對數據執行了哪些轉換(如果有)。並且知道這需要上面的ab

+0

是不是有一些隱藏在StackOverflow中的密碼分析器只准備回答這個問題?哈哈。由於顯而易見的原因,供應商不會提供更多關於它的信息。 :-) –

+0

「顯而易見的原因」是他們不知道自己在做什麼,也不想更多地暴露自己?一個安全的加密系統沒有任何東西可以隱藏。 – erickson

+0

@DavidMurdoch我認爲在security.stackexchange.com或crypto.stackexchange.com上可以有一些,但這兩個站點都不適合搜索加密分析器(您的請求將被視爲offtopic)。 –

-1

爲了避免被刪除,我會先解決這個問題。

我的提問:從提供的信息來看,是否加密/解密的方法很容易猜測?

鑑於提供的信息,可以確定用於加密和解密的方法。他們使用128位AES加密。從理論上講,你可以通過使用密碼派生密鑰來獲得數據訪問密鑰來獲得每個用戶的主密鑰,然後獲得他們存儲的數據訪問密鑰副本,但是你需要供應商使用的種子值(I'假設你有一個用戶密碼,因爲你應該有權訪問管理員),這可能是任何事情。所以是的,這個方法很容易猜到。

但是,提交此答案是爲了防止任何人試圖解決QuickBooks問題使用此答案作爲一個步驟。雖然很明顯這個用戶正試圖解密加密的QuickBooks數據,但請不要試圖自己這樣做。如果您的用戶無法查看加密的「AQAj777K」結果之外的數據,請使用管理員帳戶刪除並重新創建其用戶帳戶。這可以解決帳戶密碼更改但數據未解密並重新正確加密時導致的問題。

請留下以供將來的用戶在搜索'AQAj777K'結果後查看它們是否結束。

由於版主響應而編輯。

+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/17395493) –