首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Skein的流密码?

如何使用Skein的流密码?
EN

Security用户
提问于 2011-07-13 14:30:50
回答 2查看 1.2K关注 0票数 6

我理解NIST哈希函数竞争候选Skein附带了一个内置的块密码,Threefish,它通过使用唯一的块迭代链转换成流密码(对吗?)

吡嗪实现使这一特殊情况更易于使用:

代码语言:javascript
复制
import os
import skein

data = b'Hello World!'
key = b'thisisasecret'
nonce = os.urandom(32)

c1 = skein.StreamCipher(key, nonce=nonce, hasher=skein.skein1024)
c2 = skein.StreamCipher(key, nonce=nonce, hasher=skein.skein1024)

print(c2.decrypt(c1.encrypt(data)))

但是,由于该算法相对较新,我有一大堆问题,最终导致“我如何正确地使用它?”

  • 现在应该多长时间?
  • 我还需要使用PBKDF2吗?(也就是说,这个东西有自己的关键伸展吗?)
  • 我还需要对消息进行认证吗?
  • 如果我一次都不给呢?
  • 如何使用所有可选参数?
  • 我为什么不应该使用它?

我不是一个密码学家,而且Skein的Threefish部分的文档似乎并不容易理解。但是这个算法看起来真的很不错。所以我希望你能帮我。:-)

EN

回答 2

Security用户

回答已采纳

发布于 2011-07-13 15:36:35

您还不应该部署基于Skein的软件。

在内部,Skein是围绕自定义块密码( Threefish )构建的,它可以用作流密码或MAC,但是还没有人真正地研究Threefish的固有安全性,只是因为它如何提供一个好的散列函数,而且即使是在使用时,也还没有得出结论。需要数年的仔细研究才能确定给定的算法“看起来非常安全”。一个一刀切的原语具有巨大的吸引力,特别是对于代码空间有限的嵌入式系统来说,但要想正式认为Threefish是安全的,还需要几年的时间。粗略地说,如果Skein被选为SHA-3 (到2012年底),那么Threefish很可能会作为加密原语开始被调查,在这种情况下,它可能在2016年被宣布为“似乎不错”。你得有耐心。

你需要等待的另一个原因是Skein和/或Threefish可能仍然会受到修改。定期,SHA-3候选人可以“调整”(根据先前的分析设计的轻微修改)。在SHA-3比赛的第二轮比赛中扭动了扭动,然后又在第三轮调整了.哪个版本是用吡咯烷酮实现的?这里有互操作性噩梦的空间。

至于你的其他问题:

  • 串/三不包含任何自动键拉伸。
  • 流密码是流密码,而不是认证流密码。它只做加密。串也可以用于计算身份验证(作为MAC),但是如果您想在两种用法中使用相同的密钥(即,除非您确定它是安全的,而且坦白地说,我也不确定),否则可能会考虑到一些问题。
  • “现在”应该是一个任意的字符串,长度并不是很有限的。在一般的Skein描述中,现在和散列的消息(哈希时)使用相同的输入机制。串作为流密码是一个“只是”哈希函数的一个键,没有输入,但一个非常长的输出。

当然,pyskein可能会添加任意的限制,所以我建议您查看pyskein文档,如果它存在的话。

票数 8
EN

Security用户

发布于 2011-07-15 06:20:15

我完全同意托马斯的观点。你现在不应该用Skein。

相反,我建议您在加密-然后身份验证模式中使用AES-CBC或AES-CTR加密以及CMAC消息身份验证代码。

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

https://security.stackexchange.com/questions/5260

复制
相关文章

相似问题

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