您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

安全比较和简单==(=)有什么区别

安全比较和简单==(=)有什么区别

“恒定时间”字符串比较的意义在于,无论比较目标是什么(未知值),该比较将花费完全相同的时间量。此“恒定时间”不会向攻击者显示有关未知目标值可能是什么的信息。通常的解决方案是比较所有字符,即使在发现不匹配之后也是如此,因此无论在哪里发现不匹配,比较都将在相同的时间内运行。@H_419_1@

当某些条件为真时,其他形式的比较可能会在较短的时间内返回答案,这使攻击者可以了解它们可能会丢失的内容。例如,在典型的字符串比较中,一旦发现不相等的字符,该比较将返回false。如果第一个字符不匹配,则比较返回的时间将短于匹配的时间。勤奋的攻击者可以使用此信息进行更智能的暴力攻击。@H_419_1@

“恒定时间”比较消除了这些额外的信息,因为无论两个字符串如何不相等,该函数都会在相同的时间内返回其值。@H_419_1@

在查看nodejs v4加密库时,我看不到有任何进行恒定时间比较的功能的迹象,并且在本文章中,将讨论有关nodejs加密库缺少此功能的事实。@H_419_1@

编辑:节点v6现在具有crypto.timingSafeEqual(a, b)。@H_419_1@

在此缓冲区相等-恒定时间模块中还提供了这样的恒定时间比较功能。@H_419_1@

其他 2022/1/1 18:14:59 有341人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶