LAMPhpサーバーで公開鍵を使用して暗号化し、Webクライアントで適切な秘密鍵を使用して復号化することに興味があります(少なくともfirefox、標準のjavascriptである場合に最適です)
私がやりたいことは、SSL/https を使用して暗号化された接続を確立することだけではないことに注意してください。または、ブラウザベースのクライアント証明書をログイン/アクセス制御方法として使用することもできます. 私はそれらの両方を行う方法を知っています。私がやりたいことは、gpg キーを電子メールで送信するようなものです。ユーザーの公開鍵で暗号化する短いメッセージを作成できるようにしたいと考えています。この公開鍵は、ユーザーだけが秘密鍵を使用して復号化できます。私が探しているのは、ssl によって自動的に達成されるプライバシーではなく、特定のユーザーのみがメッセージを復号化できるようにする機能です。これは gpg やおそらく SMIME で簡単に実行できることはわかっています。おそらくそれが最善の方法ですが、Web ベースの代替手段を好むでしょう。
Firefoxなどには証明書ストアがあり、そこに保持されている秘密鍵は、明らかなセキュリティ上の理由からjavascriptにエクスポートできない可能性が高いことはわかっていますが、javascript呼び出しからの証明書を使用して何かを復号化する方法があると思います..
これを行いたい理由は、特定の管理者にランダムに生成されたパスワードを与えるための安全な方法が必要だからです。私は完全なデータベース透過性を実装しようとしていますが、公開鍵暗号化はその取り組みの重要な部分のようです。しかし、これは、この種の能力がないと対処できないユースケースの 1 つです。
したがって、php側では、openssl暗号化呼び出しを次のように使用します...
<?php
$browsers_public_key = get_it_from_the_browser_via_apache_maybe();
openssl_public_encrypt($data,$encrypted_ends_up_here,$browsers_public_key);
echo "<html><head>
<script type='javascript'>
function decrypt_textarea(){
??
}
</script>
</head>
<body><textarea id='decrypt_me'> $encrypted_ends_up_here </textarea>
<div id='where_the_plaintext_goes'> </div>
</body> </html>";
?>
stackoverflow を介して多くの優れた JavaScript 暗号化ライブラリを見つけたことに注意してください...しかし、実際には、MyOpenId.com または CaCert.org に従って Firefox にインポートされたキーを使用したいと考えています。
これが可能かどうか誰にもわかりますか?
ありがとう、-FT