Как работает двустороннее шифрование? - PullRequest
5 голосов
/ 29 января 2010

Я могу, например, с помощью pidgin otr, общаться с кем угодно, и это безопасно. Мы не обменяли секретный пароль или что-то еще, программа просто устанавливает шифрование, и все уверяют меня, что это безопасно.

Итак, что у меня есть это:

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

Поскольку между person1 и person2 никогда не обменивались информацией, что может помешать злоумышленнику3 перехватить весь трафик и расшифровать все сообщения?

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

Я немного растерялся.

Ответы [ 8 ]

12 голосов
/ 29 января 2010

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

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

Таким образом, в типичном случае вы извлекаете открытый ключ, затем генерируете, шифруете и отправляете закрытый ключ, а затем отправляете данные, зашифрованные этим закрытым ключом.

4 голосов
/ 29 января 2010

В википедии написано хорошее описание: http://en.wikipedia.org/wiki/Public-key_cryptography

2 голосов
/ 29 января 2010

Вот правила шифрования с открытым ключом:

  1. Открытый ключ может быть использован для шифрования сообщения, которое только соответствующий закрытый ключ может расшифровать.
  2. Закрытый ключ может использоваться для шифрования сообщения, которое только может расшифровать соответствующий открытый ключ.

Таким образом, он работает в обоих направлениях.Открытый ключ, являющийся открытым, не является проблемой.

Причина, по которой он работает, намного сложнее и требует некоторой интересной математики.

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

Кроме того, OTR небезопасен, если вы на самом деле не разговариваете с человеком,Он подвержен атаке «человек посередине».Это не потому, что шифрование может быть нарушено или что-то в этом роде.Нет, атака «человек посередине» - это когда кто-то вставляет себя между вами и собеседником, с которым вы хотите поговорить.

Если вы А, и вы пытаетесь поговорить с человеком Б, а есть мужчинав середине, M, затем атака работает следующим образом.

Вы начинаете говорить с B, но без вашего ведома вы начинаете говорить с M, который притворяется, что B. Когда вы начинаете говорить с M, Mначинает разговор с Б, притворяясь вами.Вы зашифровываете все свои вещи в M (который вы считаете B).M расшифровывает его и повторно зашифровывает в B (который думает, что M - это вы).

Если M всегда может оставаться в центре, ни один из ваших разговоров с B не будет безопасным.Если вы когда-нибудь сможете говорить с B без M в середине, OTR будет жаловаться на то, что открытый ключ Bs изменился (в основном потому, что вы действительно использовали открытый ключ Ms и только сейчас получаете настоящий открытый ключ Bs).Конечно, OTR может также жаловаться, потому что М пытается внедрить (его / ее) себя, и ключ, который вы считаете правильным, действительно есть.

Способ победить человека посерединеАтака предназначена для вас и B, чтобы говорить каким-то образом, где вы можете быть уверены по другим причинам, по которым вы разговариваете с B. Затем вы можете поделиться информацией о вашем открытом ключе с B, и B может поделиться информацией о h () открытый ключ с вами.Вы можете сделать это в кафе или по телефону.Неважно, если кто-то подслушает детали, просто вы знаете, что именно тот человек, которого вы ожидаете, передаст их вам.

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

2 голосов
/ 29 января 2010

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

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

1 голос
/ 29 января 2010

Вы задали два вопроса:

  1. Есть способы безопасного обмена ключами, например, с протоколом Диффи-Хеллмана . Это безопасно, даже если злоумышленник прослушивает все сообщения.

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

1 голос
/ 29 января 2010

Шифрование с открытым ключом работает следующим образом: вы свободно выдаете свой открытый ключ. Люди используют ваш открытый ключ для шифрования сообщений, которые могут быть расшифрованы только вашим личным ключом (которым вы не делитесь). Ваш закрытый ключ действует как «недостающий фрагмент», который используется при расшифровке информации, поскольку он является единственной частью уравнения, которая может дешифровать что угодно. Если кто-то что-то шифрует с помощью вашего открытого ключа, вы не сможете использовать свой открытый ключ для расшифровки данных впоследствии. Это достигается с помощью очень больших простых чисел и некоторых очень специфических уравнений.

1 голос
/ 29 января 2010

Вы можете кодировать с открытым ключом, но для декодирования вам нужен личный ключ.

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

1 голос
/ 29 января 2010

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

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