0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

哈希算法的前世、今生和未来

电子设计 来源:电子设计 作者:电子设计 2020-12-25 18:54 次阅读

新人在学区块链威廉希尔官方网站 的时候,都会听到哈希和哈希算法,这似乎是无处不在的安全性保证。例如比特币或者以太坊这种运行去中心网络和共识的机器,都会有上万个节点通过P2P连接,并且需要“无需可信”和可验证的效率。这些系统需要将信息写入紧凑的格式,从而通过参与者进行保证安全和快速验证。

比特币和以太坊主要的primitive是区块的notion,这是包含转账信息,时间戳和其他重要数据的数据结构。他们安全性的重要部件,就是能够压缩网络全部的状态信息,变成很短,并且标准的信息,在需要的时候可以进行有效验证,这就被称之为哈希。

到处都会使用加密哈希,从密码存储到文件验证系统。使用确定性算法的基本原理,就是使用一个输入,并且每次都产生一个固定长度的字符串。也就是说,使用同样的输入总是会导致同样的输出。

确定性不仅对哈希很重要,而且可以改变输入的单个字符会产生完全不同的哈希。

哈希算法的问题是碰撞(collisions)的必然性。哈希是固定的字符串,意味着对于每个输入,不同的输入都会产生同样的输出。碰撞(collisions)是不好的。这意味着如果有攻击者能够根据需求创建这种collisions,那么他就可以让欺诈文件或者数据看起来像正确的,合适的哈希,并且冒充合法。优质哈希功能的目标是让攻击者很难找到,获得输入数据的方法。

计算哈希不应该太简单,因为这会让对于攻击者来说,计算collisions也变得很容易。哈希算法需要对“预攻击”有抵抗性。也就是说,给定哈希,应该很难计算追溯确定性的步骤来重新产生由哈希创建的数值。

Given s= hash(x), finding x should be near impossible.

概括来看,“好的”哈希算法会有以下3种特性:

-在输入中改变一个字符,应该会创建雪崩效应,从而导致完全不同的哈希

-很低的概率会产生collisions

-提高效率,但是不会牺牲collision的对抗性

破散哈希

其中一个初始哈希算法标准是MD5哈希,这是被广泛用来进行文件整合验证,而且存储哈希密码在网页应用数据库。这个功能非常简单,因为输出是固定的,128个字符串对于每个输入,并且使用几轮微不足道的单向运算来计算其确定性输出。它的输出长度短,操作简单,使得MD5彻底易碎,被称为生日攻击。

“生日攻击”是什么?

我们曾经听过,如果你把23个人放在一个房间,就会有50%的概率,其中的2人会有同样的生日?将这个数字提升到70人在一个房间,就会有99.9%的概率。这就是我们所说的鸽巢原理,也就说如果把100个各自放到99个箱子,你就必须在1个盒子里面放2个鸽子。换句话说,固定的输出意味着collisions 可能会找到固定的排序。

其实,MD5对于collision的抵抗是很脆弱的,家庭使用的2.4GHz处理器就可以在几秒钟算出哈希collision。而且,对于现在网页的早期使用,还可以在网络上创建很多MD5的预图形,如果搜索哈希,就可以在谷歌上很容易找到。

哈希算法的多样化和革新

开始:SHA1 &SHA2

NAS被称为哈希算法标准的先驱,最初的想法是安全哈希算法或者SHA1,创建了160固定长度的输出。不幸地是,SHA1通过增加了输出长度,单向操作的数量,还有单向操作的复杂性,从而形成了MD5算法,但是这不会提供任何基础的提升,来对抗更有力量的机器来尝试不同的攻击。

我们怎么才能做得更好呢?

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智能计算
    +关注

    关注

    0

    文章

    177

    浏览量

    16460
  • 以太坊
    +关注

    关注

    14

    文章

    1838

    浏览量

    31955
收藏 人收藏

    评论

    相关推荐

    加密算法在网络安全中扮演什么角色?

    : 通过哈希函数和消息认证码(MAC),加密算法可以检测数据在传输过程中是否被篡改,确保数据的完整性。 提供身份验证 : 非对称加密算法和数字签名威廉希尔官方网站 可以验证通信双方的身份,防止身份冒充攻击。 实现数据签名 : 数字签名使用非
    的头像 发表于 12-17 16:00 65次阅读

    深入了解Java泛型——从前世今生到PECS原则

    本文主要介绍泛型诞生的前世今生,特性,以及著名PECS原则的由来。 在日常开发中,必不可少的会使用到泛型,这个过程中经常会出现类似“为什么这样会编译报错?”,“为什么这个列表无法添加
    的头像 发表于 11-21 11:45 141次阅读
    深入了解Java泛型——从<b class='flag-5'>前世</b><b class='flag-5'>今生</b>到PECS原则

    无人驾驶的前世今生:一部充满争议的革命史

    无人驾驶的萌芽比大多数人想象的要早得多。1925年,纽约百老汇大街上演示的"American Wonder"无人车,就是人类在这个领域的第一次尝试。虽然它只能通过简单的无线电遥控实现基础动作,但这个尝试却为后来的发展播下了火种。 20世纪80年代,随着计算机威廉希尔官方网站 的发展,无人驾驶迎来第一次重要突破。1987年,德国工程师恩斯特·迪克曼斯开发的VaMoRs系统,首次将计算机视觉应用到自动驾驶中。这个系统能够以55公里/小时的速度在空旷道路上自主行驶,这在
    的头像 发表于 11-12 13:51 189次阅读
    无人驾驶的<b class='flag-5'>前世</b><b class='flag-5'>今生</b>:一部充满争议的革命史

    华纳云:Chord算法如何管理节点间的联系?

    Chord算法是一种分布式哈希表(DHT)协议,它通过构建一个环状结构来管理节点间的联系。以下是Chord算法如何管理节点间联系的具体方式: 环状结构: Chord算法将所有节点和键
    发表于 11-08 16:03

    400Hz中频电源前世今生未来

    400Hz中频电源是一种能够产生频率为400Hz的交流电的装置,过功率电子器件对电网提供的工频交流电进行整流、滤波、逆变等一系列处理,最终输出稳定的400Hz交流电。400Hz中频电源广泛用于航空、军事等领域,具有输入输出电压稳定、频率响应快等特点,能高效节能,易于集成控制,应用于航空、船舶、铁路、医疗等领域。
    的头像 发表于 11-08 09:41 250次阅读

    带你揭秘:功率放大器的前世今生~

    关于功率放大器功率放大器,作为一种可放大交直流信号,在给定失真率条件下,能产生最大功率输出以驱动某一负载的实验室仪器,在MEMS测试、超声波测试、电磁场驱动、无线电能传输、院校电子实验测试等领域都有良好应用,那么你知道功放的发展史吗?今天Aigtek就给大家分享一下~功率放大器发展史功率放大器的发展史可以追溯至20世纪初,随着电子威廉希尔官方网站 的不断进步,功率放大器也
    的头像 发表于 11-07 08:00 996次阅读
    带你揭秘:功率放大器的<b class='flag-5'>前世</b><b class='flag-5'>今生</b>~

    什么是默克尔树(Merkle Tree)?如何计算默克尔根?

    01 默克尔树的概念 默克尔树(Merkle Tree)是一种特殊的二叉树,它的每个节点都存储了一个数据块的哈希值。哈希值是一种可以将任意长度的数据转换为固定长度的字符串的算法,它具有唯一性和不可
    的头像 发表于 09-30 18:22 845次阅读
    什么是默克尔树(Merkle Tree)?如何计算默克尔根?

    开源物联网威廉希尔官方网站 --哈希算法MD5加密功能威廉希尔官方网站 分享

    MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,通常用于数据加密和安全校验等场合。MD5 算法可以将任意长度的消息输入计算出一个固定长度的摘要,其生成的摘要具有
    的头像 发表于 09-21 09:57 1662次阅读
    开源物联网威廉希尔官方网站
--<b class='flag-5'>哈希</b><b class='flag-5'>算法</b>MD5加密功能威廉希尔官方网站
分享

    烧结银胶成为功率模块封装新宠

    线路互联的关键材料。本文将从善仁烧结银胶的定义、特性、应用优势、威廉希尔官方网站 挑战及未来发展趋势等方面,深入剖析这一高科技材料的前世今生
    的头像 发表于 09-20 17:28 246次阅读

    “宁”聚创新,“融”耀未来——康宁熔融博物馆亮相DIC 2024

    式的创新展示空间,邀观众一同探寻康宁专利熔融下拉制程的前世今生未来。   康宁熔融博物馆亮相2024国际(上海)显示威廉希尔官方网站 及应用创新展 此次康宁采用博物馆形式呈现的熔融下拉制程,其故事要追溯到上世纪50年代。彼时康宁的先驱者们
    的头像 发表于 07-04 10:55 364次阅读
    “宁”聚创新,“融”耀<b class='flag-5'>未来</b>——康宁熔融博物馆亮相DIC 2024

    嵌入式系统的前世今生

    一、初始阶段(1960-1970)1960年代末:嵌入式系统的概念开始形成,最初用于专业的军事和航天应用,例如用于导弹控制的计算机系统。微处理器的诞生:1971年,英特尔推出了4004芯片,这是世界上第一个商用微处理器。它的出现标志着嵌入式系统发展的一个里程碑,使得更小型、成本更低的电子设备设计成为可能。二、发展阶段(1980年代)个人计算机(PC)的普及:
    的头像 发表于 04-12 08:11 1616次阅读
    嵌入式系统的<b class='flag-5'>前世</b><b class='flag-5'>今生</b>

    炬芯科技赵新中:无线音频SoC的AI算法未来和应用

    的平台。 炬芯科技算法研发中心高级总监赵新中受邀出席,于电声元器件及芯片专题论坛发表以《无线音频SoC的AI算法未来和应用》为主题的演讲,分享了炬芯科技的音频AI算法研究、应用经验和最
    的头像 发表于 04-10 11:13 469次阅读
    炬芯科技赵新中:无线音频SoC的AI<b class='flag-5'>算法</b><b class='flag-5'>未来</b>和应用

    FPGA中竞争与冒险的前世今生

    竞争冒险:在组合电路中,当逻辑门有两个互补输入信号同时向相反状态变化时,输出端可能产生过渡干扰脉冲的现象,称为竞争冒险。那么 FPGA 产生竞争冒险的原因是什么呢? 信号在 FPGA 器件内部通过连线和逻辑单元时,都有一定的延时。 延时的大小与连线的长短和逻辑单元的数目有关 同时还受器件的制造工艺、工作电压、温度等条件的影响 信号的高低电平转换也需要一定的过渡时间 。由于以上存在的因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化往往会出现一些不正确的尖峰信号,这些尖峰信号称为毛刺 。如果一个组合逻辑电路中有毛刺出现,就说明该电路存在冒险 。与分立元件不同,由于 PLD 内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在 PLD 、 FPGA 设计中尤为突出 。 毛刺的累加 将会影响整个设计的可靠性和精确性 。因此判断逻辑电路中是否存在冒险以及如何避免冒险是 FPGA 设计人员必须要考虑的问题。 接下来我们就要考虑如何消除冒险 ,消除冒险的方式有一下几种: 1、利用冗余项消除毛刺 函数式和真值表所描述的是静态逻辑,而竞争则是从一种 稳态到另一种稳态的过程。因此竞争是动态过程,它发生在输入变量变化时。此时,修改卡诺图,增加多余项,在卡诺图的两圆相切处增加一个圆,可以消除逻辑冒险。但该法对于计数器型产生的毛刺是无法消除的。 2、采用格雷码 我们可以通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变 消除了竞争冒险的发生条件,避免了毛刺的产生。 3、采样法 由于冒险出现在变量发生变化的时刻,如果待信号稳定之后加入取样脉冲,那么就只有在取样脉冲作用期间输出的信号才能有效。这样可以避免产生的毛刺影响输出波形。 一般说来,冒险出现在信号发生电平转换的时刻,也就是说在输出信号的建立时间内会发生冒险,而在输出信号 的保持时间内是不会有毛刺信号出现的。如果在输出信号的保持时间内对其进行采样,就可以消除毛刺信号的影响。 4、吸收法 增加输出滤波,在输出端接上小电容C可以滤除毛刺 。但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。 5、延迟办法 因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度 的延迟可以消除毛刺。 还可以用高频时钟来驱动一移位寄存器,待延时信号作数据输入,按所需延时正确设置移位寄存器的级数 ,移位寄存器的输出即为延时后的信号。 当然最好的就是,在设计之初,就对竞争冒险进行规避,具体规避方法有: 1、在设计中每一个模块中只用一个时钟,避免使用多时钟设计,同时避免使用主时钟分频后的二次时钟作为时序器件的时钟输入, 因为时钟偏斜会比较大 。 2、设计译码逻辑电路时必须十分小心,因为译码器和比较器本身会产生尖峰,容易产生毛刺,把译码器或比较器的输出直接连到时钟输入端或异步清除端,会造成严重的后果。 3、在设计中 应该尽量避免隐含 RS 触发器的出现。一般要控制输出被直接反馈到输入端,采用反馈环路会出现隐含 RS 触发器,其对输入尖峰和假信号很敏感,输入端有任何变化都有可能使输出值立刻改变,此时易造成毛刺的产生,导致时序的严重混乱。 4、在设计电路时 要用寄存器和触发器设计电路,尽量不要用锁存器,因它对输入信号的毛刺太敏感。如果坚持用锁存器设计必须保证输入信号绝对没有毛刺,且满足保持时间。 5、在设计中充分利用资源 ,因为 大部分 FPGA 器件都为时钟、复位、预置等信号提供特殊的全局布线资源,要充分利用这些资源。 6、在设计中 不论是控制信号还是地址总线信号、数据总线信号,都要采用另外的寄存器,以使内部歪斜的数据变成同步数据。 7、在设计中 应该尽 量避免使用延迟线,因它对工艺过程的变化极为敏感,会大大降低电路的稳定性和可靠性,并将为测试带来麻烦。 8、在设计中 对所有模块的输入时钟、输入信号、输出信号都用D触发器或寄存器进行同步处理,即输出信号直接来自触发器或寄存器的输出端。这样可以消除尖峰和毛刺信号。
    发表于 02-21 16:26

    探索世界军用无人机的前世今生

    第一次世界大战进入尾声时,动力飞行还完全是一个新生的事物。十多年前,莱特兄弟刚在北卡罗来纳州的基蒂霍克(Kitty Hawk)的沙丘间完成了原始双翼飞机试飞。
    发表于 01-23 09:57 1667次阅读

    机器人的前世今生

    机器人主要是用于代替人工作的,首先它是一个机器。对于传统的机器,被使用者设计制造出来后,它的工作步骤、路径都是确定的。机器的设计也是根据它所应用的工作而进行的。
    发表于 12-29 14:54 557次阅读
    机器人的<b class='flag-5'>前世</b><b class='flag-5'>今生</b>