Реклама:

Криптография

Криптография — это основанная на математике технология, позволяющая придать данным следующие свойства.

■ Конфиденциальность Данные могут считывать только имеющие соответствующие права лица или процессы.

■ Целостность Данные не могут быть модифицированы без ведома их владельца.

« Подлинность Получить доступ к данным может только верифицированный пользователь, которой их изменял.

Суть шифрования состоит в том, чтобы повысить надежность хранения секретной информации, например, файлов данных, путем обеспечении защиты небольшой части данных, называемой ключом. Ваша задача как программиста заключается в надежном генерировании, хранении и передаче ключей. Ненадежное хранение ключей может нанести больший вред, чем использование ненадежной криптографии.

В криптографии используются два независимых примитива для выполнения хэшировании и шифрования. Хэширование предназначено для обеспечения целостности, а шифрование для обеспечения конфиденциальности. Чтобы добиться подлинности, примитивы нужно комбинировать.

В этой главе я опишу множество различных приложений криптографии, которые используются для обеспечения защиты данных, начиная с основных API для хэширования и шифрования и заканчивая шифровальными службами приложений па более высоком уровне, в том числе рассмотрю возможности защиты конфигурации в Microsoft .NET Framework 2.0.

Хэширование данных

Хэширование — это детерминированная математическая односторонняя функция, используемая для создания контрольных сумм данных, защищенных с применением криптографии. Алгоритм хэширования имеет такие свойства.

■ Выходные данные фиксированной длины Алгоритмы хэширования создают данные фиксированной длины независимо от размера входных данных. Длина выходных данных варьируется в зависимости от выбранного алгоритма.

■ Односторонняя функция Хэши легко рассчитывать, по сложно возвращать в предшествующее состояние. Выход данных с фиксированной длиной означает, что во время хэширования данные теряются (по крайней мере, если входные данные длиннее выходных). Естественно, при лобовых атаках или атаках с подбором слов но словарю текст можно восстановить.

■ Детерминированность Выходные данные хэша всегда остаются одними и теми же для одних входных данных.

■ Почти полное отсутствие конфликтов Не должно быть никаких реальных способов создания одинакового хэша с использованием разных входных значений. Правильные алгоритмы хэширования генерируют совершенно разные выходные данные даже при незначительных различиях входных данных.

Хэширование очень часто используется для создания контрольных сумм данных. Например, вы можете сохранить хэш данных и впоследствии выполнить проверку на модификацию этих данных путем сравнения сохраненного хэша с текущим. Хэширование можно использовать также для обеспечения секретного эквивалента. Например, секретный пароль нужно хранить как хэш, а не как реальный пароль. Подробнее об этом рассказывается далее, в разделе «Хранение паролей».


⇐ Предыдущая страница| |Следующая страница ⇒