Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline IliaSA  
#1 Оставлено : 25 февраля 2022 г. 18:38:42(UTC)
IliaSA

Статус: Новичок

Группы: Участники
Зарегистрирован: 24.02.2022(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 1 раз
Добрый день.

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

Задача:

Есть документы об обследованиях, НЕ медицинские карты, а просто доки о различных исследованиях пациентов и врачи должны иметь возможность подписывать эти документы с помощью квалифицированной электронной подписи (далее КЭП).

Приложение может работать и без доступа к интернету, это важно. то есть мы можем установить локальную копию или сетевую копию с обновлениями.


Я пока предполагаю, что у врача который будет подписывать документы есть:
- Есть КЭП. которая на флэшке или в самом ПК
- На оборудовании установлена требуемая версия ПО КриптоПро.
- В браузере установлен плагин КриптоПро - скорее нет чем да.
- Срок действия подписи валиден.
- Сертификат удостоверяющего центра обновлен и валиден

Приложение на Python (Django) + DB PostgreSQL

Я тут вижу 2 сценария реализации:
1. Через Plug-in КриптоПро. (https://docs.cryptopro.ru/cades/plugin)
2. Через Расширение для Python (https://docs.cryptopro.ru/cades/pycades)

Вариант 1.
Участники кейса: Пользователь системы, Front-end (FE) и Back-end (BE)

1. Пользователь вызвал функцию “Подписать ЭЦП“
2.FE отправил вызвал плагин КриптоПро
3. Браузер запросил у пользователя разрешения на использование браузерного плагина - разрешено
4. Плагин КриптоПро запросил подтверждение ключа
5. Пользователь с флэшки или из закрытого контейнера крипто про CSP выбрал свой ключ
6. Плагин КриптоПро проверил ключ (все ок) и создал подпись
7. Плагин КриптоПро отправил сообщение об успехе на FE
8. FE отправляет на BE данные о подписанте с id документа и данными ЭП
9. BE записывает данные в БД
10. BE отправляет на фронт сообщение об успешной записи данных
11. FE отображает пользователю сообщение об успешной подписи протокола “Протокол успешно подписан“

Вариант 2.

Тот же что и выше только вызывается заранее подключенный к приложению pycades и уже через его интерфейс делаем реализацию.


И как небольшое дополнение картинка описание предлагаемого решения:
Podpis' dokumenta s ispol'zovaniem EhCP.png (33kb) загружен 15 раз(а).



Теперь вопросы:

1. Для того что бы хранить сертификаты и ключи я должен оябзательно установить СКЗИ «КриптоПро CSP»?
2. В чем разница между СКЗИ «КриптоПро CSP» и ПАК «КриптоПро DSS» и ПАКМ «КриптоПро HSM»? Какой из них решит мою проблему с организацией подписи?
3. Может быть вы сможете как-то детальнее дополнить мою схему и кейс? Я к сожалению пока до конца не понял какой метод вызывать и что я получу при его вызове при использовании pycades что бы реализовать подпись.
4. Как организовать эту же схему оффлайн? Как сделать ее обновляемой с Удостоверяющим центром (УД) и нужно ли это?

5. Есть ли какие нибудь требования к подписям и хранению информации для медицинского ПО? какая нибудь специальная подпись?




Offline basid  
#2 Оставлено : 26 февраля 2022 г. 9:35:55(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,115

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
Ваши "доки" можно "распечатать" в виде PDF и, после этого, подписывать их в связке КРИПТОПРО CSP, Acrobat Reader (32-разрядный) и КРИПТОПРО PDF.
Если надо подписать произвольный файл, то в КРИПТОПРО CSP 5.0, в интерфесе утилит, появилась возможность создавать присоединённую или отсоединённую подпись.
Это всяко проще, чем заниматься встраиванием.
"По-моему - так" (ц) Винни Пух (голосом Евгения Леонова).
Offline IliaSA  
#3 Оставлено : 28 февраля 2022 г. 13:38:01(UTC)
IliaSA

Статус: Новичок

Группы: Участники
Зарегистрирован: 24.02.2022(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 1 раз
Спасибо большое за ваш совет, но к сожалению у меня есть требование что бы все было встроено, хочется сделать элегантное и красивое решение.
Offline basid  
#4 Оставлено : 28 февраля 2022 г. 19:46:28(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,115

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
Откройте комплект докуменатации соответствующую версию (версии) CSP и начните с формуляра: там изложено - кому и какую документацию надо читать.
В документации же описан "белый список" API, функции которого можно использовать без оценки контроля встраивания.
Ещё надо учитывать, что если вы решите выполнять разработку на возмездной основе, то вы подпадаете под требования постановления о лицензировании отдельных видов деятельности.

P.S.
Требования это, конечно, прекрасно, но было бы неплохо понимать: какие требования выполнимы, а какие - не очень.
Offline Санчир Момолдаев  
#5 Оставлено : 1 марта 2022 г. 7:47:54(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,215
Российская Федерация

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 285 раз в 265 постах
Добрый день!
рантайм пользователя не является доверенной средой. у вас на BE не происходит проверка подписанных данных. а если клиент подписал тестовым сертификатом и прочие неприятные сценарии.

без доступа к интернету будет проблематично. сертификат необходимо проверять. а если ключ скомпроментирован? злоумышленник украл эп заявителя, подписал документ: "отдать полцарства" - ваша ИС полностью доверяет документу, т.к. не проверяет подпись, не проверяет сертификат на отозванность и пр.
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#6 Оставлено : 1 марта 2022 г. 10:02:57(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Цитата:
Вариант 1.
Участники кейса: Пользователь системы, Front-end (FE) и Back-end (BE)

1. Пользователь вызвал функцию “Подписать ЭЦП“
2.FE отправил вызвал плагин КриптоПро
3. Браузер запросил у пользователя разрешения на использование браузерного плагина - разрешено
4. Плагин КриптоПро запросил подтверждение ключа
5. Пользователь с флэшки или из закрытого контейнера крипто про CSP выбрал свой ключ
6. Плагин КриптоПро проверил ключ (все ок) и создал подпись
7. Плагин КриптоПро отправил сообщение об успехе на FE
8. FE отправляет на BE данные о подписанте с id документа и данными ЭП
9. BE записывает данные в БД
10. BE отправляет на фронт сообщение об успешной записи данных
11. FE отображает пользователю сообщение об успешной подписи протокола “Протокол успешно подписан“
1 я понимаю как "нажал кнопку"? тогда да.
3. замечу что в современных браузерах не плагин, а расширение, что добавляет еще один слой.
4. Расширение обратилось к плагину и проверило, что адрес страницы в перечне доверенных.
Если нет, то запрашивает у пользователя разрешение на считывание списка сертификатов. Пользователь ответил нет - выдается ошибка. Пользователь ответил да - расширение обращается к плагину. плагин обращается к CryptoApi. CryptoApi перечисляет сертификаты в хранилище и некоторые дополнительные свойства (имеет ли сертификат ключ, например).
CryptoApi возвращает результат плагину.
В зависимости от плагина также может проверяться подключен ли токен/флешка - для этого также вызывается CryptoApi. CryptoApi вызывает криптопровайдер определенного типа (например, крипто про CSP) и перечисляет доступные контейнеры. CryptoApi возвращает результат плагину.
плагин формирует итоговый список сертификатов и возвращает расширению.
FE получает список сертификатов от хранилища и видит свойства (например, имеет ли сертификат ключ). При необходимости не имеющие ключа исключаются.
5. FE отображает список сертификатов пользователю.
Пользователь выбирает сертификат.
FE обращается к расширению с передачей объекта сертификата, данных документа, пвраметров, вызывая функцию подписания.
Расширение переадресует это плагину.
Плагин переадресует это CryptoApi.
CryptoApi при необходимости делает пред обработку данных для сложных форматов подписи.
CryptoApi переадресует криптопровайдеру, связанному с сертификатом (крипто про CSP).
Криптопровайдер по ссылке, связанной с сертификатом в хранилище ищет контейнер.
Если контейнер не вставлен - выводит запрос пользователю в интерфейсе криптопровайдера.
Если контейнер имеет пин-код и он не запомнен - выводит запрос пользователю в интерфейса криптопровайдера.
6. Если все ок - выполняется вычисление хэша данных, хэш подписывается ключом из контейнера.
7. Результат возвращается криптопровайдером в CryptoApi.
CryptoApi при необходимости собирает более сложный формат подписи.
CryptoApi возвращает плагину.
плагин возвращает расширению.
расширение возвращает FE.

Как-то так. В теории если сертификат связан с другим криптопровайдером, то вместо крипто про CSP будет что-то другое. Однако сам по себе плагин (и расширение) не может вычислить криптографические функции.

Насчет варианта 2 немного не понял - pycades это просто другой интерфейс того же плагина, больше подходит для BE. Если будете проверять подпись перед сохранением в БД, то там тоже понадобится плагин и криптопровайдер. Правда для проверки допускается использование без лицензии. Если же мысль в том что ключи хранятся на сервере и подписывает BE, то нужна лицензия (серверная, ага). В целом почти все остается как расписано выше, разве что визуализация документа и выбор сертификата ложатся на связку FE-BE. Кроме того, пользователи должны как-то аутентифицироваться.
Цитата:
сертификат необходимо проверять. а если ключ скомпроментирован? злоумышленник украл эп заявителя, подписал документ: "отдать полцарства"
Это можно несколько ослабить если документ формируется самой ИС, но в целом верно.
Цитата:
без доступа к интернету будет проблематично
Да, то есть в локальной сети должны размещаться "кэшированные" списки отзыва и должно быть настроена их выдача при обращении по оригинальному адресу их публикации. В простейшем случае - замена DNS на локальный IP по которому они лежат.

Отредактировано пользователем 1 марта 2022 г. 10:18:38(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
IliaSA оставлено 01.03.2022(UTC)
Offline IliaSA  
#7 Оставлено : 1 марта 2022 г. 19:54:38(UTC)
IliaSA

Статус: Новичок

Группы: Участники
Зарегистрирован: 24.02.2022(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 1 раз
Автор: basid Перейти к цитате
Откройте комплект докуменатации соответствующую версию (версии) CSP и начните с формуляра: там изложено - кому и какую документацию надо читать.
В документации же описан "белый список" API, функции которого можно использовать без оценки контроля встраивания.
P.S.
Требования это, конечно, прекрасно, но было бы неплохо понимать: какие требования выполнимы, а какие - не очень.


Добрый день. Подскажите пожалуйста, про какую из документаций идет речь, я просто столько ее разной прочитал по этому ПО, у вас есть ссылка на то, что вы имели ввиду?

Автор: basid Перейти к цитате
Ещё надо учитывать, что если вы решите выполнять разработку на возмездной основе, то вы подпадаете под требования постановления о лицензировании отдельных видов деятельности.


Здесь я тоже не до конца понял что имеете ввиду, естественно я выполняю разработку своего приложения на возмездной основе и хочу использовать уже существующие механизмы ЭЦП, чтобы не создавать своих, в каком месте я подпадаю под лицензирование отдельных видов деятельности?

Автор: basid Перейти к цитате
Требования это, конечно, прекрасно, но было бы неплохо понимать: какие требования выполнимы, а какие - не очень.


Именно для того что бы понять насколько они выполнимы я и создал эту тему, спасибо!

Отредактировано пользователем 1 марта 2022 г. 20:06:13(UTC)  | Причина: Не указана

Offline IliaSA  
#8 Оставлено : 1 марта 2022 г. 20:33:58(UTC)
IliaSA

Статус: Новичок

Группы: Участники
Зарегистрирован: 24.02.2022(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 1 раз
Автор: two_oceans Перейти к цитате
Цитата:
Вариант 1.
Участники кейса: Пользователь системы, Front-end (FE) и Back-end (BE)

1. Пользователь вызвал функцию “Подписать ЭЦП“
2.FE отправил вызвал плагин КриптоПро
3. Браузер запросил у пользователя разрешения на использование браузерного плагина - разрешено
4. Плагин КриптоПро запросил подтверждение ключа
5. Пользователь с флэшки или из закрытого контейнера крипто про CSP выбрал свой ключ
6. Плагин КриптоПро проверил ключ (все ок) и создал подпись
7. Плагин КриптоПро отправил сообщение об успехе на FE
8. FE отправляет на BE данные о подписанте с id документа и данными ЭП
9. BE записывает данные в БД
10. BE отправляет на фронт сообщение об успешной записи данных
11. FE отображает пользователю сообщение об успешной подписи протокола “Протокол успешно подписан“
1 я понимаю как "нажал кнопку"? тогда да.
3. замечу что в современных браузерах не плагин, а расширение, что добавляет еще один слой.
4. Расширение обратилось к плагину и проверило, что адрес страницы в перечне доверенных.
Если нет, то запрашивает у пользователя разрешение на считывание списка сертификатов. Пользователь ответил нет - выдается ошибка. Пользователь ответил да - расширение обращается к плагину. плагин обращается к CryptoApi. CryptoApi перечисляет сертификаты в хранилище и некоторые дополнительные свойства (имеет ли сертификат ключ, например).
CryptoApi возвращает результат плагину.
В зависимости от плагина также может проверяться подключен ли токен/флешка - для этого также вызывается CryptoApi. CryptoApi вызывает криптопровайдер определенного типа (например, крипто про CSP) и перечисляет доступные контейнеры. CryptoApi возвращает результат плагину.
плагин формирует итоговый список сертификатов и возвращает расширению.
FE получает список сертификатов от хранилища и видит свойства (например, имеет ли сертификат ключ). При необходимости не имеющие ключа исключаются.
5. FE отображает список сертификатов пользователю.
Пользователь выбирает сертификат.
FE обращается к расширению с передачей объекта сертификата, данных документа, пвраметров, вызывая функцию подписания.
Расширение переадресует это плагину.
Плагин переадресует это CryptoApi.
CryptoApi при необходимости делает пред обработку данных для сложных форматов подписи.
CryptoApi переадресует криптопровайдеру, связанному с сертификатом (крипто про CSP).
Криптопровайдер по ссылке, связанной с сертификатом в хранилище ищет контейнер.
Если контейнер не вставлен - выводит запрос пользователю в интерфейсе криптопровайдера.
Если контейнер имеет пин-код и он не запомнен - выводит запрос пользователю в интерфейса криптопровайдера.
6. Если все ок - выполняется вычисление хэша данных, хэш подписывается ключом из контейнера.
7. Результат возвращается криптопровайдером в CryptoApi.
CryptoApi при необходимости собирает более сложный формат подписи.
CryptoApi возвращает плагину.
плагин возвращает расширению.
расширение возвращает FE.

Как-то так. В теории если сертификат связан с другим криптопровайдером, то вместо крипто про CSP будет что-то другое. Однако сам по себе плагин (и расширение) не может вычислить криптографические функции.

Насчет варианта 2 немного не понял - pycades это просто другой интерфейс того же плагина, больше подходит для BE. Если будете проверять подпись перед сохранением в БД, то там тоже понадобится плагин и криптопровайдер. Правда для проверки допускается использование без лицензии. Если же мысль в том что ключи хранятся на сервере и подписывает BE, то нужна лицензия (серверная, ага) точно нет. В целом почти все остается как расписано выше, разве что визуализация документа и выбор сертификата ложатся на связку FE-BE. Кроме того, пользователи должны как-то аутентифицироваться.
Цитата:
сертификат необходимо проверять. а если ключ скомпроментирован? злоумышленник украл эп заявителя, подписал документ: "отдать полцарства"
Это можно несколько ослабить если документ формируется самой ИС, но в целом верно.
Цитата:
без доступа к интернету будет проблематично
Да, то есть в локальной сети должны размещаться "кэшированные" списки отзыва и должно быть настроена их выдача при обращении по оригинальному адресу их публикации. В простейшем случае - замена DNS на локальный IP по которому они лежат.



Спасибо, но осталась пара вопросов:

1. Если я хочу сохранить в БД данные подписи, я же могу это сделать? НА BE у меня ничего и не проверялось, простохрание факта подписи и хэша.
2. Мне нужно, чтобы если что, сам подписнный ЭЦП документ мог рапознаваться другими системами как подписанный. Например в случае когда я сохраняю в единый реест документов мои данные с подписью, другие системы (пока понятия не имею какие) смогут распознать эту подпись? Или все таки для этого лучше подписывать PDF как воветуют выше?
3. Уже уточнил выше, но может у вас ест конкретные ссылки на документацию или какие нибудь описанные готовые решения?
4. Т.е. оффлайн можно организовать но больно? а можно где нибудь про оффлайн реализацию также посмотреть?

Спасибо еще раз

Offline basid  
#9 Оставлено : 1 марта 2022 г. 22:27:43(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,115

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
Автор: IliaSA Перейти к цитате
Подскажите пожалуйста, про какую из документаций идет речь
Про ту, которая из раздела загрузки ПО. По требованиям регулятора (по-экземплярный учёт распространения СКЗИ) - необходима регистрация.
Цитата:
в каком месте я подпадаю под лицензирование отдельных видов деятельности?
ЧАВО

Отредактировано пользователем 1 марта 2022 г. 22:37:07(UTC)  | Причина: Не указана

Offline basid  
#10 Оставлено : 1 марта 2022 г. 22:36:48(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,115

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
Автор: IliaSA Перейти к цитате
2. Мне нужно, чтобы если что, сам подписнный ЭЦП документ мог рапознаваться другими системами как подписанный.
Есть разные варианты: CMS в виде присоединённой или отсоединённой ЭП и встраиваемые в конкретные типы документов (PAdES для PDF или собственные варианты для "офисных" форматов).
В некоторых случаях выбора нет: суды РФ, например, принимают только отсоединённые ЭП.
Следовательно, вам нужен, как минимум, CMS и, желательно, уметь работать, хотя бы, с PAdES.
А ещё надо знать, хотя бы, про PKI, OCSP/TSP и другие аббревиатуры, скрывающие понятия разной степени сложности.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.