стратегия для цифровой подписи процесса? - PullRequest
2 голосов
/ 16 июля 2010

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

То есть пользователь приложения выполняет определенное действие, и я бы хотел, чтобы это событие было подписано цифровой подписью.

Пользователь должен использовать токен usb при выполнении действия для его цифровой подписи.

Я бы хотел знать, какой подход вы рекомендуете сделать для такой вещи.

Например:

подписать запись в базе данных (как вы ее сопровождаете?) (Минусы: вам нужно проверить ее самим приложением, я думаю)

создать PDF-файл с указанием события и пользователя и подписать его в цифровой форме (pro: pdf не зависит от приложения)

создать и подписать и XML-документ (как его составить? Где хранится цифровой знак?)

любой другой ???

Saludos

1021 * SAS *

Ответы [ 4 ]

2 голосов
/ 16 июля 2010

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

Мы используем USB-устройство для генерации подписей. Устройство от компании IronKey , оно чрезвычайно безопасно и соответствует многим стандартам безопасности. Устройство имеет аппаратно сгенерированную пару ключей, которую можно использовать для подписи и проверки.

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

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

Надеюсь, это поможет, я пропустил много деталей, если у вас есть другие вопросы, дайте мне знать!

1 голос
/ 24 мая 2019

Вы можете использовать расширение браузера для цифровой подписи «UserId | Action | TimeStamp» и отправки на сервер для выполнения, где сервер может проверить подпись с уже зарегистрированным открытым ключом.(Вам может понадобиться зарегистрировать открытый ключ пользователя как часть процесса регистрации).Расширение браузера поддерживает цифровую подпись с помощью USB-токена или смарт-карты.

Вы можете сослаться на JavaScript в сообщении: https://stackoverflow.com/a/55757349/9659885

У этого были оба метода для регистрации сертификата и подписи токена или любой строки.

1 голос
/ 16 июля 2010

В вашем случае у каждого пользователя будет свой открытый ключ и закрытый ключ.Пользователь подпишет запись базы данных (строку и т. Д.), Документ в формате pdf или xml, используя свой закрытый ключ.

Вы получаете подписанную запись базы данных (подписанную строку и т. Д.), Подписанный документ pdf или xml.

Теперь вы сохраняете подписанную запись базы данных в виде двоичной записи в вашей базе данных.Вы храните подписанный PDF или XML как обычный документ в вашем хранилище.И, возможно, вам нужно добавить поле в вашей базе данных, чтобы интегрировать этот файл в ваше приложение.

Для того, чтобы библиотека подписывалась, вы можете использовать AES, вот вам и реализованная библиотека на разных языках: http://en.wikipedia.org/wiki/AES_implementations

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

0 голосов
/ 16 июля 2010

Есть хорошие введения до Криптография с открытым ключом , которые вы должны прочитать и понять, прежде чем даже подумать о реализации.ваш вопрос, вы еще не знаете достаточно, чтобы даже задать правильные вопросы, и самое тривиальное недоразумение с вашей стороны и всей системы безопасности разваливается.Возможно, вы захотите воспользоваться услугами эксперта, потому что сделать это правильно на 99,9% - это просто напрасная трата усилий.

...