首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KDF和公钥加密的最安全算法

KDF和公钥加密的最安全算法
EN

Security用户
提问于 2019-09-24 04:16:15
回答 2查看 863关注 0票数 1

我正在开发一个应用程序,它需要从用户提供的密码中派生私钥/公钥对,然后使用公钥加密一些文本(长度可达1000个字符),使其只能由配对私钥解密。密码和私钥不会存储在任何地方,因此没有用户的密码,任何访问数据库的人都无法解密文本。我知道我需要使用KDF算法来生成密钥,并使用某种公钥加密算法来加密/解密。

我知道有几种安全算法,但也有一些被认为是破解和不安全的算法。对于KDF和加密,我可以使用哪些最安全的算法?我应该遵循哪些最佳实践来确保数据尽可能安全?

我将使用加密算法的Java标准库实现。

EN

回答 2

Security用户

发布于 2019-09-25 12:25:56

就个人而言,就像公钥密码学一样,我认为应该使用RSA。造成这种情况的原因有多种:

  • RSA已经被许多人证明是安全的。
  • RSA被广泛使用和实现,因此信息非常广泛。
  • RSA理论上是量子证明,只要您使用足够大的密钥。
  • RSA密钥可以是多个大小的

如果你愿意的话,你可以使用椭圆曲线密码术。

KDF's

就KDF而言,PBKDF2HMAC是最常用的标准。Argon2,氪和AES-KDF也被广泛使用.

目前,我所有的应用程序都使用PBKDF2HMAC,但我正在迁移到Scrypt,因为它更安全。

票数 1
EN

Security用户

发布于 2019-09-25 05:41:15

您只需使用安全算法

散列一次密码即可。

我将使用椭圆曲线来开发我的语句,因为对于较小的密钥(EC的256位和RSA的3072位具有相同的安全性。),它们与RSA一样健壮,而且计算速度更快。此外,RSA密钥要求不同,因为您需要找到素数。

在Curve25519文档中,您可以为私钥生成提供以下内容:

计算密匙。在您的程序中,要生成一个32字节的Curve25519密钥,首先从密码安全源生成32个秘密随机字节:我的机密0,mysecret1,.,mysecret31。然后执行mysecret0 &= 248;mysecret31 &= 127;mysecret31 |= 64;创建一个32字节的Curve25519秘密密钥mysecret0、mysecret1、.、mysecret31。

所以你只需要256位,然后修改几位。要获得256位,只需使用KDF (如Argon2 )对密码进行散列。这使得暴力变得更加困难,因为您可以选择一个迭代次数和其他参数,并相应地选择以满足您的安全需求。

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

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

复制
相关文章

相似问题

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