"Набор юного строителя" для реализации внутреннего шифрования и ЭЦП

09.06.17

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

Набор процедур и функций для организации внутрикорпоративного документооборота и согласования.

Файлы

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

Наименование Скачано Купить файл
"Набор юного строителя" для реализации внутреннего шифрования и ЭЦП.:
.epf 320,81Kb ver:0.0.1
57 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

Что можно встроить из  тест набора:

1. Систему генерации RSA ключей с автоматической записью в базу данных и на носитель.

2. Привязку ключа к носителю.

3. ЭЦП для объектов метаданных и фоновую проверку.

4 . Шифрование данных.

Для последнего пункта достаточно использовать конструкции 

//шифровка
ОбъектШифрования = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
ОбъектШифрования.FromXmlString(<открытыйКлюч>);
//преобразование строки для шифрования в двоичный вид
ИсхТекстДвоичный = СтрокаВМассив(<ВходящийТекст>);
ЗашифрованныйТекстДвоичный = ОбъектШифрования.Encrypt(ИсхТекстДвоичный, False);
ЗашифрованныйТекст = ДвоичныеДанныеВBase64(ЗашифрованныйТекстДвоичный);


// расшифровка
ОбъектШифрования = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
ОбъектШифрования.FromXmlString(<секретныйКлюч>);

ЗашифрованныйТекстДвоичный = Base64ВДвоичныеДанные(<ВходящийЗашифрованныйТекст>);
РасшифрованныйТекстДвоичный = ОбъектШифрования.Decrypt(ЗашифрованныйТекстДвоичный, False);
//преобразование расшифрованных данных в строку
ВскрытыйТекст = МассивВСтроку(РасшифрованныйТекстДвоичный);

(Функции "СтрокаВМассив" и "МассивВСтроку" используются для подготовки ЭЦП и расположены в модуле обработки). 

А теперь самое интересное, какую можно постороить архитектуру решения:

В базе данных создадим регистр сведений или справочник, где сопоставляем открытые ключи и пользователей, можно установить временные рамки действия ключей и привязки к носителю(н-р серийному номеру). Процедуру генерации ключей отдадим отдельной внешней обработке, которая запишет закрытый ключ на флешку, а все остальные параметры в базу данных. Создаем элементы где будет храниться сигнатура ЭЦП и/или зашифрованные данные и в общем то всё. Остается прописать логику действий и вы обладатель достаточно стойкой криптосистемы. 

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

P.S.: Кстати, в макете обработки лежит Native-компонента StringNative. если хочется поэкспериментировать с синхронным шифрованием, извлекайте и используйте простой код:

//////////////Подключаем//////////////////
КодВозврата=ПодключитьВнешнююКомпоненту(ПутьDLL,"StringsNative",AddInType.Native);
Если КодВозврата Тогда
	СтрокиШифровки = Новый("AddIn.StringsNative.V8Strings");
	СтрокиШифровки.ПодключитьКонтрольНавигационныхСсылок();
Иначе
	//Не удалось подключить ВК StringsNative.dll
КонецЕсли;

////////////////////////////Шифрование/////////////////////
ШифрованнаяСтрока = СтрокиШифровки.ШифроватьСтроку(<ПереданнаяСтрока>,<ПарольСессии>);
////////////////////////////Расшифровка////////////////////
ИсходнаяСтрока = СтрокиШифровки.ДешифроватьСтроку(<ШифрованнаяСтрока>,<ПарольСессии>)
///////////////////////////////////////////////////////////

Вступайте в нашу телеграмм-группу Инфостарт

ЭЦП шифрование

См. также

Бухгалтер Пользователь Руководитель проекта 1С:Предприятие 8 Управленческий учет Платные (руб)

Организуйте правильный оборот документов на вашем предприятии в 1С. Ведение учета и хранения документов. Управление потоками документации между подразделениями. Работа с договорами в компании. Автоматизация процессов подготовки, согласования и подписания документов. Сократите время и объем ошибок с 1С:Документооборот! С 1 апреля 2026 года стоимость решения изменится в среднем на 14%. Успейте приобрести по текущей цене с бонусами на услуги и сервисы Инфостарт!

55300 руб.

19.02.2016    112898    144    5    

115

1С:Предприятие 8 Платные (руб)

"1С:Архив" – это универсальная система для надежного долговременного хранения документов с гарантией юридической значимости на неограниченный срок. Решение разработано на основе нормативно-правовых актов по архивному делу, поддерживает операции хранения документов: от попадания в архив до уничтожения, и не имеет ограничений на объем хранимых данных. "1С:Архив" сопровождается методологической поддержкой в виде организационных документов по хранению, входящих в состав "Комплекта нормативных документов" к "Методике управления документами и совместной работой", разработанной специалистами фирмы "1С". Использование "1С:Архива" позволяет организовать единое хранилище всех бумажных и электронных документов из разных информационных систем, вести архивный учет в соответствии с требованиями Росархива и снизить нагрузку на учетные системы. С 1 апреля 2026 года стоимость изменится на 14%, успейте купить решение по цене 2025 года!

117000 руб.

24.10.2022    7240    11    1    

11

Мессенджеры и боты Учет документов 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    40348    44    55    

79

Печатные формы Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

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

15000 руб.

20.04.2016    66561    190    107    

104

Печатные формы Учет документов Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Управленческий учет Платные (руб)

Приложение для быстрого создания макетов печатных документов, заполняемых из 1С:Предприятие, без привлечения программистов и запуска конфигуратора. Шаблон готовится в редакторе MS Word, отлично освоенном офисными служащими. Так, на подготовку нового шаблона договора купли продажи со спецификацией потребуется 25 минут. Приложение будет полезно, если Вы работаете со множеством Word-шаблонов или если Вам надо часто создавать новые шаблоны. Есть сертификат "1С: Совместимо!". Версия ПРОФ доступна в виде расширения.

2000 руб.

05.09.2017    96971    72    106    

104

Email рассылки Взаиморасчеты Акт сверки Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Данная обработка позволяет сократить объем ручных операций, выполняемых ежемесячно бухгалтером или его помощником за счет автоматизации систематического процесса.

7800 руб.

12.02.2019    36239    30    24    

28
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. oleg_km 14.06.17 09:55 Сейчас в теме
Про вот это только не забываем:

https://msdn.microsoft.com/ru-ru/library/f17a0e2k(v=vs.110).aspx


Максимальная длина значения параметра RGB:

Размер модуля -2-2 * hLen, где hLen — размер хэша.
2. eskor 99 14.06.17 11:02 Сейчас в теме
(1) Так это же асинхронное шифрование, оно по определению большие объемы не шифрует. А вот шифрануть ключ для синхронного шифрования - самое то.
3. oleg_km 14.06.17 14:16 Сейчас в теме
только: симметричное и асимметричное.
4. eskor 99 14.06.17 16:24 Сейчас в теме
(3) может руки дойдут, соберу в одну обработку пример. У меня работает такая схема уже года три.
Смысл в том, что генерируется случайный набор символов(н-р GUID), он шифрует объект синхронным шифром, затем сам шифруется асинхронно и вклеивается в определенное место объекта. Соответственно, при расшифровке, массив символов разделяется на шифр и кодированный объект, шифр раскодируется закрытым ключом, объект полученным синхронным ключом.
В реальных условиях ключи генерируются на каждый блок, обрезаются спецсимволы, и т.д. и т.п., короче заморочки составляющие коммерческую тайну.
5. Tlrd 03.06.20 13:45 Сейчас в теме
Подскажите, где можно посмотреть пример осуществления подписи с носителя?
6. eskor 99 03.06.20 18:29 Сейчас в теме
(5) Где-то лежит в архиве готовая обработка, но выдать не смогу. Продана под обещание нигде и никому не светить.
Основа та же, что и в публикации. Публичная значительно упрощена.
С другой стороны, степень защиты заключается в комбинации методов конкретным разработчиком.
10. пользователь 21.10.20 08:23
Сообщение было скрыто модератором.
...
7. Tlrd 04.06.20 10:26 Сейчас в теме
Понял.Получилось.
Требовалась незначительная доработка.
Спасибо.
8. ksely 113 10.08.20 13:43 Сейчас в теме
У меня СОМ объект "System.Security.Cryptography.RSACryptoServiceProvider" прекрасно работает в файловом варианте. А при вызове через IIS выдает "Error calling context method (SignHash)". Эксперименты показали, что методы класса RSA работают, а RSACryptoServiceProvider - нет. Похоже, что пользователю, под которым работает радочий процесс IIS, не хватает каких-то прав... Никто не сталкивался?
9. eskor 99 01.10.20 15:25 Сейчас в теме
Насколько я помню, еще и сами библиотеки должны устанавливаться отдельным пакетом на сервер.
Возможно какой-то из NetFramework.
Сам давно не занимался настройкой, есть специально обученные сисадмины :)
11. user1462848 21.10.20 08:27 Сейчас в теме
Доброго времени суток! Уважаемые коллеги, стоит задача по реализации Подписывать документ ЭЦП ФизЛица, кто нибудь сталкивался с подобной задачой? Очень нуждаюсь в совете. Максимум до чего дошел, то это открыл диалог и выбрал ЭЦП дальше темнота, не знаю как достать ФИО субьекта и дату срока действительности. Очень буду благодарен за любую помощь. Как душевно так и материально.
12. antonovintervolga 26 11.12.20 00:21 Сейчас в теме
Для подписи нужно использовать SHA256 вместо SHA1.
Замена ОбъектHash = Новый COMОбъект("System.Security.Cryptography.SHA1CryptoServiceProvider") на ОбъектHash = Новый COMОбъект("System.Security.Cryptography.SHA256CryptoServiceProvider") дает ошибку

"{ВнешняяОбработка.ТестПлатформа.МодульОбъекта(17)}: Ошибка при вызове конструктора (COMОбъект)
ОбъектHash = Новый COMОбъект("System.Security.Cryptography.SHA256CryptoServiceProvider");
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса "

Подскажите почему?
13. uno-c 272 09.02.21 23:23 Сейчас в теме
(12) Мимо проходил. У меня так срабатывало:
КрПровайдер = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
КрПровайдер.FromXmlString(ХМЛТекстЗакрытогоКлюча);
SafeArrayBinХешДляПодписи = SafeИзДвоичных(Хеш);
SafeArrayBinПодписьДвоичная = КрПровайдер.SignHash(SafeArrayBinХешДляПодписи, "SHA256");
14. Rustik666 14.09.21 18:21 Сейчас в теме
Добрый день!
Подскажите, есть пример на Python...нужно это сделать в 1с. Можно это сделать с помощью вашей обработки?...

Использование ЭЦП:
• ЭЦП сообщения формируется по телу HTTP-запроса;
• При формировании ЭЦП используется алгоритм RSA/SHA256;
• Информационные сообщения, подписанные электронной цифровой подписью, должны
иметь дополнительный параметр "x-sign" в заголовке HTTP запроса, содержащий ЭЦП
сообщения;

x-sign - это Заголовок запроса, в котором передается подпись запроса,
вычисленная по телу POST-запроса с использованием
приватного ключа мерчанта

Вот пример на Python
data = json.dumps(params)
secret_key='12345'
key = RSA.importKey(open('private_key.pem').read())
h = SHA256.new("{}{}".format(data,secret_key).encode('utf8')) signer =
PKCS1_v1_5.new(key)
signature = signer.sign(h)
x_sign = base64.b64encode(signature)
15. RustikMsc 15.09.21 09:29 Сейчас в теме
Скачал обработку.
Она загружает ключи с расширением urk?
У меня ключи в файлах с расширением pem .... Она с ними не работает?
Для отправки сообщения требуется регистрация/авторизация