2012-04-16 62 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;