Война в Украине

Все мы знаем, какой пиздец сейчас происходит с Украиной и одной известной вам страной-победительницей-фашизма. Если вы хотите почитать об этом, помочь актуализировать информацию или высказать свое мнение — можете сделать это в статье Война в Украине и в обсуждении.

PGP — различия между версиями

Материал из Urbanculture
Перейти к: навигация, поиск
м (стиль, оформление)
(добавлены определения, идея поручителей, скриншоты пары ключей)
Строка 5: Строка 5:
  
 
== Основные понятия ==
 
== Основные понятия ==
''Криптографический алгоритм'', он же ''шифр'' — математическая формула, преобразующая исходный текст в шифрованный с использованием ключа.
+
''Открытый текст'' — исходный текст, сообщение как таковое.
  
''Ключ ''— пароль (секретное слово или фраза), используемый при шифровании и известный только получателю сообщения. При условии, что алгоритм, то есть способ шифрования, известен, ключ является основой безопасности.
+
''Криптотекст'' (также ''шифротекст'', ''шифрат'') — закодированная форма сообщения, похожа на случайный набор символов. Если шифр использует ключ, то без знания ключа невозможно получить открытый текст из шифрата.
  
''Криптографическая стойкость'' — устойчивость алгоритма и ключей к анализу или перебору, отсутствие в алгоритме уязвимостей. Чем выше стойкость, тем труднее получить исходный текст, не имея ключа.
+
''Криптографический алгоритм'', он же ''шифр'' — набор математических операций, преобразующих исходный текст в шифрованный. Как правило, использует ключ. Все современные криптосистемы построены по [[:w:Принцип Керкгоффса|принципу Керкгоффса]], согласно которому секретность зашифрованных данных определяется секретностью ключа шифрования, то есть даже при известном криптографическом алгоритме криптоаналитик не в состоянии за приемлемое время получить расшифрованные данные, если не располагает ключом.
  
''Электронная цифровая подпись'' — механизм подтверждения подлинности и целостности цифровых документов.
+
''Криптоанализ'' (также ''дешифровка'') — наука о методах получения открытого текста из шифрата, не имея доступа к секретной ключу, необходимому для этого. Частным случаем является [[:lm ru:Терморектальный криптоанализатор|терморектальный криптоанализ]] (англ. {{Acronym|rubber-hose cryptanalysis|криптоанализ резиновым шлангом}}, викпдск. бандитский криптоанализ).
 +
 
 +
''Расшифровывание'' — действие, обратное шифрованию: получение открытого текста из шифрата. Не стоит путать с ''[[:w:дешифровкой|дешифровкой]]''.
 +
 
 +
''Ключ'' — это секретный текст, необходимый для шифрования или расшифровывания. Может быть паролем (секретное слово или фраза) или файлом. В соответствии с принципом Керкгоффса, ключ (а не алгоритм) является основой безопасности.
 +
 
 +
''Криптография с открытым ключом'' — когда для шифрования и для расшифровывания используются разные ключи: ''открытый'' и ''закрытый''. Открытый ключ помещается в публичный доступ, поэтому знание открытого ключа не дает дополнительных возможностей. Если шифрование происходит с открытым ключом, а расшифровка с закрытым, получаем ''асимметричное шифрование'': зашифровать может каждый, а расшифровать только хозяин ключа. Если наоборот — ''электронную цифровую подпись'' (ЭЦП). Асимметричное шифрование используется для передачи данных через прослушиваемый канал, когда требуется уверенность, что только адресат (он же обладатель закрытого ключа) сможет прочитать открытый текст. ЭЦП используется, чтобы подтвердить авторство открытого текста: в этом случае автор зашифровывает открытый текст своим закрытым ключом, после чего каждый может расшифровать общеизвестным открытым ключом этого автора и проверить открытый текст. Получить шифрат, который бы правильно расшифровывался данным открытым ключом, может только обладатель закрытого ключа. ЭЦП может иметь юридическую силу, подобно обычной подписи, если публичный ключ добавлен в базу данных соответствующего органа.
 +
 
 +
''Поручитель'' — человек, подтверждающий принадлежность данного публичного ключа кому-либо. Поручитель является аналогом нотариуса. Поручителю должно оказываться доверие, а его публичный ключ должен быть известен изначально, чтобы с помощью ЭЦП можно было убедиться, что подтверждение выписано поручителем, а не кем-то ещё. Формируются цепочки поручителей разных уровней, в которых публичный ключ следующего подписан предыдущим. У основания стоят поручители с мировым именем, например [[:w:Verisign|Verisign]]. Поручители являются одним из способом гарантировать принадлежность открытого ключа этому человеку, а без этого невозможно направить сообщение, которое мог бы прочитать только он, или надежно подтвердить авторство его сообщения.
 +
 
 +
''Хеш-функция'' — алгоритм, превращающий данные (например, текст) в число (''хеш-значение''). Число может быть довольно большим, например для [[:w:md5|md5]] это 128-битное число. ''Криптографическая хеш-функция'' — это хеш-функция, для которой не существует эффективного способа подобрать такие исходные данные, для которых бы она выдавала заранее выбранный результат. Для некоторых хеш-функций (например, crc32) это требование удается обойти, тогда функция считается взломанной и больше не используется в криптографии. Если появляется алгоритм генерации нескольких текстов, дающих одинаковое хеш-значение, то функцию тоже считают взломанной (например, md5). Криптографическую хеш-функцию можно рассматривать как необратимое шифрование без ключа. Хеш-функции применяются в криптографии для уменьшения размера текста перед его подписыванием ЭЦП и для безопасного хранения паролей, при котором можно проверить соответствие введенного пароля сохраненному, но нельзя узнать сам сохраненный пароль.
 +
 
 +
Ключ, как правило, можно «приладить» к хеш-функция в виде ''соли'' — строки, соединяемой с открытым текстом перед применением хеш-функции. Это бывает полезно для затруднения подбора исходного текста с помощью словарей популярных паролей и таблиц вида текст — хеш-значение. При атаках в качестве такой таблицы может использоваться google. В этом можно убедиться, поискав 202cb962ac59075b964b07152d234b70 — значение хеш-функции md5 для «123». А если использовать соль «wabranes», то md5(wabranes|123) = «477de9d90eaed5064a303698244dc685» уже не находится в гугле (за исключением, возможно, этой страницы).
 +
 
 +
''Криптографическая стойкость'' — устойчивость алгоритма и ключей к анализу или перебору, отсутствие в алгоритме уязвимостей. Чем выше стойкость, тем труднее, не имея ключа, совершить действие, для которого он нужен.
  
 
== Асимметричное шифрование ==
 
== Асимметричное шифрование ==
Метод шифрования, использующий пару ключей, публичный (открытый) и секретный, для обмена шифрованными сообщениями. Программа генерирует пару ключей, связанных между собой. Публичный используется только для шифрования, секретный же — лишь для расшифровки. Ключи связаны между собой так, что невозможно создать ещё один открытый ключ, не имея секретного. Но воссоздать секретный ключ, имея публичный, не выйдет даже при наличии образцов исходного и шифрованного текстов. Открытый ключ вместе с данными о его владельце распространяется среди корреспондентов, секретный же хранится в тайне. Отправитель шифрует сообщение публичным ключом, но расшифровать его может только получатель.
+
[[Файл:Testkey.png|thumb|left|Пример закрытого ключа]]
 +
[[Файл:Testpubkey.png|thumb|right|Пример открытого ключа из той же пары]]
 +
Метод шифрования, использующий пару ключей, открытый (публичный) и закрытый (секретный), для обмена шифрованными сообщениями. Программа генерирует пару ключей, связанных между собой. Публичный используется только для шифрования, закрытый же — лишь для расшифровки. Ключи связаны между собой так, что невозможно создать ещё один открытый ключ, не имея закрытого. Но воссоздать закрытый ключ, имея публичный, не выйдет даже при наличии образцов исходного и шифрованного текстов. Открытый ключ вместе с данными о его владельце распространяется среди корреспондентов, закрытый же хранится в тайне. Отправитель шифрует сообщение публичным ключом, но расшифровать его может только получатель.
  
Метод имеет ряд преимуществ перед симметричным шифрованием. При использовании одного ключа для кодирования и декодирования нужно быть уверенным, что он не попадёт в чужие руки. Следовательно, возникает множество проблем с его хранением и передачей. Пользователь может быть уверен в себе, но не в своих корреспондентах, или каналах связи, через которые он передаёт ключ. Асимметричное шифрование решает проблему сохранности секретного ключа однозначно, так как при его использовании нет необходимости передавать секретный ключ всем собеседникам. А публичный может передаваться и даже попасть в руки злоумышленника, но при попытке расшифровки того ждёт фиаско.
+
Метод имеет ряд преимуществ перед симметричным шифрованием. При использовании одного ключа для кодирования и декодирования нужно быть уверенным, что он не попадёт в чужие руки. Следовательно, возникает множество проблем с его хранением и передачей. Пользователь может быть уверен в себе, но не в своих корреспондентах, или каналах связи, через которые он передаёт ключ. Асимметричное шифрование решает проблему сохранности закрытого ключа однозначно, так как при его использовании нет необходимости передавать закрытый ключ всем собеседникам. А публичный может передаваться и даже попасть в руки злоумышленника, но при попытке расшифровки того ждёт фиаско.
  
 
== Как это работает ==
 
== Как это работает ==
[[Файл:pgp2.jpg|thumb|left]][[Файл:pgp3.gif|thumb|right]]
+
[[Файл:pgp2.jpg|thumb|left]][[Файл:pgp3.gif|thumb|600px|right]]
В современных версиях используют гибридное шифрование на основе обоих способов. Информацию вначале сжимают, затем шифруют одноразовым симметричным ключом, а тот, в свою очередь, асимметричным. Сжатие нужно для устранения избыточности текста, позволяющей проводить анализ на основе наиболее часто встречающихся фрагментов. Расшифровка идёт в обратном порядке: с помощью секретного ключа расшифровывают сеансовый, а посредством оного уже дешифруют весь текст<ref> по материалам https://www.pgpru.com/biblioteka/osnovy/vvedenievkripto/glava1/kakdejjstvuetpgp</ref>. Преимущество такого метода в том, что асимметричные алгоритмы менее стойки, чем симметричные, и при большом объёме данных легче подвергаются анализу<ref> по надёжности 1024-битный асимметричный ключ сравним с 128-битным симметричным</ref>; кроме того, шифрование симметричным способом идёт быстрее. Надёжность сеансового ключа по умолчанию высока, ибо он создаётся не человеком, а генератором псевдослучайных чисел. Также симметричный ключ в данном случае не может быть скомпрометирован, будучи использован только один раз без показа отправителю или получателю — его знает лишь программа шифрования, в зашифрованном виде передающая его программе вашего корреспондента внутри всего сообщения. При этом симметричный ключ не содержит количества информации, достаточной для успешного взлома или подбора ключа асимметричного алгоритма. Также такой сеансовый ключ не может быть подобран по словарю, в отличие от придуманных человеком.
+
В современных версиях используют гибридное шифрование на основе обоих способов. Информацию вначале сжимают, затем шифруют одноразовым симметричным ключом, а тот, в свою очередь, асимметричным. Сжатие нужно для устранения избыточности текста, позволяющей проводить анализ на основе наиболее часто встречающихся фрагментов. Расшифровка идёт в обратном порядке: с помощью закрытого ключа расшифровывают сеансовый, а посредством оного уже расшифровывают весь текст<ref> по материалам https://www.pgpru.com/biblioteka/osnovy/vvedenievkripto/glava1/kakdejjstvuetpgp</ref>. Преимущество такого метода в том, что асимметричные алгоритмы менее стойки, чем симметричные, и при большом объёме данных легче подвергаются анализу <ref>по надёжности 1024-битный асимметричный ключ сравним с 128-битным симметричным</ref>; кроме того, шифрование симметричным способом идёт значительно быстрее. Надёжность сеансового ключа по сравнению с паролем высока, ибо он создаётся не человеком, а генератором псевдослучайных чисел. Также симметричный ключ в данном случае не может быть скомпрометирован, так как используется только один раз и не демонстрируется отправителю или получателю — его знает лишь программа шифрования, в зашифрованном виде передающая его программе вашего корреспондента внутри всего сообщения. При этом симметричный ключ не содержит количества информации, достаточной для успешного взлома или подбора ключа асимметричного алгоритма. Также такой сеансовый ключ не может быть подобран по словарю, в отличие от придуманных человеком.
  
 
== Применяемые алгоритмы ==
 
== Применяемые алгоритмы ==
* RSA
+
* RSA — примечателен тем, что одна и та же пара ключей может использоваться и для асимметричного шифрования, и для ЭЦП.
 
* DSA
 
* DSA
 
* схема Эль-Гамаля
 
* схема Эль-Гамаля
Строка 29: Строка 45:
 
== Практическое применение ==
 
== Практическое применение ==
  
Тут понятно и ежу. Всё, что не должно быть известно третьим лицам, подлежит шифрованию. PGP и её аналоги дают достаточную (но не абсолютную) защиту конфиденциальности передаваемой информации, делая невозможным её анализ программами, собирающими персональные данные, и системами контроля типа eshelon и СОРМ. Кроме шифрования pgp, используется для простановки электронной подписи документа — хэшa на основе всего документа и секретного ключа его владельца. Таким образом, обладатель публичного ключа может проверить, не был ли изменён документ при пересылке и в действительности ли он составлен обладателем ключа секретного. При этом по имеющемуся хэшу невозможно установить сам секретный ключ, но и невозможно создать подпись, аналогичную обладателю секретного ключа. Электронная подпись позволяет обеспечить целостность документа, а также точно установить его владельца.
+
Тут понятно и ежу. Всё, что не должно быть известно третьим лицам, подлежит шифрованию. PGP и её аналоги дают достаточную (но не абсолютную) защиту конфиденциальности передаваемой информации, делая невозможным её анализ программами, собирающими персональные данные, и системами контроля типа eshelon и СОРМ. Кроме шифрования, pgp используется для создания электронной подписи документа — хэшa на основе всего документа и закрытого ключа его владельца. Таким образом, обладатель публичного ключа может проверить, не был ли изменён документ при пересылке и в действительности ли он составлен обладателем ключа закрытого. При этом по имеющемуся хэшу невозможно установить сам закрытый ключ, но и невозможно создать подпись, аналогичную обладателю закрытого ключа. Электронная подпись позволяет обеспечить целостность документа, а также точно установить его владельца.
  
 
== Обмен публичными ключами. Уязвимость. Сертификация и сеть доверия. ==
 
== Обмен публичными ключами. Уязвимость. Сертификация и сеть доверия. ==
Несмотря на все преимущества описанных алгоритмов, некоторые проблемы всё же остаются. Основная — <u>возможность подмены публичного ключа</u>. Если вы получаете ключ не непосредственно от его владельца, то вероятность подмены велика. Допустим, существует третья, заинтересованная сторона, которая предоставит вам свой ключ вместо ключа вашего корреспондента, а ему в свою очередь такой же фиктивный свой ключ вместо вашего. Тогда эта третья сторона сможет расшифровать ваше сообщение, подменить его тем же самым исходным текстом, только зашифрованным настоящим публичным ключом вашего корреспондента, и переслать ему. Он же, обладая вашим фиктивным ключом (который ему заботливо подсунули), шифрует для вас ответ, также достающийся третьей стороне, которая преспокойно добывает исходный текст и шифрует его вашим настоящим ключом. В результате хитрых манипуляций окажется, что вся сложность перехвата сводится не к криптоанализу и созданию идентичных хэшей электронной подписи, что почти невозможно,<ref>даже при слабом ключе это очень долго, весьма дорого и при длине асимметричного ключа более 1024 бит пока не реализуемо, ведущие криптоаналитики гарантируют это</ref> а к банальной подмене, что вполне реализуемо — было бы сильное желание.
+
Если люди уже знаю публичные ключи друг друга — то проблема зашифрованного обмена и подтверждения авторства для них решена (средствами асимметричного шифрования и ЭПЦ соответственно). Если обмена ключами не было, но есть гарантия, что сообщения доходят в неизмененном виде (то есть решена задача подтверждения авторства), то средства криптографии с открытым ключом [[:w:Алгоритм Диффи — Хеллмана|позволяют]] установить шифрованный канал. А вот наоборот не получится — если мы с кем-то установили шифрованный канал, одного этого недостаточно для уверенности в личности этого человека. Во времена второй мировой главной проблемой криптографии была передача симметричного ключа (который мог разгласить [[:lm ru:крыса-кун|каждый]], кто его знал), то сейчас основную сложность представляет обмен публичными ключами. Разглашать публичные ключи бессмысленно, так как они и так находятся в общем доступе, поэтому часть проблем уходит, но открывается достаточно возможностей для подмены самого публичного ключа, что приводит к перехвату шифрованных посланий (подписанных публичным ключом атакующего) или подделке авторства (за автора подписывается атакующий своим публичным ключом). Одним из решений проблемы дополнение схемы поручителями.
 +
 
 +
Допустим, существует третья заинтересованная сторона, которая предоставит вам свой ключ вместо ключа вашего корреспондента, а ему в свою очередь такой же фиктивный свой ключ вместо вашего. Тогда эта третья сторона сможет расшифровать ваше сообщение, подменить его тем же самым исходным текстом, только зашифрованным настоящим публичным ключом вашего корреспондента, и переслать ему. Он же, обладая вашим фиктивным ключом (который ему заботливо подсунули), шифрует для вас ответ, также достающийся третьей стороне, которая преспокойно добывает исходный текст и шифрует его вашим настоящим ключом. В результате хитрых манипуляций окажется, что вся сложность перехвата сводится не к криптоанализу и созданию идентичных хэшей электронной подписи, что почти невозможно,<ref>даже при слабом ключе это очень долго, весьма дорого и при длине асимметричного ключа более 1024 бит пока не реализуемо, ведущие криптоаналитики гарантируют это</ref> а к банальной подмене, что вполне реализуемо — было бы сильное желание. Такая атака называется {{Acronym|Man-in-the-middle|Человек посередине}}.
  
Поэтому публичный ключ также имеет защиту от подмены. При его создании необходимо указать имя и адрес электронной почты (можно ник, если переписка анонимная), с помощью которых ваш корреспондент сможет проверить принадлежность имеющегося у него вашего ключа вам. Также у ключа имеется id (номер) и фингерпринт (отпечаток, также хэш, но уже самого ключа, представляющий собой короткую комбинацию, которую нетрудно проверить). Злоумышленник может сгенерировать свою пару ключей и вписать в публичный ваше имя и адрес электронной почты, но его фингерпринт будет отличаться от вашего. Получив чей-либо ключ из ненадёжного источника, можно легко проверить его, попросив корреспондента прислать его фингерпринт, используя альтернативный способ связи (по телефону или через im). После чего достоверность владения соответствующим секретным ключом будет равна достоверности выбранного альтернативного способа связи.
+
Поэтому публичный ключ также имеет защиту от подмены. При его создании необходимо указать имя и адрес электронной почты (можно ник, если переписка анонимная), с помощью которых ваш корреспондент сможет проверить принадлежность имеющегося у него вашего ключа вам. Также у ключа имеется id (номер) и фингерпринт (отпечаток, также хэш, но уже самого ключа, представляющий собой короткую комбинацию, которую нетрудно проверить). Злоумышленник может сгенерировать свою пару ключей и вписать в публичный ваше имя и адрес электронной почты, но его фингерпринт будет отличаться от вашего. Получив чей-либо ключ из ненадёжного источника, можно легко проверить его, попросив корреспондента прислать его фингерпринт, используя альтернативный способ связи (по телефону или через im). После чего достоверность владения соответствующим закрытым ключом будет равна достоверности выбранного альтернативного способа связи.
  
Существуют сети доверия, когда, проверив публичный ключ, вы подписываете его, и все, кто доверяет вам, будут считать, что оный принадлежит именно тому, с кем они хотят иметь дело, а не третьей стороне. При этом они сами могут проверить этот ключ вышеуказанным способом. Существуют и государственные сертификационные центры, где можно регистрировать ключи. За некоторую сумму они согласятся выдавать ваш публичный ключ и персональные данные любой требующей подтверждения стороне. Система сертификационных центров, широко эксплуатируемая на государственном уровне и в интернет-торгах, использует набор программного обеспечения X.509, работающий на основе тех же алгоритмов. Но их ПО является коммерческим и закрытым, а основная задача — создание и заверение электронных подписей, а не криптография.
+
Существуют сети доверия, когда, проверив публичный ключ, поручитель подписывает его, и все, кто доверяет этому поручителю, будут считать, что оный принадлежит именно тому, с кем они хотят иметь дело, а не третьей стороне. При этом они сами могут проверить этот ключ вышеуказанным способом. Существуют и государственные сертификационные центры, где можно регистрировать ключи. За некоторую сумму они согласятся выдавать ваш публичный ключ и персональные данные любой требующей подтверждения стороне. Система сертификационных центров, широко эксплуатируемая на государственном уровне и в интернет-торгах, использует набор программного обеспечения X.509, работающий на основе тех же алгоритмов. Но их ПО является коммерческим и {{fact|закрытым}}, а основная задача — создание и заверение электронных подписей, а не криптография.
  
 
== Ссылки ==
 
== Ссылки ==

Версия 03:22, 22 февраля 2013

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

Pgp1.jpg
Людям необходима конфиденциальность. PGP распространяется, как огонь в прериях, раздуваемый людьми, которые беспокоятся о своей конфиденциальности в этот информационный век. Сегодня организации по охране прав человека используют программу PGP для защиты своих людей за рубежом. Организация Amnesty International также использует её.

Филипп Циммерманн

PGP — криптографическая система, использующая в основе алгоритм шифрования с открытым ключом, или так называемую публичную криптографию. Представляет собой программу и библиотеку функций для шифрования. В настоящее время считается одним из самых надёжных средств шифрования информации. Существуют как бесплатные версии, так и распространяемые на коммерческой основе. Изначально программа была бесплатной, исходный код был открыт. Проанализировав код, ведущие криптоаналитики признали эффективность применения данного средства шифрования. Кроме самой pgp, существуют аналоги в виде filecrypt, gnupg, использующие те же алгоритмы. Все реализации полностью совместимы между собой, то есть то, что зашифровано одной программой, может быть расшифровано другой при наличии ключа. Первые версии программы созданы Филиппом Циммерманном в 1991 году. Нынче технологии шифрования данных на основе pgp или совместимые с ней реализованы на всех имеющихся ОС.

Основные понятия

Открытый текст — исходный текст, сообщение как таковое.

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

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

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

Расшифровывание — действие, обратное шифрованию: получение открытого текста из шифрата. Не стоит путать с дешифровкой.

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

Криптография с открытым ключом — когда для шифрования и для расшифровывания используются разные ключи: открытый и закрытый. Открытый ключ помещается в публичный доступ, поэтому знание открытого ключа не дает дополнительных возможностей. Если шифрование происходит с открытым ключом, а расшифровка с закрытым, получаем асимметричное шифрование: зашифровать может каждый, а расшифровать только хозяин ключа. Если наоборот — электронную цифровую подпись (ЭЦП). Асимметричное шифрование используется для передачи данных через прослушиваемый канал, когда требуется уверенность, что только адресат (он же обладатель закрытого ключа) сможет прочитать открытый текст. ЭЦП используется, чтобы подтвердить авторство открытого текста: в этом случае автор зашифровывает открытый текст своим закрытым ключом, после чего каждый может расшифровать общеизвестным открытым ключом этого автора и проверить открытый текст. Получить шифрат, который бы правильно расшифровывался данным открытым ключом, может только обладатель закрытого ключа. ЭЦП может иметь юридическую силу, подобно обычной подписи, если публичный ключ добавлен в базу данных соответствующего органа.

Поручитель — человек, подтверждающий принадлежность данного публичного ключа кому-либо. Поручитель является аналогом нотариуса. Поручителю должно оказываться доверие, а его публичный ключ должен быть известен изначально, чтобы с помощью ЭЦП можно было убедиться, что подтверждение выписано поручителем, а не кем-то ещё. Формируются цепочки поручителей разных уровней, в которых публичный ключ следующего подписан предыдущим. У основания стоят поручители с мировым именем, например Verisign. Поручители являются одним из способом гарантировать принадлежность открытого ключа этому человеку, а без этого невозможно направить сообщение, которое мог бы прочитать только он, или надежно подтвердить авторство его сообщения.

Хеш-функция — алгоритм, превращающий данные (например, текст) в число (хеш-значение). Число может быть довольно большим, например для md5 это 128-битное число. Криптографическая хеш-функция — это хеш-функция, для которой не существует эффективного способа подобрать такие исходные данные, для которых бы она выдавала заранее выбранный результат. Для некоторых хеш-функций (например, crc32) это требование удается обойти, тогда функция считается взломанной и больше не используется в криптографии. Если появляется алгоритм генерации нескольких текстов, дающих одинаковое хеш-значение, то функцию тоже считают взломанной (например, md5). Криптографическую хеш-функцию можно рассматривать как необратимое шифрование без ключа. Хеш-функции применяются в криптографии для уменьшения размера текста перед его подписыванием ЭЦП и для безопасного хранения паролей, при котором можно проверить соответствие введенного пароля сохраненному, но нельзя узнать сам сохраненный пароль.

Ключ, как правило, можно «приладить» к хеш-функция в виде соли — строки, соединяемой с открытым текстом перед применением хеш-функции. Это бывает полезно для затруднения подбора исходного текста с помощью словарей популярных паролей и таблиц вида текст — хеш-значение. При атаках в качестве такой таблицы может использоваться google. В этом можно убедиться, поискав 202cb962ac59075b964b07152d234b70 — значение хеш-функции md5 для «123». А если использовать соль «wabranes», то md5(wabranes|123) = «477de9d90eaed5064a303698244dc685» уже не находится в гугле (за исключением, возможно, этой страницы).

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

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

Пример закрытого ключа
Пример открытого ключа из той же пары

Метод шифрования, использующий пару ключей, открытый (публичный) и закрытый (секретный), для обмена шифрованными сообщениями. Программа генерирует пару ключей, связанных между собой. Публичный используется только для шифрования, закрытый же — лишь для расшифровки. Ключи связаны между собой так, что невозможно создать ещё один открытый ключ, не имея закрытого. Но воссоздать закрытый ключ, имея публичный, не выйдет даже при наличии образцов исходного и шифрованного текстов. Открытый ключ вместе с данными о его владельце распространяется среди корреспондентов, закрытый же хранится в тайне. Отправитель шифрует сообщение публичным ключом, но расшифровать его может только получатель.

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

Как это работает

Pgp2.jpg
Pgp3.gif

В современных версиях используют гибридное шифрование на основе обоих способов. Информацию вначале сжимают, затем шифруют одноразовым симметричным ключом, а тот, в свою очередь, асимметричным. Сжатие нужно для устранения избыточности текста, позволяющей проводить анализ на основе наиболее часто встречающихся фрагментов. Расшифровка идёт в обратном порядке: с помощью закрытого ключа расшифровывают сеансовый, а посредством оного уже расшифровывают весь текст[1]. Преимущество такого метода в том, что асимметричные алгоритмы менее стойки, чем симметричные, и при большом объёме данных легче подвергаются анализу [2]; кроме того, шифрование симметричным способом идёт значительно быстрее. Надёжность сеансового ключа по сравнению с паролем высока, ибо он создаётся не человеком, а генератором псевдослучайных чисел. Также симметричный ключ в данном случае не может быть скомпрометирован, так как используется только один раз и не демонстрируется отправителю или получателю — его знает лишь программа шифрования, в зашифрованном виде передающая его программе вашего корреспондента внутри всего сообщения. При этом симметричный ключ не содержит количества информации, достаточной для успешного взлома или подбора ключа асимметричного алгоритма. Также такой сеансовый ключ не может быть подобран по словарю, в отличие от придуманных человеком.

Применяемые алгоритмы

  • RSA — примечателен тем, что одна и та же пара ключей может использоваться и для асимметричного шифрования, и для ЭЦП.
  • DSA
  • схема Эль-Гамаля

Практическое применение

Тут понятно и ежу. Всё, что не должно быть известно третьим лицам, подлежит шифрованию. PGP и её аналоги дают достаточную (но не абсолютную) защиту конфиденциальности передаваемой информации, делая невозможным её анализ программами, собирающими персональные данные, и системами контроля типа eshelon и СОРМ. Кроме шифрования, pgp используется для создания электронной подписи документа — хэшa на основе всего документа и закрытого ключа его владельца. Таким образом, обладатель публичного ключа может проверить, не был ли изменён документ при пересылке и в действительности ли он составлен обладателем ключа закрытого. При этом по имеющемуся хэшу невозможно установить сам закрытый ключ, но и невозможно создать подпись, аналогичную обладателю закрытого ключа. Электронная подпись позволяет обеспечить целостность документа, а также точно установить его владельца.

Обмен публичными ключами. Уязвимость. Сертификация и сеть доверия.

Если люди уже знаю публичные ключи друг друга — то проблема зашифрованного обмена и подтверждения авторства для них решена (средствами асимметричного шифрования и ЭПЦ соответственно). Если обмена ключами не было, но есть гарантия, что сообщения доходят в неизмененном виде (то есть решена задача подтверждения авторства), то средства криптографии с открытым ключом позволяют установить шифрованный канал. А вот наоборот не получится — если мы с кем-то установили шифрованный канал, одного этого недостаточно для уверенности в личности этого человека. Во времена второй мировой главной проблемой криптографии была передача симметричного ключа (который мог разгласить каждый, кто его знал), то сейчас основную сложность представляет обмен публичными ключами. Разглашать публичные ключи бессмысленно, так как они и так находятся в общем доступе, поэтому часть проблем уходит, но открывается достаточно возможностей для подмены самого публичного ключа, что приводит к перехвату шифрованных посланий (подписанных публичным ключом атакующего) или подделке авторства (за автора подписывается атакующий своим публичным ключом). Одним из решений проблемы дополнение схемы поручителями.

Допустим, существует третья заинтересованная сторона, которая предоставит вам свой ключ вместо ключа вашего корреспондента, а ему в свою очередь такой же фиктивный свой ключ вместо вашего. Тогда эта третья сторона сможет расшифровать ваше сообщение, подменить его тем же самым исходным текстом, только зашифрованным настоящим публичным ключом вашего корреспондента, и переслать ему. Он же, обладая вашим фиктивным ключом (который ему заботливо подсунули), шифрует для вас ответ, также достающийся третьей стороне, которая преспокойно добывает исходный текст и шифрует его вашим настоящим ключом. В результате хитрых манипуляций окажется, что вся сложность перехвата сводится не к криптоанализу и созданию идентичных хэшей электронной подписи, что почти невозможно,[3] а к банальной подмене, что вполне реализуемо — было бы сильное желание. Такая атака называется Man-in-the-middle.

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

Существуют сети доверия, когда, проверив публичный ключ, поручитель подписывает его, и все, кто доверяет этому поручителю, будут считать, что оный принадлежит именно тому, с кем они хотят иметь дело, а не третьей стороне. При этом они сами могут проверить этот ключ вышеуказанным способом. Существуют и государственные сертификационные центры, где можно регистрировать ключи. За некоторую сумму они согласятся выдавать ваш публичный ключ и персональные данные любой требующей подтверждения стороне. Система сертификационных центров, широко эксплуатируемая на государственном уровне и в интернет-торгах, использует набор программного обеспечения X.509, работающий на основе тех же алгоритмов. Но их ПО является коммерческим и закрытым?, а основная задача — создание и заверение электронных подписей, а не криптография.

Ссылки

Примечания

  1. по материалам https://www.pgpru.com/biblioteka/osnovy/vvedenievkripto/glava1/kakdejjstvuetpgp
  2. по надёжности 1024-битный асимметричный ключ сравним с 128-битным симметричным
  3. даже при слабом ключе это очень долго, весьма дорого и при длине асимметричного ключа более 1024 бит пока не реализуемо, ведущие криптоаналитики гарантируют это