стратегия цифровой подписи процесса?

Я разрабатываю веб-приложение и хочу поставить цифровую подпись на определенном этапе процесса

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

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

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

Например:

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

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

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

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

Салудос

сас


person opensas    schedule 16.07.2010    source источник


Ответы (4)


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

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

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

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

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

person Rohan West    schedule 16.07.2010
comment
большое спасибо за ваш ответ, мы знаем, что процесс подписания трудно осуществить через веб-приложение. Если я правильно понимаю, конечный пользователь не может выполнить проверку самостоятельно, он должен полагаться на ваше приложение. Рассматривали ли вы создание PDF-файла и его цифровую подпись? таким образом (если я правильно понимаю) любой, у кого есть pdf, мог проверить подпись... - person opensas; 16.07.2010
comment
@opensas: наши данные, включая подпись, хранятся в локальной клиентской базе данных в виде XML-документа, не имеющего ничего общего с PDF-документами. Наше приложение также генерирует pdf-документы из клиентских данных, они не подписаны, мы использовали iTextSharp для создания pdf-документов, их можно подписать программно с помощью API Bouncy Castle. - person Rohan West; 16.07.2010

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

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

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

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

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

person ttchong    schedule 16.07.2010

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

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

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

person Bharat Vasant    schedule 24.05.2019

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

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

person msw    schedule 16.07.2010