Нашел ли я проблему безопасности в API или я просто не понимаю SSL? - PullRequest
1 голос
/ 22 декабря 2010

Я работаю над созданием набора привязок Python вокруг API на основе XML, предоставляемого поставщиком. Поставщик требует, чтобы все транзакции проводились через SSL. Используя коробку Linux, я создал файл ключа и CSR для своего приложения. Используя их веб-портал самообслуживания, я создаю сертификат, используя этот CSR. И файл ключа, и сертификат используются при отправке SSL-запроса к API.

Сейчас я работаю над созданием классов исключений, чтобы сделать сообщения об ошибках более подробными (и, надеюсь, более полезными для разработчиков, использующих мои привязки). Часть моего тестирования включала изменение файла ключа: переставьте пару символов здесь, замените 4 или 5 случайными символами там и т. Д. К моему удивлению, изменение файла ключа не дало никакого эффекта! Пока я не изменил его общую длину, API не жаловался на файл с плохим ключом. Единственный способ, которым я смог выдать ошибку, был обмен совершенно другим ключом от другого приложения. В этот момент API пожаловался на несоответствие общего имени.

Это нормальное поведение или поставщик не реализовал должным образом SSL?

Ответы [ 2 ]

3 голосов
/ 22 декабря 2010

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

На самом деле аутентификация с поврежденным или неправильным ключом не пройдет.Математически невозможно выполнить аутентификацию с неверным закрытым ключом (при условии, что серверная часть протокола работает правильно).

1 голос
/ 23 декабря 2010

Этот закрытый ключ содержит закодированную в Base64 кодировку ASN.1 некоторых больших целых чисел, без какой-либо проверки CRC и т. Д.Кроме того, идентификатор ключа рассчитывается по части открытого ключа, а не по частному.Таким образом, нет возможности проверить его действительность, когда некоторые средние байты будут изменены, и ошибка будет выдана соединительной стороной, когда проверка подписи не удастся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...