Brute-Force-Attack

是否可以在沒有蠻力的情況下展開堆疊的 XOR 字元串?

  • May 6, 2017

鑑於:

  • 每個人都可以看到的初始字元串 (sBase)
sBase = "syLgETsPihVXBRuVR4eI"
  • 其他幾個僅對我可見的字元串
sXOR1 = "48MjsK7SiNMGV7wxb3Kb"

sXOR2 = "jokxnPZpUWmJfaL0BS1t"

sXOR3 = "4KAh1TEAmtWFV6HvTUda"

sXOR4 = "wOnlFV4vUiJkaESXX25X"

sXOR5 = "77H6NQrcmrdHuThmBdTL"

認為:

  • XOR sBase 與 sXOR1 並得到 sResult
  • 將 sResult 與 sXOR2 異或,並獲得第一個堆疊的異或 sResult
  • 繼續用每個新的 sResult 對其餘的 sXORn 字元串進行異或
Final sResult = "Y??Ga??' ?¤00#=]<W?*"

問題:

  1. 我可以使用已知的 sBase 字元串從 XOR 堆疊的 sResult 中確定原始 sXOR 字元串嗎?
  2. 還是通過蠻力攻擊 sResult 以確定原始 sXOR 字元串的唯一解決方案?

(編輯 - 添加評論)

如果我不清楚我的 XOR 操作的解釋:

  • 每個 XOR 操作的結果與下一個 sXOR 字元串進行異或
sResult = sBase XOR sXOR1  
sResult = sResult XOR sXOR2  
sResult = sResult XOR sXOR3  
sResult = sResult XOR sXOR4  
sResult = sResult XOR sXOR5  
  • 最終的 sResult 是由一系列 XOR 操作產生的單個字元串
  • 我想知道某人(只知道 sBase 和最終 sResult 的值)是否有可能確定發生了多少 XOR,以及他們是否可以確定我在該過程中使用的 sXORn 字元串值是什麼?

============================================================

編輯以顯示成功的結果 - 2017-05-06

查看答案和評論(一遍又一遍) - 最後得到@daniel給出的“位”範例的句柄 - 我能夠弄清楚如何編寫一個解決方案來查找生成等效 XOR 結果的字元串集。

現在我可以繼續檢驗我的假設。

感謝大家!

布魯斯

Note that the xC and xD columns are totally different in these two runs.
And that the two outside result columns are the same for both runs.

This shows that (xCR$ XOR xDR$) is equivalent to the multiple XOR operations
using my sXOR(n) strings.

The routine is fast - and I can now find all of the XOR equivalent strings
that I want.


FIRST RUN:
'---------------------------------------------------------
sXORResult =591D0D47611C1D27001E0F3030233D5D3C571A2A        'Hex$ of the xR values in the first column - the result of my sXOR(n) operations
'---------------------------------------------------------
xR=01011001  89   xC=00110110  54   xD=01101111 111   R2=01011001  89
xR=00011101  29   xC=11110111 247   xD=11101010 234   R2=00011101  29
xR=00001101  13   xC=01111011 123   xD=01110110 118   R2=00001101  13
xR=01000111  71   xC=11100001 225   xD=10100110 166   R2=01000111  71
xR=01100001  97   xC=11010111 215   xD=10110110 182   R2=01100001  97
xR=00011100  28   xC=01100110 102   xD=01111010 122   R2=00011100  28
xR=00011101  29   xC=10100111 167   xD=10111010 186   R2=00011101  29
xR=00100111  39   xC=10011011 155   xD=10111100 188   R2=00100111  39
xR=00000000   0   xC=00100010  34   xD=00100010  34   R2=00000000   0
xR=00011110  30   xC=11100000 224   xD=11111110 254   R2=00011110  30
xR=00001111  15   xC=00101111  47   xD=00100000  32   R2=00001111  15
xR=00110000  48   xC=11101111 239   xD=11011111 223   R2=00110000  48
xR=00110000  48   xC=00111101  61   xD=00001101  13   R2=00110000  48
xR=00100011  35   xC=01110111 119   xD=01010100  84   R2=00100011  35
xR=00111101  61   xC=01100010  98   xD=01011111  95   R2=00111101  61
xR=01011101  93   xC=11000000 192   xD=10011101 157   R2=01011101  93
xR=00111100  60   xC=10001100 140   xD=10110000 176   R2=00111100  60
xR=01010111  87   xC=11000010 194   xD=10010101 149   R2=01010111  87
xR=00011010  26   xC=10101110 174   xD=10110100 180   R2=00011010  26
xR=00101010  42   xC=00011010  26   xD=00110000  48   R2=00101010  42
'---------------------------------------------------------
xCR$       =36F77BE1D766A79B22E02FEF3D7762C08CC2AE1A        'Hex$ of the xC values in the second column
xDR$       =6FEA76A6B67ABABC22FE20DF0D545F9DB095B430        'Hex$ of the xD values in the third column
sCDResult  =591D0D47611C1D27001E0F3030233D5D3C571A2A        'Hex$ of the R2 values in the fourth column - the result of (xCR$ XOR xDR$)
                                                           'Note that sXORResult (above) and the sCDResult are equivalent
'---------------------------------------------------------


SECOND RUN:
'---------------------------------------------------------
sXORResult =591D0D47611C1D27001E0F3030233D5D3C571A2A
'---------------------------------------------------------
xR=01011001  89   xC=00000010   2   xD=01011011  91   R2=01011001  89
xR=00011101  29   xC=11001100 204   xD=11010001 209   R2=00011101  29
xR=00001101  13   xC=00100101  37   xD=00101000  40   R2=00001101  13
xR=01000111  71   xC=00011110  30   xD=01011001  89   R2=01000111  71
xR=01100001  97   xC=11000111 199   xD=10100110 166   R2=01100001  97
xR=00011100  28   xC=11100100 228   xD=11111000 248   R2=00011100  28
xR=00011101  29   xC=01000101  69   xD=01011000  88   R2=00011101  29
xR=00100111  39   xC=10010011 147   xD=10110100 180   R2=00100111  39
xR=00000000   0   xC=00100011  35   xD=00100011  35   R2=00000000   0
xR=00011110  30   xC=10010000 144   xD=10001110 142   R2=00011110  30
xR=00001111  15   xC=00010110  22   xD=00011001  25   R2=00001111  15
xR=00110000  48   xC=10000000 128   xD=10110000 176   R2=00110000  48
xR=00110000  48   xC=01111110 126   xD=01001110  78   R2=00110000  48
xR=00100011  35   xC=00110011  51   xD=00010000  16   R2=00100011  35
xR=00111101  61   xC=11000000 192   xD=11111101 253   R2=00111101  61
xR=01011101  93   xC=00001010  10   xD=01010111  87   R2=01011101  93
xR=00111100  60   xC=01100010  98   xD=01011110  94   R2=00111100  60
xR=01010111  87   xC=10000010 130   xD=11010101 213   R2=01010111  87
xR=00011010  26   xC=00001111  15   xD=00010101  21   R2=00011010  26
xR=00101010  42   xC=01001000  72   xD=01100010  98   R2=00101010  42
'---------------------------------------------------------
xCR$       =02CC251EC7E44593239016807E33C00A62820F48
xDR$       =5BD12859A6F858B4238E19B04E10FD575ED51562
sCDResult  =591D0D47611C1D27001E0F3030233D5D3C571A2A
'---------------------------------------------------------

我不知道您的安全目標是什麼,但正確語句“堆疊的 XOR 是無用的”的另一面是,任何字元串都可以“取消堆疊”成任意數量的字元串的 XOR,沒有人知道如何使用了許多字元串。

XOR下的固定長度字元串形成一個組,比如 $ G $ . 所以對於任何 $ S \in G $ 我們可以寫

$$ S=X \oplus (S\oplus X), $$ 它為任何非零字元串提供了一個unstacking $ X $ . 因此對於 $ n $ 位串有 $ (2^n-1) $ 將字元串拆分為兩個 XOR 的方法,因為有盡可能多的非零字元串 $ X. $

您可以根據需要多次重複此過程。

引用自:https://crypto.stackexchange.com/questions/47156