首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最流行的RSA密钥格式

最流行的RSA密钥格式
EN

Security用户
提问于 2014-05-01 08:54:25
回答 1查看 4.6K关注 0票数 5

我们正试图决定我们的应用程序应该使用哪种RSA密钥格式。理想的格式将在大多数流行的平台/框架中得到广泛使用和支持。这将使第三方更容易与我们的系统集成。那么,RSA密钥格式中哪一种最接近于此呢?

EN

回答 1

Security用户

发布于 2014-05-01 13:36:52

对于私钥存储,您主要会发现:

  • OpenSSL是做什么的。这实际上是在PKCS#1末尾指定的ASN.1格式(RSAPrivateKey类型)。当该对象被be 64编码为PEM格式时,标题将是:-----BEGIN RSA PRIVATE KEY-----。原始(二进制)格式为“原样”,但PEM包含对称加密选项(带有密钥或密码)。这种PEM格式并不是真正的标准化或文档化,而是“OpenSSL所做的”。
  • PKCS#8。对于RSA密钥,它将是来自PKCS#1的ASN.1格式的包装器,并具有密钥类型的显式规范(即“这是RSA")。PKCS#8还包括对称加密选项。OpenSSL还支持PKCS#8,并可以将其编码到PEM中,这一次使用的是报头:-----BEGIN PRIVATE KEY----- (请注意与前一种情况的不同:键类型不再在PEM头中指定,因为ASN.1结构包含该信息)。虽然使用PEM编码的PKCS#8文件可以包含PEM级别的加密,但这很少被执行,因为PKCS#8也可以在内部进行加密。PKCS#8受益于许多框架中的支持,例如Java对这种格式的了解。
  • PKCS#12,又称"PFX“。这实际上是一种通用存档格式,它具有可选的加密和完整性检查功能,可用于将一个(或多个)私钥和相应的X.509证书组合在一起。如果您将公钥存储在证书中,那么您将希望使用这种格式,因为许多系统本机都知道这种格式(例如,MacOS和Windows可以直接读取它)。
  • OpenPGP格式。这将在大多数由GnuPG处理的“键环”中使用。它不是以ASN.1为基础的。如果您必须自己重新实现它,那么它的管理要比PKCS#8要简单一些。这种格式在现有的编程框架中很少被了解,但是可以使用现成的开源库(例如GnuPG或弹跳城堡)。
  • OpenSSH支持什么。SSH一直使用自己的格式,但是对于私钥,OpenSSH可以使用OpenSSL格式(包括OpenSSL特定的和PKCS#8)。

对于公钥,有几个曲折:

  • 在OpenSSL和X.509世界中,公钥并不“作为自己”存在,而只是作为X.509证书的一部分存在。您可能希望将您的公钥存储在证书结构中,该结构可以(根据传统)自签名,因为X.509证书格式中有一个“签名”字段。证书中包含公钥本身的部分称为SubjectPublicKeyInfo (在标准中查找它),它是一种特定于算法的格式的包装器,它将我们带回到PKCS#1。在现实世界的应用程序中偶尔会发现经过DER编码的SubjectPublicKeyInfo结构,但它们是非常罕见的。
  • OpenPGP有自己的公钥格式。
  • OpenSSH有自己的公钥格式。注意复数:有几个。启动这里以获得描述。

对于互操作性和集成,我认为它是X.509+PKCS#8 (可能使用PKCS#12)和OpenPGP之间的纽带。就我个人而言,我会使用前者,但这主要是出于习惯。

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

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

复制
相关文章

相似问题

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