Как подтвердить что клиент подписал PDF, который я ему отправил? Я формирую PDF и отправляю на фронтенд. На фронте, клиент подписывает PDF с помощью CryptoPro. И отправляет подписанный на сервер. Как организовать процесс, чтобы удостовериться, что подписанный документ именно тот который я отправил и клиент не "подсунул" свою версию PDF.
Чтобы удостовериться, что подписанный клиентом PDF документ действительно соответствует тому, который вы отправили, можно использовать следующую схему:
Генерация хеша исходного документа: При формировании PDF на сервере, вы должны создать его хеш (например, с использованием алгоритма SHA-256) и сохранить его вместе с PDF документом или отправить хеш клиенту.
Отправка PDF и хеша: Когда вы отправляете PDF на фронтенд, отправьте вместе с ним и хеш документа. Это можно сделать, например, в формате JSON, где ключ будет именем документа, а значение - хеш.
Подписание на клиенте: Клиент получает PDF и подписывает его с помощью CryptoPro. После подписания клиент может быть уведомлен о необходимости отправить не только подписанный PDF, но и хеш, который вы отправили ранее.
Проверка на сервере: Когда клиент отправляет подписанный документ обратно на сервер, вы должны:
Проверить, что документ действительно подписан (это можно сделать с помощью проверки подписи в CryptoPro).Посчитать хеш вновь полученного PDF файла на сервере.Сравнить полученный хеш с хешем, который вы отправили ранее. Если хеши совпадают, значит клиент подписал оригинальный документ, а не изменённый.
Дополнительные меры безопасности: Чтобы повысить безопасность, можно также использовать временные метки или уникальные идентификаторы для каждого документа, что поможет предотвратить повторное использование старых документов.
Эта схема обеспечит надежную проверку того, что подписанный документ - это именно тот PDF, который вы отправили клиенту.
Чтобы удостовериться, что подписанный клиентом PDF документ действительно соответствует тому, который вы отправили, можно использовать следующую схему:
Генерация хеша исходного документа: При формировании PDF на сервере, вы должны создать его хеш (например, с использованием алгоритма SHA-256) и сохранить его вместе с PDF документом или отправить хеш клиенту.
Отправка PDF и хеша: Когда вы отправляете PDF на фронтенд, отправьте вместе с ним и хеш документа. Это можно сделать, например, в формате JSON, где ключ будет именем документа, а значение - хеш.
Подписание на клиенте: Клиент получает PDF и подписывает его с помощью CryptoPro. После подписания клиент может быть уведомлен о необходимости отправить не только подписанный PDF, но и хеш, который вы отправили ранее.
Проверка на сервере: Когда клиент отправляет подписанный документ обратно на сервер, вы должны:
Проверить, что документ действительно подписан (это можно сделать с помощью проверки подписи в CryptoPro).Посчитать хеш вновь полученного PDF файла на сервере.Сравнить полученный хеш с хешем, который вы отправили ранее. Если хеши совпадают, значит клиент подписал оригинальный документ, а не изменённый.Дополнительные меры безопасности: Чтобы повысить безопасность, можно также использовать временные метки или уникальные идентификаторы для каждого документа, что поможет предотвратить повторное использование старых документов.
Эта схема обеспечит надежную проверку того, что подписанный документ - это именно тот PDF, который вы отправили клиенту.