Персональний сайт В'ячеслава Горчіліна
Всі статті
Ще одна реалізація Hash-Mask алгоритму: захист даних передаються на сервер
Іноді існує необхідність додаткового шифрування даних на стороні клієнта, для їх подальшої передачі на сервер. Наприклад, у адміна є панель адміністрування якогось сервісу з якої він відправляє команди управління. Іноді буває недостатньо захистити з'єднання HTTPS-протоколу, тим більше, що є вже багато відомостей про дірки в його реалізації. Не кажучи вже про звичайний незахищеному HTTP.

Завдання виглядає так: підвищити ступінь захищеності передаються на сервер даних, причому сам захист має здійснюватися в браузері клієнта. А це означає, що прослуховування каналів зв'язку, атаки на HTTPS-з'єднання та інші SQL-ін'єкції Вам будуть нестрашні навіть при передачі даних по незахищеним протоколами.

Для подібних завдань був розроблений симетричний Hash-Mask алгоритм. Його відмітні особливості: простота при високій криптозащищенности, і можливість реалізації захисту засобами JavaScript прямо в браузері клієнта. Код виходить простим і відкритим, що дозволяє здійснювати повний користувальницький контроль над шифруванням/дешифрованием даних. Сам процес шифрування відбувається в off-line режимі, що додатково збільшує захист.

Реалізується цей механізм дуже просто: на клієнтської частини — шляхом підключення трьох додаткових скриптів, а серверної — дополнительнго модуля (розроблений поки для Perl). Фактично, всі ці модулі і скрипти є надбудовами над вже працюючої схемою.

Нижче наводиться приклад реальної роботи захисту

Після заповнення полів і натискання на кнопку «Відправити» відбувається наступне: скрипт пропонує ввести кодове слово і запам'ятовує його (при наступних запитах його вводити не потрібно); витягує дані з усіх полів форми і кодує їх; самі поля — обнуляє; створює нове поле з назвою «Q» і зі значенням рівним кодованої рядку; передає на сервер це поле.

На сервері, декодує модуль розшифровує дані поля «Q» і додає їх в стандартні поля модуля CGI, з якими можна працювати, як звичайно. Подлючается цей модуль так:

#!/usr/local/bin/perl
use Secure;

Дані беремо з змінної $Q. Наприклад, так ми одержуємо значення поля «name»: $Q->param("name"). Саму змінну $Q створювати не потрібно: її створює модуль.

Спробуйте заповнити поля, потім буде запропоновано ввести кодове слово — введіть Masha та отримайте дані на обробленій сервером сторінці. Зверніть увагу на рядок запиту передається на сервер.


Приклад

Перший параметр:

Другий параметр:


Горчилин В'ячеслав, 2014 р.
* Передрук статті або реалізація алгоритму можливі за умови встановлення посилання на сайт і дотриманням авторських прав

« Назад
2009-2018 © Vyacheslav Gorchilin