Отправитель и получатель. Сообщения и шифрование 3 глава
В качестве посредника может выступить и банк - для покупки машины:
(1) Боб заполняет чек и передает его в банк.
(2) Если на счету Боба достаточно денег для покрытия чека, банк заверяет чек и возвращает его Бобу.
(3) Алиса передает Бобу право собственности, а Боб передает Алисе заверенный чек.
(4) Алиса депонирует чек.
Этот протокол работает, потому что Алиса верит банковскому свидетельству. Алиса верит, что банк сохранит деньги Боба для нее и не использует их для финансирования сомнительных операций с недвижимостью в банановых республиках.
Другим общепринятым посредником является нотариус. Когда Боб получает от Алисы заверенный нотариусом документ, он убежден, что Алиса подписала документ по своему желанию и собственноручно. При необходимости нотариус может выступить в суде и засвидетельствовать этот факт.
Понятие посредника старо как мир. Всегда существовали определенные люди - вожди, жрецы и тому подобное - обладавшие влиянием, позволяющим им действовать справедливо. Посредники играют определенную роль в нашем обществе, обман доверия подорвал бы занимаемое ими положение. Юристы-посредники, нарушающие правила игра, подвергаются наказанию - например, исключению из коллегии адвокатов. Это идеальная картина, в реальном мире положение, к сожалению, может отличаться от нее.
Этот идеал можно перенести на мир компьютеров, но с компьютерными посредниками существует ряд проблем:
— Легко найти нейтральную третью сторону, которой можно доверять, если вы знаете посредника и можете лично увидеть его. Две стороны, относящиеся друг к другу с подозрением, с тем же подозрением отнесутся и к безликому посреднику, затерянному где-то в сети.
— Компьютерная сеть должна обеспечить поддержку посредника. Занятость юристов общеизвестна, на кого в сети лягут дополнительные накладные расходы?
— Существует задержка, присущая всем протоколам с посредником.
— Посредник должен принимать участие в каждой транзакции, являясь узким местом в крупномасштабных реализациях любого протокола. Рост числа посредников смягчит эту проблему, но вырастет и цена этой услуги.
— Так как каждый в сети должен доверять посреднику, то посредник представляет собой слабое место сети при попытке ее взлома.
Несмотря на это посредничество все еще активно используется. В протоколах с использованием посредника эту роль будет играть Трент.
Арбитражные протоколы
Используемый из-за высокой стоимости найма посредников арбитражные протокол может быть разбит на два подпротокола нижнего уровня. Первый представляет собой протокол без посредника, используемый при желании сторон выполнить протокол. Другой представляет собой протокол с посредником, приглашаемым в исключительных обстоятельствах - при наличии разногласий между сторонами. Соответствующий специальный посредник называется арбитром (см. Рис.-1(б)).
Арбитр, как и посредник, представляет собой незаинтересованного участника протокола, которому доверяют обе стороны. В отличие от посредника он непосредственно не принимает участия в каждой отдельной реализации протокола и приглашается только для проверки честности выполнения протокола сторонами.
Профессиональными арбитрами являются судьи. В отличие от нотариусов к судьям обращаются только при появлении разногласий. Алиса и Боб могут заключить контракт без участия судьи. Судья никогда не узнает о контракте, если одна из сторон не подаст на другую в суд. Протокол подписания контракта можно формализовать следующим образом:
Подпротокол без посредника (выполняется всегда):
(1) Алиса и Боб договариваются об условиях контракта.
(2) Алиса подписывает контракт.
(3) Боб подписывает контракт.
Подпротокол с использованием арбитра (выполняется при наличии разногласий):
(1) Алиса и Боб предстают перед судьей.
(2) Алиса предоставляет свои доказательства.
(3) Боб предоставляет свои доказательства.
(4) Судья принимает решение на основании доказательств.
Различие используемых в этой книге понятий посредника и арбитра состоит в том, что участие арбитра происходит не всегда. Стороны обращаются к судье только при разногласиях. Если разногласий нет, судья не нужен.
Существуют арбитражные компьютерные протоколы. Они предполагают, что участвующие стороны честны, но при подозрении о возможном мошенничестве по существующему набору данных третья сторона, которой доверяют участники, сможет обнаружить факт мошенничества. Хороший арбитражный протокол позволяет арбитру установить и личность мошенника. Арбитражные протоколы обнаруживают, а не предупреждают мошенничество. Неотвратимость обнаружения выступает в качестве предупредительной меры, предотвращая мошенничество.
Самодостаточные протоколы
Самодостаточный протокол является лучшим типом протокола. Он полностью обеспечивает честность сторон (см. Рис.-1(в)). Для выполнения протокола не нужен ни посредник, ни решающий споры арбитр. Само построение протокола обеспечивает отсутствие споров. Если одна из сторон попытается смошенничать, мошенничество будет немедленно обнаружено другой стороной, и протокол прекратит выполняться. Чего бы не пыталась добиться мошенничающая сторона, этому не суждено случиться.
В лучшем мире любой протокол должен быть самодостаточным, но, к несчастью, не существует самодостаточных протоколов для каждой ситуации.
Попытки вскрытия протоколов
Криптографические попытки взлома могут быть направлены против криптографических алгоритмов, используемых в протоколах, против криптографических методов, используемых для реализации алгоритмов и протоколов или непосредственно против протоколов. Поскольку в этом разделе книги обсуждаются именно протоколы, я предполагаю, что криптографические алгоритмы и методы безопасны, и рассматриваю только попытки вскрытия протоколов.
Люди могут использовать множество способов взломать протокол. Некоторые, не являясь участниками протокола, могут "подслушивать" какую-то часть или весь протокол. Это называется пассивным вскрытием, так как взломщик не воздействует на протокол. Все, что он может сделать - это проследить за протоколом и попытаться добыть информацию. Этот тип вскрытия соответствует вскрытию с использованием только шифротекста, обсуждавшемуся в разделе 1.1. Так как пассивные вскрытия трудно обнаружить, протоколы стремятся предотвращать, а не обнаруживать их. В этих протоколах роль злоумышленника будет играть Ева.
В другом случае взломщик может попытаться изменить протокол для собственной выгоды. Он может выдать себя за другого, ввести новые сообщения в протокол, заменить одно сообщение другим, повторно передать старые сообщения, разорвать канал связи или изменить хранящуюся в компьютере информацию. Такие действия называются активным вскрытием, так как они требуют активного вмешательства. Эти формы вскрытия зависят от вида сети.
Пассивные взломщики стараются получить информацию об участниках протокола. Они собирают сообщения, переданные различными сторонами, и пытаются криптоанализировать их. Попытки активного вскрытия, с другой стороны, преследуют более широкий набор целей. Взломщик может быть заинтересован в получении информации, ухудшении работы системы или получении несанкционированного доступа к ресурсам.
Активные вскрытия более серьезны, особенно в отношении протоколов, в которых стороны не обязательно доверяют друг другу. Взломщик не обязательно кто-то совсем посторонний, он может быть зарегистрированным пользователем системы и даже системным администратором. Может быть даже несколько активных взломщиков, работающих вместе. В этой книге роль злонамеренного активного взломщика будет играть Мэллори.
Взломщиком может быть и один из участников протокола. Он может обманывать, выполняя протокол, или вовсе не следовать правилам протокола. Такой взломщик называется мошенником. Пассивные мошенники выполняют правила протокола, но стараются получить больше информации, чем предусмотрено протоколом. Активные мошенники нарушают работу протокола, пытаясь смошенничать.
Очень трудно поддерживать безопасность протокола, если большинство его участников - активные мошенники, но иногда активное мошенничество может быть обнаружено законными участниками. Конечно, протоколы должны быть защищены и от пассивного мошенничества.
2.2 Передача информации с использованием симметричной криптографии
Как двум сторонам безопасно обмениваться информацией? Конечно же, шифрую свои сообщения. Посмотрим, что должно произойти, когда Алиса посылает шифрованное сообщение Бобу (полный протокол гораздо сложнее).
(1) Алиса и Боб выбирают систему шифрования.
(2) Алиса и Боб выбирают ключ.
(3) Алиса шифрует открытый текст своего сообщения с использованием алгоритма шифрования и ключа, получая шифрованное сообщение.
(4) Алиса посылает шифрованное сообщение Бобу.
(5) Боб дешифрирует шифротекст сообщения с использованием алгоритма шифрования и ключа, получая открытый текст сообщения.
Что может Ева, находясь между Алисой и Бобом, узнать, подслушивая этот протокол? Если она может подслушать только передачу на этапе (4), ей придется подвергнуть шифротекст криптоанализу. Это пассивное вскрытие представляет собой вскрытие с использованием только шифротекста, применяемые алгоритмы устойчивы (насколько нам известно) по отношению к любым вычислительным мощностям, который может заполучить Ева для решения проблемы.
Ева, однако, не глупа. Она может также подслушать и этапы (1) и (2). Тогда ей станут известны алгоритм и ключ - также как и Бобу. Когда она перехватит сообщение на этапе (4), то ей останется только дешифровать его самостоятельно.
В хорошей криптосистеме безопасность полностью зависит от знания ключа и абсолютно не зависит от знания алгоритма. Именно поэтому управление ключами так важно в криптографии. Используя симметричный алгоритм, Алиса и Боб могут открыто выполнить этап (1), но этап (2) они должны сохранить в тайне. Ключ должен оставаться в секрете перед, после и в течение работы протокола - до тех пор, пока должно оставаться в тайне передаваемое сообщение - в противном случае сообщение тут же будет раскрыто. (О криптографии с открытыми ключами, решающей эту проблему иначе, рассказывается в разделе 2.5.)
Мэллори, активный взломщик, может сделать кое-что другое. Он может попытаться нарушить линию связи на этапе (4), сделав так, что Алиса вообще не сможет передавать информацию Бобу. Мэллори также может перехватить сообщение Алисы и заменить его своим собственным. Если ему удалось узнать ключ (перехватив обмен информацией на этапе (2) или взломав криптосистему), он сможет зашифровать свое сообщение и отправить его Бобу вместо перехваченного, и Боб не сможет узнать, что сообщение отправлено не Алисой. Если Мэллори не знает ключа, он может только создать сообщение, превращающееся при дешифровке в бессмыслицу. Боб, считая, что сообщение отправлено Алисой, может решить, что либо у Алисы, либо в сети возникли серьезные проблемы.
А Алиса? Что она может сделать, чтобы испортить протокол? Она может передать копию ключа Еве, и тогда Ева сможет читать все, что говорит Боб, и напечатать его слова в Нью-Йорк Таймс. Это серьезно, но проблема не в протоколе. Алиса и так может передавать Еве любые открытые тексты, передаваемые с использованием протокола. Конечно, то же самое может сделать и Боб. Протокол предполагает, что Алиса и Боб доверяют друг другу. Итак, симметричным криптосистемам присущи следующие проблемы:
— Распределение ключей должно проводиться в секрете. Ключи столь же важны, как и все сообщения, зашифрованные этими ключами, так как знание ключа позволяет раскрыть все сообщения. Для распространенных систем шифрования задача распределения ключей - серьезнейшая задача. Часто курьеры лично доставляют ключи по назначению.
— Если ключ скомпрометирован (украден, разгадан, выпытан, получен за взятку и т.д.), то Ева сможет расшифровать все сообщения, зашифрованные этим ключом. Она сможет также выступить в качестве одной из сторон и создавать ложные сообщения, дурача другую сторону.
— В предположении, что каждая пара пользователей сети использует отдельный ключ, общее число ключей быстро возрастает с ростом числа пользователей. Сеть из nпользователей требует n{n - l)/2 ключей. Например, для общения 10 пользователей между собой нужно 45 различных ключей, для 100 пользователей потребуется 4950 ключей. Решение проблемы - в уменьшении числа пользователей, но это не всегда возможно.
2.3 Однонаправленные функции
Понятие однонаправленной функцииявляется центральным в криптографии с открытыми ключами. Не являясь протоколами непосредственно, однонаправленные функции представляют собой краеугольный камень большинства протоколов, обсуждаемых в этой книге.
Однонаправленные функции относительно легко вычисляются, но инвертируются с большим трудом. То есть, зная x,просто рассчитать f(x), но по известному f(x) нелегко вычислить x. Здесь "нелегко" означает, что для вычисления xпо f(x) могут потребоваться миллионы лет, даже если над этой проблемой будут биться все компьютеры мира.
Хорошим примером однонаправленной функции служит разбитая тарелка. Легко разбить тарелку на тысячу крошечных кусочков. Однако нелегко снова сложить тарелку из этих кусочков.
Это звучит красиво, но туманно и непонятно. Математически строгого доказательства существования однонаправленных функций нет, нет и реальных свидетельств возможности их построения [230, 530, 600, 661]. Несмотря на это многие функции выглядят в точности как однонаправленные: мы можем рассчитать их и, до сих пор, не знаем простого способа инвертировать их. Например, в ограниченной окрестности легко вычислить x2, но намного сложнее x1/2. В оставшейся части раздела я собираюсь притвориться, что однонаправленные функции существуют. Мы поговорим об этом в еще разделе 11.2.
Итак, что же хорошего в однонаправленных функциях? Непосредственно их нельзя использовать для шифрования. Сообщение, зашифрованное однонаправленной функцией, бесполезно - его невозможно дешифровать. (Упражнение: напишите на тарелке что-нибудь, разбейте тарелку на крошечные осколки и затем отдайте их приятелю. Попросите его прочитать сообщение. Посмотрите, как он будет озадачен однонаправленной функцией.) Для криптографии с открытыми ключами нам нужно что-то другое (хотя существуют и непосредственные криптографические применения однонаправленных функций - см. раздел 3.2).
Однонаправленная функция с люком- это особый тип однонаправленной функции, с секретной лазейкой. Ее легко вычислить в одном направлении и трудно - в обратном. Но если вам известен секрет, вы можете легко рассчитать и обратную функцию. То есть, легко вычислить f(x) по заданному x, но трудно по известному f(x) вычислить x. Однако, существует небольшая секретная информация, y, позволяющая, при знании f(x) и y, легко вычислить x.
В качестве хорошего примера однонаправленной функции с люком рассмотрим часы. Легко разобрать часы на сотни малюсеньких кусочков и трудно снова собрать из этих деталей работающие часы. Но с секретной информацией - инструкцией по сборке - намного легче решить эту задачу.
2.4 Однонаправленные хэш‑функции
У однонаправленной хэш‑функции может быть множество имен: функция сжатия, функция сокращения, краткое изложение, характерный признак, криптографическая контрольная сумма, код целостности сообщения (message integrity check, MIC) и код обнаружения манипуляции (manipulation detection code, MDC). Как бы она не называлась, эта функция является центральной в современной криптографии. Однонаправленные хэш‑функции - это другая часть фундамента многих протоколов.
Хэш‑функции, долгое время использующиеся в компьютерных науках, представляют собой функции, математические или иные, которые получают на вход строку переменной длины (называемую прообразом) и преобразуют ее в строку фиксированной, обычно меньшей, длины (называемую значением хэш‑функции). В качестве простой хэш‑функции можно рассматривать функцию, которая получает прообраз и возвращает байт, представляющий собой XOR всех входных байтов.
Смысл хэш‑функции состоит в получении характерного признака прообраза - значения, по которому анализируются различные прообразы при решении обратной задачи. Так как обычно хэш‑функция представляет собой соотношение "многие к одному", невозможно со всей определенностью сказать, что две строки совпадают, но их можно использовать, получая приемлемую оценку точности.
Однонаправленная хэш‑функция - это хэш‑функция, которая работает только в одном направлении: легко вычислить значение хэш‑функции по прообразу, но трудно создать прообраз, значение хэш‑функции которого равно заданной величине. Упоминавшиеся ранее хэш‑функции, вообще говоря, не являются однонаправленными: задав конкретный байт, не представляет труда создать строку байтов, XOR которых дает заданное значение. С однонаправленной хэш‑функцией такого не выйдет. Хорошей однонаправленной хэш‑функцией является хэш‑функция без столкновений -трудно создать два прообраза с одинаковым значением хэш‑функции.
Хэш‑функция является открытой, тайны ее расчета не существует. Безопасность однонаправленной хэш‑функцией заключается именно в ее однонаправленности. У выхода нет видимой зависимости от входа. Изменение одного бита прообраза приводи к изменению в среднем половины битов значения хэш‑функции. Вычислительно невозможно найти прообраз, соответствующий заданному значению хэш‑функции.
Посмотрите на это как на способ получить характерные признаки файлов. Если вы хотите проверить, что у кого-то есть тот же файл, что и у вас, но вы не хотите, чтобы этот файл был передан вам, попросите послать вам значение хэш‑функции. Если присланное значение хэш‑функции совпадет с рассчитанным вами, то почти наверняка чужой файл совпадает с вашим. Это особенно полезно при финансовых транзакциях, когда вы не хотите где-то в сети превратить снятие со счета $100 в снятие $1000. В обычных условиях вы можете использовать однонаправленную хэш‑функцию без ключа, так что кто угодно может проверить значение хэш‑функции. Если нужно, чтобы проверить значение хэш‑функции мог только один получатель, прочтите следующий раздел.
Коды проверки подлинности сообщения
Код проверки подлинности сообщения (message authentication code,MAC), известный также как код проверки подлинности данных (data authentication code, DAG), представляет собой однонаправленную хэш‑функцию с добавлением секретного ключа (см. раздел 18.14). Значение хэш‑функции является функцией и прообраза, и ключа. Теория остается той же, что и для хэш‑функций, но только тот, кто знает ключ, может проверить значение хэш‑функции. MAC можно создать с помощью хэш‑функции или блочного алгоритма шифрования, существуют также и специализированные MAC.
2.5 Передача информации с использованием криптографии с открытыми ключами
Взгляните на симметричный алгоритм как на сейф. Ключ является комбинацией. Знающий комбинацию человек может открыть сейф, положить в него документ и снова закрыть. Кто-то другой при помощи той же комбинации может открыть сейф и забрать документ. Тем, кто не знает комбинации, придется научиться взламывать сейфы.
В 1976 году Уитфилд Диффи и Мартин Хеллман навсегда изменили эту парадигму криптографии [496]. (NSA заявило, что знало о такой возможности еще в 1966 году, но доказательств не представило.) Они описали криптографию с открытыми ключами,используя два различных ключа - один открытый и один закрытый. Определение закрытого ключа по открытому требует огромных вычислительных затрат. Кто угодно, используя открытый ключ может зашифровать сообщение, но не расшифровать его. Расшифровать сообщение может только владелец закрытого ключа. Это похоже на превращение криптографического сейфа в почтовый ящик. Шифрование с открытым ключом аналогично опусканию письма в почтовый ящик, любой может сделать это, опустив письмо в прорезь почтового ящика. Дешифрирование с закрытым ключом напоминает извлечение почты из почтового ящика. Обычно это гораздо сложнее - вам может понадобиться сварочный агрегат. Однако, если вы знаете секрет (у вас есть ключ от почтового ящика), вы без труда достанете вашу почту.
Математической основой процесса являются ранее обсуждавшиеся однонаправленные хэш-функции с люком. Шифрование выполняется в прямом направлении. Указания по шифрованию открыты, каждый может зашифровать сообщение. Дешифрирование выполняется в обратном направлении. Оно настолько трудоемко, что, не зная секрета, даже на компьютерах Cray за тысячи (и миллионы) лет невозможно расшифровать сообщение. Секретом, или люком, и служит закрытый ключ, он делает дешифрирование таким же простым, как и шифрование. Вот как, используя криптографию с открытыми ключами, Алиса может послать сообщение Бобу:
(1) Алиса и Боб согласовывают криптосистему с открытыми ключами.
(2) Боб посылает Алисе свой открытый ключ.
(3) Алиса шифрует свое сообщение и отправляет его Бобу.
(4) Боб расшифровывает сообщение Алисы с помощью своего закрытого ключа.
Обратите внимание, что криптография с открытыми ключами устраняет проблему распределения ключей, присущую симметричным криптосистемам. Раньше Алиса и Боб должны были тайно договориться о ключе. Алиса могла выбрать любой ключ, но ей нужно было передать его Бобу. Она могла сделать это заранее, но это требует от нее определенной предусмотрительности. Она могла бы послать ключ с секретным курьером, но для этого нужно время. Криптография с открытыми ключами все упрощает. Алиса может отправить Бобу секретное сообщение без каких-либо предварительных действий. У Евы, подслушивающей абсолютно все, есть открытый ключ Боба и сообщение, зашифрованное этим ключом, но она не сможет получить ни закрытый ключ Боба, ни текст сообщения.
Обычно целая сеть пользователей согласовывает используемую криптосистему. У каждого из них есть открытый и закрытый ключ, открытые ключи помещаются в общедоступной базе данных. Теперь протокол выглядит еще проще:
(1) Алиса извлекает открытый ключ Боба из базы данных.
(2) Алиса шифрует свое сообщение с помощью открытого ключа Боба и посылает его Бобу.
(3) Боб расшифровывает сообщение Алисы с помощью своего закрытого ключа.
В первом протоколе Боб должен был послать Алисе ее открытый ключ прежде, чем она могла отправить ему сообщение. Второй протокол больше похож на обычную почту. Боб не участвует в протоколе до тех пор, пока он не начнет читать сообщение.
Смешанные криптосистемы
Первые алгоритмы с открытым ключом стали известны в то же время, когда проходило DES обсуждение как предполагаемого стандарта. Это привело к известной партизанщине в криптографическом сообществе. Как это описывал Диффи [494]:
Прекрасные криптосистемы с открытым ключом, обсуждаемые в популярной и научной печати, тем не менее, не нашли соответствующего отклика среди криптографических чиновников. В том же году, когда была открыта криптография с открытыми ключами, Агентство национальной безопасности (NSA) предложило удобную криптографическую систему, разработанную фирмой IBM, в качестве федерального Стандарта шифрования данных (Data Encryption Standard, DES). Марти Хеллман и я критиковали это предложение из-за недостаточной длины ключа, но производители подготовились поддержать стандарт, и наша критика была воспринята многими как попытка помешать введению стандарта ради продвижения нашей собственной работы. Криптография с открытым ключом, в свою очередь, также подвергалась критике в популярной литературе [1125] и технических статьях [849, 1159], словно это был конкурирующий продукт, а не недавнее научное открытие. Это, однако, не помешало NSA объявить о своих заслугах в этой области. Его директор в одной из статей Encyclopedia Britannica [1461] указал, что "двухключевая криптография была открыта в Агентстве на десять лет раньше", хотя доказательства этого утверждения не были публично представлены.
В реальном мире алгоритмы с открытыми ключами не заменяют симметричные алгоритмы и используются не для шифрования сообщений, а для шифрования ключей по следующим двум причинам:
1. Алгоритмы с открытыми ключами работают медленно. Симметричные алгоритмы по крайней мере в 1000 раз быстрее, чем алгоритмы с открытыми ключами. Да, компьютеры становятся все быстрее и быстрее и лет через 15 криптография с открытыми ключами достигнет скоростей, сравнимых с сегодняшней скоростью симметричной криптографии. Но требования к объему передаваемой информации также возрастают, и всегда будет требоваться шифровать данные быстрее, чем это сможет сделать криптография с открытыми ключами.
2. Криптосистемы с открытыми ключами уязвимы по отношению к вскрытию с выбранным открытым текстом. Если C = E(P),где P- открытый текст из nвозможных открытых текстов, то криптоаналитику нужно только зашифровать все n возможных открытых текстов и сравнить результаты с C(помните, ключ шифрования общедоступен). Он не сможет раскрыть ключ дешифрирования, но он сможет определить P.
Вскрытие с выбранным открытым текстом может быть особенно эффективным, если число возможных шифрованных сообщений относительно мало. Например, если P- это денежная сумма в долларах, меньшая чем $1000000, то такое вскрытие сработает, криптоаналитик переберет весь миллион значений. (Эта проблема решается с помощью вероятностного шифрования, см. раздел 23.15.) Даже если P не так хорошо определено, такое вскрытие может быть очень эффективно. Полезным может быть простое знание, что шифротекст не соответствует конкретному открытому тексту. Симметричные криптосистемы не чувствительны к вскрытиям такого типа, так как криптоаналитик не может выполнить тестовых дешифровок с неизвестным ключом.
В большинстве реализаций криптография с открытыми ключами используется для засекречивания и распространения сеансовых ключей, которые используются симметричными алгоритмами для закрытия потока сообщений [879]. Иногда такие реализации называются смешанными (гибридными) криптосистемами
(1) Боб посылает Алисе свой открытый ключ
(2) Алиса создает случайный сеансовый ключ, шифрует его с помощью открытого ключа Боба и передает его Бобу.
EB(K)
(1) Боб расшифровывает сообщение Алисы, используя свой закрытый ключ, для получения сеансового ключа.
DB(EB(K))=K
(2) Оба участника шифруют свои сообщения с помощью одного сеансового ключа.
Использование криптографии с открытыми ключами для распределения ключей решает очень важную проблему. В симметричной криптографии ключ шифрования данных, если он не используется, валяется без дела. Если Ева заполучит его, она сможет расшифровать все закрытые этим ключом сообщения. С помощью приведенного протокола при необходимости зашифровать сообщения создается сеансовый ключ, который уничтожается по окончании сеанса связи. Это значительно уменьшает риск компрометации сеансового ключа. Конечно, к компрометации чувствителен и закрытый ключ, но риска значительно меньше, так как в течение сеанса этот ключ используется только один раз для шифрования сеансового ключа. Подробно связанные с этим вопросы обсуждаются в разделе 3.1.
Головоломки Меркла
Ральф Меркл (Ralph Merkle) изобрел первую схему криптографии с открытыми ключами. В 1974 году он записался на курс по компьютерной безопасности в Калифорнийском университете, Беркли, который вел Ланс Хоффман (Lance Hoffman). Темой его курсовой работы, поданной раньше срока, была "Безопасная передача данных по небезопасным каналам" [1064]. Хоффман не понял предложения Меркла, и в конце концов Меркл прекратил занятия. Он продолжал работать над проблемой несмотря на продолжающееся непонимание его результатов.
Техника Меркла основывалась на головоломках ("puzzle"), которые отправителю и получателю решить легче, чем злоумышленнику. Вот как Алиса может послать шифрованное сообщение Бобу, не обмениваясь с ним ключом до того.
(1) Боб создает 220 (другими словами, больше миллиона) сообщений типа: "Это головоломка номер x. Это секретный ключ номер y.", где x - случайное число, а y - случайный секретный ключ. И x, и y отличаются в каждом сообщении. Используя симметричный алгоритм, он шифрует каждое сообщение своим 20 битным ключом и все их отправляет Алисе.
(2) Алиса выбирает одно сообщение и приступает к вскрытию грубой силой, пытаясь получить открытый текст. Эта работа является объемной, но не невозможной.
(3) Алиса шифрует свое секретное сообщение при помощи некоторого симметричного алгоритма полученным ею ключом и посылает это сообщение Бобу вместе с x.
(4) Боб знает, какой секретный ключ y он использовал в сообщении x, следовательно он может расшифровать сообщение Алисы.
Ева может взломать эту систему, но ей придется выполнить гораздо больше работы, чем Алисе и Бобу. Для раскрытия сообщения на этапе (3) она должна будет вскрыть грубой силой каждое из 220 сообщений, отправленных Бобом на этапе (1). Сложность этого вскрытия составит 240.Значения x также не помогут Еве, ведь они на этапе (1) присвоены случайным образом. В общем случае, вычислительные затраты Евы будут равны возведенным в квадрат вычислительным затратам Алисы.
Это выигрыш (n по отношению к n2) невелик по криптографическим стандартам, но при определенных условиях может быть достаточен. Если Алиса и Боб могут проверить десять тысяч ключей в секунду, каждому из них потребуется минута для выполнения своих действий и еще одна минута для передачи головоломок от Боба к Алисе по линии связи 1.544 Мбит/с. Если вычислительные возможности Евы сравнимы с приведенными, ей потребуется около года для взлома системы. Другие алгоритмы еще более устойчивы к вскрытию.
Дата добавления: 2021-01-26; просмотров: 320;