Алгоритмы шифрования ГОСТ 34.10-2012, RSA-1024, AES-256-GCM, XChacha20-poly1305

17.03.25

Разработка - Защита ПО и шифрование

Обработки, в которых реализованы алгоритмы шифрования ГОСТ 34.10-2012, RSA-1024, AES-256-GCM, XChacha20-poly1305. Реализация нативно на чистом 1С без COM-объектов и внешних компонент.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Алгоритм ассиметричного шифрования ГОСТ 34.10-2012
.epf 21,27Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.
Алгоритм шифрования RSA-1024
.epf 18,34Kb
0
0 Скачать (2 SM) Купить за 2 150 руб.
Алгоритм шифрования XChacha20-poly1305:
.epf 12,34Kb
0
0 Скачать (2 SM) Купить за 2 150 руб.
Алгоритм шифрования AES-256-GCM
.epf 13,94Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.

ГОСТ 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

Схема работы

Генерация ключей:

  1. Выбор параметров эллиптической кривой согласно ГОСТ 34.10-2012
  2. Генерация случайного числа d в диапазоне от 1 до (q-1), где q - порядок подгруппы точек
  3. Вычисление открытого ключа Q = d·P, где P - базовая точка кривой
  4. Кодирование ключей в HEX-формат для безопасного хранения

Шифрование:

  1. Генерация одноразового ключа k (случайное число)
  2. Вычисление точки R = k·P
  3. Преобразование открытого ключа получателя в точку Q
  4. Вычисление общего секрета S = k·Q
  5. Расчёт Хэш по ГОСТ Р 34.11-2012 Стрибог
  6. Формирование ключа шифрования из x-координаты точки S
  7. Разбиение данных на блоки и их шифрование
  8. Объединение точки R и зашифрованных данных в HEX-формате

Дешифрование:

  1. Извлечение точки R и зашифрованных данных
  2. Преобразование закрытого ключа в число d
  3. Вычисление общего секрета S = d·R
  4. Формирование ключа шифрования из x-координаты точки S
  5. Расшифрование блоков данных
  6. Удаление дополнения PKCS#7
  7. Восстановление исходной строки



RSA-1024 - ассиметричное блочное шифрование

Представленный код реализует алгоритм RSA-шифрования на языке 1С. Это достаточно полная библиотека для работы с криптографическими функциями RSA, которая включает все необходимые компоненты для генерации ключей, шифрования и расшифрования данных.

Основные функции

  1. ПроверитьПаруКлючей - проверяет корректность пары открытого и закрытого ключей через тестовое шифрование-расшифрование
  2. СгенерироватьКлючи - создает новую пару RSA-ключей заданной разрядности
  3. Зашифровать - шифрует данные с помощью открытого ключа
  4. Расшифровать - расшифровывает данные с помощью закрытого ключа

Реализованные алгоритмы

  1. Генерация ключей RSA:
    • Создание двух больших простых чисел
    • Вычисление модуля как их произведения
    • Расчет функции Эйлера
    • Выбор открытой экспоненты (обычно 65537)
    • Вычисление закрытой экспоненты
  2. Тест Миллера-Рабина для проверки чисел на простоту
  3. Алгоритм Евклида и расширенный алгоритм Евклида для нахождения НОД и модульного обратного
  4. Работа с форматом 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: Вычисляет теги аутентификации для проверки целостности

Схема работы

Шифрование:

  1. Криптостойкая генерация nonce (если не предоставлен)
  2. Генерация подключа через HChaCha20
  3. Создание ключа для Poly1305
  4. Поблочное шифрование данных алгоритмом ChaCha20
  5. Вычисление тега аутентификации с помощью Poly1305
  6. Формирование итогового результата (nonce + зашифрованный текст + тег)

Расшифрование:

  1. Извлечение nonce, зашифрованного текста и тега
  2. Генерация подключа с использованием nonce
  3. Проверка тега аутентификации
  4. Поблочное расшифрование данных

Преимущества использования

  • Безопасность: Стойкость против различных типов криптографических атак
  • Производительность: Высокая скорость работы на современных процессорах
  • Независимость: Отсутствие зависимостей от внешних криптографических провайдеров
  • Гибкость: Возможность использования как для хранения данных, так и для безопасной передачи

Сценарии применения

  • Защита конфиденциальных данных в информационных базах
  • Безопасный обмен информацией между различными системами
  • Шифрование секретных настроек и параметров конфигурации
  • Реализация токенов аутентификации и авторизации

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)

Схема работы

Шифрование:

  1. Генерация или проверка Nonce (12 байт)
  2. Расширение ключа для получения раундовых ключей
  3. Дополнение исходных данных до размера, кратного 16 байтам
  4. Инициализация счетчика на основе Nonce
  5. Шифрование данных в режиме счетчика (CTR)
  6. Вычисление тега аутентификации в режиме GCM с учетом AAD
  7. Формирование итогового результата: Nonce + Шифротекст + Тег

Расшифрование:

  1. Извлечение Nonce, шифротекста и тега аутентификации
  2. Восстановление раундовых ключей
  3. Вычисление и проверка тега аутентификации
  4. Расшифрование данных при успешной проверке тега
  5. Удаление дополнения и восстановление исходных данных
     

Преимущества использования

  • Комплексная защита: Обеспечивает одновременно конфиденциальность, целостность и аутентичность данных
  • Производительность: Высокая скорость работы благодаря режиму CTR и оптимизированным таблицам
  • Отказоустойчивость: Защита от различных типов криптографических атак
  • Автономность: Отсутствие зависимостей от внешних библиотек или компонент
  • Стандартизация: Соответствие признанным международным стандартам шифрования

Сценарии применения

  • Защита конфиденциальных данных в информационных базах
  • Безопасное хранение паролей и ключей доступа
  • Шифрование данных при передаче между системами
  • Обеспечение целостности важных документов и транзакций
  • Реализация защищенных токенов и сессий пользователей

AES-256-GCM является рекомендуемым NIST алгоритмом шифрования с аутентификацией и представляет собой решение для обеспечения безопасности данных в приложениях на платформе 1С:Предприятие.

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.467, 3.1.10.452

RSA AES-GCM XChacha20-poly1305 Шифрование защита данных

См. также

Защита ПО и шифрование Программист Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Небольшой пример - "лайф-хак" по установке собственного пароля на отчет или обработку, не втягивая в это RLS.

3 стартмани

06.03.2025    1708    1    aximo    23    

15

Защита ПО и шифрование Программист Платформа 1С v8.3 Бесплатно (free)

В статье приведен простой способ защиты кода внешней обработки от несанкционированного доступа (если это необходимо).

30.12.2024    5625    artemusII    17    

10

Защита ПО и шифрование Программист Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m)

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

1 стартмани

09.02.2023    3159    14    aximo    5    

2

Защита ПО и шифрование Программист Абонемент ($m)

Для установки защиты pdf документа, полученного в 1С, написано консольное приложение на c#., использующее одну зависимость pdfSharp.dll. В результате работы приложения ограничены операции над документом и записаны метаданные. С помощью аргументов командной строки можно управлять работой приложения.

2 стартмани

30.01.2023    2384    2    olevlasam    3    

3

Защита ПО и шифрование Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Универсальный синтаксический анализатор ASN.1, который может декодировать любую допустимую структуру ASN.1 DER или BER, независимо от того, закодирована ли она в кодировке Base64 (распознаются необработанные base64, защита PEM и begin-base64) или в шестнадцатеричном кодировании.

1 стартмани

04.12.2022    3878    18    keyn5565`    0    

15

Защита ПО и шифрование Программист Платформа 1С v8.3 Абонемент ($m)

Демонстрация возможностей шифрования строки на основе мастер-пароля в 1С Предприятие 8.3.19. AES без zip файла, RSA, PKDF2. (c использованием библиотеки С# через com).

2 стартмани

31.08.2022    4846    9    vit59    2    

6

Защита ПО и шифрование Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Абонемент ($m)

Обработка, позволяющая запутывать и шифровать байт-код, поставлять модули без исходных текстов и т.д. Работает только в файловом варианте с версии платформы 8.3.22.1368 из-за конструктора ГенераторСлучайныхЧисел, поскольку алгоритм был изменён.

10 стартмани

16.06.2022    14035    117    ZhokhovM    12    

49
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Diversus 2332 17.03.25 10:23 Сейчас в теме
(0) Отличная работа! Хорошо, что реализовано нативно.
Скажите, замеры производительности не делали? Интересно насколько нативная реализация будет медленной
3. alexyur 3 17.03.25 10:55 Сейчас в теме
(1) Здравствуйте. Точных замеров не делал. Очевидно, что код на 1с работает медленнее. И есть ограничение на размер чисел. Как я писал в описании, пробовал разрабатывать собственную математику больших чисел на операциях с БуферДвоичныхДанных, но это работает неприемлемо медленно. Остаток от деления для чисел порядка 2 в 1024 степени может считаться более минуты.
Из плюсов то, что код нативный, то есть не зависит от операционной системы. Думаю здесь уместен будет вопрос затрат на необходимые ресурсы для взлома, например, того же RSA-1024. В теории это возможно, но покупка или аренда ресурсов и специалистов для этого будут, на мой взгляд, неприемлемо дороги.
5. Diversus 2332 17.03.25 11:01 Сейчас в теме
(3) А с какими ограничениями на размер чисел вы столкнулись?
Я как-то случайно обнаружил, что 1С без проблем умеет работать с огромными числами, просто хранить их не умеет.
Прикрепленные файлы:
6. alexyur 3 17.03.25 11:03 Сейчас в теме
(5) Ограничение 1с. Число может иметь не более 309 значащих цифр. А это 2 в 1024 степени. Всё что больше 1с-ка режет.
Diversus; +1 Ответить
2. user-z99999 78 17.03.25 10:54 Сейчас в теме
А эти алгоритмы будут реализованы в будущем?
ГОСТ 28147-89
ГОСТ Р 34.12-2015
ГОСТ 34.12-2018

Какой алгоритм рекомендуют использовать в России?
4. alexyur 3 17.03.25 10:57 Сейчас в теме
(2) ГОСТ 28147-89 - считается устаревшим. Не вижу смысла.
Кузнечик и Магма в планах
7. SerVer1C 878 17.03.25 12:32 Сейчас в теме
Интересно.
Для ГОСТ выбрали самый примитивный вариант - шифрование каждого блока отдельно с дальнейшей склейкой получившихся кусков?
И второй вопрос - про скорость. Если взять бинарь 100 Мб - сколько он его будет мучать?
8. alexyur 3 17.03.25 12:46 Сейчас в теме
(7) Шифрование таких объёмов асимметричными алгоритмами не имеет особого смысла. Быстрее и безопасней шифровать такие объёмы симметрично даже при реализации в исполняемом коде, не говоря уже про интерпретатор, а асимметрично шифровать ключ симметричного алгоритма.
Оставьте свое сообщение