Асимметричное шифрование

Завтра у меня экзамен по Advanced Development, но я застрял на теме шифрования. Я прочитал об этом на http://support.microsoft.com/kb/246071. Однако я все еще в замешательстве.

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

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

С уважением,

Ричард

Изменить: Итак, чтобы суммировать все ответы в случае веб-приложения (конкретное использование, для которого мне нужно знать об этом):

  1. Пользователь посещает веб-сайт;
  2. Пользователя просят предоставить открытый ключ;
  3. Пользователь создает пару открытого и закрытого ключей, сохраняет частный закрытым и отправляет открытый ключ обратно на сервер;
  4. Сервер использует открытый ключ для шифрования всего, что необходимо отправить пользователю, и отправляет информацию пользователю;
  5. Пользователь использует свой закрытый ключ для расшифровки ответа от сервера;
  6. Пользователь делает то, что ему нужно, и отправляет ответ на сервер, используя закрытый ключ для его шифрования;
  7. Сервер расшифровывает с помощью открытого ключа. Шаги 4–7 могут повторяться много раз, или они могут происходить только один раз, или могут происходить только 4 и 5.

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

Спасибо за помощь.

С уважением,

Ричард

Изменить: Ну, я только что вернулся с экзамена, и я думаю, что все прошло довольно хорошо. Но вопросов о криптографии не возникло ... Помощь все равно была оценена. Спасибо всем.

С уважением,

Ричард


person ClarkeyBoy    schedule 30.08.2010    source источник
comment
en.wikipedia.org/wiki/Public-key_cryptography?   -  person Rubens Farias    schedule 30.08.2010
comment
Кстати, если вы интересуетесь криптографией, вам стоит заглянуть в The Code Book Саймона Сингха.   -  person Rubens Farias    schedule 30.08.2010
comment
Спасибо за ссылку на вики, однако а) нам сказали никогда не использовать вики (я все равно использую для большинства вещей !!) и б) то, как это было объяснено здесь, гораздо легче понять, чем вики. Однако в вики есть несколько хороших глав о подобных практических последствиях.   -  person ClarkeyBoy    schedule 31.08.2010


Ответы (5)


Алиса создает свой закрытый ключ + открытый ключ. Она держит свой закрытый ключ в секрете. Она делает свой Открытый ключ общедоступным.

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

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

person Chris Lercher    schedule 30.08.2010
comment
Насколько я понимаю, это работает и наоборот - Алиса может зашифровать, используя свой закрытый ключ, а затем Боб может расшифровать. Хороший способ объяснить это. Спасибо. - person ClarkeyBoy; 31.08.2010
comment
Нет. В этом сценарии Бобу придется использовать открытый ключ для расшифровки. Но любой другой также знает открытый ключ (он общедоступный!) И может также расшифровать. - person Jens; 31.05.2012
comment
@Jens: Это бесполезно для шифрования (в смысле секретности), но его можно использовать для подписи сообщений. Примечание. В зависимости от схемы шифрования может быть важно использовать разные ключи для подписи и шифрования (см., Например, security.stackexchange.com/q / 1806) - person Chris Lercher; 31.05.2012

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

Исходя из этого, можно получить 4 операции:

  • зашифровать с помощью открытого ключа
  • расшифровать с помощью закрытого ключа
  • подписаться с помощью закрытого ключа
  • проверить подпись с помощью открытого ключа

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

  • сеть доверия, где люди подписывают связь друг друга между открытым ключом и идентификатором: это обычно модель PGP.
  • инфраструктура открытого ключа (PKI), где вы можете получить от центров сертификации для создания сертификатов, часто с промежуточными звеньями, в древовидная иерархия. (PGP также может использовать эту модель, но это кажется менее распространенным.)
person Bruno    schedule 30.08.2010

Другие предоставили «общее» описание, и я углублюсь в реальную сторону.

Большинство современных стандартов асимметричного шифрования работают не с необработанными общедоступными и закрытыми ключами, а с более сложными оболочками, такими как сертификаты X.509 или ключи OpenPGP (сегодня это две самые популярные инфраструктуры асимметричного шифрования). И сертификаты, и ключи OpenPGP содержат дополнительную информацию, которая позволяет легко идентифицировать, искать и управлять ими.

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

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

person Eugene Mayevski 'Callback    schedule 30.08.2010
comment
Это хороший ответ - вам нужно добавить идентифицирующую информацию в зашифрованный блок / большой двоичный объект, чтобы определить, какой ключ (и) будет его дешифровать. (Имя, отпечаток или хэш открытого ключа) - person Dominik Weber; 31.08.2010

Открытый ключ предоставляется «шифровальщику» «дешифратором», поэтому, по определению, «дешифратор» знает закрытый ключ (потому что он является частью пары ключей, созданной «дешифратором».

person Mark    schedule 30.08.2010
comment
Ах, так вы говорите, что сообщение зашифровано дешифратором с использованием закрытого ключа, поэтому шифровальщик может расшифровать сообщение, а затем отправить обратно сообщение, зашифрованное с использованием открытого ключа, которое может расшифровать только пользователь с исходным закрытым ключом? В этом есть смысл, если только хакер не получит исходное сообщение с открытым ключом. Или я все еще не понимаю? - person ClarkeyBoy; 30.08.2010
comment
Нет ... при асимметричной криптографии вам нужно отправлять другим людям только свой открытый ключ. Независимо от того, кто слушает это сообщение, любой может зашифровать информацию с помощью вашего открытого ключа и отправить ее вам. Если кто-то слушает, это не имеет значения, потому что только у вас есть закрытый ключ (который никогда не должен передаваться). - person Sebastian; 31.08.2010
comment
Итак, я так понимаю, вы имеете в виду, что в веб-приложении именно клиенты (пользователи) сами предоставляют открытый ключ серверу и хранят закрытый ключ ..? Если так, то в этом есть смысл. Спасибо. - person ClarkeyBoy; 31.08.2010

Скажем, «дешифратор» = D, а «шифровальщик» = E.

D ранее отправил свой открытый ключ E, чтобы E мог зашифровать сообщение. Поскольку только D знает свой закрытый ключ, только D будет знать, как расшифровать только что отправленное ему сообщение E (помните: один ключ используется для шифрования, а другой - для расшифровки). Таким образом, вы получаете конфиденциальность.

person Sebastian    schedule 30.08.2010