Я заинтересован в том, чтобы что-то, что я шифровал, используя открытый ключ на сервере LAMPhp, расшифровывал, используя соответствующий закрытый ключ на веб-клиенте (по крайней мере, Firefox, лучше всего, если это стандартный JavaScript)
Обратите внимание, что я хочу не просто иметь зашифрованное соединение с использованием SSL / https. Или даже использовать клиентские сертификаты на основе браузера в качестве метода входа / контроля доступа. Я знаю, как сделать обе эти вещи. То, что я хочу сделать, это больше похоже на электронную почту с ключами gpg. Я хочу создать короткое сообщение, которое я буду зашифровывать с помощью открытого ключа пользователя, который только он сможет расшифровать с помощью своего личного ключа. То, что я ищу, - это не конфиденциальность, которая достигается автоматически с помощью ssl, а возможность разрешать дешифрование сообщений только определенным пользователям. Я знаю, что могу легко сделать это с помощью gpg или, возможно, SMIME, и, возможно, это лучший способ, но я бы предпочел альтернативу через Интернет.
У Firefox и т. Д. Есть хранилища сертификатов, и я знаю, что хранящиеся там закрытые ключи вряд ли можно будет экспортировать в javascript по очевидным причинам безопасности, но я бы предположил, что есть какой-то способ -использовать сертификаты из вызовов javascript для расшифровки то ..
Причина, по которой я хотел бы сделать это, заключается в том, что мне нужен безопасный метод для передачи случайно сгенерированного пароля конкретному администратору. Я пытаюсь реализовать полную прозрачность базы данных, и криптография с открытым ключом кажется важной частью этих усилий. Но это один из вариантов использования, к которому у меня возникают проблемы без такой способности.
Так что на стороне 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>";
?>
Обратите внимание, что я обнаружил с помощью stackedoverflow много прекрасных библиотек шифрования javascript ... но я действительно хочу использовать ключи, импортированные в Firefox в соответствии с MyOpenId.com или CaCert.org
Кто-нибудь знает, возможно ли это?
Спасибо,
-Ft