加盐哈希 - 为什么文献中将盐视为夏娃已知的盐?

2024-04-24

标题说明了一切。我不明白:为什么你不应该像密码一样保密你的盐。或者我误解了什么?


盐被视为公开的主要是因为没有必要保密。

盐的目的主要是使字典攻击变得更加困难/不太实用。在字典攻击中,攻击者对字典中的常用单词进行哈希处理,并(如果他是认真的)用常用名称等内容来补充这些单词。有了这个,如果他能得到你的散列密码列表,他就可以看看其中是否有任何一个与他列表中的散列相匹配。假设您有大量用户,他很有可能找到至少一个。当他这样做时,他会在列表中查找产生该哈希值的单词,然后他现在可以使用它来登录并模拟该用户。

添加盐意味着他必须对每个可能的盐值都执行一次,而不是执行一次。例如,如果使用 24 位盐,他必须对字典中的每个单词进行约 1600 万次哈希,并存储所有约 1600 万次哈希的结果。

为了便于论证,我们假设在没有 salt 的情况下,攻击者需要 8 小时来对所有候选单词进行哈希处理,并需要 16 MB 来存储结果(哈希值和生成每个单词的单词)。我们将进一步假设存储在哈希值本身和单词/名称/产生它们的任何内容之间平均分配。

使用相同的 24 位盐,这意味着他的时间乘以相同的系数约 1600 万。他对产生哈希值的单词的存储保持不变,但哈希值本身(再次)乘以约 1600 万。计算一下,大约需要 15,000 年的计算和 128 TB 的存储空间。

简而言之,如果没有盐,几乎任何人都可以轻松进行字典攻击。我很容易相信(例如)有人会让他们的计算机整夜运行来进行哈希处理,只是为了对他的一些同事开一个愚人节玩笑(很容易相信,因为我已经看到它完成了)。

当你认真对待它时,这都是一个数字游戏:字典攻击并不是赌注every用户将有一个很容易猜到的密码,仅此而已enough会让他们找到至少几个开放的洞。同样,公开盐确实允许一种更简单的攻击,方法是下载每个哈希的盐,并对每个哈希使用已知的盐进行单独的字典攻击。假设系统的用户数量少于可能的哈希值,这是一种更实际的攻击。尽管如此,他现在仍然坚持单独攻击每个密码,而不是不仅对整个系统使用单个字典,而且实际上对他可能想要攻击的所有使用相同哈希算法的系统使用单个字典。

总而言之:即使是公开的,盐也能完美地发挥其作用。几乎所有安全系统的目标之一都是最大限度地减少需要保密的信息量。由于盐即使是公共的也可以发挥作用,因此通常认为它是公共知识。在实际系统中,你当然不会try将其发布给攻击者,但您也不(无论如何也不应该)依赖它仍然是秘密。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加盐哈希 - 为什么文献中将盐视为夏娃已知的盐? 的相关文章

  • 安卓应用安全

    我想开发一个用户数据非常敏感的应用程序 我是开发新手 所以不确定以下内容 技术对于安全或高效来说是必要的 请留下您的评论 提前致谢 为了额外的安全性 我们可以避开市场 游戏商店 并将应用程序安装在个人设备上 它会让它更安全吗 我必须在设备上
  • 上传文件最安全的方法是什么?

    我工作的公司最近在我们托管的网站上遭受了许多标头注入和文件上传漏洞攻击 虽然我们已经解决了标头注入攻击的问题 但我们尚未控制上传漏洞 我正在尝试设置一系列即插即用类型的上传脚本以供内部使用 设计人员可以将其复制到其网站的结构中 修改一些变量
  • 使用 C# 计算 HMACSHA256 以匹配支付提供商示例

    对于支付提供商 我需要使用 HMAC SHA256 计算基于哈希的消息身份验证代码 这给我带来了很大的麻烦 支付提供商以伪代码形式给出了两个正确计算验证码的示例 所有密钥均为十六进制 Method 1 key 57617b5d2349434
  • “设备重置为出厂设置”是否会使数据无法恢复? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 关于德克萨斯大学的结论 信息安全报告 https wikis utexas edu display ISO Google Android Harden
  • Oracle - 为什么在存储过程中允许 EXECUTE IMMEDIATE?

    如果存储过程旨在减轻 SQL 注入攻击 为什么在存储过程中允许 EXECUTE IMMEDIATE 以下问题的公认答案将其视为针对此类攻击的一个步骤 什么是存储过程 https stackoverflow com a 459531 3163
  • 使用自己的网络服务器实现一致的安全 Google Play 应用内购买场景

    我已多次阅读了中的所有文档Android 开发者指南 http developer android com guide google play billing index html并熟悉了精彩的 Google 演示躲避海盗并阻止吸血鬼 ht
  • Java Keystore 是否存在性能问题? [复制]

    这个问题在这里已经有答案了 我们开发了一个应用程序来加密 解密来自服务器的请求 响应 我们正在做性能测试 加密 解密应用程序 我们观察到加密 解密过程需要时间 而许多线程 正在同时做 为了识别问题 我们记录了加密 解密过程中的所有方法 从记
  • windows下删除进程权限

    出于安全原因 我正在寻找一种删除进程权限的方法 我想以具有特权的用户身份开始 并以受限用户身份结束 例如 我希望我的 Web 服务器在受限用户下运行 但我仍然想监听端口 80 我怎样才能在Windows下做这样的事情 与 Unix 类似的东
  • 如何关闭 Oracle 密码过期功能?

    我正在使用 Oracle 进行开发 我经常用于重建数据库的引导帐户的密码已过期 如何永久关闭该用户 以及所有其他用户 的密码过期功能 我使用的是 Oracle 11g 默认情况下密码会过期 要更改 Oracle 中某个用户配置文件的密码过期
  • PHP cookie 和会员安全

    我创建了一个论坛 该论坛在登录时使用 PHP 会话来确定用户 ID 并使用 cookie 来进行日志登录 我想我有两个问题 这是最好 最安全的方法吗 可以使用javascript通过地址栏手动添加cookie 这是一个巨大的安全风险 有没有
  • JSON 响应周围的注释块

    我注意到一些 Web 应用程序返回 AJAX 响应 并在注释块中嵌入 JSON 数据 例如 这是一个示例响应 firstName John lastName Smith address streetAddress 21 2nd Street
  • .net 4.5.1 ASP.NET MVC 5 中的用户锁定

    因此 在新的 Net Framework 4 5 1 AspNetUser 表中没有用于在有限次数的不成功尝试后将用户锁定的列 是否有为此目的构建的框架或解决方案来取代以前的 net 框架中曾经存在的功能 还是我必须自己构建 在即将发布的
  • 信任所有将文件发送到 https Web 服务的 java 类

    我需要编写自己的类来告诉 mule 与服务 wsdl 的 https 连接已验证 我的 mule 项目已经接近完成 但最后一块丢失了 在特定的 url 发送文件 我想要实现的目标 建立连接并将 xml 发送到目标 url 读取 xml 格式
  • Bash 中的 Shellshock 漏洞背后的行为是有记录的还是有意为之?

    最近的一个漏洞 CVE 2014 6271 http web nvd nist gov view vuln detail vulnId CVE 2014 6271 如何Bash http en wikipedia org wiki Bash
  • (Java) 在 Mac OS X 上以编程方式访问“系统根目录”下的 SSL 证书

    我正在编写一个 Java 应用程序 它可以通过远程 Https 站点进行 REST Api 调用 远程站点由受信任的证书签名 它在 Windows 上运行良好 但由于 SSL 证书问题 在 OS X 上运行时遇到问题 我做了一些挖掘 发现原
  • Rfc2898DeriveBytes 与密码的 Sha2 哈希生成

    我最近知道使用 SHA256 为加盐密码生成密码哈希 在阅读了一些有关加盐密码和安全性的内容后 我看到rfc2898derivebytes and passwordderivebytes NET 中的类 使用有什么好处吗rfc2898der
  • php字符串是值类型吗?

    为什么php的string是值类型 每次将参数传递给函数时 每次进行赋值时 每次连接都会导致字符串被复制时 它都会被复制到各处 我的 NET 经验告诉我 它似乎效率低下 迫使我几乎在任何地方都使用引用 考虑以下替代方案 替代方案1 This
  • 如何检测CSRF漏洞[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定一个网站 如何检测潜在的 CSRF 漏洞 提前致谢 这是一个CSRF https www owasp org index php
  • 警告:您的 git 版本是 1.9.3。存在严重的安全漏洞

    我在部署到 Heroku 期间收到有关 git 1 9 3 严重安全漏洞的警告 我尝试通过 homebrew 更新 git 但发现 git 最初并不是通过 homebrew 安装的 然后我通过自制程序安装了它 brew update bre
  • 使用 CreateRestrictedToken(LUA_TOKEN) 从提升的进程创建低/中进程

    我正在尝试从提升的进程创建中或低完整性进程 我知道还有其他类似的问题 但它们主要关注使用资源管理器或任务计划程序等解决方法 我想坚持使用CreateRestrictedToken CreateProcessAsUser 我认为一定可以以某种

随机推荐

  • python,将字典转换为按值而不是键排序的列表

    我正在构建一个 collections defaultdict int 来记录某个键在一组数据中出现的次数 后来我希望能够以降序方式对其进行排序 显然是先将其转换为列表 首先按最高值排序 我创建了如下字典 adict defaultdict
  • 是否可以使用 Google Glass 拍照而无需“点击接受”?

    我按照此处的代码使用 Google Glass 相机捕获图像 https developers google com glass develop gdk media camera camera capturing images or vid
  • C/C++ - 运行系统(“process &”),然后写入其标准输入

    我正在研究 Linux 和 C C 我编写了一个带有一些线程的程序 include pthread h 并使用 sudo 运行它 一个线程运行一个进程 mplayer 并通过添加 使其保持运行 以便system 可以快速返回 system
  • Android studio 搁置的更改消失了,甚至在 .idea/shelf 目录中也没有

    我在 Android studio 中搁置了一些更改 然而 由于某种原因 搁置的更改不再存在 我已经检查了 project directory idea shelf 但它们也不在那里 Android studio 是否会在 idea she
  • Twilio:自动驾驶仪发起对话

    我们是一家送货服务公司 下订单后 我们希望向我们的司机发出送货工作邀请 这些职位是先到先得 订单在我们的 NodeJS 服务器上处理 在使用 Twilio Autopilot 处理对话 询问工作详细信息 的同时 向每位司机发送短信 SMS
  • 将函数与 Angular 7 中注入的 html 绑定

    我想使用innerHTML 在运行时将函数绑定到注入的html 中 我的组件 Component selector my app template div div styleUrls my app css encapsulation Vie
  • ffprobe/ffmpg 静音检测命令

    我正在研究流静音检测 它正在 ffmpeg 中执行以下命令 ffmpeg i http mystream com stream af silencedetect n 50dB d 0 5 f null 2 gt log txt 我想获得日志
  • Elasticsearch 对字符串排序未返回预期结果

    当对包含多个单词的字符串字段进行排序时 Elasticsearch 会拆分字符串值并使用最小值或最大值作为排序值 即 当对值为 老虎之眼 的字段进行升序排序时 排序值为 Eye 当按降序排序时 排序值为 Tiger 假设我的索引中有 老虎之
  • C# 可以在列表框中显示图像吗?

    C 简而言之 我可以在列表框中显示图像吗 我有一个用户列表 我想在某些名称旁边显示一个绿色勾号 这可能吗 Thanks 以下代码显示如何在列表框中进行自定义绘图 using System Windows Forms using System
  • 如何找出文件的编码? C#

    好吧 我需要找出我在某个目录中找到的哪些文件是 UTF8 编码的 或者是 ANSI 编码的 以更改我稍后决定的其他编码 我的问题是 我如何确定文件是 UTF8 还是 ANSI 编码 这两种编码实际上都可以在我的文件中使用 没有可靠的方法来做
  • 将 Objective-C 代码转换为 C++ 以检测 OS X 上的用户空闲时间

    我正在开发 Qt C 应用程序 我需要简单的函数来在 Mac OS X 上以秒为单位检索用户空闲时间 我发现这个代码用于检测用户空闲时间 include
  • 如何确定主线程上运行的内容 + 减慢 UI 速度?

    我在我的应用程序中添加了新的数据加载功能 它的目的是将大型数据库的内容从移动设备传输到后端并进行处理 在我在此管道中运行的每个函数中 该函数的全部内容都在一个 dispatch async 这会分派到非主线程 我还通过日志验证了这些功能是否
  • 自动增量不适用于具有复合键的实体类

    我希望我的复合键元素之一自动递增 并且我正在为实体类使用嵌入键 因此我无法使用生成值注释来解决问题 因为 GeneratedValue使用时注释被忽略 Embeddable or EmbeddedId 你不能使用 GeneratedValu
  • DC.js 到 React 的转换

    有 dc js 反应转换的示例吗 对折线图 表格和时间滑块 带画笔的条形图 感兴趣 任何帮助 将不胜感激 Thanks 这是将 DC js 转换为 React 的开始 使用的库的版本如下 package json dependencies
  • Visual Studio 调试器提示和技巧(适用于 C/C++ 项目)

    我对有关在 Visual Studio 调试器中调试 C C 项目的提示和技巧感兴趣 我最近发现 如果您有一个指向某种数据类型的指针 比如说 char ptr 那么您可以使用以下语法在监视窗口中将其视为数组 ptr 10 这将显示 ptr
  • 从安装项目重新启动系统

    我正在使用 Visual Studio 创建一个安装项目 我想在安装成功完成后重新启动系统 我想要一次的努力 我不想每次在将设置交付给客户之前使用任何外部工具 实用程序修改设置 我可以调整安装项目本身吗 我怎样才能做到这一点 您可以使用 O
  • MatSort 未定义 - Angular 5

    我正在尝试在我的角度应用程序中实现材质表 分页和过滤器工作正常 但我无法对表格进行排序 我对 MatSort 的引用是未定义的 我确实将其导入到 AppModule 中 import MatTableModule from angular
  • 安卓版本设置

    我希望我的 Xamarin Android 应用程序支持 API 级别 16 及更高级别 但我对 Visual Studio 的属性窗格中存在三种不同的版本设置感到困惑 属性的名称是 Compile using Android versio
  • (Windows Phone 10) 是否可以在 Windows Phone 10 中以编程方式编辑、添加新联系人?

    我想在 Windows Phone 10 中以编程方式实现功能编辑和添加联系人 是否可以 有相关样本吗 以下是用于创建联系人的代码片段 public async Task AddContact String FirstName String
  • 加盐哈希 - 为什么文献中将盐视为夏娃已知的盐?

    标题说明了一切 我不明白 为什么你不应该像密码一样保密你的盐 或者我误解了什么 盐被视为公开的主要是因为没有必要保密 盐的目的主要是使字典攻击变得更加困难 不太实用 在字典攻击中 攻击者对字典中的常用单词进行哈希处理 并 如果他是认真的 用