RSAや証明書などを使用して、あらゆる種類のファイルにデジタル署名できるかどうか、または特定の種類のファイルのみに署名できるかどうかを知る必要があります。これはすべて、PHPを使用しています。
例:プレーンテキストファイルにデジタル署名できますか?、画像(png、jpeg、bmp)はどうですか?
グラフィック署名付きの画像を「添付」する必要はありません。
ご協力ありがとうございました。
RSAや証明書などを使用して、あらゆる種類のファイルにデジタル署名できるかどうか、または特定の種類のファイルのみに署名できるかどうかを知る必要があります。これはすべて、PHPを使用しています。
例:プレーンテキストファイルにデジタル署名できますか?、画像(png、jpeg、bmp)はどうですか?
グラフィック署名付きの画像を「添付」する必要はありません。
ご協力ありがとうございました。
Re:RSAや証明書などを使用して、あらゆる種類のファイルにデジタル署名できますか、それとも特定の種類のファイルのみに署名できますか?
A:はい、いいえ。一方では、標準のデジタル署名は、プレーンテキストファイル、画像ファイル、バイナリファイルなど、想像できるあらゆるビットのバンドルに対して計算できます。
しかし、質問は次のようになります。
デジタル署名(それ自体がビットのバイナリ実行)をデータファイルにどのように関連付けますか?データファイル形式では、データにデジタル署名を追加できますか?または、デジタル署名を自分で管理する必要がありますか?おそらく別のファイルとして、おそらく独自に発明したデータ形式を使用して管理する必要がありますか?
デジタル署名されたデータとその署名を取得したら、受信者はデータとその署名をどのように検証して、データに署名した人(ID)と、署名されてからデータが変更されていないこと(整合性)を確認しますか?
デジタル署名をサポートするファイル形式
デジタル署名を本質的にサポートするファイル形式の大きな利点は、受信者が署名されたファイルを受信し、独自の検証ソフトウェアを使用するだけで、デジタル署名とファイルの整合性を検証できることです。受信者は送信者から何もインストールする必要はありません。
デジタル署名をサポートする多くの対応するファイル形式があります。例:pdf、Word .doc、.docx。Excel .xls、.xlsx。xmlファイルに署名するための標準があります。その利点は、xmlをあらゆるタイプのデータのエンベロープとして使用できることです。たとえば、PDFファイルにデジタル署名して誰かに送信することができます。受信者は、標準/無料のAdobe Readerを使用してPDFを開き、そのデジタル署名を確認できます。
プレーンテキストファイル(文字で埋められたファイル)の「フォーマット」は、デジタル署名をサポートしていません。したがって、テキストとそのデジタル署名の封筒が必要になるか、デジタル署名を個別に処理する必要があります。いずれの場合も、受信者はデータを検証するためにソフトウェアを必要とします。(または、プレーンテキストと署名の仕様を提供した後、自分で作成する必要があります。)
S / MIMEは、テキストまたはその他の電子メール/MIMEで整理されたデータにデジタル署名する標準的な方法を提供します。rfc5751を参照してください。ただし、署名された電子メールメッセージを生成または受信/検証できる電子メールエージェント以外では広く使用されていません。Outlookはこれをサポートしています。
phpseclibを使用して、純粋なPHP RSA実装(ここで更新):
<?php
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
extract($rsa->createKey());
$plaintext = 'terrafrost';
$rsa->loadKey($privatekey);
$signature = $rsa->sign($plaintext);
$rsa->loadKey($publickey);
echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified';
?>
CLIopensslの類似点は次のとおりです。
openssl dgst -sha1 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -out signature.txt -sign privatekey.txt plaintext.txt
openssl dgst -sha1 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -prverify privatekey.txt -signature signature.txt plaintext.txt
なぜこれらの異なるファイルにデジタル署名したいのですか?
テキストファイルや画像を実際に変更して、ファイル自体に何らかのデジタル署名が含まれるようにするための標準はありません。
ファイルが改ざんされていないことをユーザーに保証したい場合は、ファイルのMD5ハッシュをユーザーに与えることができます。無料のツールを使用して、ダウンロードしたファイルのMD5ハッシュをチェックし、指定したファイルと比較して、ファイルが変更されていないことを確認できます。これは通常、サードパーティが悪意のあるコードを挿入する可能性のあるソフトウェア/バイナリパッケージに使用されます。
もう1つの可能性は、ユーザーが特定のファイルの信頼性を検証できるようにすることです。この場合、ユーザーは、テキストファイルまたは画像があなたからのものであることを確認したい場合があります。これは、エンドユーザーがファイルの署名を公開鍵と比較して、ファイルが改ざんされておらず、特定のソースからのものであることを確認できるように、自分だけが知っている秘密鍵を持つファイルのMD5ハッシュを取得するのとほとんど同じように機能します。PGP(かなり良いプライバシー)はこのためのフレームワークを提供します。
詳細については、PGPの紹介ドキュメントを確認することをお勧めします。http://www.pgpi.org/doc/pgpintro/