Библиотека разработки программных средств защиты информации от несанкционированного доступа включает в себя набор библиотек, обладающих средствами, позволяющими разработчикам повышать безопасность своих приложений. Она содержит функции кодирования и декодирования информации, контроля целостности данных и идентификации пользователей с использованием цифровых сертификатов.
Разработчик приложения, в которое встроена защита информации средствами библиотеки, должен быть знаком с основами криптографии. В документации по Библиотеке (файлы в формате CHM) даны краткие описания основных концепций, алгоритмов и задач криптографии:
Большинство криптографических операций используют секретные и открытые ключи.
Секретные ключи — это секретные компоненты, которыми обладают пользователи системы. Секретный ключ похож на пароль, но довольно длинный и содержится в специальном контейнере для секретного ключа. У пользователя нет прямого доступа к секретному ключу, он может использоваться только соответствующими программами.
Открытые ключи не являются тайными и представляют открытую и общедоступную часть ключа пользователя. Важно то, что, хотя пользователь открывает доступ к своему открытому ключу остальным пользователям системы, они не могут вычислить секретный ключ по открытому ключу. Однако обмен открытыми ключами между двумя пользователями позволяет установить между ними защищённое соединение.
Проблема защищенного обмена информацией через незащищённые компьютерные сети включает три основные области:
секретность — предотвращение прочтения секретных данных любым лицом, кроме назначенного их получателя;
целостность — гарантия, что полученные данные есть в точности те, которые были отправлены, т.е. что они не были изменены с момента отправки;
аутентификация — установление личности или группы, с которыми устанавливается соединение.
Эти задачи решаются криптографическими технологиями при использовании разнообразных криптографических алгоритмов. Для обеспечения секретности используются алгоритмы кодирования/декодирования. Для целостности — алгоритмы хэширования и цифровой подписи/проверки подписи. Для аутентификации пользователей используется система управления пользовательскими сертификатами.
Библиотека предоставляет набор алгоритмов кодирования — как разработанных ЛАН Крипто, так и стандартных алгоритмов, известных во всём мире.
Существуют разнообразные специальные алгоритмы для кодирования, хэширования и подписи данных. Качество алгоритма определить сложно. Алгоритмы, которые выглядят многообещающе, могут оказаться очень лёгкими для взлома определёнными методами атаки. При выборе алгоритмов представляется разумным выбирать те из них, которые использовались в течение некоторого времени, за которое они успешно отразили все атаки.
В таблице ниже приведены параметры алгоритмов — размер блока в битах, длина сеансового ключа в битах.
Таблица 11.1.
Алгоритм | Размер блока | Длина ключа | Описание |
---|---|---|---|
Nush | 128 | 256 | Nush — самая последняя разработка "ЛАН Крипто" |
Wicker98 | 128 | 128 | Wicker98 от "ЛАН Крипто" — наиболее эффективный и известный блочный код. В настоящее время он является лучшим по всем основным параметрам |
Веста-2M | 1 | 512 | Веста-2M от "ЛАН Крипто" — поточный код, за последние 5 лет ставший практически стандартом де-факто для защиты электронных документов. Он используется целым рядом коммерческих компаний, банков и корпораций в России и СНГ. |
RC4 | 1 | 64 | Поточный код, хорошо известный в США |
DES | 64 | 64 | Блочный код DES, хорошо известный в мире |
Triple DES | 64 | 192 | Блочный код, использующий для большей безопасности три ключа DES |
ГОСТ РФ 28147 | 64 | 256 | Блочный код ГОСТ РФ 28147 — стандарт РФ |
FEAL | 64 | 64 | Блочный код FEAL |
SAFER-64K | 64 | 46 | Блочный код SAFER |
«ЛАН Крипто» рекомендует:
Недавно были разработаны надёжные и сверхбыстрые алгоритмы кодирования Wicker98 и Nush. Эти очень эффективные алгоритмы блочного кодирования могут быть успешно применены в любом приложении, имеющем операцию кодирования.
Wicker98 и Nush — прекрасные алгоритмы блочного кодирования, известные на мировом рынке.
Библиотека предоставляет набор алгоритмов подписи, как разработанных “ЛАН Крипто”, так и других, широко известных во всём мире.
Таблица 11.2.
Алгоритм | Описание | Предпочтительный алгоритм хэширования |
---|---|---|
LANS (Notary-S) | Алгоритм подписи, разработанный "ЛАН Крипто" и профессором Клаусом Шнорром (Германия). Включает основные элементы национального американского стандарта цифровой подписи, и более эффективную функцию сжатия. | Gas48, SHA1 |
DSA | Алгоритм подписи DSA (США) | SHA1 |
RSA | Алгоритм подписи RSA (США) | MD5 |
ГОСТ РФ 34.10-94 | Алгоритм подписи. Стандарт РФ | ГОСТ РФ 34.11-94 |
LANS ECC | Алгоритм подписи LANS на эллиптических кривых | Gas48, SHA1 |
GOST ECC | Алгоритм подписи на эллиптических кривых. Стандарт РФ | ГОСТ РФ 34.11-01 |
«ЛАН Крипто» рекомендует:
Алгоритм подписи LANS (Notary-S) позволяет делать длину цифровой подписи на 35% короче, чем в алгоритме DSA, и на 60% короче, чем у алгоритма GOSTR3410. Он уже принят в качестве нового корпоративного стандарта цифровой подписи целым рядом индустриальных и коммерческих концернов в России и СНГ. Он также был принят как отраслевой стандарт газовой промышленности России и стал национальным стандартом цифровой подписи в нескольких странах СНГ.
Библиотека предоставляет набор алгоритмов хэширования:
Таблица 11.3.
Алгоритм | Размер хэша (в байтах) | Описание |
---|---|---|
SHA1 | 20 | Алгоритм хэширования SHA1 |
SHA | 20 | Алгоритм хэширования SHA |
MD5 | 16 | Алгоритм хэширования MD5 |
GAS48 | 48 | Алгоритм хэширования GAS48 был разработан в "ЛАН Крипто" как отраслевой стандарт для РАО "Газпром". |
ГОСТ 34.11-94 | 32 | Алгоритм хэширования ГОСТ РФ 34.11-94 — стандарт РФ. Должен использоваться совместно с алгоритмом подписи ГОСТ 34.10-94 |
«ЛАН Крипто» рекомендует:
Алгоритм хэширования SHA1, широко используемый во всём мире. SHA1 используется вместе с алгоритмами подписи DSA и LANS.
Библиотека предоставляет несколько методов кодирования данных (режимов кодирования):
Поточный режим кодирования кодирует данные по биту за раз, и используется в поточных кодах (Веста-2М, RC4). При использовании блочных кодов (Wicker, TripleDES, т.п.) режим блочного кодирования кодирует данные по блоку за раз. Хотя это выполняется медленнее, чем в поточных алгоритмах, блочные более безопасны. В блочных алгоритмах используются четыре режима кодирования. В большинстве случаев предпочтительнее использование режима CBC.
Простой режим кодирования, кодирующий блоки по отдельности и не использующий обратную связь.
Режим блочного кодирования, в котором обратная связь представлена комбинированием шифр-текста и открытого текста.
Режим блочного кодирования, преобразующий небольшие прибавки открытого текста в шифр-текст при использовании сдвигового регистра вместо преобразования за раз блока целиком.
Режим блочного кодирования, использующий обратную связь похожим с CFB образом, но использующий другой метод заполнения сдвигового регистра.
Обычно сообщение и кодируется, и декодируется на общем сеансовом ключе и поиск способа, которым отправитель и получатель сообщения могут без опасности перехвата обменяться этим ключом, может стать отдельной проблемой. Это проблема обмена ключами.
Библиотека поддерживает два протокола обмена ключами, решающих эту проблему:
протокол Диффи-Хеллмана (DH) — обмен открытыми ключами между двумя пользователями (отправителем и получателем);
протокол групповой работы (WG) — используется для кодирования для нескольких получателей; этот протокол не требует использования секретного и открытого ключей отправителя.
Трудность использования открытых ключей для генерации сеансового ключа в том, как послать ваш открытый ключ остальным пользователям так, чтобы он не мог быть перехвачен и подменён. Обычно эту проблему решает Центр Сертификации — доверенная организация, которая подписывает, хранит и распространяет открытые ключи.