ГОСТ 34.10-2012: Российский стандарт криптографии на эллиптических кривых для 1С:Предприятие
Обзор
ГОСТ 34.10-2012 — это российский криптографический стандарт для создания и проверки электронной подписи, основанный на математическом аппарате эллиптических кривых. Данная реализация предоставляет полнофункциональное решение для платформы 1С:Предприятие, обеспечивая возможность шифрования и дешифрования данных, а также генерации ключевых пар в соответствии с национальными стандартами безопасности.
Ключевые особенности
- Соответствие российским криптографическим стандартам: Полная реализация ГОСТ 34.10-2012, ГОСТ Р 34.11-2012 Стрибог.
- Эллиптические кривые: Использование математически сложных структур для обеспечения высокого уровня безопасности
- Поддержка различных размеров ключей: Возможность использования ключей размером 256 бит
- Полная реализация на языке 1С: Не требует внешних библиотек или компонент
- Функции импорта и экспорта ключей: Удобное сохранение и загрузка ключевых пар
- HEX-кодирование для безопасной передачи: Данные и ключи кодируются в HEX-формат для безопасного хранения и передачи
Технические характеристики
Стандарт | ГОСТ 34.10-2012, Хэш по
ГОСТ Р 34.11-2012
Стрибог |
Тип криптографии | Асимметричная (с открытым ключом) |
Математическая основа | Эллиптические кривые над конечным полем |
Размер ключа | 256 бит |
Формат кодирования | HEX-строки |
Алгоритм дополнения | PKCS#7 |
Алгоритм шифрования блоков | XOR с производным ключом |
Компоненты реализации
Основные функции
- СгенерироватьПаруКлючей: Создает новую пару из открытого и закрытого ключей
- Зашифровать: Шифрует данные с использованием открытого ключа получателя
- Дешифровать: Расшифровывает данные с использованием закрытого ключа
- ДешифроватьПоСтроке: Упрощенный вариант расшифрования по единой строке шифротекста
- ЭкспортироватьКлючи: Сохраняет пару ключей в текстовый файл
- ИмпортироватьКлючи: Загружает пару ключей из текстового файла
Математические операции на эллиптических кривых
- Сложение точек эллиптической кривой
- Удвоение точки эллиптической кривой
- Умножение точки на скаляр (основная криптографическая операция)
- Вычисление модульного обратного числа (используется в операциях над точками)
Обработка данных
- Разделение данных на блоки фиксированного размера
- Добавление и удаление дополнения (padding) по стандарту PKCS#7
- Кодирование и декодирование данных в HEX-формат
- Преобразование между строками и байтовыми представлениями с учетом UTF-8
Схема работы
Генерация ключей:
- Выбор параметров эллиптической кривой согласно ГОСТ 34.10-2012
- Генерация случайного числа d в диапазоне от 1 до (q-1), где q - порядок подгруппы точек
- Вычисление открытого ключа Q = d·P, где P - базовая точка кривой
- Кодирование ключей в HEX-формат для безопасного хранения
Шифрование:
- Генерация одноразового ключа k (случайное число)
- Вычисление точки R = k·P
- Преобразование открытого ключа получателя в точку Q
- Вычисление общего секрета S = k·Q
- Расчёт Хэш по ГОСТ Р 34.11-2012 Стрибог
- Формирование ключа шифрования из x-координаты точки S
- Разбиение данных на блоки и их шифрование
- Объединение точки R и зашифрованных данных в HEX-формате
Дешифрование:
- Извлечение точки R и зашифрованных данных
- Преобразование закрытого ключа в число d
- Вычисление общего секрета S = d·R
- Формирование ключа шифрования из x-координаты точки S
- Расшифрование блоков данных
- Удаление дополнения PKCS#7
- Восстановление исходной строки
RSA-1024 - ассиметричное блочное шифрование
Представленный код реализует алгоритм RSA-шифрования на языке 1С. Это достаточно полная библиотека для работы с криптографическими функциями RSA, которая включает все необходимые компоненты для генерации ключей, шифрования и расшифрования данных.
Основные функции
- ПроверитьПаруКлючей - проверяет корректность пары открытого и закрытого ключей через тестовое шифрование-расшифрование
- СгенерироватьКлючи - создает новую пару RSA-ключей заданной разрядности
- Зашифровать - шифрует данные с помощью открытого ключа
- Расшифровать - расшифровывает данные с помощью закрытого ключа
Реализованные алгоритмы
- Генерация ключей RSA:
- Создание двух больших простых чисел
- Вычисление модуля как их произведения
- Расчет функции Эйлера
- Выбор открытой экспоненты (обычно 65537)
- Вычисление закрытой экспоненты
- Тест Миллера-Рабина для проверки чисел на простоту
- Алгоритм Евклида и расширенный алгоритм Евклида для нахождения НОД и модульного обратного
- Работа с форматом PEM для хранения и передачи ключей:
- Преобразование ключей в формат PEM
- Извлечение ключей из PEM
- Поддержка форматов PKCS#1 и PKCS#8
Механизмы безопасности
В коде реализованы следующие механизмы для повышения безопасности:
- Добавление случайной соли к данным перед шифрованием
- Применение паддинга по стандарту PKCS#5/PKCS#7
- Проверка размеров и совместимости ключей и блоков данных
Оптимизации
Код содержит различные оптимизации для повышения производительности:
- Использование предварительно вычисленного списка малых простых чисел
- Специальный оптимизированный алгоритм для работы с экспонентой 65537
- Эффективные алгоритмы для проверки чисел на простоту
- Блочная обработка данных при шифровании и расшифровке
Ограничение RSA - ключи не более 1024 бит. Это ограничение числовой модели 1С. Технически можно реализовать математику больших чисел вручную для обеспечения поддержки больших чисел и ключей более 1024 бит, но на тестах выяснено, что подобная реализация на 1С будет работать неприемлемо медленно. Обработка RSA может генерировать ключи сама либо может использовать созданные в других программах в соответствии со стандартом. Генерация ключей RSA связана с генерация случайных простых чисел порядка 2 в степени 1024, задача определения простоты нетривиальная и иногда система может ошибаться. Кнопка "Проверить ключи" поможет определить правильность ключей.
XChaCha20-Poly1305: Современное шифрование для 1С:Предприятие
Обзор
XChaCha20-Poly1305 — это современный аутентифицированный алгоритм шифрования (AEAD), который обеспечивает высокий уровень безопасности и производительности. Данная реализация представляет полностью нативное решение для платформы 1С:Предприятие, позволяя интегрировать современные криптографические механизмы в ваши бизнес-приложения.
Ключевые особенности
- Высокая криптостойкость: Использует 256-битный ключ и 192-битный nonce
- Аутентификация данных: Обеспечивает целостность и подлинность зашифрованных данных
- Дополнительные аутентифицированные данные (AAD): Поддержка незашифрованных, но аутентифицированных данных
- Полная реализация на языке 1С: Не требует внешних библиотек или компонент
- Соответствие стандартам: Реализация соответствует спецификациям алгоритмов ChaCha20 и Poly1305
Технические характеристики
Параметр | Значение |
---|---|
Алгоритм шифрования | XChaCha20 |
Алгоритм аутентификации | Poly1305 |
Размер ключа | 32 байта (256 бит) |
Размер nonce | 24 байта (192 бит) |
Размер блока | 64 байта (512 бит) |
Размер тега аутентификации | 16 байт (128 бит) |
Компоненты реализации
Основные функции
- ЗашифроватьXChaCha20Poly1305: Шифрует исходную строку с использованием ключа
- РасшифроватьXChaCha20Poly1305: Расшифровывает текст и проверяет его подлинность
- HChaCha20: Генерирует подключи на основе основного ключа
- ChaCha20: Реализует базовый поточный шифр ChaCha20
- Poly1305: Вычисляет теги аутентификации для проверки целостности
Схема работы
Шифрование:
- Криптостойкая генерация nonce (если не предоставлен)
- Генерация подключа через HChaCha20
- Создание ключа для Poly1305
- Поблочное шифрование данных алгоритмом ChaCha20
- Вычисление тега аутентификации с помощью Poly1305
- Формирование итогового результата (nonce + зашифрованный текст + тег)
Расшифрование:
- Извлечение nonce, зашифрованного текста и тега
- Генерация подключа с использованием nonce
- Проверка тега аутентификации
- Поблочное расшифрование данных
Преимущества использования
- Безопасность: Стойкость против различных типов криптографических атак
- Производительность: Высокая скорость работы на современных процессорах
- Независимость: Отсутствие зависимостей от внешних криптографических провайдеров
- Гибкость: Возможность использования как для хранения данных, так и для безопасной передачи
Сценарии применения
- Защита конфиденциальных данных в информационных базах
- Безопасный обмен информацией между различными системами
- Шифрование секретных настроек и параметров конфигурации
- Реализация токенов аутентификации и авторизации
XChaCha20-Poly1305 представляет современный стандарт защиты информации и является решением для обеспечения конфиденциальности и целостности данных в приложениях на платформе 1С:Предприятие 8.3.
AES-256-GCM: Надежное шифрование с аутентификацией для 1С:Предприятие
Обзор
AES-256-GCM (Advanced Encryption Standard в режиме Galois/Counter Mode) представляет собой современный алгоритм шифрования, сочетающий высокую производительность с надежной защитой данных. Эта реализация обеспечивает полноценное решение для платформы 1С:Предприятие, позволяя интегрировать стандарт криптографической защиты, признанный государственными и международными организациями.
Ключевые особенности
- Высокая степень защиты: Использование 256-битного ключа и 14 раундов шифрования
- Встроенная аутентификация: Верификация целостности и подлинности данных через GMAC
- Дополнительные аутентифицированные данные (AAD): Возможность защиты метаданных без их шифрования
- Полная нативная реализация: Все операции выполняются средствами языка 1С без внешних компонент
- Соответствие стандартам: Полное соответствие спецификациям NIST SP 800-38D
Технические характеристики
Параметр | Значение |
---|---|
Алгоритм шифрования | AES-256 |
Режим работы | GCM (Galois/Counter Mode) |
Размер блока | 16 байт (128 бит) |
Размер ключа | 32 байта (256 бит) |
Размер Nonce | 12 байт (96 бит) |
Размер тега аутентификации | 16 байт (128 бит) |
Количество раундов | 14 |
Компоненты реализации
Основные функции
- ЗашифроватьAES256GCM: Шифрует строковые данные с возможностью указания дополнительных аутентифицированных данных
- РасшифроватьAES256GCM: Расшифровывает данные с проверкой тега аутентификации
- РасширитьКлюч256: Создает набор раундовых ключей из основного ключа
- ВычислитьТег: Формирует тег аутентификации GMAC для проверки целостности
Внутренние преобразования AES
Реализация включает все стандартные преобразования алгоритма AES:
- Нелинейная замена байтов (SubBytes)
- Циклический сдвиг строк (ShiftRows)
- Смешивание столбцов в поле Галуа (MixColumns)
- Добавление раундового ключа (AddRoundKey)
Схема работы
Шифрование:
- Генерация или проверка Nonce (12 байт)
- Расширение ключа для получения раундовых ключей
- Дополнение исходных данных до размера, кратного 16 байтам
- Инициализация счетчика на основе Nonce
- Шифрование данных в режиме счетчика (CTR)
- Вычисление тега аутентификации в режиме GCM с учетом AAD
- Формирование итогового результата: Nonce + Шифротекст + Тег
Расшифрование:
- Извлечение Nonce, шифротекста и тега аутентификации
- Восстановление раундовых ключей
- Вычисление и проверка тега аутентификации
- Расшифрование данных при успешной проверке тега
- Удаление дополнения и восстановление исходных данных
Преимущества использования
- Комплексная защита: Обеспечивает одновременно конфиденциальность, целостность и аутентичность данных
- Производительность: Высокая скорость работы благодаря режиму CTR и оптимизированным таблицам
- Отказоустойчивость: Защита от различных типов криптографических атак
- Автономность: Отсутствие зависимостей от внешних библиотек или компонент
- Стандартизация: Соответствие признанным международным стандартам шифрования
Сценарии применения
- Защита конфиденциальных данных в информационных базах
- Безопасное хранение паролей и ключей доступа
- Шифрование данных при передаче между системами
- Обеспечение целостности важных документов и транзакций
- Реализация защищенных токенов и сессий пользователей
AES-256-GCM является рекомендуемым NIST алгоритмом шифрования с аутентификацией и представляет собой решение для обеспечения безопасности данных в приложениях на платформе 1С:Предприятие.
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.467, 3.1.10.452