2012-04-16 38 views
2

我正在使用加密(blowfish symmetric)來發送數據包。從安全的角度來看,在數據包的開頭有一個頭(用數據包的其餘部分加密),我可以用它來驗證數據包是否有效,這是一個壞主意嗎?驗證頭文件加密壞主意?

僞代碼示例:

byte[] verificationHeader = [1,2,3,4,5]; 
receive(packet); 
unencrypt(packet); 
if (packet.getData().beginswith(verificationHeader)) { 
    // assume packet is good, try to do something with it 
} else { 
    // drop packet 
} 

我想驗證它,因爲任何其他應用程序可以在我的組廣播,我不想搞混了其他的東西。

它可能有助於黑客解密我的數據包嗎?

如果這是一個壞主意,那麼你能否提出一個替代方案?

回答

1

至少在理論上,這是一個非常糟糕的主意 - 它會讓某人對一個已知的「目標」進行暴力攻擊,所以當/如果他們得到正確的密鑰,就知道它(並且很快)。

至少從安全角度來看,將該部分保留爲明文會更好。它也許更實用一些 - 如果它無論如何不會有用,它可以幫助你解密某些東西。

+0

但如果黑客是把驗證爲分組和分組的其餘的全是垃圾我的代碼會試圖用它做什麼...這將是壞 – 2012-04-16 23:44:24

+1

@JackAllan:聽起來就像你之後的消息認證碼(MAC)一樣。我很確定谷歌應該找出一些合理安全的方法來做到這一點。 – 2012-04-17 00:34:02

0

我不確定它是否壞主意,但如果你決定它,那麼也許你可以發送一個隨機數字,然後隨機數字或標題。然後在另一邊你或那個號碼再次用隨機數字。那麼你不會多次發送同樣的東西,但它是全部編譯的,所以它不是可以破解的。我認爲我的數學是正確的,但是這個想法仍然存在。

ie 
value = random | header; 
send (random, value); 
header = random | value;