Спосіб зберігання текстових даних. Частина 1steemCreated with Sketch.

in Ukraine on Steem6 months ago (edited)

Безпечне зберігання текстових даних має важливе значення, особливо якщо ці дані містять особисту, фінансову чи іншу чутливу інформацію. Тема, яку я хочу обговорити, стосується абсолютно всього: зберігання банківських даних, паролів, ключів доступу, адреси коханки тощо. Оскільки ми всі тут ведемо блоги в системі блокчейн, не важко припустити, що йдеться також про безпечне зберігання сід-фрази. На мою думку, текст нижче скасує необхідність гравіювання 12 (або 24) слів ключа на сталевій пластині.

Зберігання текстових даних

AES (Advanced Encryption Standard) — це алгоритм симетричного шифрування, який використовується для захисту даних. В цьому я самоучка та багато років займаюся веб-розміткою і дизайном, програмуванням на PHP та трохи JavaScript. HTML — це не програмування, а розмітка. Тобто коди HTML не запускають виконувальний механізм сайту, а лише формують структуру та зовнішній вигляд. У JavaScript для роботи з AES використовуються сторонні бібліотеки, оскільки стандартні функції шифрування не вбудовані в мову.

Шифрування з AES передбачає, що одне й те ж саме секретне слово або ключ використовується як для шифрування, так і для розшифровки даних. Це робить його механізм симетричним, на відміну від асиметричних методів, де використовуються два різні ключі (публічний для шифрування і приватний для розшифровки).

Для реалізації AES у JavaScript користувач передає дані (повідомлення) і секретний ключ, а бібліотека шифрує дані, повертаючи зашифрований результат. При зворотному процесі з тим самим ключем бібліотека виконує розшифровку даних.

Приклад шифрування та дешифрування тексту з використанням AES і бібліотеки CryptoJS:

  1. Підключення бібліотеки. Насамперед додаємо посилання на бібліотеку у свій HTML файл:
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
    
    
  2. Приклад шифрування і дешифрування:
    <p><strong>Розшифроване повідомлення:</strong> <span id="decryptedMessage"></span></p>
    
    <script>
    // Шифрування
    var message = "Текст для шифрування";
    var secretKey = "СекретнийКлюч";
    
    var encrypted = CryptoJS.AES.encrypt(message, secretKey).toString();
    
    // Виводимо зашифроване повідомлення на сторінку
    document.getElementById('encryptedMessage').textContent = encrypted;
    
    // Розшифрування
    var decrypted = CryptoJS.AES.decrypt(encrypted, secretKey);
    var originalMessage = decrypted.toString(CryptoJS.enc.Utf8);
    
    // Виводимо розшифроване повідомлення на сторінку
    document.getElementById('decryptedMessage').textContent = originalMessage;
    </script>
    

Зашифрований текст виглядає приблизно так:

Шифрування AES

Цей приклад демонструє шифрування тексту. До безпеки зберігання ключа потрібно ставитися з особливою серйозністю, оскільки відновити його можна хіба що методом брутфорсу (перебору паролів). Однак пароль не обов’язково має бути суперскладним, достатньо, щоб його знали лише ви. Наприклад, я іноді використовую як пароль індекс мого району, де я виріс. Це шестизначний номер, який змінився після розпаду Союзу, але я його запам'ятав на все життя (тоді ще не було електронної пошти).

Особисто я зберігаю зашифрований текст в інтернеті, в хмарному сховищі. Приклад скрипту для розшифрування — у цій статті ;-)

Дозволяю використання інформації з цієї статті виключно на свій страх і ризик.