使用不断变化的哈希值有多安全,比如时间?
How secure is using a changing hash, like the time?
如果我在 php 中做这样的事情:
$server_key = md5( '00' . date( 'i' ) . '09' );
并提交一个 html 表单,其中包含以 md5 编码的日期(秒)(加上前后的哈希值):
这个容易破解吗?
由于问题下方评论中的信息,我假设在几秒钟内使用 MD5 哈希值作为身份验证方法。
不,这被认为是不安全的,因为
- 它打破了Kerckhoff's principle:算法本身应该被考虑public,任何人都可以在没有获得secret/key的情况下实现算法;
- 很容易遍历所有秒数,例如一年并在服务器上测试所有可能性;
- 时间已经被观察到创建连接的攻击者捕获,或者可以通过简单地查看时钟轻松猜出;
MD5 也是不安全的甚至在这里都没有发挥作用(并且很难对该协议进行攻击)。
如果我在 php 中做这样的事情:
$server_key = md5( '00' . date( 'i' ) . '09' );
并提交一个 html 表单,其中包含以 md5 编码的日期(秒)(加上前后的哈希值):
这个容易破解吗?
由于问题下方评论中的信息,我假设在几秒钟内使用 MD5 哈希值作为身份验证方法。
不,这被认为是不安全的,因为
- 它打破了Kerckhoff's principle:算法本身应该被考虑public,任何人都可以在没有获得secret/key的情况下实现算法;
- 很容易遍历所有秒数,例如一年并在服务器上测试所有可能性;
- 时间已经被观察到创建连接的攻击者捕获,或者可以通过简单地查看时钟轻松猜出;
MD5 也是不安全的甚至在这里都没有发挥作用(并且很难对该协议进行攻击)。