Аутентификация сервера с помощью цифровых подписей - PullRequest
1 голос
/ 13 января 2011

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

Я разрабатываю клиент-серверное приложение на C #, которое должно поддерживать аутентификацию с помощью цифровых сертификатов и цифровых подписей. Я знаю, как проверить достоверность и целостность подписи (с помощью SignedCms.CheckSignature ()), но как это проверяет подлинность какой-либо из задействованных частей?

Например:

  1. Клиент запрашивает у сервера цифровую подпись,
  2. Клиент получает подпись и проверяет ее,
  3. Если проверка прошла успешно, продолжайте.

Клиент может стать жертвой атаки «человек посередине» и получить действительную подпись на шаге 2. Проверка будет успешной, но клиент не будет общаться с нужным сервером.

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 13 января 2011

Вам не хватает доверия к сертификату подписи.

Рассмотрим сертификаты SSL, у них есть путь подписи к корневому ЦС, которому доверяет Windows (или любая другая ОС). Если MITM представляет самозаверяющий сертификат или сертификат, созданный ненадежным центром сертификации, браузер отклоняет его и выдает предупреждение. Таким образом, сертификат заслуживает доверия только в том случае, если он выдан известным вам центром сертификации или связан с одним из известных вам.

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

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

(на самом деле все становится сложнее, но, я надеюсь, вы понимаете суть)

1 голос
/ 13 января 2011

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

...