2

ブローカーからのテスター ページがあり、最初のセクションに証明書 (.crt) ファイルを含めます。

MIIFETCCA/mgAwIBAgIUMDAwMDAwMDAwMDAwM...

私の秘密鍵で暗号化された文字列を含む 2 番目のセクション。元の文字列は " f2e140eb-2b09-44ab-8504-87b25d81914c" で、結果の私の秘密鍵で暗号化された文字列は次のとおりです。

ugSMAsCQlIKIlQ17exIvSEqkA60eWcnF4AAEVJG3BP4hYcCc+DCKeeHur6X2ShbjYWoeugPJe7AecPO0JY9jG75R67jS1OLUeUkB7HZqXCSzPANKWjQ/vx+0O0PlHHcWI24aUFCSiA2iuNXcssIbt2uJAChegXa7XKgNXxDJm+o=

「Decipher」というラベルの付いたボタンがあり、それを押すと、次のようになります。

�����������������������������������������������������������������������������������������f2e140eb-2b09-44ab-8504-87b25d81914c

ご覧のとおり、元の文字列を取得しましたが、最初は奇妙な文字が多く、これでは署名プロセスを続行できません。

テクニカル ノート (おそらく私は何か間違ったことをしているのかもしれません): 最初の部分 (certificate:MIFETC.....) は次のように取得されます:

$filename="instancia_ope.cer";
$imgbinary = fread(fopen($filename, "r"), filesize($filename));
$certificadoInstancia64 = base64_encode($imgbinary);

そして、私の秘密鍵 (ugSMasCQlIKI......) で暗号化された文字列:

$llave_priv = file_get_contents("i.pem");  //i.pem is my private key file
$plaintext = "f2e140eb-2b09-44ab-8504-87b25d81914c";
openssl_private_encrypt($plaintext, $encrypted, $llave_priv);
$reto = base64_encode($encrypted);

.keyファイルからi.pemファイルを取得しました

openssl pkcs8 -inform DER -in instancia_ope.key -out i.pem

私の手順に誤りはありますか?ブローカに解読ボタンの機能を尋ねましたが、回答がありません。

4

2 に答える 2

0

ブローカーは、OpenSSLがデフォルトで行うようなPKCS#1パディングRSAではなく、プレーンな教科書RSA復号化を行うように見えます。したがって、ブローカーのテストアプリケーションはパディングを削除せず、結果としてパディングされたプレーンテキストブロックを取得します。

openssl_private_encryptOPENSSL_NO_PADDINGのオプションの4番目の引数として使用することにより、ランダムなパディングなしで暗号化を試みることができます。

openssl_private_encrypt($plaintext, $encrypted, $llave_priv, OPENSSL_NO_PADDING);

パッドなしのプレーン教科書RSAを使用することは、ほとんどの状況で本質的に安全ではないことに注意してください。一般に、RSAは、 PKCS#12.1OAEPなどの安全なランダムパディングメカニズムとともに使用する必要があります。そうでなければ、復号化と署名の完全な互換性、可鍛性を含む数学的構造に対する簡単な攻撃、セマンティックセキュリティの欠如など、多くの暗号化セキュリティの問題があります。基本的にアドホックRSA署名プロトコルを使用しているように見えるため、これらは状況に当てはまる場合と当てはまらない場合があります。

于 2013-02-16T22:21:16.697 に答える
0

復号化オプションから生の結果を取得したようです。ただし、結果を見ると、その結果は PKCS#1 v2.1 互換の暗号化によって作成されたものではありません。これはおそらく、暗号化手順に問題があることを意味します。

于 2013-02-15T16:19:06.517 に答える