Разработка и реализация математической модели двухключевой криптосистемы. Проблема распределения ключей в криптографии Распределение секретных ключей
После того как открытые ключи были распределены и стали доступными, становится реальной организация защищенной связи, не допускающей возможность перехвата или искажения сообщений, или того и другого вместе. Однако некоторые пользователи предпочтут использовать шифрование с открытым ключом только в исключительных случаях из-за того, что в условиях применения этого шифрования скорость передачи данных оказывается относительно медленной. Поэтому шифрование с открытым ключом приходится рассматривать скорее как средство распределения секретных ключей, используемых для традиционного шифрования.
ПРОСТОЕ РАСПРЕДЕЛЕНИЕ СЕКРЕТНЫХ КЛЮЧЕЙ
Исключительно простая схема представлена на рис. 11.4.
Если инициатор А намерен обменяться данными с пользователем В, для этого предполагается следующая процедура.
Рис. 11.4.
- 1. Сторона А генерирует пару открытый / личный ключи {KU a , KR a } и передает стороне В сообщение, содержащее KU a и идентификатор IDa отправителя А.
- 2. Получатель В генерирует секретный ключ К у и передает этот ключ инициатору сообщения А зашифрованным с помощью открытого ключа KU a инициатора А.
- 3. Пользователь А вычисляет D|a^], чтобы восстановить секретный ключ. Поскольку только пользователь А может дешифровать это сообщение, только участники обмена данными А и В будут знать значение K s .
- 4. Участник А выбрасывает ключ KR a , а участник В выбрасывает ключ KU a .
Теперь обе стороны, А и В, могут использовать связь, защищенную традиционным шифрованием с сеансовым ключом K s . Несмотря на простоту, этот протокол весьма привлекателен. Никаких ключей не существует перед началом связи и никаких ключей не остается после завершения связи. Поэтому риск компрометации ключей минимален. В то же время связь оказывается защищенной от подслушивания.
Этот протокол уязвим в отношении активных атак. Если противник Е имеет возможность внедрения в канал связи, то он может скомпрометировать связь, без того чтобы быть обнаруженным, следующим образом.
- 5. Участник А генерирует пару открытый / личный ключи {KU a , KR„} и передает стороне В сообщение, содержащее KU a и идентификатор Ш А отправителя А.
- 6. Противник Е перехватывает сообщение, создает собственную пару открытый / личный ключи {KU e , KR,} и передает адресату В сообщение, содержащее KU e ||Ш А.
- 7. В генерирует секретный ключ K v и передает ЕкиЛК,].
- 8. Противник Е перехватывает это сообщение и узнает K v , вычисляя D KRe ].
- 9. Противник Е передает участнику А сообщение Екиа[Ку|-
В результате оба участника, А и В, будут знать К 4 , но не будут подозревать, что К л также известен противнику Е. Поэтому стороны А и В могут начать обмен сообщениями, используя K s . Противник Е больше не будет активно вмешиваться в канал связи, а просто будет перехватывать сообщения. Зная K s , он сможет дешифровать любое сообщение, а участники А и В даже не будут подозревать о существовании проблемы. Таким образом, этот простой протокол оказывается полезным только в случае, когда единственной возможной угрозой является пассивный перехват сообщений.
Как бы ни была сложна и надежна сама криптосистема, она основана на использовании ключей. Если для обеспечения конфиденциального обмена информацией между двумя пользователями процесс обмена ключами тривиален, то в системе, где количество пользователей составляет десятки и сотни управление ключами, – это серьезная проблема.
Под ключевой информацией понимается совокупность всех действующих в системе ключей. Если не обеспечено достаточно надежное управление ключевой информацией, то, завладев ею, злоумышленник получает неограниченный доступ ко всей информации.
Управление ключами – информационный процесс, включающий в себя три элемента:
генерацию ключей;
накопление ключей;
распределение ключей.
Генерация ключей. В реальных системах используются специальные аппаратные и программные методы генерации случайных ключей. Как правило используют датчики случайных чисел. Однако степень случайности их генерации должна быть достаточно высокой. Идеальными генераторами являются устройства на основе “натуральных” случайных процессов. Например, генерация ключей на основе белого радиошума. Другим случайным математическим объектом являются десятичные знаки иррациональных чисел, например или е, которые вычисляются с помощью стандартных математических методов.
В системах со средними требованиями защищенности вполне приемлемы программные генераторы ключей, которые вычисляют случайные числа как сложную функцию от текущего времени и (или) числа, введенного пользователем.
Накопление ключей. Под накоплением ключей понимается организация их хранения, учета и удаления.
Поскольку ключ является самым привлекательным для злоумышленника объектом, открывающим ему путь к конфиденциальной информации, то вопросам накопления ключей следует уделять особое внимание.
Секретные ключи никогда не должны записываться в явном виде на носителе, который может быть считан или скопирован.
В достаточно сложной системе один пользователь может работать с большим объемом ключевой информации, и иногда даже возникает необходимость организации минибаз данных по ключевой информации. Такие базы данных отвечают за принятие, хранение, учет и удаление используемых ключей.
Каждая информация об используемых ключах должна храниться в зашифрованном виде. Ключи, зашифровывающие ключевую информацию называются мастер-ключами. Желательно, чтобы мастер-ключи каждый пользователь знал наизусть и не хранил их вообще на каких-либо материальных носителях.
Очень важным условием безопасности информации является периодическое обновление ключевой информации в системе. При этом переназначаться должны как обычные ключи, так и мастер-ключи. В особо ответственных системах обновление ключевой информации необходимо производить ежедневно.
Вопрос обновления ключевой информации связан и с третьим элементом управления ключами – распределением ключей.
Распределение ключей. Распределение ключей – самый ответственный процесс в управлении ключами. К нему предъявляются два требования:
оперативность и точность распределения;
скрытность распределяемых ключей.
В последнее время заметен сдвиг в сторону использования криптосистем с открытым ключом, в которых проблема распределения ключей отпадает. Тем не менее распределение ключевой информации в системе требует новых эффективных решений.
Распределение ключей между пользователями реализуются двумя разными подходами:
1 Путем создания одного или нескольких центров распределения ключей. Недостаток такого подхода состоит в том, что в центре распределения известно, кому и какие ключи назначены, и это позволяет читать все сообщения, циркулирующие в системе. Возможные злоупотребления существенно влияют на защиту.
2 Прямой обмен ключами между пользователями системы. В этом случае проблема состоит в том, чтобы надежно удостоверить подлинность субъектов.
В обоих случаях должна быть гарантирована подлинность сеанса связи. Это можно обеспечить двумя способами:
1 Механизм запроса-ответа, который состоит в следующем. Если пользователь А желает быть уверенным, что сообщения, которые он получает от пользователя В, не являются ложными, он включает в посылаемое для В сообщение непредсказуемый элемент (запрос). При ответе пользователь В должен выполнить некоторую операцию над этим элементом (например, добавить 1). Это невозможно осуществить заранее, так как не известно, какое случайное число придет в запросе. После получения ответа с результатами действий пользователь А может быть уверен, что сеанс является подлинным. Недостатком этого метода является возможность установления, хотя и сложной, закономерности между запросом и ответом.
2 Механизм отметки времени. Он подразумевает фиксацию времени для каждого сообщения. В этом случае каждый пользователь системы может знать, насколько “старым” является пришедшее сообщение.
В обоих случаях следует использовать шифрование, чтобы быть уверенным, что ответ послан не злоумышленником и штемпель отметки времени не изменен.
При использовании отметок времени встает проблема допустимого временнόго интервала задержки для подтверждения подлинности сеанса. Ведь сообщение с отметкой времени в принципе не может быть передано мгновенно. Кроме этого, компьютерные часы получателя и отправителя не могут быть абсолютно синхронизированы.
Для обмена ключами можно использовать криптосистемы с открытым ключом, используя тот же алгоритм RSA.
Но весьма эффективным оказался алгоритм Диффи-Хелмана, позволяющий двум пользователям без посредников обменяться ключом, который может быть использован затем для симметричного шифрования.
Алгоритм Диффи-Хеллмана. Диффи и Хелман предложили для создания криптографических систем с открытым ключом функцию дикретного возведения в степень.
Необратимость преобразования в этом случае обеспечивается тем, что достаточно легко вычислить показательную функцию в конечном поле Галуа, состоящим из p элементов (p – либо простое число, либо простое в любой степени). Вычисление же логарифмов в таких полях – значительно более трудоемкая операция.
Для обмена информацией первый пользователь выбирает случайное число x 1 , равновероятное из целых чисел от 1 до p – 1. Это число он держит в секрете, а другому пользователю посылает число y 1 = , где α – фиксированный элемент поля ГалуаGF (p ), который вместе с p заранее распространяется между пользователями.
Аналогично
поступает и второй пользователь,
генерируя x
2
и вычислив y
2 ,
отправляя его первому пользователю. В
результате этого они оба могут вычислить
общий секретный ключ k
12
=

Для того, чтобы вычислить k 12 , первый пользователь возводит y 2 в степень x 1 и находит остаток от деления на p . То же делает и второй пользователь, только используя y 1 и x 2 . Таким образом, у обоих пользователей оказывается общий ключ k 12 , который можно использовать для шифрования информации обычными алгоритмами. В отличие от алгоритма RSA, данный алгоритм не позволяет шифровать собственно информацию.
Не зная x 1 и x 2 , злоумышленник может попытаться вычислить k 12 , зная только перехваченные y 1 и y 2 . Эквивалентность этой проблемы проблеме вычисления дискретного логарифма есть главный и открытый вопрос в системах с открытым ключом. Простого решения до настоящего времени не найдено. Так, если для прямого преобразования 1000-битных простых чисел требуется 2000 операций, то для обратного преобразования (вычисления логарифма в поле Галуа) – потребуется около 1030 операций.
Как видно, при всей простоте алгоритма Диффи-Хелмана, его недостатком по сравнению с системой RSA является отсутствие гарантированной нижней оценки трудоемкости раскрытия ключа.
Кроме того, хотя описанный алгоритм позволяет обойти проблему скрытой передачи ключа, необходимость аутентификации остается. Без дополнительных средств, один из пользователей не может быть уверен, что он обменялся ключами именно с тем пользователем, который ему нужен.
Распределение ключей - самый ответственный процесс в управлении ключами. К нему предъявляются два требования:
1.Оперативность и точность распределения
2.Скрытность распределяемых ключей.
В последнее время заметен сдвиг в сторону использования криптосистем с открытым ключом, в которых проблема распределения ключей отпадает. Тем не менее распределение ключевой информации в ИС требует новых эффективных решений.
Распределение ключей между пользователями реализуются двумя разными подходами:
1.Путем создания одного ли нескольких центров распределения ключей. Недостаток такого подхода состоит в том, что в центре распределения известно, кому и какие ключи назначены и это позволяет читать все сообщения, циркулирующие в ИС. Возможные злоупотребления существенно влияют на защиту.
2.Прямой обмен ключами между пользователями информационной системы.
В этом случае проблема состоит в том, чтобы надежно удостоверить подлинность субъектов.
В обоих случаях должна быть гарантирована подлинность сеанса связи. Это можно обеспечить двумя способами:
1.Механизм запроса-ответа, который состоит в следующем. Если пользователь А желает быть уверенным, что сообщения который он получает от В, не являются ложными, он включает в посылаемое для В сообщение непредсказуемый элемент (запрос). При ответе пользователь В должен выполнить некоторую операцию над этим элементом (например, добавить 1). Это невозможно осуществить заранее, так как не известно, какое случайное число придет в запросе. После получения ответа с результатами действий пользователь А может быть уверен, что сеанс является подлинным. Недостатком этого метода является возможность установления хотя и сложной закономерности между запросом и ответом.
2.Механизм отметки времени ("временной штемпель"). Он подразумевает фиксацию времени для каждого сообщения. В этом случае каждый пользователь ИС может знать, насколько "старым" является пришедшее сообщение.
В обоих случаях следует использовать шифрование, чтобы быть уверенным, что ответ послан не злоумышленником и штемпель отметки времени не изменен.
При использовании отметок времени встает проблема допустимого временного интервала задержки для подтверждения подлинности сеанса. Ведь сообщение с "временным штемпелем" в принципе не может быть передано мгновенно. Кроме этого компьютерные часы получателя и отправителя не могут быть абсолютно синхронизированы. Какое запаздывание "штемпеля" считать подозрительным.
Поэтому в реальных ИС, например в системах оплаты кредитных карточек используется именно второй механизм установления подлинности и защиты от подделок. Используемый интервал составляет от одной до нескольких минут. Большое число известных способов кражи электронных денег, основано на "вклинивании" в этот промежуток с подложными запросами на снятии денег.
Для обмена ключами можно использовать криптосистемы с открытым ключом, используя тот же алгоритм RSA, но весьма эффективным оказался алгоритм Диффи-Хелмана, позволяющий двум пользователям без посредников обменяться ключом, который может быть использован затем для симметричного шифрования. При всей простоте алгоритма Диффи-Хелмана, недостатком его по сравнению с системой RSA является отсутствие гарантированной нижней оценки трудоемкости раскрытия ключа.
Кроме того, хотя описанный алгоритм позволяет обойти проблему скрытой передачи ключа, необходимость аутентификации остается. Без дополнительных средств, один из пользователей не может быть уверен, что он обменялся ключами именно с тем пользователем, который ему нужен. Опасность имитации в этом случае остается.
Оригинальные решения проблемы " блуждающих ключей" активно разрабатываются специалистами. Эти системы являются некоторым компромиссом между системами с открытыми ключами и обычными алгоритмами, для которых требуется наличие одного и того же ключа у отправителя и получателя.
Идея метода достаточно проста. После того, как ключ использован в одном сеансе по некоторому правилу он сменяется другим.
Это правило должно быть известно и отправителю, и получателю. Зная правило, после получения очередного сообщения получатель тоже меняет ключ. Если правило смены ключей аккуратно соблюдается и отправителем и получателем, то в каждый момент времени они имеют одинаковый ключ. Постоянная смена ключа затрудняет раскрытие информации злоумышленником.
Основная задача в реализации этого метода - выбор эффективного правила смены ключей. Наиболее простой путь - генерация случайного списка ключей. Смена ключей осуществляется в порядке списка. Однако, очевидно список придется каким-то образом передавать.
Другой вариант - использование математических алгоритмов, основанных на так называемых перебирающих последовательностях. На множестве ключей путем одной и той же операции над элементом получается другой элемент. Последовательность этих операций позволяет переходить от одного элемента к другому, пока не будет перебрано все множество.
Наиболее доступным является использование полей Галуа. За счет возведения в степень порождающего элемента можно последовательно переходить от одного числа к другому. Эти числа принимаются в качестве ключей.
Ключевой информацией в данном случае является исходный элемент, который перед началом связи должен быть известен и отправителю и получателю.
Надежность таких методов должна быть обеспечена с учетом известности злоумышленнику используемого правила смены ключей.
Указанный подход порождает своего рода замкнутый круг: чтобы разделить секрет (передаваемое сообщение) отправитель и получатель уже должны обладать общим секретом (ключом шифрования). Раньше данная проблема решалась некриптографическим методом -- передачей ключа по физически защищенным от прослушивания каналам связи (рис. 1). Однако создание подобного канала и поддержание его в оперативной готовности на случай экстренной необходимости передачи ключа является довольно трудоемким и затратным делом.
Рис. 1.
Проблема была успешно разрешена в рамках возникшей чуть более четверти века назад современной криптографии», называемой так в противовес уже известной к тому моменту «традиционной криптографии» . Решение заключается в использовании асимметричных (двухключевых) шифров или схем распределения ключа по открытым каналам связи.
В первом случае процедуры за - и расшифрования выполняются на разных ключах, поэтому нет надобности держать ключ зашифрования в секрете. Однако из-за крайне низких характеристик эффективности и подверженности некоторым специальным видам атак такие шифры оказались малопригодны для закрытия непосредственно пользовательской информации. Вместо этого асимметричные шифры используются в составе комбинированных схем, когда массив данных шифруется симметричным шифром на разовом ключе, который в свою очередь шифруется двухключевым шифром и в таком виде передается вместе с данными.
Схемы распределения ключей по открытым каналам связи решают ту же проблему несколько иным способом: в ходе сеанса взаимодействия два корреспондента вырабатывают общий секретный ключ, который затем используется для зашифрования передаваемых данных симметричным шифром. Причем перехват информации в канале во время сеанса выработки такого ключа не дает противнику возможности получить сам ключ: K=K(X,Y) невычислимо (рис. 2).

Рис. 2.
Проблемы асимметричной криптографии
На сегодняшний день асимметричная криптография вполне успешно решает задачу распределения ключей по открытым каналам связи. Тем не менее существует несколько проблем, вызывающих определенное опасение за ее будущее. Стойкость всех схем асимметричной криптографии основана на невозможности эффективного вычислительного решения ряда таких математических задач (так называемых NP-проблем), как факторизация (разложение на множители) больших чисел и логарифмирование в дискретных полях большого размера. Но указанная невозможность является всего лишь предположением, которое в любой момент может быть опровергнуто, если будет доказана противоположная ему гипотеза, а именно NP=P. Это привело бы к краху всей современной криптографии, так как задачи, на нерешаемости которых она базируется, достаточно тесно связаны, и взлом даже одной криптосистемы будет означать взлом большинства других. В этом направлении ведутся интенсивные исследования, однако проблема до сих пор остается открытой.
Другая угроза современным криптосистемам исходит от так называемых квантовых компьютеров -- устройств обработки информации, построенных на принципах квантовой механики, идея которых впервые была предложена известным американским физиком Р. Фейнманом. В 1994 г. П. Шор предложил алгоритм факторизации для квантового компьютера, который позволяет разложить число на множители за время, зависящее полиномиальным образом от размера числа . А в 2001 г. этот алгоритм был успешно реализован на созданном специалистами фирмы IBM и Стэнфордского университета первом действующем макете квантового вычислителя .
По оценкам специалистов, квантовый компьютер, способный взломать криптосистему RSA, может быть создан примерно через 15-25 лет.
Еще одним неприятным фактом в асимметричных криптосистемах является то, что минимальный «безопасный размер» ключей постоянно растет вследствие прогресса в соответствующей области. За всего четвертьвековую историю таких систем он вырос уже примерно в 10 раз, тогда как за этот же период для традиционных симметричных шифров размер ключа изменился менее чем вдвое.
Все вышеперечисленное делает долгосрочные перспективы систем асимметричной криптографии не вполне надежными и вынуждает искать альтернативные способы решения тех же самых задач. Некоторые из них могут быть решены в рамках так называемой квантовой криптографии, или квантовой коммуникации.
Протокол распределения ключей (key establishment protocol) - это криптографический протокол, в процессе выполнения которого общий секрет становится доступен двум или более сторонам для последующего использования в криптографических целях.
Протоколы распределения ключей делят на два класса:
Протоколы транспортировки ключей;
Протоколы обмена ключами.
Протоколы транспортировки ключей (key transport) - это протоколы распределения ключей, в которых один участник создает или другим образом приобретает секрет и безопасным образом передает его другим участникам.
Протоколы обмена ключами (key agreement, key exchange) - это протоколы распределения ключей, в которых общий секрет вырабатывается двумя или более участниками как функция от информации, вносимой каждым из них (или ассоциированной с ними) таким образом, что (в идеале) никакая другая сторона не может предопределить их общий секрет.
Выделяют две дополнительные формы протоколов распределения ключей. Говорят, что протокол осуществляет обновление ключей (key update), если в протоколе вырабатывается совершенно новый ключ, не зависящий от ключей, выработанных в прошлых сеансах выполнения протокола. Протокол выполняет выработку производных ключей (key derivation), если новый ключ «выводится» из уже существующих у участников криптосистемы.
К основным свойствам протоколов распределения ключей относят свойства аутентификации ключа, подтверждения ключа и явной аутентификации ключа.
(Неявная) аутентификация ключа (implicit key authentication) - свойство, посредством которого один участник протокола убеждается, что никакая другая сторона, кроме специально идентифицированного второго участника протокола (и возможно, центра доверия), не может получить доступ к секретным ключам, полученным в протоколе. Здесь нет гарантий, что второй участник действительно получил доступ к ключу, но никто другой, кроме него, не мог его получить. Неявная аутентификация ключа независима от реального обладания ключом другим участником и не требует каких бы то ни было действий от второй стороны.
Подтверждение ключа (key confirmation) - свойство, посредством которого один участник протокола убеждается, что другой участник (возможно, неидентифицированный) действительно обладает секретными ключами, полученными в протоколе.
Явная аутентификация ключа (explicit key authentication) - свойство, которое выполняется, когда имеют место (неявная) аутентификация ключа и подтверждение ключа одновременно.
Протокол Нидхема-Шрёдера (Needham-Schroeder protocol) на симметричных ключах
Данный протокол лежит в основе большого количества протоколов распространения ключей, использующих доверенные центры. Существует два вида данного протокола:
Протокол Нидхема-Шрёдера на симметричных ключах;
Протокол Нидхема-Шрёдера на ассиметричных ключах.
Протокол на симметричных ключах работает следующим образом:
Предварительный этап:
Популярное
- Универсальная консоль отчетов (8
- Услуга конференц связь мтс отключить
- Музыка (Yandex music downloader)
- Новостной и аналитический портал "время электроники"
- Премиум шаблон Tempera. Супер тема wordpress. Вниманию пользователей Mantra, Nirvana, Parabola, Tempera: плагин Cryout Serious Theme Settings Случайные записи из рубрики
- Мощность: сколько ватт нужно АС
- Россию покроет «умная пыль Умная пыль нанотехнологии
- Обзор тарифов линейки «Просто супер» от МТС-Украина
- LG Spirit - Технические характеристики
- "Неполадки подключения или неверный код MMI "