Как зашифровать данные PIN-кодом?
Стандартные инструменты Web Crypto API позволяют сгенерировать пару закрытый-открытый ключ для шифрования и дешифрования данных.
А как сделать так, чтоб сначала пользователь придумал PIN-код, а потом система зашифровала какие-либо данные этим пин-кодом? А потом этим же пин-кодом расшифровала его? Предполагается, что пин-код состоит из 4 или 6 цифр.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Encrypt PIN</title>
</head>
<body>
<style>
h1 {
margin: 0;
font-size: 22px;
}
p {
margin: 16px 0 12px;
}
.columns {
display: grid;
grid-template-columns: repeat(2, 1fr);
}
</style>
<h1>Шифрование данных PIN-кодом</h1>
<section class="columns">
<div>
<p>Придумать пин-код и зашифровать данные</p>
<form id="encryp">
<input id="encrypt-pin" type="password" placeholder="Придумайте пин-код">
<input id="encrypt-data" placeholder="Данные для шифрования">
<input id="encrypt-button" type="submit" value="Encrypt">
</form>
<div id="encrypt-export"></div> <!-- Здесь выводится зашифрованная информация -->
</div>
<div>
<p>Ввести пин-код и расшифровать данные</p>
<form id="decrypt">
<input id="decrypt-pin" type="password" placeholder="Пин-код шифрования">
<input id="decrypt-data" placeholder="Данные для расшифрования">
<input id="decrypt-button" type="submit" value="Decrypt">
</form>
<div id="decrypt-export"></div> <!-- Здесь выводится расшифрованная информация -->
</div>
</section>
</body>
</html>
|
https://developer.mozilla.org/en-US/...ypto/deriveKey
Там последний пример - как из некоего пароля получить ключ, а потом этим ключом шифровать данные. |
Цитата:
А как сделать так, чтобы пароль этот хранился локально в каком-либо виде, но и в то же время был недоступным для пользователей, которые обладают навыками программирования и потенциально могут просто получить его? |
Цитата:
В крипто апи для этого используется метод deriveKey() желательно по алгоритму PBKDF2 Цитата:
В крипто апи это методы encrypt() и decrypt() по алгоритму AES-GCM с этим алгоритмом желательно хранить/передавать уникальный вектор инициализации для каждого зашифрованного сообщения этот вектор не является секретным и может открыто передаваться однако его наличие сильно повышает криптостойкость. |
Цитата:
Так вы имеете ввиду?) |
Цитата:
В таких случаях пытаются реализовать другие меры например двух факторную авторизацию. Тогда злоумышленнику понадобиться доступ и к личному телефону или персональному ключу. |
Цитата:
|
Цитата:
1. salt 2. iv - почти тоже самое что и salt 3. зашифрованный текст И когда требуется расшифровка — вводим пароль и всё — данные расшифровываются. Сам пароль получается вообще никак не надо ни хэшировать, ни хранить где-либо. |
Цитата:
|
Цитата:
Что бы этого избежать в систему криптообмена вводят третий фактор не зависящий от скомпрометированной части системы. Например шифрование и расшифровку производит отдельное устройство вставленное в USB порт или сервис в интернете присылает SMS необходимое для расшифровки. В целом не так важно как третий фактор будет работать с системой главное не полагаться на скомпрометированную часть системы полностью. |
| Часовой пояс GMT +3, время: 14:48. |