пятница, 16 июля 2010 г.
Персоналии
Итак, первая порция ссылок на хотя бы краткие биографии.
Тьюринг
Шеннон
Шнайер
Диффи
Хеллман
Поллард
воскресенье, 9 мая 2010 г.
Пожалуй, имеет смысл немного поговорить про КП
Одной из самых сложных задач криптографической науки является разработка методов (протоколов) безопасного распределения криптографических ключей в больших системах абонентов.
Данная задача особенно актуальна в настоящее время, когда сети, обслуживающие большое количество участников, получили широкое применение во многих сферах нашей жизни (Интернет, сотовая связь, радио-каналы связи).
Системы, в которых применяются рассмотренные ниже схемы, обслуживают статические или динамические группы абонентов, которые заинтересованы в надёжной (защищённой) системе связи друг с другом. Для реализации криптографической защиты передаваемой информации, необходимо быть уверенным в том, что ключ шифрования известен абонентам сети, но неизвестен злоумышленнику. Таким образом, задача построения надёжного протокола распределения ключей в системе абонентов заключается в правильном выборе необходимых методов аутентификации, а, значит, и выборе последовательности обмена запросами сторон-участниц «разговора» при выработке или получении общего секретного ключа.
Управление ключами и классификация ключей
Порядок использования криптографической системы определяется системами установки и управления ключами.
Система установки ключей определяет алгоритмы и процедуры генерации, распределения, передачи и проверки ключей.
Система управления ключами определяет порядок использования, смены, хранения и архивирования, резервного копирования и восстановления, замены или изъятия из обращения скомпрометированных, а также уничтожения старых ключей.
Предварительное распределение ключей
Для защиты информации, передаваемой по открытым каналам связи, применяются криптографические средства. Но для адекватного криптографического взаимодействия участников общения, необходимо, чтобы ключи зашифрования и, если используется асимметричный алгоритм, расшифрования, были известны всем, нуждающимся в них абонентам сети.
В таком случае, необходимо заранее разослать криптографические ключи абонентам. Естественно, самыми надёжными способами предварительного распределения ключей являются закрытый канал связи и непосредственная встреча абонентов. Однако, эти методы наиболее затратны по времени и с точки зрения затрачиваемых ресурсов. Существует множество ситуаций, в которых просто невозможно воспользоваться ни одним из этих методов (например, разговор по сотовой связи или беспроводная сеть Wi-Fi). Так же, при большом числе участников, возможность создания защищённых каналов связи для каждой пары сводится к нулю.
Кроме того, постоянное хранение наборов ключей каждым из участников сети может привести к случайной или намеренной компрометации некоторых ключей.
В связи с перечисленными выше проблемами, широкое применение получили системы предварительного распределения ключей. В таких системах каждый пользователь сети первоначально владеет лишь некоторым небольшим объёмом информации, позволяющим восстановить ключи для общения с любым другим пользователем.
Таким образом, подобные системы должны сначала сгенерировать информацию для вычисления ключа и некоторые секретные значения для каждой стороны, затем сделать информацию для генерации ключа общедоступной, и предоставить алгоритм по вычислению действующего значения ключа по общедоступной и конфиденциальной информации.
Система предварительного распределения ключей должна обладать двумя свойствами:
Устойчивость - учёт возможности раскрытия части ключей при компрометации, обмане или сговоре абонентов
Гибкость — допуск возможности быстрого восстановления путем исключения скомпрометированных и подключения новых абонентов.
Пересылка ключей
В процессе работы сети абонентов, может возникнуть потребность в пересылке некоторого ключа по открытому каналу связи. Для осуществления такой транспортировки, необходимо установить подлинность собеседника, сеанса связи и целостность передаваемой информации. Для шифрования пересылаемых ключей, возможно использовать уже имеющиеся, ранее полученные, системные ключи.
В случае, когда в сети необходимо централизованное управление распределения ключей, в систему вводится доверенный центр, отвечающий за приведённые выше требования при пересылке ключей. Доверенные центры бывают двух типов:
центры распределения ключей – самостоятельно генерируют ключи,
центры перешифрования ключей – генерация ключей осуществляется самими абонентами.
Типы систем распределения ключей
Передача ключей с использованием симметричного шифрования
Двусторонние протоколы - передача ключей осуществляется при непосредственном взаимодействии,
Протоколы с централизованным распределением ключей - предусмотрена третья сторона, играющая роль доверенного центра.
Двусторонние протоколы
Различают протоколы, в которых стороны заранее располагают какой-либо известной им обоим секретной информацией, и протоколы, не требующие этого условия.
Пусть стороны А и В заранее обладают общей секретной информацией. Допустим, что это — секретный ключ kАВ..
Тогда для передачи ключа k стороны могут использовать одностороннюю передачу:
А→В: EkAB(k,t,id(B)),
где Е — алгоритм шифрования, t — метка времени, В — идентификатор абонента id(В) (для краткости вместо id(B) будем использовать лишь один символ В).
Метки времени – защита от повторной передачи сообщения.
Идентификатор адресата позволяет абоненту А установить, что сообщение получено именно от абонента В.
Вместо шифрования можно использовать ключевую хэш-функцию, зависящую от общего ключа:
А→В: khkAB(t,B).
Если дополнительно требуется аутентификация сеанса, то можно использовать следующий протокол типа "запрос-ответ":
(1) В → А: rB,
(2) А→В:ЕkАВ(k rB,,В),
где rB — случайное число, сгенерированное абонентом В и переданное абоненту А в начале сеанса. При использовании хэш-функции подобный протокол может выглядеть так:
B→A: rB,
А→В: khkAB(rB,,B).
Если требуется двусторонняя аутентификация, то можно предоставить стороне А генерацию rА и введения его в сообщение на шаге (2) протокола.
Исходный протокол можно модифицировать так, чтобы искомый ключ k генерировался не одной стороной, а являлся результатом двустороннего обмена. Таким образом, мы получим протокол совместной выработки ключа.
Пусть абонентами А и В помимо случайных чисел rА и rB генерируются также случайные числа kA и kB соответственно. Тогда в результате выполнения протокола
В→А: rB ,,
A→B:EkAB(kA ,rA , rB ,B),
(3) В→ А: EkAB(kB ,rB , rA ,A),
каждая из сторон может вычислить общий ключ с помощью некоторой функции f по правилу k= f(kA,kB).
В этом протоколе ни одна из сторон не может знать заранее значения ключа.
"Бесключевой" протокол А.Шамира позволяет передать ключ без использования какой-либо общей секретной информации.
А→В:ЕkА(k),
В→А:ЕkB(ЕkА(k)),
A→B:DkА(EkB(EkA(k))),
Где E - коммутирующее шифрующее преобразование. Это означает, что при всех сообщениях х и ключах k1 и k2 выполняется равенство
Ek1(Ek2(x)) = Ek2(Ek1(x)).
В протоколе Шамира рекомендуется использовать преобразование вида
ЕkА(k) = ka mod р
, в котором константа а определяется ключом kA.
Трехсторонние протоколы
Протоколы распределения ключей между парами участников с использованием третьей стороны T, называемой центром. В этом качестве обычно выступает некоторый выделенный узел сети, или сервер, которому доверяют все участники. Центр Т хранит ключи всех абонентов сети. Поэтому схема ключевых взаимоотношений графически представляет собой звезду.
Один из первых протоколов такого типа - протокол Нидхема и Шрёдера:
А→Т:А,В, rA,
T→A: ЕkAT(rA,B,k,ЕkBT(k,A)) ,
A→B: ЕkBT(k,A) ,
(4) B→А: Еk(rB) ,
(5) А→В:Еk(rB – 1) .
В результате выполнения трех первых шагов протокола пользователи А и В получают сгенерированный центром Т общий ключ k для организации взаимодействия. Четвертый и пятый шаги предназначены для аутентификации пользователя А и подтверждения правильности получения ключа обеими сторонами.
Слабость этого протокола заключается в возможности повторной передачи абоненту В сообщения, переданного на шаге (3). При этом абонент В не имеет возможности установить, что полученный ключ k уже был использован. Поэтому в случае компрометации этого ключа злоумышленник может аутентифицироваться и передавать сообщения от имени А.
Недостаток этого протокола устранен в протоколе Kerberos:
(1) А→Т: А,В, rA,
Т→А: ЕkAT (k, rA,L,B), билет,
А→В: билет, аутентификатор,
В→А: Ek(t,kB).
Здесь "билетом" названа величина ЕkBT(k,A,L), “аутентификатором” — величина Ek(A,t,kA), t — метка времени; L — период времени действия билета, rA— случайное число, сгенерированное абонентом А и вставленное в передаваемое сообщение для взаимной аутентификации, а kA и kB — случайные числа, сгенерированные абонентами А и В соответственно, и используемые либо в качестве ключа шифрования информации другой стороне, либо для выработки общего ключа kAB = f(kA , kB) с помощью некоторой функции f.
В полном протоколе Kerberos описанный выше базовый протокол используется два раза. Дело в том что в нем предусмотрено два сервера (см. рис. 51). Первый — "сервер аутентификации", обозначаемый AS, выдает так называемые "билеты для получения билетов" (TGT), содержащие ключи, предназначенные для длительного использования. Второй сервер, "сервер выдачи билетов" (TGS), выдает обычные билеты для доступа к сетевым ресурсам и обращения к другим пользователям.
Рис. 1
Сообщения, передаваемые согласно этому протоколу, выглядят следующим образом:
(1) A→AS: A, TGS ,rА,
(2) AS→A: ЕkA,AS (kA,TGS, rA,L1,TGS),
А → TGS: tgt, аутентификатор1, B , rA`,
TGS→A: ЕkA,TGS (k, rA`,L2,B), билет,
А→В: билет, аутентификатор2,
В→А: Ek(t2,kB),
где
tgt = ЕkA,TGS (kA,TGS,A,L1),
аутентификатор1 = ЕkA,TGS (A,t1),
билет = ЕkB,TGS (k,A,L2),
аутентификатор2 =Еk(A,t2,kA).
Благодаря введению второго сервера нагрузка на первый сервер уменьшается во много раз. Первый сервер должен быть наиболее защищенным, поскольку он хранит главные ключи всех пользователей. Серверов второго типа может быть несколько, и они могут соответствовать определенной подсети или определенному типу ресурса.
Приведем еще один протокол распределения ключей с использованием сервера Отвея и Риза, предпочтительный для случая, когда сервер находится в более удобном расположении для второго абонента. Протокол состоит в выполнении следующих действий:
(1) А→В:r,А,В, ЕkAT(rA,r,A,B),
(2) В→Т. r,A,B,EkAT(rA,r,A,B),EkBT(rB,r,A,B),
(3) T→B: EkAT(rA,k), EkBT(rB,k),
(4) В→А: EkAT(rA,k).
Пользователь А генерирует два случайных числа: первое (rА) используется, как и раньше, для взаимной аутентификации, а второе (r) — для аутентификации сеанса связи (вместо него может быть использована метка времени).
Этот протокол можно дополнить еще одним шагом для обеспечения взаимной аутентификации сторон и подтверждения правильности полученного ключа:
(4') В→А: EkAT(rA,k),Ek(r,rB),
(5)А→В: Ek(r).
Передача ключей с использованием асимметричного шифрования
Рассмотрим варианты использования асимметричного шифрования для передачи секретных ключей симметричных криптосистем.
Протоколы без использования цифровой подписи
Для передачи ключа k можно использовать следующий одношаговый протокол:
А→В: EkB(k,t,A),
где Е — алгоритм шифрования с открытым ключом, t — метка времени.
Для осуществления взаимной аутентификации и подтверждения правильности получения ключа используется протокол из работы Нидхема и Шрёдера:
А→В: EB(k1,A),
В→А: ЕА(k1, k2),
А→В:ЕB(k2).
Производя расшифрование полученных сообщений на втором и третьем шагах, стороны убеждаются в том, что они имеют дело именно с нужной стороной и что другая сторона правильно расшифровала полученное значение ключа.
Протоколы с использованием цифровой подписи
При использовании цифровой подписи аутентифицированный протокол передачи ключей может содержать только одно сообщение и иметь, например, один из следующих трех видов:
А→В: EB(k,t,SA(B,k,t)) (шифрование подписанного ключа);
А→В: EB(k,t),SA(B,k,t) (зашифрование и подпись ключа);
А→В: t,EB(A,k),SA(B,t,EB(A,k)) (подпись зашифрованного ключа).
Сертификаты открытых ключей
Как правило, при использовании открытых ключей хранят не сами ключи, а их сертификаты. Сертификат представляет собой набор данных
СА = (A,kA,t,SKTA(A,kA,t)),
состоящий из идентификатора абонента А, его открытого ключа kА и, быть может, еще какой-либо дополнительной информации, например, метки времени t выдачи сертификата и срока его действия, заверенных цифровой подписью доверенного центра ТА или заслуживающего доверия лица.
Международный стандарт CCITT Х.509 определяет следующий протокол аутентификации с одновременным распределением ключей:
А→В: С А, DA, SA (DA ),
В→А: Cb,Db,Sb(Db),
A→B: rB ,B,SA(rB,B),
где CA и CB — сертификаты сторон, SA и SB — цифровые подписи сторон,
Da=(tA,rA,B, data1 ,EB(k1)), Db=(tB ,rB,A,rA, data2,EA(k2)) — наборы передаваемых и подписываемых данных. В поля data заносится дополнительная информация для аутентификации источника. Третий шаг протокола требуется стороне В для подтверждения того, что она действительно взаимодействует со стороной А.
Открытое распределение ключей
Открытое распределение ключей позволяет двум абонентам выработать общий секретный ключ путем динамического взаимодействия на основе обмена открытыми сообщениями без какой-либо общей секретной информации, распределяемой заранее. Ни один из абонентов заранее не может определить значения ключа, так как ключ зависит от сообщений, передаваемых в процессе обмена.
Алгоритм открытого распределения ключей Диффи - Хеллмана. Для его выполнения стороны должны договориться о значениях большого простого числа р и образующего элемента α мультипликативной группы Z*p= {1,2,..., p — 1}. Для выработки общего ключа k они должны сгенерировать случайные числа х, 1≤х≤р-2,и y, 1≤y≤р-2, соответственно. Затем они должны обменяться сообщениями в соответствии с протоколом:
А→В: αx mod p
В→А: αy mod p.
Искомый общий ключ вычисляется по формуле:
k = (αу)х = (αх)у mod р
Недостатком этого протокола является возможность атаки типа "злоумышленник в середине". Выбрав числа х* и у* и подменив сообщения αx* mod р и αy*mod р на αх* mod р и αу* mod р соответственно, он может сформировать ключи
k1=(ах)y*modр
и
k1=(аy)x*modр
для связи с пользователями А и В соответственно. В результате злоумышленник получает возможность полностью контролировать обмен сообщениями между абонентами А и В. При этом они не смогут обнаружить подмену и будут уверены, что связываются непосредственно друг с другом.
Рассмотрим два протокола, устраняющие этот недостаток. Первый протокол, называемый STS (station-to-station), предполагает, что пользователи применяют цифровую подпись, которой подписываются передаваемые по протоколу Диффи—Хеллмана сообщения:
А→В: αx mod р,
В→А: αymodp, Ek(SB(αy,αx)),
A→B:Ek(SA(αx, αy)).
Здесь SA и SB — цифровые подписи пользователей А и В соответственно, k — искомый общий ключ. Шифрование значений подписей пользователей введено для того, чтобы обеспечить взаимное подтверждение правильности вычисления значения ключа.
Еще один подход также предполагает наличие у абонентов открытых ключей, но вместо цифровой подписи предлагается использовать модифицированную процедуру выработки общего ключа. Протокол MTI (Т. Мацумото, И. Такашима и X. Имаи).
Пользователи А и В имеют секретные ключи a и b
1 ≤ a≤ р-2,1≤ b ≤ p - 2 ,
соответственно, и публикуют свои открытые ключи zA= αa mod р и zB=αbmodp. Для выработки общего секретного ключа k они должны сгенерировать случайные числа х, 1 ≤ х≤р-2, и у, 1≤у≤р-2, соответственно, а затем обменяться следующими сообщениями:
А→ В: αx mod p,
В→А: αymod p.
Искомый общий ключ вычисляется по формуле:
k =(αy)azxB = (ax)bzyA = αxb+ya mod p.
Теперь любая подмена сообщений приведет к тому, что все стороны получат различные значения ключа, что, в свою очередь, приведет к невозможности чтения всей передаваемой информации.
Предварительное распределение ключей
Большинство криптографических систем требуют проведения предварительного распределения секретных ключей.
Пример схемы предварительного распределения - схема Блома распределения ключей между п абонентами, для которой процедура вычисления ключа заключается в вычислении значения некоторого симметрического многочлена над конечным полем.
Выбирается поле F, имеющее конечное, но достаточно большое число элементов, и фиксируется п различных элементов r1,...rnЄ F, отличных от нуля. Каждый элемент ri ставится в соответствие i-му абоненту сети, i =. Эти элементы не являются секретными и могут храниться на общедоступном сервере сети. Далее, выбирается многочлен над полем F степени 2m, 1 ≤ т < п, вида
где aij = aji, i≠j, i,j=. Его коэффициенты являются секретными и должны храниться только в центре распределения ключей. Каждый абонент А получает в качестве ключевых материалов набор коэффициентов многочлена:
Для связи между абонентами А и В теперь можно использовать общий ключ кАВ:
который могут вычислить оба абонента.
При использовании данной схемы каждый абонент должен хранить m+1 секретных значений вместо п-1, общее же число секретных коэффициентов многочлена f равно т(т+1)/2.
Схема Блома предварительного распределения ключей между п абонентами, использукпцая многочлен степени m, 1≤m<n, является стойкой к компрометации ключей т абонентов. Это означает, что при раскрытии ключевых материалов, принадлежащих любым m абонентам, злоумышленник, зная их значения, не сможет определить ни один из ключей для связи между остальными (n-m) абонентами.
Схемы разделения секрета
Схема разделения секрета представляет собой схему предварительного распределения ключей между уполномоченными группами пользователей, в которой ключ заранее определен и одинаков для каждой уполномоченной группы. При этом каждый пользователь получает свою долю или "часть секрета". Схема включает два протокола: протокол формирования долей (разделения секрета) и распределения их между пользователями и протокол восстановления секрета группой пользователей. Схема должна позволять восстанавливать ключ только тем группам пользователей, которые имеют на это полномочия, и никакая другая группа не должна иметь возможности для восстановления ключа или получения о нем какой-либо информации.
Основное назначение схемы разделения секрета — защита ключа от потери. Обычно для защиты от потери делают несколько копий ключа. С возрастанием числа копий ключа возрастает вероятность его компрометации. Если число копий мало, то велик риск потери ключа. Поэтому лучше "разделить" ключ между несколькими лицами так, чтобы допускалась возможность восстановления ключа при различных обстоятельствах несколькими уполномоченными группами с заранее оговоренным составом участников. Тем самым исключается риск безвозвратной потери ключа.
Еще одно положительное качество схем разделения секрета заключается в разделении ответственности за принятие решения, которое автоматически вводится при определении состава уполномоченных групп. Такая коллективная ответственность нужна для многих приложений, включая принятие важных решений, касающихся применения систем оружия, подписания корпоративных чеков или допуска к банковскому хранилищу.
Возможные атаки на протоколы распределения ключей
При анализе протоколов обычно рассматривают несколько видов атак.
1. "Злоумышленник в середине" и заключается в полной подмене всех сообщений между сторонами. Для защиты от нее необходимо дополнить протокол средствами взаимной аутентификации сторон.
2. "Атака отражением" – повтор злоумышленником накопленных заранее сообщений. Для защиты от таких атак протоколы специально делают несимметричными, включая в зашифрованные сообщения идентификаторы сторон либо изменяя процедуры так, чтобы стороны должны были выполнять разные действия.
3. Атаки, при которых нарушитель, выступая от имени одной из сторон и полностью имитируя ее действия, получает в ответ сообщения определенного формата, необходимые для подделки отдельных шагов протокола. В данном случае успех атаки определяется тем, насколько протокол устойчив к подобным подменам. Поэтому для защиты от таких атак используют различные форматы сообщений, передаваемых на разных шагах протокола, а также вставляют в них специальные идентификационные метки и номера сообщений.
4. В протоколах с использованием третьей стороны возможны атаки, основанные на подмене доверенного сервера. Например, одна из сторон, имеющая доверительные отношения с сервером, выступает от его имени, подменяет его трафик обмена с другими сторонами и в результате получает возможность раскрывать значения генерируемых центром ключей. Эта атака может быть успешной для протоколов, в которых аутентификация при доступе к серверу основана только на идентификаторах сторон и случайных числах, генерируемых при каждом взаимодействии. Для защиты от таких атак применяют средства привязки ключей не к одной, а к обеим взаимодействующим сторонам путем передачи обоих идентификаторов в зашифрованном виде.
В целом при анализе протоколов распределения ключей применяют различные методы:
1. Эвристические подходы, основанные на имеющемся наборе практических приемов и известных атаках, зарекомендовавших себя при анализе других протоколов.
2. Обоснование стойкости протоколов часто проводится путем доказательства различных результатов о сведении задачи вскрытия протокола к известным труднорешаемым математическим проблемам, либо путем оценки сложности задач в рамках некоторой модели вычислений.
3. Многие свойства протоколов можно сформулировать с помощью теоретико-информационных понятий, связанных с оценкой количества информации, которая становится известной в результате анализа передаваемых сообщений.
4. Барроузом, Абади и Нидхемом (Burrows, Abadi, Needham) предложен формальный метод анализа протоколов, получивший название BAN-логики. В нем все шаги протокола и передаваемые сообщения записываются в некотором стандартном формализованном виде, а затем осуществляется их формальный анализ при некоторых типовых предположениях о возможном поведении сторон. Данные формальные доказательства относятся в основном к корректности протоколов и не всегда могут рассматриваться как доказательство их безопасности.