即使发送方使用修改后的公钥加密数据,接收方也可以使用私钥解密数据。怎么可能?

时间:2019-01-24 10:39:47

标签: java

我们正在使用SAML在单点登录中进行加密/解密。为此,我们生成了自签名的公私钥对。 SP拥有公私钥对,并与IDP共享公钥,以便IDP可以加密SAML断言。
过程如下:

  1. IDP创建SAML响应XML。
  2. IDP对SAML声明进行加密并将SAML响应发送到SP。
  3. SP接收SAML响应并使用私钥解密SAML断言。

这部分成功完成。

现在,如果IDP修改了公共密钥(甚至是来自公共密钥文件(.txt格式)中的单个字符)并发送带有已修改的公共密钥的加密的断言,那么当SP接收到SAML响应并尝试使用私钥,然后它成功解密,我认为它不应解密SAML断言。因为公钥和私钥是成对计算的。一个公共密钥只能具有其对应的一个私有密钥。由于SAML声明是使用错误的公钥加密的,因此在这种情况下,私钥不应发生解密,而应抛出一些错误。

如果相应的公钥已被修改并且数据已被修改的公钥加密,那么如何仍然可以使用私钥进行解密?

我们正在使用 rsa-1_5 算法进行加密。另外,我们还使用OneLogin Java API来解密SAML断言。

如果我们错过了一些东西,请指导我们正确的方向。

谢谢。

1 个答案:

答案 0 :(得分:0)

这不是我在实际应用中使用的实际公钥。公用文件的格式为.txt。以下是公钥文件的内容:

----- BEGIN证书----- MIIDUzCCAjugAwIBAgIEe6kzLTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwIwMTELMAkGA1UE CBMCVVAxDjAMBgNVBAcTBU5vaWRhMQ8wDQYDVQQKEwZKa3RlY2gxDDAKBgNVBAsTA0pLVDEPMA0G Z1UEAxMGU2hpbHBpMB4XDTE4MDExNzA2NTkzNloXDTE5MDExMjA2NTkzNlowWjELMAkGA1UEBhMC MDExCzAJBgNVBAgTAlVQMQ4wDAYDVQQHEwVOb2lkYTEPMA0GA1UEChMGSmt0ZWNoMQwwCgYDVQQL EwNKS1QxDzANBgNVBAMTBlNoaWxwaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ + v 78WG75zn2SdZ / pZX / efwztIjf7kv3rxfVhdWYMs7wtZMfuap2NfFlHmimcFsXAwnDpDXe7qgxx6K 8zzvwsjh8utp ++ R8DFDypaO + dfxjuaUcth6tTqArNO8inu / AMqrWIo8wi00F850BK787wNF6dGDI JEOG91hLI3JDwXE1d1x / d4ltl7IZAj6bCxsRkBswLOxuebebVooCh8lMkZANGi7ATh6ILBevLs3c gTqDVwulTYb45sOBFmZAQ0Gdx9GjDX054TZh7gI7Y1vqWIAsqPn4Kr3bpOf0YbJfN9pm7NzU / 8hz

-----结束证书-----