首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么bcrypt是单向的,而Blowfish是可逆的?

为什么bcrypt是单向的,而Blowfish是可逆的?
EN

Cryptography用户
提问于 2016-11-30 05:00:09
回答 4查看 10.1K关注 0票数 13

虽然bcrypt通常被认为是一个不可逆转的散列函数,但它是基于可逆Blowfish密码。我只是好奇这是怎么回事。下面是来自wiki的伪代码:

代码语言:javascript
复制
bcrypt(cost, salt, input)
  state ← EksBlowfishSetup(cost, salt, input)
  ctext ← "OrpheanBeholderScryDoubt" //three 64-bit blocks
  repeat (64)
    ctext ← EncryptECB(state, ctext) //encrypt using standard Blowfish in ECB mode
  return Concatenate(cost, salt, ctext)

我知道第一个bcrypt将通过EksBlowfishSetup密钥释放器函数输出状态作为加密密钥。然后用密钥对文本"OrpheanBeholderScryDoubt"进行加密。

根据https://security.stackexchange.com/questions/66050/should-bcrypt-be-used-for-client-side-password-hashing/66056#66069中的一个答案,bcrypt是不可逆转的,因为BCrypt可以被看作是通过丢弃密钥来加密的。虽然已知的明文攻击几乎是不可能的,但这是什么使bcypt不可逆转?因为我认为已知的明文攻击在计算上仍然是可行的。

我想知道的是,如果我们使用已知的明文攻击(或以其他方式)获得加密密钥(由EksBlowfishSetup(cost, salt, input)生成),并且有传递给EksBlowfishSetup的成本和盐,那么是否有可能获得真正的密码?

根据答案在这里的说法,EksBlowfishSetup使brcypt成为单向的,因为您需要知道传递给它的所有3个参数才能检索明文密码。所以我可以说是EksBlowfishSetup使bcrypt成为不可逆转的吗?

有什么可能对你有帮助:密码技术与实践

EN

回答 4

Cryptography用户

回答已采纳

发布于 2016-11-30 15:27:00

bcrypt使用EksBlowfishSetup ( blowfish密码的扩展密钥步骤函数)将您的密钥展开为一个正确的密码随机密钥来使用它。然后,扩展密钥用于加密某些文本,该加密文本是存储的散列。

因此,攻击者可以知道纯文本("OrpheanBeholderScryDoubt")、成本和盐(它在散列中)。但是Blowfish由于每一个被认为安全的现代密码系统(如AES或Serpent)都是专门设计来防止已知的明文攻击的,这意味着攻击者无法从明文及其对应的密文中获取密钥,因此,他唯一的机会是尝试每一个可确认的密码来加密该文本并获得相同的结果,这是一种用实际已知的硬件“计算上不可行”的野蛮攻击。

票数 4
EN

Cryptography用户

发布于 2016-11-30 23:18:20

因为bcrypt在不可逆算法中使用Blowfish作为组件。这是非常常见的-许多可变输入长度密码算法是由较小的,固定输入长度组件,可能是或不可逆的。

一个例子是沙-3散列函数,它是按照一种称为海绵结构的算法设计的,该算法利用可逆函数(置换)构建哈希函数。

票数 4
EN

Cryptography用户

发布于 2016-11-30 14:04:46

为什么说使用已知的明文攻击计算密钥在计算上是“可行的”?事实并非如此。据我所知,对于短文本来说,Blowfish并不是“坏掉”的,它需要千兆字节的数据才能破解弱键,这使得它对于较长的文本来说更弱一些。“安全”加密算法的一个特点是不可能找到比蛮力更快的方法,只知道加密文本和一些明文就可以恢复加密密钥。由于bcrypt中的密码被用作加密密钥的一部分,因此属性使其成为单向函数。河豚是可逆的,因为如果你知道密钥,你就可以逆转加密。但在这种情况下,您试图找到密钥,知道密文,这是不可能的,除了猜测键和观察结果。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/41955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档