【问题标题】:Is it possible to access SCrypt using the Java Cryptography Architecture?是否可以使用 Java 密码体系结构访问 SCrypt?
【发布时间】:2017-09-01 05:37:46
【问题描述】:

我正在使用 Bouncy Castle 在 Java 中编写应用程序,但我仍然希望通过 Java 密码体系结构编写尽可能可移植的代码。是否可以通过 JCA 访问 SCrypt 算法?

In the list of algorithms for SecretKeyFactory 不存在,只有:

  • AES
  • ARCFOUR
  • DES
  • DESede
  • PBEWithAnd
  • PBEWithAnd
    • PBEWithMD5AndDES (PKCS5, v 1.5),
    • PBEWithHmacSHA256AndAES_128(PKCS5,v 2.0)
  • PBKDF2WithHmacSHA1

实际上,该文档在任何地方都没有提到 Scrypt。

【问题讨论】:

  • 那些当然不会列出它。这些是默认实现附带的标准。如果您使用的是其他提供商,例如 BC,他们将列在 他们的 文档中。但是,考虑到 scrypt 比大多数较旧的哈希算法要复杂一些,您可能无法编写仅 JCA 的代码而仅添加 BC 作为提供程序。因此,您将使代码直接依赖于 BC 包。
  • 对于密码派生和密码验证器,您可以使用PBKDF2,这是 NIST 的建议和标准。 PBKDF21 的一些实现在 RFC 编号之后命名为 Rfc2898DeriveBytes
  • @zaph:我的理解是 Scrypt 和 PBKDF2 与 CPU 攻击的强度相似,而 Scrypt 由于内存密集,也比 PBKDF2 更能抵御 GPU 攻击;那么,为什么我会选择 PBKDF2 而不是 Scrypt?
  • PBKDF2 是经过批准的标准,可在大多数平台上使用。绝大多数用途的安全差异很小。
  • 如果您已创建威胁模型(以书面形式)并确定 PBDKF2 和 Scrypt 之间的差异是最高漏洞,那么 Scrypt 是正确的选择。还有许多其他加密安全问题可能会造成安全漏洞,例如缺少加密然后 MAC、返回填充错误、未在每次加密时使用随机 IV。

标签: java encryption bouncycastle


【解决方案1】:

你见过the other thread here on StackOverflow吗?这指向讨论此问题的BS mailing list 的邮件。

金钱报价:

Scrypt 不被 BC JCE 提供者公开

所以如果它现在没有列在可用密码列表中,似乎这一点仍然如此。

我检查了 Java 8 和 BC 1.54.0 上可用的可用密码,这些是可用的密钥工厂算法(不包括别名):

SecretKeyFactory.DES
SecretKeyFactory.DESEDE
SecretKeyFactory.DESede
SecretKeyFactory.PBEWITHHMACGOST3411
SecretKeyFactory.PBEWITHHMACRIPEMD160
SecretKeyFactory.PBEWITHHMACSHA1
SecretKeyFactory.PBEWITHHMACSHA256
SecretKeyFactory.PBEWITHHMACTIGER
SecretKeyFactory.PBEWITHMD2ANDDES
SecretKeyFactory.PBEWITHMD2ANDRC2
SecretKeyFactory.PBEWITHMD5AND128BITAES-CBC-OPENSSL
SecretKeyFactory.PBEWITHMD5AND192BITAES-CBC-OPENSSL
SecretKeyFactory.PBEWITHMD5AND256BITAES-CBC-OPENSSL
SecretKeyFactory.PBEWITHMD5ANDDES
SecretKeyFactory.PBEWITHMD5ANDRC2
SecretKeyFactory.PBEWITHSHA1ANDDES
SecretKeyFactory.PBEWITHSHA1ANDRC2
SecretKeyFactory.PBEWITHSHA256AND128BITAES-CBC-BC
SecretKeyFactory.PBEWITHSHA256AND192BITAES-CBC-BC
SecretKeyFactory.PBEWITHSHA256AND256BITAES-CBC-BC
SecretKeyFactory.PBEWITHSHAAND128BITAES-CBC-BC
SecretKeyFactory.PBEWITHSHAAND128BITRC2-CBC
SecretKeyFactory.PBEWITHSHAAND128BITRC4
SecretKeyFactory.PBEWITHSHAAND192BITAES-CBC-BC
SecretKeyFactory.PBEWITHSHAAND2-KEYTRIPLEDES-CBC
SecretKeyFactory.PBEWITHSHAAND256BITAES-CBC-BC
SecretKeyFactory.PBEWITHSHAAND3-KEYTRIPLEDES-CBC
SecretKeyFactory.PBEWITHSHAAND40BITRC2-CBC
SecretKeyFactory.PBEWITHSHAAND40BITRC4
SecretKeyFactory.PBEWITHSHAANDIDEA-CBC
SecretKeyFactory.PBEWITHSHAANDTWOFISH-CBC
SecretKeyFactory.PBEWithHmacSHA1AndAES_128
SecretKeyFactory.PBEWithHmacSHA1AndAES_256
SecretKeyFactory.PBEWithHmacSHA224AndAES_128
SecretKeyFactory.PBEWithHmacSHA224AndAES_256
SecretKeyFactory.PBEWithHmacSHA256AndAES_128
SecretKeyFactory.PBEWithHmacSHA256AndAES_256
SecretKeyFactory.PBEWithHmacSHA384AndAES_128
SecretKeyFactory.PBEWithHmacSHA384AndAES_256
SecretKeyFactory.PBEWithHmacSHA512AndAES_128
SecretKeyFactory.PBEWithHmacSHA512AndAES_256
SecretKeyFactory.PBEWithMD5AndDES
SecretKeyFactory.PBEWithMD5AndTripleDES
SecretKeyFactory.PBEWithSHA1AndDESede
SecretKeyFactory.PBEWithSHA1AndRC2_128
SecretKeyFactory.PBEWithSHA1AndRC2_40
SecretKeyFactory.PBEWithSHA1AndRC4_128
SecretKeyFactory.PBEWithSHA1AndRC4_40
SecretKeyFactory.PBKDF-OPENSSL SecretKeyFactory.PBKDF2
SecretKeyFactory.PBKDF2WITHASCII
SecretKeyFactory.PBKDF2WithHmacSHA1
SecretKeyFactory.PBKDF2WithHmacSHA1And8BIT
SecretKeyFactory.PBKDF2WithHmacSHA224
SecretKeyFactory.PBKDF2WithHmacSHA256
SecretKeyFactory.PBKDF2WithHmacSHA384
SecretKeyFactory.PBKDF2WithHmacSHA512

我还浏览了其他服务类型,也没有提到 scrypt。

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多