這是一種有效的混淆技術嗎?
很久以前,我創建了一個簡單的程序,它通過獲取第一個字節來混淆文件,然後將其與第二個字節進行異或運算,將(原始)第二個字節與第三個字節進行異或運算,依此類推。文件大小沒有改變,我可以呼叫相同的程序來撤消混淆。不需要密鑰或密碼。這只是一種簡單的方法來隱藏文件的內容以防止隨意查看。
我的問題是:這是否會導致字節值的均勻分佈,使其看起來是加密的,並且通常的分析不會發現任何東西?
我知道這不是加密。此外,第一個字節是明文,但可以簡單地在源文件中粘貼一個隨機值,在那裡使用空格或其他一些無害的字節。
聽起來您正在使用XOR 密碼之類的東西來混淆您的程式碼。它看起來是加密的,但這仍然可以通過頻率分析來破解,因為使用恆定移位意味著加密實際上沒有密鑰。可以在此處找到如何破解類似 XOR 密碼的範例。正如@iismathwizard 所提到的,解密只需要使用 XOR 的事實,就像ROT13密碼可能被破壞一樣
一些詞彙(回答您的評論):
電腦科學中使用混淆來隱藏原始碼,同時保持其可執行性,請參見此處。這個想法是隱藏原始碼並使其難以複製,反彙編。
隱寫術是隱藏一條消息,例如**攻擊者不知道它的存在。**通過擁有一個加密文件,這破壞了這個目的,因為……攻擊者看到了文件。
關於您的方案:
您假設攻擊者很弱:它只能訪問純文字(在您的情況下,甚至不能訪問算法)。
在密碼學中,我們考慮一個強大的攻擊者:他可以完全訪問算法,並且可以嘗試加密任意數量的明文。這個想法是能夠檢索密鑰以解密初始密文。
場景如下:
1. Eve has intercepted an encrypted message from Alice. She can't read it. 2. During lunch, she access Alice's computer. For some reason she can not decipher the message. But she can encrypt many more messages so she will be able to attack the key later. 3. With all this encrypted message (with the same key) Eve can find the encryption key. 4. With this encryption key, she can now decrypt the initial message.
這是通常的假設。但是,在您的情況下,您沒有密鑰,因此您只需要算法知識。不幸的是,假設一個強大的攻擊者會立即破壞你的計劃。
關於您的方案:
您基本上是以不安全的方式進行 XOR 密碼:
$ X_1 || X_2 || X_3 || X_4 $ 將被加密:
$ X_1 || X_2 || X_3 || X_4 \oplus $
$ ~~0_~ || X_1 || X_2 || X_3 $
所以我們可以將其視為:
$ ~~0_~ || X_2 || X_2 || X_4 \oplus $
$ X_1 || X_1 || X_3 || X_3 $
因此,我們有可能導致統計攻擊的重複(如果我們完全忽略我們知道算法反轉的事實)。