Что использовать? Цифровой подписи? - PullRequest
7 голосов
/ 25 января 2009

Извините, я не смог найти лучший заголовок для этого вопроса. Следующее мое требование.

Я работаю над проектом, который проводит транзакции с большим количеством денег на другой счет. Система автоматически переводит деньги на счета A, B, C и т. Д., Но до того, как это сделать, кто-то из A, B или C должен (в электронном виде) утвердить переводимую сумму.

Какой, по вашему мнению, лучший способ сделать это? Я хочу, чтобы система отправила файл (PDF-файл чего-либо) с цифровой подписью (?), И уполномоченное лицо из A, B и C должно проверить и подтвердить правильность суммы.

Поскольку сумма велика, я должен убедиться, что файл, отправленный системой, не был подделан, и в то же время я также хочу убедиться, что файл (ответ), отправленный A, B или C, также не подделан. Каков наилучший способ достичь этого? Есть идеи?

Ответы [ 4 ]

11 голосов
/ 25 января 2009

Цифровые подписи - это то, что вы ищете. Adobe PDF (поскольку вы упомянули pdf) позволяет подписывать pdf в бесплатной версии Adobe Reader, и проверка также выполняется автоматически, как только вы открываете документ pdf.

Разница между DigSig и (H) MAC, опубликованными Noldorin, заключается в том, что MAC используют симметричное шифрование, где вам необходим защищенный канал для обмена ключом, тогда как в среде PKI этот безопасный канал не требуется.

Зависит от того, как вы хотите распространять свои ключи.

2 голосов
/ 25 января 2009

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

РЕДАКТИРОВАТЬ: См. Также DSA (http://en.wikipedia.org/wiki/Digital_Signature_Algorithm),, который является популярным алгоритмом для цифровых подписей и полностью реализован в стандартной среде .NET (пространство имен System.Cryptography).

1 голос
/ 26 января 2009

Моей первой реакцией будут цифровые подписи, но у них есть фатальный недостаток: это цифровые данные, которые могут быть скомпрометированы неосторожным пользователем.

Если это вызывает озабоченность, вы можете воспользоваться одноразовым паролем для процесса, который используют южноафриканские банки. Этот пароль передается им с помощью средств, которые не участвуют в транзакции (в Южной Африке это с помощью SMS, что я настоятельно рекомендую). Сначала мы вводим имя пользователя и пароль, а затем получаем OTP с помощью SMS, который затем необходимо ввести для любых транзакций, которые приводят к тому, что деньги покидают наши счета.

К сильным формам безопасности (в повышении эффективности) относятся (я не эксперт, но знаю немного):

  • Знание (пароль)
  • Владение (SIM-карта мобильного телефона, которая может принимать SMS-сообщения, или USB-накопитель с сертификатом)
  • Местоположение (компьютер с аппаратной системой управления сертификатами, CellID)
  • Время (OTP истекает, транзакция должна произойти в определенное время)
  • Идентичность (Сканер отпечатков пальцев - фактически пароль - но безумно длинный)
  • Уникальность (оптоволоконный кабель, закодированный в поляризации фотонов)

Из того, что я знаю, если у вас есть какие-то три из них, вам будет удобно с вашей безопасностью. Добавление большего увеличивает безопасность в геометрической прогрессии, но также увеличивает фактор неудобства. Банки используют Знание, Владение и Время в Южной Африке - и фишинг действительно не работает против банков Южной Африки.

Надеюсь, это немного вам помогло.

0 голосов
/ 27 января 2011

Для цифровой подписи файла вы можете использовать любого из партнеров Microsoft. Например, Arx предоставляет вам инструмент CoSign, который вы можете использовать бесплатно (или, по крайней мере, его пробную версию). Это позволит вам добавить электронные подписи в большинство доступных форматов (word, pdf, xml и т. Д.).

...