公钥可以具有与私钥不同的长度(加密)吗?

罗尔夫

我有一个1024位的私钥,并用它来生成一个公钥。这是否自动意味着我的公钥也具有1024加密?还是可以采用较小的加密大小?(512,256 ...)

PS:我最感兴趣和谈论的是RSA密钥中模数(“ n”)的大小。大小通常为1024或2048位。但是我很高兴看到这引发了讨论,所有这些都满足了我对密码学的兴趣。

Ben

不可以。密钥对中的公钥始终与私钥大小匹配,实际上它是从私钥派生的。

但是,对于某些公共密钥密码实现,例如OpenPGP,将使用分配给不同任务的子密钥来创建密钥。这些子键的大小和创建它们的主键的大小可以不同。在那些情况下,公钥数据将指示与相应私钥数据匹配的主密钥和子密钥的密钥大小。

尽管许多其他公共密钥实现不使用子密钥(例如TLS),所以您只会看到单个密钥的大小。同样,该密钥大小将同时在公共密钥数据和私有密钥数据中指示。

您将看到的唯一密钥大小变化是将非对称加密与对称加密一起使用时。对称加密(会话密钥)将更小,但它使用完全不同的算法(例如AES,TWOFISH等),并且不属于公共密钥(OpenPGP除外),因为它不保存对称密码首选项利用实时连接建立对称加密的通信并交换会话密钥数据)。

编辑:有关公钥和私钥数据之间关系的更多详细信息(也称为证明David错误)

指向RSA很好,但它取决于密钥交换协议,为此,我们将使用Diffie-Hellman密钥交换原始专利,该专利现已过期。两者都有示例和密钥交换方法以及公共密钥和私有密钥之间的关系的说明。

实现此关系的算法(包括RSAEl-Gamal)都同时创建公钥和私钥。特别是通过创建私钥,然后再生成公钥。公钥继承了构成它的私钥的所有功能。获取两个组件之间不匹配的详细信息唯一方法是通过某种方式独立于私钥生成公钥。当然,这里的问题是它们将不再是密钥对。

RSA和El-Gamal的密钥生成说明都解释了公钥和私钥之间的公共数据,特别是公钥的所有组件都是私钥的一部分,但是私钥包含解密数据所必需的其他数据和/或签名数据。在El-Gamal中,公共分量是G,q,g和h,而私有分量是G,q,g,h和x。

现在,由于在算法中没有提到密钥对的位大小,是的,这是事实,但是在生成私钥时,它们的每个实际实现都将选定的密钥大小作为常量之一纳入其中。这是用于在GnuPG中生成密钥的相关代码(选择了所有选项之后,包括选择密钥大小和指定密码):

static int
do_create( int algo, unsigned int nbits, KBNODE pub_root, KBNODE sec_root,
           DEK *dek, STRING2KEY *s2k, PKT_secret_key **sk, u32 timestamp,
       u32 expiredate, int is_subkey )
{
  int rc=0;

  if( !opt.batch )
    tty_printf(_(
"We need to generate a lot of random bytes. It is a good idea to perform\n"
"some other action (type on the keyboard, move the mouse, utilize the\n"
"disks) during the prime generation; this gives the random number\n"
"generator a better chance to gain enough entropy.\n") );

  if( algo == PUBKEY_ALGO_ELGAMAL_E )
    rc = gen_elg(algo, nbits, pub_root, sec_root, dek, s2k, sk, timestamp,
         expiredate, is_subkey);
  else if( algo == PUBKEY_ALGO_DSA )
    rc = gen_dsa(nbits, pub_root, sec_root, dek, s2k, sk, timestamp,
         expiredate, is_subkey);
  else if( algo == PUBKEY_ALGO_RSA )
    rc = gen_rsa(algo, nbits, pub_root, sec_root, dek, s2k, sk, timestamp,
         expiredate, is_subkey);
  else
    BUG();

  return rc;
}

三种算法之间的细微差异与已发布算法中引用的项的值有关,但是在每种情况下,“ nbits”都是一个常数。

在用于在OpenSSL,OpenSSH和任何其他使用公钥密码学的系统中生成密钥的代码中,您会发现与密钥大小相关的相同一致性。在每个实现中,为了具有匹配的公钥和私钥对,必须从私钥派生公钥。由于私钥是使用密钥大小作为常数生成的,因此该密钥大小必须由公钥继承。如果公用密钥没有包含所有与私钥正确的共享信息,那么根据定义,公用密钥将与该密钥不匹配,因此加密/解密过程和签名/验证过程将失败。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

公钥可以具有与私钥不同的长度(加密)吗?

来自分类Dev

私钥长度>公钥?

来自分类Dev

公钥加密与私钥加密

来自分类Dev

Python加密,RSA公钥/私钥,带有大文件

来自分类Dev

几个程序集可以具有相同的公钥吗?

来自分类Dev

GnuPG生成公钥/私钥对,其中公钥和私钥相同且没有不同

来自分类Dev

openssl可以将SSH公钥转换为没有私钥的PEM文件吗?

来自分类Dev

具有公钥/私钥的java-jwt

来自分类Dev

我可以使用puttygen从最后一个公钥生成私钥吗?

来自分类Dev

如何在Ruby中使用PKI(公钥/私钥)加密?

来自分类Dev

使用公钥/私钥的iOS App数据加密

来自分类Dev

PHP openssl加密解密错误?无效的公钥/私钥?

来自分类Dev

如何在SJCL中实现公钥/私钥加密?

来自分类Dev

C#BouncyCastle-使用公钥/私钥进行RSA加密

来自分类Dev

公钥/私钥加密如何工作,由谁生成密钥对?

来自分类Dev

PHP openssl加密解密错误?无效的公钥/私钥?

来自分类Dev

如何在Ruby中使用PKI(公钥/私钥)加密?

来自分类Dev

公钥/私钥对AES会话密钥进行加密

来自分类Dev

Javacard安全性设计:所有智能卡都具有相同的公钥和私钥是一个好主意吗?

来自分类Dev

当我用我的公钥加密消息时,我可以用相同的公钥读取它吗?

来自分类Dev

android通用图像加载器获取具有私钥/公钥的图像

来自分类Dev

使用现有公钥的RSA加密

来自分类Dev

是否可以从GPG公钥中恢复私钥?

来自分类Dev

是否可以从GPG公钥中恢复私钥?

来自分类Dev

Powershell脚本中具有多个公钥的GPG加密文件

来自分类Dev

iOS:使用公钥(具有模数和指数)进行RSA加密

来自分类Dev

证明我拥有与公钥关联的私钥

来自分类Dev

如何通过在 java 中指定不同的输入来生成有效的 RSA 1024 位公钥和私钥?

来自分类Dev

RSA私钥和公钥

Related 相关文章

  1. 1

    公钥可以具有与私钥不同的长度(加密)吗?

  2. 2

    私钥长度>公钥?

  3. 3

    公钥加密与私钥加密

  4. 4

    Python加密,RSA公钥/私钥,带有大文件

  5. 5

    几个程序集可以具有相同的公钥吗?

  6. 6

    GnuPG生成公钥/私钥对,其中公钥和私钥相同且没有不同

  7. 7

    openssl可以将SSH公钥转换为没有私钥的PEM文件吗?

  8. 8

    具有公钥/私钥的java-jwt

  9. 9

    我可以使用puttygen从最后一个公钥生成私钥吗?

  10. 10

    如何在Ruby中使用PKI(公钥/私钥)加密?

  11. 11

    使用公钥/私钥的iOS App数据加密

  12. 12

    PHP openssl加密解密错误?无效的公钥/私钥?

  13. 13

    如何在SJCL中实现公钥/私钥加密?

  14. 14

    C#BouncyCastle-使用公钥/私钥进行RSA加密

  15. 15

    公钥/私钥加密如何工作,由谁生成密钥对?

  16. 16

    PHP openssl加密解密错误?无效的公钥/私钥?

  17. 17

    如何在Ruby中使用PKI(公钥/私钥)加密?

  18. 18

    公钥/私钥对AES会话密钥进行加密

  19. 19

    Javacard安全性设计:所有智能卡都具有相同的公钥和私钥是一个好主意吗?

  20. 20

    当我用我的公钥加密消息时,我可以用相同的公钥读取它吗?

  21. 21

    android通用图像加载器获取具有私钥/公钥的图像

  22. 22

    使用现有公钥的RSA加密

  23. 23

    是否可以从GPG公钥中恢复私钥?

  24. 24

    是否可以从GPG公钥中恢复私钥?

  25. 25

    Powershell脚本中具有多个公钥的GPG加密文件

  26. 26

    iOS:使用公钥(具有模数和指数)进行RSA加密

  27. 27

    证明我拥有与公钥关联的私钥

  28. 28

    如何通过在 java 中指定不同的输入来生成有效的 RSA 1024 位公钥和私钥?

  29. 29

    RSA私钥和公钥

热门标签

归档