Подмена параметров с помощью цифровой подписи
Универсальным методом, позволяющим защитить информацию от подмены, является цифровая подпись (ЭЦП). С помощью ЭЦП можно обеспечить неотказуемость на любом этапе обмена информацией между клиентом и сервером. Для этого приложение должно обеспечивать выполнение следующих функций:
− Подтверждение при передаче. Приложение должно поддерживать технологию цифровой подписи (например, SHA-1, DSA, RSA), позволяющую отправителю (получателю) заверить цифровой подписью данные или ключи, которые приложение использует при создании или пересылки данных через сеть.
− Подтверждение доставки. В этом случае получатель должен с помощью цифровой подписи через приложение подтвердить факт получения информации.
− Проверка цифровой подписи. В приложении должна быть реализована возможность проверки соответствия данных (или ключей) полученных по сети или из баз данных, и цифровой подписи, прикрепленной к этим данным.
− Защита информации, используемой для формировании цифровой подписи. Приложение должно надежно защищать данные используемые при формировании цифровой подписи от подмены или раскрытия. К таким данным относятся ключи шифрования и сертификаты.
− Цифровая подпись данных, полученных из Web-форм. Чтобы сделать невозможным отказ от авторства для конфиденциальных данных, полученных из Web-форм, приложение должно подтверждать их цифровой подписью. Для защиты данных в HTML-формах можно использовать алгоритм MD5 (либо другой алгоритм) для формирования цифровой подписи под скрытыми полями. Можно, например, объединить значения скрытых полей путем их конкатенации, создать для этой строки цифровую подпись и записать ее в еще одно скрытое поле. Когда браузер возвратит на
сервер значения полей формы, их целостность может быть проконтролирована.
Для того, чтобы пользователь не мог подделать цифровую подпись, необходимо добавить к ЭЦП некий секретный компонент, который пользователь не может видеть. Это делается с
помощью секретного ключа, хранимого на сервере. Такая конструкция называется «message authentication code» (MAC), а стандартный способ ее применения называется HMAC (RFC 2104). Функции HMAC доступны во всех языках Web-программирования:
) Digest:HMAC (Perl)
) mhash() (PHP)
) KeyGenerator (Java)
) HMACSHA1 (MS .Net Framework)
Такой подход так же может быть использован для Web-приложений, хранящих данные на сервере и использующих cookie для хранения на стороне клиента сессионного ключа.
Конечно, уязвимостью данного метода (как и других методов, основанных на «разделяемых» ключах), является секретный ключ, хранимый на Web-сервере. Если сервер взломан, либо становится доступным исходный код приложения, данный метод перестает быть безопасным. Если же существует обоснованная уверенность в безопасности сервера, и при регулярной смене секретного ключа, можно считать что метод обеспечивает достаточную защиту.
0 - Количество комментариев
Оставьте комментарий.