首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不良自定义加密

不良自定义加密
EN

Cryptography用户
提问于 2019-10-22 16:24:17
回答 1查看 147关注 0票数 1

我希望你能帮我理解这个问题。我知道创建自己的加密不是你应该做的事情,但我很久以前就做了这个简单的“加密”,并与我的老师讨论过。他说它很弱,不应该在生产中使用,但是他不能真正解释为什么(或者至少我没有得到)。也许你们中的一个人会很好地帮助我。

基本概念是创建一个“无穷无尽”的散列,用于加密整个纯文本。我实现了这样的算法:

  1. 用户输入预先共享的秘密和明文。
  2. 哈希是从秘密创建的。
  3. 纯文本被分割成具有散列长度大小的块。
  4. 1块的每个字节根据哈希字节(1字节块+ 1字节哈希= 1字节加密块,2字节块+ 2字节哈希= 2字节加密块等)聚合到哈希字节。
  5. 如果有更多的块要加密,则从最后一个加密块+最后一个纯文本块生成一个新的散列。此散列用于加密下一个纯文本块(如步骤4)。此过程会重复执行,直到所有块都被加密。
  6. 最后但并非最不重要的是,所有加密块都将再次合并回一个

据我所知,只要我使用安全哈希算法,它就应该是安全的。请帮助我理解为什么我错了。

您可以在这里找到一个javascript实现和示例HTML页面:https://github.com/EdwardTivrusky/codebook

EN

回答 1

Cryptography用户

发布于 2019-10-22 17:27:57

根据我对您问题的理解,您的加密方案的工作原理如下:

对于由\ellm=m_1\|\dots\| m_\ell和密钥k组成的消息,密文c=c_1\|\dots\| c_\ell计算为

c_1:=m_1\oplus H(k)

c_i:=m_i\oplus H(c_{i-1},m_{i-1})代表2\le i \le \ell

这个计划有几个问题。首先,它是确定性的,因此不能是CPA安全的,这是我们通常需要的加密方案的基本最小值。

但情况会变得更糟。在安全的任何标准定义中,假定攻击者可以选择或者至少知道明文的一部分。在您的方案中,如果攻击者知道n^{\text{th}}明文块m_n,他们就可以计算H(c_n,m_n),从而显示下一个明文块(扩展到消息的其余部分)。

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

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

复制
相关文章

相似问题

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