Разница между подписью XML-сообщения с использованием dsig: Signature и TLS Client Certificate - PullRequest
1 голос
/ 11 ноября 2010

Я понимаю, что этот вопрос может быть немного расплывчатым, или я использую неправильную терминологию, потому что я пытаюсь разобраться с этим материалом :).

У меня есть требование реализовать цифровую подпись XML-сообщения с помощью раздела dsig: Signature. Я думаю, что понимаю этот процесс; Я буду использовать личный ключ, чтобы подписать его, что будет гарантировать получателю, что именно я отправил сообщение и , что никто не подделал его.

Прав ли я, что это отличается от реализации клиентских сертификатов TLS, но цель та же? (потому что TLS - это транспортный уровень, верно?) Будет ли проще внедрить Клиентские сертификаты? Один лучше другого?

Большое спасибо за ваш ответ,

Мартейн

Обновление 1:

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

Ответы [ 2 ]

5 голосов
/ 11 ноября 2010

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

Использование TLS защищает сообщение от просмотра и изменения промежуточными сторонами.Сертификат X.509 на стороне сервера гарантирует, что отправленные ему сообщения могут быть прочитаны только сервером с этим закрытым ключом, а отправляемые им сообщения отправляются с сервера с этим закрытым ключом.Это может произвольно рассматриваться как подписание сервером и шифрование для сервера с сертификатом X.509, хотя на самом деле это относится только к сообщениям рукопожатия TLS, а не к данным приложения, которые впоследствии обмениваются.(Я пропускаю тот факт, что вы все равно получаете симметричное шифрование канала, независимо от того, представил ли какой-либо сертификат сертификат; важно, чтобы хотя бы сервер использовал сертификат, чтобы клиент знал, с чем он связывается, а необщение с потенциальным человеком посередине).Когда вы добавляете к этому сертификат клиента, клиент также подписывает сообщения TLS, которыми он обменивался во время рукопожатия.

Когда вы используете сертификаты клиента и сервера, вы можете (осторожно) провести аналогию с уровнем сообщениябезопасность, в которой сообщения, которые подписаны и зашифрованы, являются сообщениями рукопожатия TLS, которые используются для установления канала TLS.

Однако существуют большие различия с безопасностью на уровне сообщений (например, XML-DSig и XML-Enc).

Во-первых, одной из функций подписи сообщений (XML-DSig) является аудит, так что вы можете хранить записи того, что было сказано.Это не специально ограничено по времени.Это гораздо сложнее сделать, даже если вы записали пакеты TLS.С современными комплектами шифров в SSL / TLS, которые используют DHE (эфемерный режим Диффи-Хеллмана), даже если у вас есть закрытый ключ сервера, вы не сможете обязательно расшифровать канал, если записали все его пакеты (без дополнительных знаний о DHE).механизм).

Во-вторых, с точки зрения реализаций, XML-DSig обычно выполняется на уровне приложений, тогда как TLS, как правило, выполняется соединителем сервера.Различие может быть размытым в зависимости от условий развертывания, но TLS касается связи с машиной / контейнером, а не с приложением, стоящим за ними.Как правило, сертификат TLS будет установлен в контейнере Java или на уровне WCF, тогда как сертификат, используемый для XML-DSig, будет использоваться запущенным позади приложением / приложением.Там могут быть разные люди или ответственная процедура.

(Вы также правы, что если вы используете XML-DSig без XML-Enc, вы не шифруете данные.)

1 голос
/ 11 ноября 2010

Пока вы сравниваете яблоки с апельсинами.

Данные XML могут быть подписаны разными способами, например, с использованием стандарта XMLDSig и сертификата X.509 (также можно использовать другие типы ключей в XMLDSig).Подпись удостоверяет авторство документа (ну, в некоторой степени, конечно).

TLS означает безопасность транспортного уровня и используется для шифрования (без подписи) данных во время передачи.Это не имеет ничего общего с XML.TLS также использует сертификаты X.509, но вы не можете использовать один и тот же сертификат для XMLSDig и TLS, так как сертификаты должны иметь конкретные цели (поле использования ключа).

Я предлагаю вам взять какую-нибудь книгу по PKI (я всегда рекомендую Официальное руководство Rsa Security по криптографии для простоты) и внимательно ее прочитать.

...