Как зашифровать данные 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, время: 18:49. |