2011-03-31 120 views
1

對於使用舊系統的公司,我試圖對其使用的舊加密方法進行反向工程。這個軟件的源代碼丟失了,所以我被告知。 (或者他們不希望我看到系統的完整工作)。反向工程簡單加密算法

無論如何,系統使用UNIQUE標識符和一些其他信息來創建密鑰。 此密鑰用於加密一些數據。

我需要逆向工程這個算法。 (我可能會在我的頭上,但我會嘗試)。

我使用了用於創建密鑰的信息,以及加密的和未加密的數據。 所以我最好的選擇是使用「知道明文攻擊」。但我正在尋找一些提示或網站,提供更多關於如何進行的信息。

我知道這可能是一項不可能完成的任務,但嘿,這很好,嘗試吧?

+0

您是否有權訪問目標代碼?某個實現正在運行嗎? – sarnold 2011-03-31 11:37:35

+1

如果它是「一些舊的」加密方法,那麼很可能是一種衆所周知的算法,例如DES或TEA。只有傻瓜和天才寫他們自己的加密算法。因此,你可能首先要做的事情之一是谷歌這些算法。所有這些都使用一些衆所周知的常量用於S盒等。如果您使用十六進制編輯器搜索可執行文件,並且找到所述常量,則您知道它是什麼算法。這比基於已知明文的密碼分析快了十億倍。例如,如果您在程序中發現0x9e3779b9,那麼很可能是TEA。 – Damon 2011-03-31 15:14:35

回答

1

你的任務並非不可能 - 只是不可能的。

如果你擁有密鑰和明文,那麼我建議通過儘可能多的標準算法來運行它們。實施該系統的人很可能使用了標準算法的通用實現。

你可能功虧一簣,因爲任何足夠現代密碼不應該是容易受到已知明文攻擊:http://en.wikipedia.org/wiki/Known-plaintext_attack

+0

是的,這可能是一個長鏡頭。我只是想我會從一些對此事有更多瞭解的人那裏得到一些意見。我不認爲通過衆所周知的算法運行數據會有很大的幫助,因爲只有這麼多。 – 2011-03-31 11:55:06

1

我不得不在這裏質疑動機,這不是一個餅乾網站。即使他們沒有源代碼,如果它不是標準的加密格式,它們也應該有規範。無論哪種方式,我不相信他們會有一個系統設計來存儲加密數據,但無法檢索它,因此解密器可用,在這種情況下,解密數據,實施新的記錄加密技術並重新加密數據使用。這比試圖破解未知的加密程序要容易得多。

+0

你是對的有一個解密器可用。目前他們希望繼續使用舊的加密數據。如果不使用新算法對其進行重新加密,則需要「向後兼容」。 – 2011-03-31 11:52:19

3

您可以嘗試採用這種方式:

  1. 加密簡單重複的消息(「AAAA 「,」bbb「)並且開始分析不同度量的輸入到輸出的統計相關性(輸入的長度與輸出的長度相關,輸入中的字符與任何字符的出現相關的出現次數在輸出等)
  2. 如果您發現某些統計數據相關性嘗試做出一個假設,並開始做一些其他實驗給您更加複雜的輸入給您加密功能
+0

我認爲這可能是現在最好的方法。 – 2011-03-31 12:11:45