RSA公钥/私钥问题

问题描述 投票:-1回答:2

我是加密新手,但我有几个问题。我知道这个主题很复杂,但是我并不是专门针对该标准,而是什么可行,也就是说,即使不是真正的RSA方法,即使它不是标准,但应该是安全的。证券化。一般而言,这是关于非对称加密的问题。

1)哪个私钥用于签署证书?是与组织的公钥相关的私钥,还是与公钥有关的私钥。我认为这是第一个,因为在Java中,当我尝试使用不是证书中的公钥对的私钥签名时,它会失败(编辑。我知道它可能取决于“证书”的内容,并且签名只是对字节的一部分签名)。

[如果使用组织的私钥对证书进行签名:这意味着授权机构不能对证书进行签名(它没有组织的私钥):是否意味着签名由提供者提供该组织?

2)与问题有关。 1,但是授权需要私钥生成证书吗?像2遍签名一样,使用两个密钥来验证签名。如果是,具体是出于什么目的?

此外,如果法官不需要私钥,是否足以检查证书是否有效,证书是否正确并且授权机构在数据库中包含给定的公钥(或最大检查字节)如果数据库中的证书与一次性检查的证书相同,则以字节为单位),假设无法从公钥推导出私钥的假设?

3)我对公共/私有和加密/解密关系感到困惑。我所看到和了解到的是,私有加密密钥用于签名,私有解密密钥用于保护通信安全,我们也可以说加密/解密只是一种语言,它除了转换为加密语言外没有其他现实。方向或其他。但是在Java中要使用类Signature对文档进行签名,则需要提供一个私钥来生成签名(如果我正确的话)。另一方面,您使用它来解密通信,对吗?因此,您可以使用它进行加密和解密。可以吗这样做还是我们需要2对密钥来进行安全通信,一个用于证书,另一个用于通信?

4)脱离主题,但我认为RSA密钥是不对称的,但提供相同的数学属性,并且具有某种对称性,因此我们可以使用解密密钥进行双向编码。出于好奇,此示例是否正确:

to the left: encrypt with private key
to the right: encrypt with public key
   ... <-> messageP2 <-> messageP1 <-> message <-> messageR1 <-> message R2 <-> message R3 <-> ...

谢谢

encryption cryptography rsa signing
2个回答
0
投票

拥有授权机构颁发的证书的目的是授权机构证明密钥中的信息是准确的。为了验证该证书,必须使用仅证书颁发机构已知的私钥对证书进行签名。


0
投票

证书的全部重点是对PKI(公钥基础结构)的信任

  • PKI中的密钥始终是密钥对。私有方始终由拥有方保密]
  • 有太多方,每个人都知道其他人的公钥
  • 每个人都知道CA的公钥(或者,如果要多层CA,则已知的CA必须签署子CA的密钥)
  • 每个人的公钥都嵌入到由CA签名的证书中

[如果您现在想与某人交流,则要求他们提供证书...由于您尚不认识他们(或者确切地说,您尚不知道他们的钥匙),因此无法确定正在与目标方通信

他们发送了他们的证书...

现在您可以检查信任链:

他们的证书是由某人签名的……是值得信任的人,并且签名有效吗?

有人值得信赖吗?一个很简单的问题:某人是可以为目标方签署证书的受信任的CA吗?换句话说:我们可以在受信任的CA列表中找到同级CA证书,还是另一个受信任的CA将其证书签名为CA证书?

签名有效吗?如果签名CA pub密钥已知,则可以进行测试

现在,如果我们知道并信任此CA,该怎么办? ...一切正常...但是如果我们不知道该怎么办呢?通常,我们的通信合作伙伴可以提供该CA的证书(因为证书是公开的,换句话说,不是秘密的)

现在我们可以重复...所提供的CA证书是否由可信任的人签名,并且签名有效吗?

整个要点是:不需要具有包含所有公共密钥的庞大数据库,并且通信方只要能够验证证书,就可以自行验证身份。

因此请记住这一点...

1)CA私钥用于对证书进行签名。证书上的签名等同于以下语句:“可以要求签名人对证书中所有值的有效性负责”

2)CA对证书进行签名...在此签名是需要密钥的操作...仅在CA的数据库中拥有证书是不够的...要考虑到证书持有者的身份需要检查,而无法与CA通信]

3)减轻混乱

签名/解密...私钥验证/加密...公钥

通常,用于签名和加密的密码系统是不同的...RSA在这里是独角兽,可同时用于[]

证书背后的想法是,您可以嵌入公共密钥,并将其绑定到身份,以使公共信任的CA足以使两个其他未知方安全地交换其密钥。

4)从数学的角度来看...是...

RSA操作是X ^ e mod N = C ... C ^ d mod N = X

带有X =纯文本... C =密文... N,e,d rsa参数

RSA背后的原理是e * d mod phi(N)= 1

因此

(X^e)^e = X^(e*e)   
(X^(e*e))^d = X^(e*e*d) = X^(e*1) = X^e  
(X^e)^d = X^(e*d) = X^1 = X
© www.soinside.com 2019 - 2024. All rights reserved.