首页 > 其他分享 >密码哈希竞赛是干什么的?底层原理是什么?

密码哈希竞赛是干什么的?底层原理是什么?

时间:2024-09-17 23:19:35浏览次数:3  
标签:竞赛 密码 PHC Argon2 算法 内存 哈希 底层

密码哈希竞赛(Password Hashing Competition, PHC)

密码哈希竞赛(PHC)是一个旨在推动开发更安全的密码哈希算法的国际性竞赛。这项竞赛始于2013年,目标是为了找到一种更好的方法来保护存储的密码,尤其是在大规模数据泄露事件中保护用户的密码安全。

PHC的背景

传统的密码哈希算法,如MD5和SHA-1,已经被证明在安全性上存在严重缺陷。随着计算能力的不断提高,使用这些算法生成的哈希值很容易被暴力破解。因此,需要一种新的、更安全的哈希算法来保护密码。

PHC的目标

PHC的主要目标是:

  1. 安全性:新算法需要足够强大,以抵御目前和未来的攻击。
  2. 可调节性:算法应允许用户调整其计算复杂度,以适应不同的应用场景和安全需求。
  3. 互操作性:新算法应易于实现,并能在不同的平台上运行。
  4. 透明性:算法的设计应该是公开透明的,以便于全球专家的审查。

PHC的过程

竞赛分为几个阶段,其中包括算法提交、评审、讨论和最终选择等环节。参与者提交他们的密码哈希算法提案,经过多轮的评审和测试,最终选出胜出的算法。

PHC的结果

2015年,PHC宣布了获胜者:Argon2。Argon2是由比利时鲁汶大学的研究员Daniel J. Bernstein领导的团队提出的一种密码哈希算法。Argon2被设计为一种高度可调的哈希算法,可以灵活地适应不同的安全需求,并且具有很好的安全性和性能平衡。

Argon2的特点

Argon2具有以下特点:

  1. 内存硬化(Memory-hardening):Argon2设计成需要大量内存才能有效地执行哈希运算,从而使得暴力破解的成本更高。
  2. 可调性(Tunable):用户可以根据需要调整Argon2的内存使用、CPU时间和并行度等参数。
  3. 数据独立性(Data-independent):Argon2的内存访问模式与输入数据无关,这使得攻击者难以预测内存访问模式,从而增加了攻击的难度。
  4. 可验证性(Verifiability):Argon2的设计是公开透明的,任何人都可以对其进行验证和审计。

Argon2的底层原理

Argon2的核心思想是利用大量的内存和计算资源来增加哈希计算的成本,从而使得暴力破解变得极其昂贵。具体来说,Argon2的工作流程如下:

  1. 初始化阶段:生成一个随机的初始化向量(IV)。
  2. 内存填充阶段:使用输入密码、随机IV和盐(salt)填充内存区块。
  3. 内存访问阶段:通过一个伪随机函数(PRF)来确定内存区块的访问顺序,该顺序是数据无关的。
  4. 迭代阶段:通过多次迭代来加强哈希强度,每次迭代都会更新内存区块的内容。
  5. 最终输出阶段:从内存区块中提取最终的哈希值。

Argon2的应用

Argon2已经被广泛应用于密码哈希领域,包括在Linux系统中的PAM模块、OpenSSH和各种数据库管理系统中。此外,PHP也支持Argon2作为密码哈希算法,可以通过 password_hash()password_verify() 函数来使用。

通过密码哈希竞赛(PHC),Argon2成为了目前最先进、最安全的密码哈希算法之一,极大地提高了密码存储的安全性。

标签:竞赛,密码,PHC,Argon2,算法,内存,哈希,底层
From: https://blog.csdn.net/qq_36777143/article/details/142307804

相关文章

  • 算法与数据结构——哈希优化策略与算法选择
    哈希优化策略在算法题中,我们通常通过线性查找替换为哈希查找来降低算法的时间复杂度。我们借助一个算法题来加深理解。Question给定一个整数数组nums和一个目标元素target,请在数组中搜索“和”为target的两个元素,并返回他们的数组索引。返回任意一个即可。线性查找:以时间换......
  • 基于django+vue高校学科竞赛管理系统安全开发【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高校教育改革的深入和对学生综合素质要求的不断提高,学科竞赛作为培养学生创新能力、实践能力及团队协作精神的重要平台,其重要性日益凸......
  • Java 如何计算jar包的HASH哈希值
    在做授权系统的时候用到了一个小功能发出来分享一下。全部代码如下:importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.net.URISyntaxException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmExcepti......
  • 超级详细的AVLTree -- 高度平衡二叉树 -- 底层代码实现
    超级详细的AVLTree–高度平衡二叉树–底层代码实现目录AVLTree简介1.节点结构体定义2.AVLTree类定义及插入函数3.左旋转函数(RotateL)4.右旋转函数(RotateR)5.左右双旋转函数(RotateLR)6.右左双旋转函数(RotateRL)7.中序遍历函数(Inorder)8.计算树的高度(Height)9.判断......
  • 2024年全国大学生数学建模竞赛B题生产过程中的决策问题分析
    目录引言问题1:抽样检测方案设计问题2:生产过程中的决策决策阶段划分决策方案结果问题3:多道工序和零配件的决策生产流程决策过程问题4:基于抽样检测的重新决策动态调整次品率结论引言在2024年全国大学生数学建模竞赛B题中,企业需要对生产中的各个环节进行决策......
  • 【算法竞赛】链表
    链表的特点是用一组位于任意位置的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以不连续。链表是容易理解和操作的基本数据结构,它的操作有初始化、添加、遍历、插入、删除、查找、释放等。链表分为单向链表和双向链表,如图所示.链表的各节点首尾相接,......
  • 从kaggle竞赛零基础上手CV实战(Deepfake检测)
    关注B站可以观看更多实战教学视频:hallo128的个人空间从kaggle竞赛零基础上手CV实战从kaggle竞赛零基础上手CV实战(Deepfake检测)目录从kaggle竞赛零基础上手CV实战(Deepfake检测)背景介绍学习地址课程大纲课程特色适用人群背景介绍随着人工智能技术的迅猛发展,深......
  • 深入底层源码,剖析AQS的来龙去脉!
    这里写目录标题回顾前缀知识一、Condition的概念二、Condition底层结构三、Condition源码解析3.1newCondition()3.2await()总结主要方法:回顾如果你还没熟悉AQS中的独占锁,可以先看这篇文章的前导篇。上一篇文章是以ReentrantLock里面的加锁、解锁源码进行分......
  • 基于Python+Vue开发的大学竞赛报名管理系统
    项目简介该项目是基于Python+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的大学竞赛报名管理系统项目,大学生可以在实践中学习和提......
  • 基于Java+Springboot+Vue开发的大学竞赛报名管理系统
    项目简介该项目是基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习......