Как два празднует работа шифрования?

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

Таким образом, то, что я имею, является этим:

Person1, говорящий с Person2 (Принимающий людей действительно то, кто они говорят, что они),

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

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

Я немного смущен.

5
задан Matt 29 January 2010 в 18:50
поделиться

8 ответов

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

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

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

12
ответ дан 18 December 2019 в 06:34
поделиться

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

1
ответ дан 18 December 2019 в 06:34
поделиться

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

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

2
ответ дан 18 December 2019 в 06:34
поделиться

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

4
ответ дан 18 December 2019 в 06:34
поделиться

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

1
ответ дан 18 December 2019 в 06:34
поделиться

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

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

1
ответ дан 18 December 2019 в 06:34
поделиться
[113661461-

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

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

Итак, это работает обоими способами. Общественный ключ, являющийся публичным, не проблема.

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

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

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

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

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

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

Способ поражения атаки человека в среднем предназначен для вас и B, чтобы поговорить каким-то образом, где вы можете быть уверены по другим причинам, которые вы можете разговаривать с B. Тогда вы можете поделиться информацией о вашей публике Ключ с B, и B может обмениваться информацией о открытом клавише H (IS / ER). Вы можете сделать это в кафе или по телефону. Неважно, если кто-нибудь подслушивает детали, только что вы знаете, что это тот человек, которого вы ожидаете, что они вам дают.

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

2
ответ дан 18 December 2019 в 06:34
поделиться

, вероятно, можно добавить переменную класса в класс потока и задать эту переменную с помощью request.url.host перед запуском класса потока.

этот метод также может применяться к объекту сеанса.

-121--3665333-

Это то, что я в итоге сделал. Я знаю, что он грязный, но он подходит для того, что я ищу:

boolean dragComplete = false;
        apTable.getTableHeader().addMouseListener(new MouseAdapter() {
            @Override
            public void mouseReleased(MouseEvent e) {
                if (dragComplete) {
                    System.out.println("Drag completed");
                }
                dragComplete = false;
            }
        });
        columnModel.addColumnModelListener(new TableColumnModelListener() {

            public void columnAdded(TableColumnModelEvent e) {
            }

            public void columnRemoved(TableColumnModelEvent e) {
            }

            public void columnMoved(TableColumnModelEvent e) {
                dragComplete = true;
            }

            public void columnMarginChanged(ChangeEvent e) {
            }

            public void columnSelectionChanged(ListSelectionEvent e) {
            }
        });
-121--2938682-

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

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

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

1
ответ дан 18 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: