Простая электронная подпись: "Подписание" PDF без сертификата для пост-подписной защиты от несанкционированного доступа
Прежде всего, немного предыстории - актуальные вопросы находятся внизу.
В настоящее время я работаю над веб-приложением (вроде SaaS), которое позволяет пользователям отправлять формы своим клиентам.
Эти формы являются простыми, небольшими контрактами для небольших работ, где их клиенты говорят: "Да, конечно, я сделаю это, и вот мое подтверждение".
Для того, чтобы быть "подписанным", не требуется полностью квалифицированная цифровая подпись, и электронной подписи будет достаточно.
Хотя в этом случае простой флажок "Да, я сделаю это" будет юридически достаточен, я стремлюсь реализовать его с помощью панели для подписи. Честно говоря, это только потому, что кажется более обязательным и "аккуратным".
Текущий рабочий процесс выглядит так:
- Клиент пользователя открывает веб-форму (участник, которого просят подписать, является единственным человеком во вселенной, который знает прямую ссылку)
- Помечает несколько полей и вводит текст
- Нажмите "Подписать", чтобы открыть панель подписи HTML5 (для мобильных устройств) или простой ввод (ПК) для ввода их имени.
- Клики "Принять"
- PDF создается для загрузки и хранится на сервере (вместе с отметкой времени, IP-адресом и несколькими другими частями информации)
Как видите, соглашение в целом представляет собой простую электронную подпись - даже без наворотов.
Что я хотел бы сделать
Как и в случае любой простой электронной подписи, любая сторона может легко сказать, что документ мог быть подделан.
Поэтому я правильно подписал PDF-файл в соответствии со спецификациями (используя tcpdf): для этого сначала нужно было создать PDF-файл, а затем добавить подпись к /Sig
словарь, затем генерирует дайджест по всем диапазонам байтов (исключая сигнатуру), связывая его с .crt
file and voilá: документ подписан с прекрасным преимуществом того, что подпись становится недействительной, если даже один байт изменяется.
Теперь к вопросам:
- Можно ли извлечь выгоду из "несанкционированного доступа" без использования сертификата? Как я уже сказал, это должны быть не цифровые подписи, а простые электронные подписи. Тем не менее, я хотел бы получить выгоду от любых изменений, внесенных после подписи.
- В качестве альтернативы я мог бы просто использовать соответствующий сертификат для процесса подписания. Но этот сертификат будет моим, а не моими пользователями или даже пользователями моих пользователей. В этом смысле это принесет больше вреда, чем пользы? Т.е. сертификат принадлежит не той стороне и поэтому становится бессмысленным; Я, а не подписные ваучеры; "Документ был изменен и переподписан после того, как я подписал"; и т.п.
2 ответа
Можно ли извлечь выгоду из "несанкционированного доступа" без использования сертификата? Как я уже сказал, это должны быть не цифровые подписи, а простые электронные подписи. Тем не менее, я хотел бы получить выгоду от любых изменений, внесенных после подписи.
Нет, по крайней мере, до тех пор, пока вы хотите сделать это совместимым способом.
Конечно, вы можете изобрести свою собственную систему безопасности, создать средство просмотра PDF или, по крайней мере, плагины для часто используемых средств просмотра PDF для поддержки вашей системы, и развернуть эти программы для своих пользователей.
Но если вы хотите, чтобы существующий Adobe Reader проверял подпись как есть, вы должны пойти по пути X509 PKI.
В качестве альтернативы я мог бы просто использовать соответствующий сертификат для процесса подписания. Но этот сертификат будет моим, а не моими пользователями или даже пользователями моих пользователей. В этом смысле это принесет больше вреда, чем пользы? Т.е. сертификат принадлежит не той стороне и поэтому становится бессмысленным; Я, а не подписные ваучеры; "Документ был изменен и переподписан после того, как я подписал"; и т.п.
При использовании собственного сертификата для подписи не забудьте правильно заполнить поле причины, чтобы оно указывало на то, что ваша подпись применяется в качестве встречной подписи для гарантии достоверности.
Учитывая это, я не вижу, чтобы твоя подпись причинила вред.
Вопрос в том, насколько это хорошо.
Очевидно, что пользователь все еще может утверждать, что он подписал что-то другое... потому что он сделал! Он подписал веб-форму, а не PDF. Таким образом, вам, возможно, придется предоставить доказательство того, что PDF-файл точно отражает то, что веб-форма показала в любом случае, что пользователь подписал нечто эквивалентное.
Если вы хотите, чтобы пользователь фактически отказывался от участия в нем, вам необходимо заставить его подписать лично таким образом, который обычно считается запрещающим вмешательство. Другими словами, ваш пользователь должен сам применять надлежащие цифровые подписи. Все остальное открыто для притязаний на подлог.
Вы можете использовать доверенную метку времени (определенную в RFC3161) вместо подписи, созданной клиентом или вашим сервером. Отметка времени защищает целостность документа и доказывает, что ваш документ существовал до определенного времени. Технически говоря, это цифровая подпись, созданная доверенной третьей стороной.