5

PKCS#12は、秘密鍵と対応する X.509 証明書を標準化された単一のファイル形式にまとめるための便利な方法です。ただし、この仕様は 1999 年に RSALabs によって公開され、対称暗号化に RC4、RC2、および TripleDES のみを使用しています。より多くの暗号化アルゴリズムやその他のキー導出関数を追加する、スキームに対する一般的な準標準拡張機能はありますか? OpenSSLは AES と Camellia のサポートを実装するように文書化されていますが、対応する標準を検索すると空白になるため、これは OpenSSL 固有の実装のようです。これらの拡張機能の ASN.1 モジュールと疑似コードを文書化した人はいますか?

4

1 に答える 1

3

PKCS#12は、他の標準のビルディングブロックを使用します。

推奨される暗号化モードは、PKCS#5(PBES2)のパスワードベースの暗号化に基づいています。これは、 PKCS#5v.2.1でのSHA-2およびAESのサポートによって拡張されました。

OpenSSLがAESを使用する場合、次のようになります。

 684 30  806:                     SEQUENCE {
 688 30  802:                       SEQUENCE {
 692 06   11:                         OBJECT IDENTIFIER
            :                           pkcs-12-pkcs-8ShroudedKeyBag (1 2 840 113549 1 12 10 1 2)
 705 A0  723:                         [0] {
 709 30  719:                           SEQUENCE {
 713 30   73:                             SEQUENCE {
 715 06    9:                               OBJECT IDENTIFIER
            :                                 pkcs5PBES2 (1 2 840 113549 1 5 13)
 726 30   60:                               SEQUENCE {
 728 30   27:                                 SEQUENCE {
 730 06    9:                                   OBJECT IDENTIFIER
            :                                     pkcs5PBKDF2 (1 2 840 113549 1
5 12)
 741 30   14:                                   SEQUENCE {
 743 04    8:                                     OCTET STRING
            :                   BA 6B 5B B3 47 27 C9 73
 753 02    2:                                     INTEGER 2048
            :                                     }
            :                                   }
 757 30   29:                                 SEQUENCE {
 759 06    9:                                   OBJECT IDENTIFIER
            :                                     aes128-CBC (2 16 840 1 101 3 4 1 2)
 770 04   16:                                   OCTET STRING
            :                   0F 79 79 0A D3 EC C0 3E 20 B8 51 85 2F 2B 6C 29
            :                                   }
            :                                 }
            :                               }

ソースを読み取ることができる限り、OpenSSLは、PKCS#5 PBES2を使用する場合、パスワードをゼロで終了するUTF-16ではなくASCIIとしてエンコードします。

于 2012-03-09T12:31:08.547 に答える