Обмен открытыми ключами - PullRequest
       21

Обмен открытыми ключами

0 голосов
/ 21 февраля 2012

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

Я использую кодировку base64 для отправки открытых ключей в электронной почте между устройствами.По прибытии они не работают, и принимающее приложение выдает исключения, когда я пытаюсь их использовать.Код base64, а также код генерации и поиска ключей были тщательно протестированы в другом приложении и работают.Вот проблема в двух словах:

(1) все API ключей используют ключи SecKeyRef.

(2) SecKeyRef, очевидно, содержит указатели, каждый раз, когда я получаю пару ключей из цепочки для ключей, он выдает разные биты с определенными смещениями

(3), если я получаю ключ как CFDataRef, который должен быть «плоским», я получаю заметно другого зверя, всегда с одинаковыми значениями и большим количеством нулевых отступов (заглавная A в base64).

(4) импортированный CFDataRef не работает

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

Спасибо.

1 Ответ

0 голосов
/ 06 марта 2012

Это похоже на запутанный вопрос. Вы спрашиваете о том, как работает обмен открытыми ключами, или о том, почему вы не можете перенести объект в памяти на другой компьютер, не сломав указатели.

Ответ на первый вопрос заключается в том, что вы просто передаете открытый ключ - это серия байтов, которые обычно закодированы в шестнадцатеричном или base64-коде или заключены в сертификат X509 (ASN1). Открытый ключ сам сообщает другому пользователю достаточно информации, чтобы он мог зашифровать любой поток данных во что-то, что может быть расшифровано кем-то, владеющим закрытым ключом. Следовательно, передача открытого ключа может происходить на виду.

Единственный недостаток безопасности криптографии с открытым ключом - это то, что злоумышленник может посередине передать открытый ключ и зашифрованный текст. Если A желает передать B и M может видеть и изменять весь трафик между ними, тогда M может просто притвориться B, безопасно подключиться к A и затем может расшифровать то, что A пытается отправить в B. Симметрично он может сделать то же самое для B, и, таким образом, двусторонний канал разрушен.

SSL побеждает эту теоретическую атаку, используя проверку цепочки доверия, которая гарантирует, что M не может притворяться B, даже если B не известен A, потому что B может подтвердить свою личность, полагаясь на какую-то общую третью сторону ( CA). Это причина, почему недавние нападения на Diginotar и Comodo были настолько серьезными. Шифрование было безопасным, но проверка личности не была.

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

...