Что использовать? Цифровой подписи?
Извините, я не смог найти лучший заголовок для этого вопроса. Следующее мое требование.
Я работаю над проектом, который проводит транзакции с большим количеством денег на другой счет. Система автоматически переводит деньги на счета A,B, C и т. Д., Но перед этим кто-то из A, B или C должен (в электронном виде) утвердить переводимую сумму.
Как вы думаете, это лучший способ сделать это? Я хочу, чтобы система отправила файл (PDF-файл) с цифровой подписью (?), И уполномоченное лицо из A, B и C должно проверить и подтвердить правильность суммы.
Поскольку сумма высока, я должен убедиться, что файл, отправленный системой, не был подделан, и в то же время я также хочу убедиться, что файл (ответ), отправленный A, B или C, также не подделан. Каков наилучший способ достичь этого? Есть идеи?
4 ответа
Цифровые подписи - это то, что вы ищете. Adobe PDF (так как вы упомянули pdf) позволяет подписывать pdf в бесплатной версии Adobe Reader, и проверка также выполняется автоматически, как только вы открываете документ pdf.
Разница между DigSig и (H)MAC, опубликованными Noldorin, заключается в том, что MAC используют симметричное шифрование, когда вам требуется безопасный канал для обмена ключом, тогда как в среде PKI этот безопасный канал не требуется.
Это зависит от того, как вы хотите распространять свои ключи.
Вы хотите посмотреть на MAC (коды аутентификации сообщений). Существует множество библиотек для различных языков, которые реализуют общие алгоритмы, такие как HMAC.
РЕДАКТИРОВАТЬ: См. Также DSA ( http://en.wikipedia.org/wiki/Digital_Signature_Algorithm), который является популярным алгоритмом для цифровых подписей и полностью реализован в стандартной среде.NET (пространство имен System.Cryptography).
Моей первой реакцией были бы цифровые подписи, но у них есть фатальный недостаток: это цифровые данные, которые могут быть скомпрометированы неосторожным пользователем.
Если это вызывает беспокойство, вы можете воспользоваться одноразовым паролем для процесса, который используют южноафриканские банки. Этот пароль передается им с помощью средств, которые не участвуют в транзакции (в Южной Африке это с помощью SMS, что я настоятельно рекомендую). Сначала мы вводим имя пользователя и пароль, а затем получаем OTP с помощью SMS, который затем необходимо ввести для любых транзакций, которые приводят к тому, что деньги покидают наши счета.
К сильным формам безопасности (в повышении эффективности) относятся (я не эксперт, но знаю немного):
- Знание (пароль)
- Владение (SIM-карта мобильного телефона, которая может принимать SMS-сообщения, или USB-накопитель с сертификатом)
- Местоположение (компьютер с аппаратной системой управления сертификатами, CellID)
- Время (OTP истекает, транзакция должна произойти в определенное время)
- Идентичность (Считыватель отпечатков пальцев - фактически пароль - но безумно долго)
- Уникальность (волоконно-оптический кабель, закодированный в поляризации фотонов)
Из того, что я знаю, если у вас есть какие-то три из них, вы можете быть в безопасности с вашей безопасностью. Добавление большего увеличивает безопасность в геометрической прогрессии, но также увеличивает фактор неудобства. Банки используют "Знание, владение и время" в Южной Африке - и фишинг действительно не работает против банков Южной Африки.
Надеюсь, это немного помогло тебе.
Для цифровой подписи файла вы можете использовать любого из партнеров Microsoft. Например, Arx предоставляет вам инструмент CoSign, который вы можете использовать бесплатно (или, по крайней мере, его пробную версию). Это позволит вам добавлять электронные подписи в большинство доступных форматов (word, pdf, xml и т. Д.).