Крипто Защита Информации
Зачем
Обеспечение информационной безопасности передаваемых данных.
Паттерны
- На сетевом уровне (OSI L1-L3)
- СКЗИ
- на программном уровне
- на аппаратном уровне
Криптоалгоритмы
- подписание - состоит из операции хэширования и шифрования
- ГОСТ Р 34.10 2012, 2001
- шифрование
- хэширование
- ГОСТ Р 34.11-94, 34.11-2012
- ГОСТ Р 31.11
- HMAC SHA256 симметричный
- RS256 - ассиметричный. Приватным ключом подпись создается, публичным ключом проверяется подлинность
- кодирование
- base64urlas
- имитозащита - защита целостности сообщения
- В России принят алгоритм вычисления имитовставки по ГОСТ 28147-89
- Имитовста́вка (MAC, англ. message authentication code — код аутентификации послания)
- средство обеспечения имитозащиты в протоколах аутентификации сообщений с доверяющими друг другу участниками
- специальный набор символов, который добавляется к сообщению и предназначен для обеспечения его целостности и аутентификации источника данных
- Алгоритм Diffie-Hellman - транспортный ключ
ГОСТ
Криптоалгоритмы ГОСТ Р 34.10-2012, ГОСТ 34.10-18 256 бит:
- необходимо использовать сертифицированные ФСБ РФ СКЗИ
- Open Source
- на основе криптобиблиотеки OpenSSL 3.0 - полноценная криптографическая библиотека с открытым исходным кодом, широко известна из-за расширения SSL/TLS, используемого в веб-протоколе HTTPS.
- Поддерживает почти все низкоуровневые алгоритмы хеширования, шифрования и электронной подписи
- криптографических стандартов:
- RSA, DH, DSA, сертификаты X.509, подписывать их, формировать CSR и CRT, шифровать данные и тестировать SSL/TLS соединения
- ГОСТ через расширение библиотеки OpenSSL ГОСТ алгоритмами gost-engine
- Proxy nginx
- 2022 nginx 1.23.2 + openssl 3.0.5 + gost engine 3.0.1 + TLSv1.2 docker образ
- 2018 docker образ GIT
- Библиотека OpenSSL 1.1.0g
- gost-engine
- stunnel - программа, на которую можно переложить всю логику шифрования трафика между сервером и клиентом
- stunnel:port openssl-gost-stunnel (>=v.1.0.2)
- шифрование через криптобиблиотеку openssl и расширешение библиотеки ГОСТ алгоритмами gost-engine
- docker-openssl-gost
- криптотуннель с валидным ключом, подписанным самим «КриптоПро», и с алгоритмом шифрования GOST_2012, 512 бит
- на основе криптобиблиотек КриптоПро
- Nginx вариант с библиотекой КриптоПро
- 2018 Docker контейнер с CryptoPro 4 и nginx
- Win Server IPSec VPN с КриптоПро CSP и КриптоПро IPSec
- на основе криптобиблиотеки OpenSSL 3.0 - полноценная криптографическая библиотека с открытым исходным кодом, широко известна из-за расширения SSL/TLS, используемого в веб-протоколе HTTPS.
- Commercial
- аппаратные устройства КриптоПро NGate
- Аутсорс с арендой оборудования Ростелеком Солар
- аппаратные устройства TSS Diamond
- программно-аппаратный комплекс S-terra
- программно-аппаратный комплекс Infotecs VipNet
- выбор
Международные
Криптоалгоритмы международные:
- RSA
- Padding: Proper padding schemes (e.g., OAEP, PKCS#1 v1.5) are crucial to prevent certain cryptographic attacks and ensure secure encryption.
- Optimal Asymmetric Encryption Padding (OAEP) - шифрование
- algorithm
- RSA_OAEP_256 - RSAES using Optimal Asymmetric Encryption Padding (OAEP) (RFC 3447), with the SHA-256 hash function and the MGF1 with SHA-256 mask generation function
- RSA_OAEP - DEPRECATED - RSAES using Optimal Asymmetric Encryption Padding (OAEP) (RFC 3447), with the default parameters specified by RFC 3447 in section A.2.1. Use of this encryption algorithm is no longer recommended, use RSA_OAEP_256 instead.
- hash: sha1
- maskGenAlgorithm: mgf1SHA1
- pSourceAlgorithm: empty
- algorithm
- RSASSA-PKCS1-v1_5 - подпись\шифрование
- RSA-PSS - подпись
- Optimal Asymmetric Encryption Padding (OAEP) - шифрование
- Padding: Proper padding schemes (e.g., OAEP, PKCS#1 v1.5) are crucial to prevent certain cryptographic attacks and ensure secure encryption.
- AES modes: CTR, CBC, GCM
- IPSec VPN Site-to-Site - CISCO
Алгоритм Diffie-Hellman
- Варианты алгоритмов:
- Diffie-Hellman (DH) Key Exchange - Диффи-Хеллмана
- Elliptic Curve Diffie-Hellman (ECDH) - Диффи-Хеллмана на эллиптических кривых
- Ипользуется для того, чтобы две стороны могли создать общий секретный ключ, его еще называют «транспортный ключ», который затем используется для шифрования и дешифрования сообщений
- Используется в TLS, IPSec, SSH
- Главное - этот ключ создается без прямого обмена им между сторонами
- Алгоритм
- Сначала сервер и клиент должны сгенерировать свои идентификационные номера
- На основе этих номеров сервер и клиент создают свои собственные открытые и закрытые ключи
- Затем происходит обмен открытыми ключами, в то время как закрытыми ключами обмениваться не нужно
- Используя свой закрытый ключ и открытый ключ сервера, клиент устанавливает общий секретный ключ, а сервер выполняет ту же последовательность действий
- С помощью закрытых ключей обе стороны генерируют общий секретный ключ, который затем будет использоваться выбранным алгоритмом шифрования для обеспечения безопасности связи.
- Общий секретный ключ остается конфиденциальным
- Параметры алгоритма
- Ключевая пара (public\private key)
- Длина ключа не менее 1024 байт
- формат X.509 Encoded
- Сгенерируем приватный ключ RSA зашифрованный AES 256 с паролем “password” длиной 4096 бит (меньше 1024 считается ненадежным)
- Ключевая пара (public\private key)
- Реализации
- Key Exchange
- ECDH - Диффи-Хеллмана на эллиптических кривых
- JAVA
- .NET Cryptography Next Generation (CNG) c функцией формирования ключа (KDF)
- Swift Apple CryptoKit Сurve25519 GitHub
- Используется алгоритм X25519 на curve25519
- OpenSSL X25519
Подписание ЭЦП
- Электронная подпись (ЭЦП) содержит номер, сгенерированный и зашифрованный при помощи криптографического программного обеспечения.
- Алгоритм
- Хэширование сообщения: на входе сообщение произвольной длины, на выходе хэш значение фиксированной длины
- Шифрование хэша - не обязательно
- При формировании ЭЦП закрытый ключ отправителя используется, проверка - открытым ключом отправителя
- При шифровании сообщения - открытый ключ получателя, расшифрование сообщения - закрытым ключом получателя
- Виды электронной подписи по №63-ФЗ «Об электронной подписи»:
- Простая электронная подпись
- представляет собой уникальную комбинацию символов, которая создаётся пользователем или информационной системой и не имеет физического носителя
- не может защитить документ от последующего изменения
- Усиленная электронная подпись (УЭП) может быть двух видов:
- Усиленная неквалифицированная электронная подпись (УНЭП)
- Усиленная квалифицированная электронная подпись (УКЭП)
- получают в аккредитованном удостоверяющем центре (УЦ)
- Простая электронная подпись
- Форматы ЭЦП
- Присоединённая
- содержится в самом документе
- чтобы прочитать документ потребуется ПО
- Отсоединённая
- содержится в отдельном файле .SIG
- чтобы прочитать документ НЕ потребуется ПО, не изменяет подписываемый документ
- Как создать программно в КриптоПро
- в формате
- pkcs 7 через Приложение cryptcp для КриптоПро CSP
- в кодировке DER или BASE64
- Base64String
- pkcs 7 через Приложение cryptcp для КриптоПро CSP
- Интегрированная
- Присоединённая
Имитозащита
Варианты решений