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

09.06.17

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

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

Скачать исходный код

Наименование Файл Версия Размер
"Набор юного строителя" для реализации внутреннего шифрования и ЭЦП.:
.epf 320,81Kb
52
.epf 0.0.1 320,81Kb 52 Скачать

Как-то я  уже размещал генератор сертификатов для использования со встроенным в 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С:Документооборот - цена на лицензии КОРП, ПРОФ и ДГУ

Документооборот и делопроизводство (СЭД) Типовые Платформа 1С v8.3 Управленческий учет Платные (руб)

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

48500 руб.

19.02.2016    107208    104    5    

86

1С:Архив

Документооборот и делопроизводство (СЭД) Платформа 1С v8.3 Платные (руб)

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

90000 руб.

24.10.2022    4932    5    1    

4

Таймлист (1С:Совещание, Таймлист Лайт)

Документооборот и делопроизводство (СЭД) Конфигурации 1cv8

«Таймлист» – экосистема сервисов («Таймлист Лайт», «1C:Совещание», «Таймлист Recorder»), основанная на искусственном интеллекте Таймлист, который позволяет эффективно работать с легкими поручениями за счет фиксации всех важных идей при расшифровке и последующем формировании автопротокола встречи. Сервисы, в которые интегрирован ИИ, позволяют работать с задачами (поручениями), полученными из автопротокола.

10000 руб.

06.12.2023    1445    0    0    

7

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в 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С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101766    298    173    

314

Легкий документооборот (+чат-бот для Telegram)

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

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

14900 руб.

15.11.2018    27986    26    48    

58

ЭДО: организация архива оригиналов первичных документов, комплексный отчет по ошибкам

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

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

14880 руб.

17.12.2018    44387    58    51    

71

1С:Бухгалтерия 3.0 ПРОФ + 1С:Документооборот. Модуль интеграции 1С:БП и 1С:ДО (ПРОФ или КОРП)

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

Бесшовная связь с 1С:Документооборот (КОРП или ПРОФ) - вот что обеспечит Вам и Вашим сотрудникам оперативный доступ и продуктивную работу с документами в учётной системе 1С на базе "1С:Бухгалтерия предприятия 3.0 ПРОФ". Интеграция позволяет экономить до 60% времени на поиск и согласование первичной документации (актов, счетов-фактур, накладных), не говоря уже о других полезных функциональных возможностях: создании и запуске бизнес-процессов, работе с электронной почтой, штрихкодировании документов и многом другом.

30000 руб.

23.05.2017    53966    34    67    

41

Шаблоны.doc - документы Word из 1С (1С:Совместимо!)

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

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

2000 руб.

05.09.2017    90173    61    82    

96
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 112 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 24 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 235 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 .... Она с ними не работает?
Оставьте свое сообщение