LINUX.ORG.RU

Как подписать .pdf-файл цифровой подписью?

 , ,


2

2

Чтобы это стало подписанным документом по российским законам? Всё-таки более 10-ти лет уже́ прошло, а я ещё не могу на документе подпись поставить, как неграмотный крестьянин начала прошлого века не мог расписаться на бумажном договоре. Люди за такое время школу успевают закончить, и грамотность освоить. И я тоже хочу быть как все.

Я предполагаю, что между сторонами нет специальной договорённости о том, что в качестве подписи можно принимать что угодно (например пометку сайта, о том что документ залил конкретный пользователь через https).

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

С 1 июля 2021 года появилась возможность бесплатного оформления сертификата ЭЦП в удостоверяющем центре ФНС (УЦ ФНС) и в его доверенных организациях (их перечень пока не определён). С 1 января 2022 года основные УКЭП для ИП, компаний и нотариусов будет выдавать только УЦ ФНС, у удостоверяющих центров такую функцию заберут. Бесплатную УКЭП могут получить только руководители организации (например НКО) или сам ИП. Все остальные сотрудники, работающие по доверенностям, будут регистрировать ЭЦП физического лица с электронной доверенностью в аккредитованных удостоверяющих центрах — на платной основе.

Вроде бы какая-то российская контора выпускала модифицированный под российские алгоритмы Open Office, который умел подписывать, но эта программа была платной. А я хочу опенсорсную (точнее я хочу бесплатную, не развивайте в эту сторону офтопик пожалуйста).

Нашел на сайте несколько тем (0, 1, 2, 3, 4, 5), но не нашел ссылки на внятный туториал. И это довольно странно в нашу эпоху удалённой ковидноизбегательной работы.

Десять лет назад даже петицию писали «о переводе документоооборота в цифровой вид».

Подписанный .pdf-документ должен получиться настолько юридически значимым, чтобы его признавали документом нотариусы (желательно большинство из них, у них там есть общая для них организация, которая им всем софт поставляет). Обычно нотариусы говорят «эта бумажка юридическим документом не является», где слово «бумажка» можно заменить на «файл». Я думаю это годный критерий для проверки «сделано» или «не сделано». Услугу можно такую вообразить - передаём нотариусу цифровой файл, нотариус распечатывает бумажную копию и заверяет (своей мокрой печатью и подписью), что бумажная копия верна и была правильно подписана на момент времени составления документа действующей (не отозванной) подписью. И обратно - даём документ на бумаге, получаем документ в цифровой форме, подписанный нотариусом.

Ну и вторая услуга - сохранить подпись для истории (это если дикие блокчейны запретят), эту услугу мог бы предоставлять либо нотариус, либо удостоверяющий центр. Если ЦБ запретит блокчейн (распределённый таймсервер), то пройдет еще лет 20, пока необходимость ведения истории осознают, и люди между собой для заключения договоров в электронном виде смогут пользоваться в повседневной жизни только лет через пятьдесят (но это уже будет неактуально из-за квантовых компьютеров).

★★★

Последнее исправление: Shushundr (всего исправлений: 43)

Как вариант КриптоАРМ или КриптоПроPDF + Adobe Reader или Adobe Acrobat, да и другие способы есть. А вообще ерунда это все, там где для работы реально нужна ЭЦП это не так работает, обычно подписывается не сам файл, подписывается все в обычном браузере с помощью КриптоПро + плагин.

mbivanyuk ★★★★★
()
Ответ на: комментарий от mbivanyuk

А вообще ерунда это все, там где для работы реально нужна ЭЦП это не так работает, обычно подписывается не сам файл

купил на днях квартиру удаленной сделкой, подписывался именно pdf файл договора, 4мя подписями (моя, банка, застройщика и еще хер знает кого). разумеется, подписывался не втупую криптопрошной тулзой, но сам факт.

vvviperrr ★★★★★
()
Ответ на: комментарий от vvviperrr

А как это технически выглядело? Вы им предоставили свою подпись на флэшке и они подписали pdf сразу четырьмя подписями? Я собственно про то что на торгах например никто предварительно pdf не подписывает, просто крепишь их в форму и уже потом подписываешь прям в браузере через плагин CAdES.

mbivanyuk ★★★★★
()
Последнее исправление: mbivanyuk (всего исправлений: 1)
Ответ на: комментарий от mbivanyuk

подпись создается в приложении домклик (считай обычный фронт), со своими кредами и мастер ключом. там же открываешь договор в пдф, жмешь подписать - генерится файл подписи. после договор подписывают все остальные. все это добро отправляется в росреестр.

vvviperrr ★★★★★
()
Ответ на: комментарий от vvviperrr

Ааа, ну тогда мы об одном и том же просто разным словами. Так и есть обычно. Я про то что ТСу может отдельное приложение для подписания pdf и не нужно, все зависит от того где и что подписывать. Возможно обычного КриптоПро будет достаточно, все от сферы применения зависит.

mbivanyuk ★★★★★
()
Последнее исправление: mbivanyuk (всего исправлений: 1)
Ответ на: комментарий от mbivanyuk

все зависит от того где и что подписывать

скорее всего. я имею ввиду, что на выходе все прозрачно - вот документ, вот его подписи.

vvviperrr ★★★★★
()
Ответ на: комментарий от vvviperrr

на выходе все прозрачно - вот документ, вот его подписи.

В смысле подписи находятся в отдельном файле?

обычного КриптоПро будет достаточно

Но разве у него открытые исходные тексты?

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

В смысле подписи находятся в отдельном файле?

Да, отсоединенная подпись в отдельном файле

Но разве у него открытые исходные тексты?

ну так ключ в налоговой создается в контейнере криптопро. Так что без вариантов, крипто про потребуется.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

https://forum.rutoken.ru/topic/3387/

Есть два термина «неизвлекаемость» и «неэкспортируемость». Эти термины пришли из разных мест, предлагаю разобраться: В нашей терминологии используются: - «Неизвлекаемые» ключи – это аппаратные ключи формата PKCS#11. Для генерации которых использовались аппаратные возможности Рутокена семейств 2.0 и 3.0. Такие ключи успешно используются, например, в ЕГАИС. Все операции с подписью производятся внутри токена и ключи никогда не покидают память токена (не извлекаются во время подписания). - «Неэкспортируемые» ключи – терминология пришла из программного продукта «КриптоПро CSP» - это значит, что во время генерации ключей с помощью «КриптоПро CSP» был установлен флаг «экспорт запрещен», то есть закрытый ключ нельзя скопировать на другой носитель. Но во время работы с таким контейнером, подписание происходит на программном уровне в оперативной памяти компьютера. ... Требования к неизвлекаемости сейчас нет. Согласно требованиям УЦ ФНС есть требования к неэкспортируемости для повышения безопасности.

Т.е. ключ извлечь можно, но это «требует применения специальных средств и техники.»

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

https://habr.com/ru/post/161361/

Функция «скопировать ключ» в КриптоПРО копирует закрытый и открытый ключи с одного носителя на другой. Носителями могут быть ФС обычной флешки, различные токены или же реестр Windows.

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

http://www.cryptopro.ru/forum2/default.aspx?g=posts&t=15292

1) Флаг экспортируемости нельзя изменить после создания ключевого контейнера.

2) Неэкспортируемый ключевой контейнер из реестра Windows можно перенести только в реестр Windows.

Неэкспортируемый ключевой контейнер в виде папки с файлами на обычном флеш-накопителе, естественно, можно скопировать как папку с файлами.

Неэкспортируемый ключевой контейнер на токене/смарт-карте скопировать/экспортировать нельзя.

Штатных способ переноса ключевого контейнера два: Панель управления CSP и csptest -keycopy.

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

https://itnan.ru/post.php?c=1&p=306034

программная часть библиотеки СКЗИ должна знать о существовании на токене апплета, реализующего криптографический функционал (например, генерация ключа, подпись данных и т.д.) и уметь с ним работать.

https://habr.com/ru/post/276057/

Итак, мы можем делать все, что захотим с файловой системой токена.

неизвлекаемый ключ действительно есть, но служит он только для криптопреобразований с помощью алгоритма RSA. … Ни одно из СКЗИ, одобренных ФСБ для использования на территории РФ (вроде бы) не использует RSA, а все они используют криптопреобразования на основе ГОСТ-*, поэтому eToken – не более чем флэшка с паролем и замысловатым интерфейсом.

Shushundr ★★★
() автор топика
Ответ на: комментарий от vvviperrr

купил на днях квартиру удаленной сделкой

только потом не забудь письменно (вроде в мфц) подать заявление на запрет к манипуляциям с твоим имуществом без твоего физического присутствия (хз как это юридически называется ну ты понял). потому что эти госуслуги за год взламывают раз 5 минимум.

bhfq ★★★★★
()
Ответ на: комментарий от Shushundr

Ты это к чему вообще все нагородил?

Человек поставил задачу, по условиям которой ключ и сертификат у него сформированы в неизвлекаемом (некопируемом) контейнере криптопро.

В этих условиях его вопросы у особенностям лицензии или наличию исходников криптопровайдера теряют смысл, ибо выбора-то у енго нет по определению, за него уже все выбрали.

Что касается твоего вопроса, по поводу копирования контейнеров, то да, все так и было. Но налоговая принимает только сертифицированные ключи, в которых реализованы ГОСТ* и как раз таки даже зачастую отстутсвует RSA (серия lite). Так что не факт, что будет так просто.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

ключ и сертификат у него сформированы в неизвлекаемом (некопируемом) контейнере криптопро.

Это не так.

Если бы ты читал внимательно, то там написано, что:
1) не бывает токенов, которые реализуют неизвлекаемость для ГОСТ (все аппаратные токены какие есть, умеют обеспечивать неизвлекаемость для RSA, а для ГОСТ - не умеют)
2) поэтому у человека не неизвлекаемость, а неэкспортируемость.
3) не неэкспортируемость ему не поможет, потому что она обходится

Ты это к чему вообще все нагородил?

Я хочу понять, как мне повторить такую функциональность опенсорсным путём, чтобы весь код был открытым (обязательно) и свободным (желательно).

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

Я хочу понять, как мне повторить такую функциональность опенсорсным путём, чтобы весь код был открытым (обязательно) и свободным (желательно).

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

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

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

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

Я сильно подозреваю, что несмотря на как бы публичность самих алгоритмов, все нюансы работы, чтобы 1:1 совпадало, без реверса криптопрошных изделий не сделать, а этим и потом опенсорсом вряд ли кто будет заниматься, потому что в отличие от каких-нибудь драйверов для принтера, тут прилететь можно совсем неиллюзорно.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

Это был бы убедительный аргумент при двух условиях:

1) если бы были перечислены законы, по которым только КриптоПро и никак иначе
2) если бы были перечислены нормативные акты, по которым «прилетит»

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

1) если бы были перечислены законы, по которым только КриптоПро и никак иначе

На рынке де-факто «полтора» поставщика. КриптоПро и инфосекс с Vipnet.csp

2) если бы были перечислены нормативные акты, по которым «прилетит»

Лицензией реверс точно запрещен, а учитывая что крипта всякая и вообще вотчина околофсбшных контор, то какая тебе разница что там за нормативные акты? Какие надо, такие и найдутся =) Запреты на работы и услуги в этой области без лицензии, еще в середине 90-х возникли, после чего рынок решений в РФ сдулся до нескольких почти монопольных фирм.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от Shushundr

Если вообще про опенсорсные реализации российских алгоритмов, то вроде еще лет 10 назад с переменным успехом они проходили в openssl и других программах, но там патчи с ними то брали, то не брали, то они отдельно как-то были.

Попробуй этого vitus товарища поспрашивать, он емнип имел некоторое отношение к патчам в openssl.

praseodim ★★★★★
()
Ответ на: комментарий от Shushundr

Крипто про стоит в районе 2500 рублей, она работает с ЭЦП по стандарту ГОСТ 2012, именно такую тебе выдадут в МФЦ.

Криптопровайдеров сертифицированных для работы по ГОСТ 2012 мало.

Но ты можешь использовать OpenSSL, только не говори никому, что ты подписывал документ не сертифицированным ПО.

infomeh ★★
()
Ответ на: комментарий от infomeh

Но ты можешь использовать OpenSSL

А точно можно? В смысле результат будет совместимый с сертифицированными решениями? Просто у меня в памяти отложилось, что оно как бы в теории так, а на практике какие-то нюансы были. Но могу ошибиться, может исправили все.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

https://www.esphere.ru/products/uc/ep_fizlitca#rec182400721

Если вам нужна электронная подпись для сайта госуслуг и вы заказываете ее впервые, вам понадобится токен — специальный защищенный носитель. Для работы с ОС Windows подойдет Рутокен Lite. Если вы работаете на Linux или MacOS, потребуется Рутокен ЭЦП 2.0.

https://www.rutoken.ru/products/catalogue/id_81.html

с аппаратной реализацией российских стандартов электронной подписи, шифрования и хеширования

обладает поддержкой отечественных криптографических стандартов: ГОСТ Р 34.10-2012, описывающий алгоритмы формирования и проверки электронной подписи и ГОСТ Р 34.11-2012, определяющий алгоритм и процедуру вычисления хеш-функции, и алгоритма выработки парного ключа VKO ГОСТ Р 34.10-2012.

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

https://www.rutoken.ru/solutions/freeware/openssl/

Связь с устройством осуществляется через кроссплатформенную библиотеку rtPKCS11ECP, которая также должна быть установлена.

Примеры использования можно найти в составе комплекта разработчика Рутокен. Дополнительная информация размещена на портале документации.

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

Статья 2016 года вообще-то.

Насколько я в курсе, рутокены серии ecp2 и пр. госты поддерживают хардварно. Так что вполне можно создавать неизвлекаемые ключи.

https://www.rutoken.ru/products/catalogue/id_81.html

Я хочу понять, как мне повторить такую функциональность опенсорсным путём, чтобы весь код был открытым (обязательно) и свободным (желательно).

Ну явно никак. Ведь нет ни токенов с открытыми драйверами ни даже криптопро, а получить ключ ты можешь только в налоговой и они его генерят сами.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

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

Мне непонятно, кто генерит ключ. Ты только что написал, что есть аппаратная генерация в токене. Так генерит всё-таки токен, или «сами в налоговой»?

Кстати, у меня ещё вопрос, что им мешает сгенерировать два разных ключа на одно ФИО/ИНН ? Они будут подписаны оба этим УЦ, один ключ отдадут мне, другой ключ продадут бандитам.

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

Впрочем, все что я писал выше никак не отменяет того факта, что фнс делает неизвлекаемые контейнеры, которые прекрасно извлекаются, что тоже хорошо.

Проверил, скопировал себе контейнер со своим ключом фнс, все прекрасно работает теперь и без всякого там вашего токена…

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

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

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

Мне непонятно, кто генерит ключ.

В налоговой на месте генерят. Нет, никакой там аппаратной генерации нет. Она возможна, но они ее не используют. Используют обычный 100% программный криптопровайдер криптопро, просто ставят бит неэкспортируемости, на который обращает внимание только сам криптопро. Прекрасно все копируется.

Кстати, у меня ещё вопрос, что им мешает сгенерировать два разных ключа на одно ФИО/ИНН ?

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

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

AVL2 ★★★★★
()
Ответ на: комментарий от Shushundr

Недавно покупал ключ на флешке, и извлекал с помощью КриптоПро CSP, что бы можно было работать без этой самой флешки.

MOPKOBKA ★★★
()
Ответ на: комментарий от Shushundr

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

Я с этим и не спорил. Я говорил о теоретических возможностях, а не о том, что реально делает ФНС.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

подпись на бумагах УЦ будет только на том, который я получил

какие ещё бумаги, если все проверки происходят электронно?

Shushundr ★★★
() автор топика
Ответ на: комментарий от MOPKOBKA

Это если бит извлекаемости не стоит. В ФНС его ставят, поэтому средствами криптопро такой контейнер не скопировать. Но контур уже утилиту сделал, так что криптопро и не нужен для этого.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Я говорил о теоретических возможностях, а не о том, что реально делает ФНС.

Ну вот, используя это знание о том, как реально делает ФНС, можно использовать их сертификат в линуксе без пропиертарного ПО. Я сразу спрашивал именно об этой возможности сделать всё открыто и опенсорсно.

Shushundr ★★★
() автор топика
Ответ на: комментарий от Shushundr

какие ещё бумаги, если все проверки происходят электронно?

в суде, вестимо. УЦ лишат акредитации за такие фокусы. На этом все и держится. УЦ удостоверяет твою подпись.

AVL2 ★★★★★
()
Ответ на: комментарий от Shushundr

Тогда надо вернуться к тому, что ты конкретно хотел сделать.

Если для этого достаточно openssl c провайдером ГОСТ, то почему нет?

А если это нужно для работы на площадках, где все заточено под криптопро/контур/сбис/cades, то явно не получится.

AVL2 ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Наверное бит стоял, но я сразу скопировал данные с флешки в образ, и работал уже с ним, наверное бит потерялся.

Не могло такого быть. В банке подпись получал? Они защиту на контейнер просто не ставят. Я вообще нигде ее не видел, кроме как в ФНС.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Тогда надо вернуться к тому, что ты конкретно хотел сделать.

Да, давай вернёмся, я хотел подписывать .pdf-документы локально.

А если это нужно для работы на площадках

Опять ты со своими фантазиями об идеальном мире.

Shushundr ★★★
() автор топика
Ответ на: комментарий от MOPKOBKA

Подпись для ИП была, хз где получал, тк как это делал не я.

Раньше ее в куче УЦ получали и прекрасно она копировалась.

AVL2 ★★★★★
()
Ответ на: комментарий от Shushundr

Да, давай вернёмся, я хотел подписывать .pdf-документы локально.

Как и на любой файл, можно создать отсоединенную подпись. Тут даже утилита для этого была на tcl/tk аля криптоарм.

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

Опять ты со своими фантазиями об идеальном мире.

ну так а дальше-то куда? Подписал пдф, дальше что? В идеальный мир? Как ты его сдашь контрагентам/регуляторам?

AVL2 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.