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

09.06.17

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

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

Скачать файл

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

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

Как-то я  уже размещал генератор сертификатов для использования со встроенным в 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С v8.3 Управленческий учет Платные (руб)

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

48500 руб.

19.02.2016    108431    117    5    

94

Документооборот и делопроизводство (СЭД) Бухгалтер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Продукт "Апрель Софт: Бухгалтерия позаказного производства, ред. 3.0" предназначен для удобного и оперативного управления процессами производства, отгрузок и снабжения в производственных компаниях. Программный продукт открывает новые функциональные возможности для ведения документооборота.

11400 руб.

18.02.2016    22930    1    1    

5

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

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

14900 руб.

15.11.2018    30121    36    49    

71

SALE! 30%

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

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    106459    309    173    

324

Документооборот и делопроизводство (СЭД) ЭДО и ОФД Учет документов Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Мощный, единый инструмент для решения всех проблем, связанных с переходом на ЭДО. Экономит бумагу и время - организует архив оригиналов первичных документов прямо в базе 1С, в прикрепленных файлах к соответствующим документам. С помощью комплексного отчета по ошибкам в ЭДО позволяет выявить и исправить все возможные ошибки - ошибочно сопоставленные документы, не подписанные документы, подписанные, но не загруженные в 1С документы. Автоматически сопоставляет не сопоставленные между собой документы. Может работать по расписанию и присылать отчет о состоянии архива/по ошибкам на почту. Взаимодействует напрямую с сервисами Диадок/СБИС, имеет интуитивно понятный интерфейс и учитывает 3-х летний опыт 40+ клиентов.

14880 руб.

17.12.2018    45581    65    57    

79

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

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

2000 руб.

05.09.2017    92363    66    96    

100

Перенос данных 1C Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Оптовая торговля Производство готовой продукции (работ, услуг) Системный администратор Программист Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Позволяет выгрузить документы поступления или реализации с данными на закладках "товары" и "услуги" и счета-фактуры в файл Excel (.CSV)и загрузить их, используя настройки преобразования. Выгрузка и загрузка работает в обоих релизах бухгалтерии ( 8.2->8.2, 8.2->8.3, 8.3->8.2, 8.3->8.3). Удобна для обмена документами между базами контрагентов (реализацию в поступление, поступление в реализацию), либо внутри одной базы (поступление из реализации с уменьшением цены на % , реализация из поступления с повышением цены на %), либо перенос документов в копию. Не использует правила обмена, поэтому не зависит от релизов конфигураций. Работает с конфигурациями 8.2 и 8.3 (есть обычная и управляемая форма). Файл обмена универсальный для обоих редакций. ВНИМАНИЕ ! В связи с наличием неуправляемых форм обработка не работает в сервисе 1С:Fresh.

4800 руб.

14.04.2015    105289    204    106    

197
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 98 14.06.17 11:02 Сейчас в теме
(1) Так это же асинхронное шифрование, оно по определению большие объемы не шифрует. А вот шифрануть ключ для синхронного шифрования - самое то.
3. oleg_km 14.06.17 14:16 Сейчас в теме
только: симметричное и асимметричное.
4. eskor 98 14.06.17 16:24 Сейчас в теме
(3) может руки дойдут, соберу в одну обработку пример. У меня работает такая схема уже года три.
Смысл в том, что генерируется случайный набор символов(н-р GUID), он шифрует объект синхронным шифром, затем сам шифруется асинхронно и вклеивается в определенное место объекта. Соответственно, при расшифровке, массив символов разделяется на шифр и кодированный объект, шифр раскодируется закрытым ключом, объект полученным синхронным ключом.
В реальных условиях ключи генерируются на каждый блок, обрезаются спецсимволы, и т.д. и т.п., короче заморочки составляющие коммерческую тайну.
5. Tlrd 03.06.20 13:45 Сейчас в теме
Подскажите, где можно посмотреть пример осуществления подписи с носителя?
6. eskor 98 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 98 01.10.20 15:25 Сейчас в теме
Насколько я помню, еще и сами библиотеки должны устанавливаться отдельным пакетом на сервер.
Возможно какой-то из NetFramework.
Сам давно не занимался настройкой, есть специально обученные сисадмины :)
11. user1462848 21.10.20 08:27 Сейчас в теме
Доброго времени суток! Уважаемые коллеги, стоит задача по реализации Подписывать документ ЭЦП ФизЛица, кто нибудь сталкивался с подобной задачой? Очень нуждаюсь в совете. Максимум до чего дошел, то это открыл диалог и выбрал ЭЦП дальше темнота, не знаю как достать ФИО субьекта и дату срока действительности. Очень буду благодарен за любую помощь. Как душевно так и материально.
12. antonovintervolga 25 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 238 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 .... Она с ними не работает?
Оставьте свое сообщение