1

復号化する必要がある暗号化された要素を含む xml ドキュメントがあります。以下のxmlとxmlencについて読んだことから、この要素は送信者によって生成された対称キーでAES256-CBCを使用して暗号化されます(暗号化されたデータは2番目のCipherValue要素にあります)。次に、送信者は AES キーを RSA で暗号化しました。送信者は私の公開鍵を使用して、この RSA 暗号化を行う必要があります。暗号化された鍵は、以下の xml の最初の CipherValue に入れられました。

したがって、データを復号化するには、次のことを行う必要があります。 1. Base64 デコードし、送信者が使用する公開 RSA キーに対応する RSA 秘密キーを使用して AES キーを復号化します。2. 手順 1 で復号化された AES キーを使用して、2 番目の CipherValue 要素の暗号化されたデータを Based64 で復号化し、復号化します。

これは正しいです?

さて、これが私の問題です...送信者に公開鍵を渡していません。代わりに、送信者は公開鍵を含む証明書を私に提供し、それらを使用して復号化できると主張しています-私は彼らが秘密鍵で暗号化したので、公開鍵で復号化できることを暗示していると思います. 私が読んだすべてのことから、これはどのように機能するかではありません。代わりに、公開鍵で暗号化して、秘密鍵でデータを復号化できるようにする必要があります。

ここで正しいのは誰ですか? 秘密鍵で暗号化してから公開鍵で復号化できますか?

価値があるので、JCEでこれを試してみましたが、公開鍵でAESキー(最初にbase64でデコード)を復​​号化しようとすると、BadPadding例外が発生します。

XML 要素からいくつかの詳細を除いたものを次に示します...

<xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
  <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
    <e:EncryptedKey xmlns:e="http://www.w3.org/2001/04/xmlenc#">
      <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
      </e:EncryptionMethod>

      <KeyInfo>
        <X509Data>
          <X509IssuerSerial>
            <X509IssuerName> // issuer name removed </X509IssuerName>
            <X509SerialNumber>11411601377033481249</X509SerialNumber>
          </X509IssuerSerial>
        </X509Data>
      </KeyInfo>

      <e:CipherData>
        <e:CipherValue>
          LLq+NfgwVF/qbMzTPtVnGfaaBxIFc5fmNeAk2dBHaPqb+Hti9Nre7dK+3MOyzucNSYwF76Be0zKZnIeAsQQoKgiU34/BZURq9uFHt8uUYA4dPtcYOIg6F5KR3r7KXBilT/QXYP3UicIcsY2NCA6g0Mp4PrF8b2Yi80Gn2oyZd30=
        </e:CipherValue>
      </e:CipherData>
    </e:EncryptedKey>
  </KeyInfo>

  <xenc:CipherData>
    <xenc:CipherValue>
      // encrypted data removed
    </xenc:CipherValue>
  </xenc:CipherData>
</xenc:EncryptedData>

ありがとう、トロイ

4

0 に答える 0