Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инф_Безопасность_ответы.doc
Скачиваний:
32
Добавлен:
21.09.2019
Размер:
2.29 Mб
Скачать
  • Пара   играет роль закрытого ключа RSA (англ. RSA private key) и держится в секрете.

    Шифрование и дешифрование

    Предположим, Боб хочет послать Алисе сообщение  .

    Сообщениями являются целые числа в интервале от   до  , т.е  .

    Алгоритм:

    • Взять открытый ключ   Алисы

    • Взять открытый текст 

    • Зашифровать сообщение с использованием открытого ключа Алисы:

    Алгоритм:

    • Принять зашифрованное сообщение 

    • Взять свой закрытый ключ 

    • Применить закрытый ключ для расшифрования сообщения:

    Корректность схемы rsa

    Уравнения   и  , на которых основана схема RSA, определяют взаимно обратные преобразования множества 

    Алгоритмы факторизации

    В зависимости от сложности алгоритмы факторизации можно разбить на две группы. Первая группа — экспоненциальные алгоритмы, сложность которых экспоненциально зависит от длины входящих параметров (то есть от длины самого числа в бинарном представлении). Вторая группа — субэкспоненциальные алгоритмы, для обозначения сложности которых принята L-нотация:

    где N — число подлежащее факторизации,   и c — некоторые константы.

    Вопрос о существовании алгоритма факторизации с полиномиальной сложностью на классическом компьютере является одной из важных открытых проблем современной теории чисел. В то же время факторизация с полиномиальной сложностью возможна на квантовом компьютере с помощью алгоритма Шора (класс BQP).

    Экспоненциальные алгоритмы

    • Перебор возможных делителей — наиболее тривиальный алгоритм факторизации с вычислительной сложностью  .

    • Метод факторизации Ферма

    • ρ-алгоритм Полларда имеет сложность  ;

    • p-1 алгоритм Полларда;

    • p+1 алгоритм Вильямса;

    • метод квадратичных форм Шенкса имеет сложность  ;

    • метод Лемана имеет сложность 

    Субэкспоненциальные алгоритмы

    • алгоритм Диксона имеет сложность  ;

    • метод непрерывных дробей (CFRAC) имеет сложность  ;

    • метод квадратичного решета имеет сложность  ;

    • метод эллиптических кривых имеет сложность  , где   — наименьшее простое, которое делит  .

    36.33

    36. Целостность. Избыточность как способ обеспечения целостности данных. Классификация методов. Код аутентификации сообщения (имитовставка). Функция хешифорвания и ее свойства. Сжимающая функция.

    Целостность информации (также целостность данных) — термин в информатике и теории телекоммуникаций, который означает, что данные полны, условие того, что данные не были изменены при выполнении любой операции над ними, будь то передача, хранение или представление.

    В телекоммуникации целостность данных часто проверяют, используя MAC-код сообщения (Message authentication code).

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

    • злоумышленник пытается изменить номер аккаунта в банковской транзакции, или пытается подделать документ.

    • случайное изменение при передаче информации или при неисправной работе жесткого диска.

    • искажение фактов средствами массовой информации с целью манипуляции общественным мнением.

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

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

    Целостность данных — свойство, при выполнении которого данные сохраняют заранее определённый вид и качество.

    Область использования

    Понятие «целостность объекта» (англ. integrity) используется в контексте терминологии информационной безопасности (объектом может быть информация, специализированные данные, ресурсы автоматизированной системы). В частности, свойство целостности информации (ресурсов автоматизированной системы) — является одним из трех основных критериев информационной безопасности объекта.

    Обычно свойство целостности требуется наряду с конфиденциальностью (confidentiality) и доступностью (availability). Иногда к списку необходимых свойств информационной безопасности объекта добавляют неотказуемость (non-repudiation), подотчётность (accountability),аутентичность или подлинность (authenticity), достоверность (reliability).

    Целостность данных в криптографии

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

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

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

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

    Имитовставки

    Имитовста́вка (MAC, англ. message authentication code — код аутентичности сообщения) — средство обеспечения имитозащиты в протоколах аутентификации сообщений с доверяющими друг другу участниками — специальный набор символов, который добавляется к сообщению и предназначен для обеспечения его целостности и аутентификации источника данных.

    MAC обычно применяется для обеспечения целостности и защиты от фальсификации передаваемой информации.

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

    Для защиты от фальсификации (имитации) сообщения применяется имитовставка, выработанная с использованием секретного элемента (ключа), известного только отправителю и получателю.

    Число двоичных разрядов в имитовставке в общем случае определяется криптографическими требованиями с учетом того, что вероятность навязывания ложных данных равна 1/2p, где p — число двоичных разрядов в имитовставке.

    Имитовставка, является функцией сообщения x,  =f(x). Она может служить для целей аутентификации сообщения и проверки его целостности. Поэтому имитовставки можно разделить на два класса:

    • код проверки целостности сообщения (MDC, англ. modification detection code), для проверки целостности данных (но не аутентификации), вычисляется путем хэширования сообщения;

    • код аутентификации сообщения (MAC, англ. message authentication code), для защиты данных от фальсификации, вычисляется с помощью хэширования сообщения с использованием секретного ключа.

    MDC

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

    • необратимость (англ. preimage resistance);

    • стойкость к коллизиям первого рода (англ. weak collision resistance);

    • стойкость к коллизиям второго рода (англ. strong collision resistance).

    В зависимости от того, каким из этих свойств удовлетворяют MDC хэш-функции, можно выделить два их подкласса:

    • однонаправленные хэш-функции (OWHF, от англ. one-way hash function), которые удовлетворяют свойству необратимости и устойчивы к коллизиям первого рода;

    • устойчивые к коллизиям хэш-функции (CRHF, от англ. collision resistant hash function), которые устойчивы к коллизиям первого и второго рода (вообще говоря, на практике CRHF хэш-функции удовлетворяют и свойству необратимости).

    Существует три основных типа MDC алгоритмов хэш-функций, по способу их построения:

    • на блочных шифрах — например: алгоритм Matyas-Meyer-Oseas, алгоритм Davies-Meyer, алгоритм Miyaguchi-PreneelMDC-2MDC-4;

    • кастомизированные — специально созданные для хеширования алгоритмы, в которых делается упор на скорость, и которые независимы от других компонент системы (в том числе блочных шифров или компонент модульного умножения, которые могут быть уже использованы для других целей). Например: MD4MD5SHA-1SHA-2RIPEMD-128RIPEMD-160;

    • на модульной арифметике — например: MASH-1MASH-2.

    MAC

    К MAC хэш-функциям для вычислений кодов аутентификации сообщений, подсемейству ключевых хэш-функций, относят семейство функций удовлетворяющих следующим свойствам:

    • простота вычисления дайджеста от сообщения;

    • сжатие данных — входное сообщение произвольной битовой длины преобразуется в дайджест фиксированной длины;

    • стойкость ко взлому — имея одну и более пар сообщение-дайджест, (x[i], h(x[i])), вычислительно невозможно получить новую пару сообщение-дайджест (x, h(x)), для какого-либо нового сообщения x.

    Если не выполняется последнее свойство, то MAC может быть подделан. Также последнее свойство подразумевает, что ключ невозможно вычислить, то есть, имея одну или более пар (x[i], h(x[i])) с ключом k, вычислительно невозможно получить этот ключ.

    Алгоритмы получения кода аутентификации сообщения могут быть разделены на следующие группы по их типу:

    • на блочных шифрах — например: CBC-MACRIPE-MAC1RIPE-MAC3;

    • получение MAC из MDC;

    • кастомизированные алгоритмы — например: MAAMD5-MAC;

    • на потоковых шифрах — например: CRC-based MAC.

    Схемы использования

    Фактически, в общем виде, процесс передачи данных и их проверки на целостность выглядит следующим образом: пользователь A добавляет к своему сообщению дайджест. Эта пара будет передана второй стороне B. Там выделяется сообщение, вычисляется для негодайджест и дайджесты сравниваются. В случае совпадения значений сообщение будет считаться достоверным. Несовпадение будет говорить о том, что данные были изменены.

    Обеспечение целостности данных с использованием шифрования и mdc

    От исходного сообщения вычисляется MDC,  =h(x). Этот дайджест добавляется к сообщению С=(x||h(x)). Затем расширенное таким образом сообщение шифруется каким-то криптоалгоритмом E с общим ключом k. После шифрования полученное сообщение Cencriptedпередается второй стороне, которая используя ключ, выделяет из шифрованного сообщения данные x’ вычисляет для него значение дайджеста  ’. Если он совпадает с полученным  , то считается, что целостность сообщения была сохранена. Целью этого шифрования является защита добавленного MDC, чтобы третья сторона не могла изменить сообщение без нарушения соответствия между расшифрованным текстом и восстановленным кодом проверки целостности данных. Если при передаче данных конфиденциальность не является существенной, кроме как для обеспечения целостности данных, то возможны схемы, в которых будут зашифрованы только либо сообщение x, либо MDC.

    • Использование схемы с шифрованием только MDC, (xEk(h(x))), фактически приводит к частному случаю MAC. Но в данном случае, что нетипично для MAC, коллизия для данных xx’ может быть найдена без знания ключа k. Таким образом, хэш-функция должна удовлетворять требованию стойкости к коллизиям второго рода. Так же надо отметить, что существуют такие проблемы: если коллизия найдена для двух значений входных данных при каком-либо ключе, то она сохранится и при изменении этого ключа; если длина блока шифра меньше, чем длина дайджеста, то разбиение дайджеста может привести к уязвимости схемы.

    • Шифрование только данных, (Ek(x), h(x)), дает некоторый выигрыш в вычислениях при шифровании(за исключением коротких сообщений). Как и в предыдущем случае, хэш-функция должна быть устойчива к коллизиям второго рода.

    Обеспечение целостности данных с использованием шифрации и mac

    По сравнению с предыдущим случаем в канал посылается сообщение следующего вида: Ek(x||hk1(x)). Такая схема обеспечения целостности имеет преимущество над предыдущей схемой с MDC: если шифр будет взломан, MAC все равно будет обеспечивать целостность данных. Недостатком является то, что используется два различных ключа, для криптоалгоритма и для MAC. При использовании подобной схемы, следует быть уверенным, что какие-либо зависимости между алгоритмом MAC и алгоритмом шифрации не приведут к уязвимости системы. Рекомендуется, чтобы эти два алгоритма были независимыми (например, такой недостаток системы может проявляться, когда в качестве алгоритма MAC используется CBC-MAC, и в качестве схемы шифрования CBC).

    Вообще говоря, шифрация всего сообщения при использовании кодов аутентификации сообщений не обязательно с точки зрения обеспечения целостности данных, поэтому в простейших случаях в схеме может не происходить шифрация сообщения (x||hk(x)).

    Неумышленные нарушения целостности

    С точки зрения криптографии основной интерес представляют задачи обеспечения целостности данных, в которых осуществляются их умышленные изменения. Однако методы обеспечения проверки случайных изменений тоже применяются. К таким методам относят использование кодов обнаружения и исправления ошибок. К таковым, например, относятся: коды Хемминга, коды CRC, коды БЧХ и прочие.

    Аутентификация и целостность

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

    37. Понятие коллизии. Парадокс дней рождения. Сравнение длины кода аутентификации сообщения (имитоставки) и длины блочного шифра. Коллизии md5

    Коллизия хеш-функции — это получение одинакового значения функции для разных сообщений и идентичного начального буфера. В отличие от коллизий, псевдоколлизии определяются как равные значения хеша для разных значений начального буфера, причём сами сообщения могут совпадать или отличаться. В 1996 году Ганс Доббертин нашёл псевдоколлизии в MD5, используя определённые инициализирующие векторы, отличные от стандартных. Оказалось, что можно для известного сообщения построить второе, такое, что оно будет иметь такой же хеш, как и исходное. C точки зрения математики это означает: MD5(IV,L1) = MD5(IV,L2), где IV — начальное значение буфера, а L1 и L2 — различные сообщения. 

    Парадо́кс дней рожде́ния — это кажущееся парадоксальным утверждение, что вероятность совпадения дней рождения (числа и месяца) хотя бы у двух членов группы из 23 и более человек, превышает 50 %. С практической точки зрения это означает, что если, например, в вашем классе более 22 учеников, то более вероятно, что у кого-то из одноклассников дни рождения придутся на один день, чем что у каждого будет свой собственный день рождения.

    Для 60 и более человек вероятность такого совпадения превышает 99 %, хотя 100 % она достигает, согласно принципу Дирихле, только когда в группе не менее 367 человек (с учётом високосных лет).

    Такое утверждение может показаться неочевидным, так как вероятность совпадения дней рождения двух человек в любой день года (1/365 = 0,27 %), помноженная на число человек в группе из 23, даёт лишь 23/365 = 6,3 %. Это рассуждение неверно, так как число возможных пар (253) значительно превышает число человек в группе. Таким образом, утверждение не является парадоксом в строгом научном смысле — логического противоречия в нём нет, а парадокс заключается лишь в различиях между интуитивным восприятием ситуации человеком и результатами математического расчёта.

    В криптоанализе под атакой «дней рождения» понимают метод взлома шифров или поиска коллизий хеш-функций на основе парадокса дней рождения.

    Поиск коллизий хеш-функций

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

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

    В частности, требуется в два раза большая длина хеша, чтобы обеспечить вычислительную сложность, сравнимую со сложностью полного перебора. Другими словами, если с помощью полного перебора злоумышленник может вычислить   хэш-значений, то он начнёт находить хэш-коллизии для всех хэшей длиной менее   бит.

    Примеры

    Предположим, что для атаки на 64-битный блочный шифр злоумышленнику нужно получить две пары открытого/шифрованного текста, которые отличаются только в наименее значимом бите. Интерпретация этой задачи в терминах парадокса дней рождения приводит к выводу, что пространство из всего лишь   известных открытых текстов с высокой вероятностью будет содержать необходимую пару.

    В качестве другого примера рассмотрим цикл 64-битового Фейстелева шифра. Предположим, что в шифре использована случайная функция F (32 в 32 бита). Нападающий может захотеть узнать, как много ему необходимо получить открытых текстов для получения коллизиифункции F. Согласно парадоксу дней рождения, для этого придется перебрать около   открытых текстов.

    Одним из следствий парадокса дней рождения является то, что для n-битового блочного шифра повторяемые появления блока шифротекста могут ожидаться с вероятностью около 0,63 при наличии лишь   случайных открытых текстов, зашифрованых на одном ключе (независимо от размера ключа). Для ECB режима при совпадении двух блоков шифротекста соответствующие открытые тексты обязаны также совпадать. Это означает, что в атаке с известным шифротекстом информация об открытых текстах может раскрываться из шифртекстовых блоков.

    38. Алгоритм хеширования md5 : параметры, алгоритм забивки, алгоритм изменения переменных сцепления, раунды и операции, функции раундов.

    MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины и последующей проверки их подлинности. Является улучшенной в плане безопасности версией MD4. Описан в RFC 1321.

    Алгоритм MD5

    Схема работы алгоритма MD5

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

    Ниже приведены 5 шагов алгоритма:

    Шаг 1. Выравнивание потока

    Сначала дописывают единичный бит в конец потока (байт 0x80), затем необходимое число нулевых бит. Входные данные выравниваются так, чтобы их новый размер   был сравним с 448 по модулю 512 ( ). Выравнивание происходит, даже если длина уже сравнима с 448.

    Шаг 2. Добавление длины сообщения

    В оставшиеся 64 бита дописывают 64-битное представление длины данных (количество бит в сообщении) до выравнивания. Сначала записывают младшие 4 байта. Если длина превосходит  , то дописывают только младшие биты. После этого длина потока станет кратной 512. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит.

    Шаг 3. Инициализация буфера

    Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами (шестнадцатеричное представление, сначала младший байт):

    А = 01 23 45 67;

    В = 89 AB CD EF;

    С = FE DC BA 98;

    D = 76 54 32 10.

    В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором.

    Определим ещё функции и константы, которые нам понадобятся для вычислений.

    • Потребуются 4 функции для четырёх раундов. Введём функции от трёх параметров — слов, результатом также будет слово.

    1 раунд  .

    2 раунд  .

    3 раунд  .

    4 раунд  .

    • Определим таблицу констант   — 64-элементная таблица данных, построенная следующим образом:  , где  .

    • Выровненные данные разбиваются на блоки (слова) по 32 бита, и каждый блок проходит 4 раунда из 16 операторов. Все операторы однотипны и имеют вид: [abcd k s i], определяемый как  , где X — блок данных. X[k] = M [n * 16 + k], где k — номер 32-битного слова из n-го 512-битного блока сообщения, и   — циклический сдвиг влево на   бит полученного 32-битного аргумента.

    Шаг 4. Вычисление в цикле

    Заносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый).

    AA = A

    BB = B

    CC = C

    DD = D

    Суммируем с результатом предыдущего цикла:

    A = AA + A

    B = BB + B

    C = CC + C

    D = DD + D

    После окончания цикла необходимо проверить, есть ли ещё блоки для вычислений. Если да, то изменяем номер элемента массива (n++) и переходим в начало цикла.

    Шаг 5. Результат вычислений

    Результат вычислений находится в буфере ABCD, это и есть хеш. Если выводить побайтово, начиная с младшего байта A и закончив старшим байтом D, то мы получим MD5-хеш.

    MD5-хеши

    Хеш содержит 128 бит (16 байт) и обычно представляется как последовательность из 32 шестнадцатеричных цифр.

    Несколько примеров хеша:

    MD5("md5") = 1bc29b36f623ba82aaf6724fd3b16718

    Даже небольшое изменение входного сообщения (в нашем случае на один бит: ASCII символ «5» с кодом 0x3516 = 0001101012 заменяется на символ «4» с кодом 0x3416 = 0001101002) приводит к полному изменению хеша. Такое свойство алгоритма называется лавинным эффектом.

    MD5("md4") = c93d3bf7a7c4afe94b64e30c2ce39f4f

    Пример MD5-хеша для «нулевой» строки:

    MD5("") = d41d8cd98f00b204e9800998ecf8427e

    Криптоанализ

    На данный момент существуют несколько видов «взлома» хешей MD5 — подбора сообщения с заданным хешем:

    • Перебор по словарю

    • Brute-force

    • RainbowCrack

    Атаки переборного типа

    Для полного перебора или перебора по словарю можно использовать программы PasswordsPro, MD5BFCPF, John the Ripper. Для перебора по словарю существуют готовые словари.

    RainbowCrack — ещё один метод взлома хеша. Он основан на генерировании большого количества хешей из набора символов, чтобы по получившейся базе вести поиск заданного хеша. Хотя генерация хешей занимает много времени, зато последующий взлом производится очень быстро.

    39. Решение задачи безопасного хранения паролей в ос Windows: nt hash.

    В настоящее время операционные системы Windows 2000 и Windows XP фирмы Microsoft, основанные на ядре Windows NT, получили очень широкое распространение. Процент этих ОС среди всех Windows-систем очень велик и продолжает расти, поэтому проблема их безопасности является одним из важных аспектов современной компьютерной безопасности.

    Формирование NT Hash:

    1. Пароль пользователя преобразуется в Unicode-строку.

    2. Генерируется хэш на основе данной строки с использованием алгоритма MD4.

    3. Полученный хэш шифруется алгоритмом DES, причем в качестве ключа используется RID (т.е. идентификатор пользователя). Это необходимо для того, чтобы два пользователя с одинаковыми паролями имели разные хэши. Напомним, что все пользователи имеют разные RID-ы (RID встроенной учетной записи Администратора равен 500, встроенной учетной записи Гостя равен 501, а все остальные пользователи последовательно получают RID-ы, равные 1000, 1001, 1002 и т.д.).

    Для повышения безопасности хранения паролей, начиная с 3-го Service Pack'a в Windows NT (и во всех последующих NT-системах, вплоть до Windows 2003), полученные хэши дополнительно шифруются еще одним алгоритмом с помощью утилиты syskey. Т.е. к вышеописанным алгоритмам добавляется еще 4-й шаг - получение с помощью syskey нового хэша от хэша, полученного на шаге 3.

    40. Решение задачи безопасного хранения паролей, понятие «соли».

    Виды хранения паролей:

    - Хранить пароли в БД в открытом виде.

    - Использовать обычные хэши crc32, md5, sha1

    - Использовать функцию crypt()

    - Использовать статическую «соль», конструкции вида md5(md5($pass))

    - Использовать уникальную «соль» для каждого пользователя.

    Статическая соль и тому подобные конструкции могут служить достаточно хорошо… пока структура этих конструкций и соль хранятся в тайне.

    41. Аутентификация информации: идентификация, аутентификация, авторизация. Модель системы аутентификации. Протокол как метод аутентификации. Протокол с запросом и ответом. Атаки на протоколы аутентификации.

    Аутентифика́ция (англ. Authentication) — процедура проверки подлинности, например: проверка подлинности пользователя путём сравнения введённого им пароля с паролем в базе данных пользователей; подтверждение подлинности электронного письма путём проверки цифровой подписи письма по ключу шифрования отправителя; проверка контрольной суммы файла на соответствие сумме, заявленной автором этого файла.

    Идентификация (от латинского identifico — отождествлять): присвоение субъектам и объектам идентификатора и / или сравнение идентификатора с перечнем присвоенных идентификаторов. Например, представление человека по имени отчеству - это идентификация.

    Аутентификация (от греческого: αυθεντικός ; реальный или подлинный): подтверждение подлинности чего-либо или кого либо. Например, предъявление паспорта - это подтверждение подлинности заявленного имени отчества.

    Авторизация является функцией определения прав доступа к ресурсам и управления этим доступом. Авторизация — это не то же самое что идентификация и аутентификация: идентификация — это называние лицом себя системе; аутентификация — это установление соответствия лица названному им идентификатору; а авторизация — предоставление этому лицу возможностей в соответствие с положенными ему правами или проверка наличия прав при попытке выполнить какое-либо действие. Например, авторизацией являются лицензии на осуществление определённой деятельности.

    Разработка математической модели предполагает: разработку модели, которая учитывала бы ключевые особенности объекта исследования и выбор диагностических признаков; проведения анализа этих диагностических признаков и разработка методов для предварительной обработки. В случае использования статистического подхода - исследовать статистические характеристики диагностических признаков. Эти исследования позволяют сделать выводы об адекватности модели.

    HTTP (сокр. от англ. HyperText Transfer Prоtocоl — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов). Основой HTTP является Технология «клиент-сервер», то есть предполагается существование потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб-сайтов. В 2006 году в Северной Америке доля HTTP-трафика превысила долю P2P-сетей и составила 46 %, из которых почти половина — это передача потокового видео и звука

    HTTP используется также в качестве «транспорта» для других протоколов прикладного уровня, таких как SOAPXML-RPCWebDAV.

    Основным объектом манипуляции в HTTP является ресурс, на который указывает URI (англ. Uniform Resource Identifier) в запросе клиента. Обычно такими ресурсами являются хранящиеся на сервере файлы, но ими могут быть логические объекты или что-то абстрактное. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. (В частности для этого используется HTTP-заголовок.) Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя данный протокол является текстовым.

    HTTP — протокол прикладного уровня, аналогичными ему являются FTP и SMTP. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URI. В отличие от многих других протоколов, HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами «запрос-ответ». Компоненты, использующие HTTP, могут самостоятельно осуществлять сохранение информации о состоянии, связанной с последними запросами и ответами (например, «куки» на стороне клиента, «сессии» на стороне сервера). Браузер, посылающий запросы, может отслеживать задержки ответов. Сервер может хранить IP-адреса и заголовки запросов последних клиентов. Однако сам протокол не осведомлён о предыдущих запросах и ответах, в нём не предусмотрена внутренняя поддержка состояния, к нему не предъявляются такие требования.

    Основными атаками на протоколы аутентификации являются: - самозванство (impersonation). Заключается в том, что один пользователь пытается выдать себя за другого; - повторная передача (replay attack). Заключается в повторной передаче аутентификационных данных каким-либо пользователем; - подмена стороны аутентификационного обмена (interleaving at-tack). Злоумышленник в ходе данной атаки участвует в процессе аутентификационного обмена между двумя сторонами и имеет возможность модификации проходящего через него трафика; - отражение передачи (reflection attack). Один из вариантов предыдущей атаки, в ходе которой злоумышленник в рамках данной сессии протокола пересылает обратно перехваченную информацию; - вынужденная задержка (forced delay). Злоумышленник перехватывает некоторую информацию и передает ее спустя некоторое время; - атака с выборкой текста (chosen-text attack). Злоумышленник перехватывает аутентификационный трафик и пытается получить информацию о долговременных ключах.

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

    Кроме перечисленных атак на протоколы аутентификации существует атака следующего вида: после успешного прохождения аутентификации между двумя пользователями и установления соединения нарушитель «выкидывает» какого-либо пользователя из соединения и продолжает работу от его имени.

    42. Аутентификация сущности. Протоколы с нулевым разглашением: итеративность доказательства, пример.

    Аутентификация взаимодействующих сущностей реализуется с помощью процедуры двойного или тройного квитирования установления связи, аналогичной механизмам синхронизации последовательных номеров, используемым в некоторых протоколах. Одиночное квитирование обеспечивает только одностороннюю аутентификацию, и не может дать гарантий без синхронизации часов. Двойное квитирование может обеспечить взаимную аутентификацию, но без взаимной уверенности в синхронизации часов. Тройное квитирование обеспечивает взаимную аутентификацию взаимодействующих процессов, при которой нет необходимости синхронизировать часы. И здесь, снова, аутентификация обычно полагается на механизмы

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

    Доказательство с нулевым разглашением (информации) (англ. Zero-knowledge proof) — это интерактивный протокол, позволяющий одной из сторон (проверяющему, verifier) убедиться в достоверности какого-либо утверждения (обычно математического), не получив при этом никакой другой информации от второй стороны (доказывающего, prover).

    В криптографии Доказательство с нулевым разглашением (информации) (англ. Zero-knowledge proof) — это интерактивный протокол, позволяющий одной из сторон (проверяющему, verifier) убедиться в достоверности какого-либо утверждения (обычно математического), не получив при этом никакой другой информации от второй стороны (доказывающего, prover).

    Доказательство с нулевым разглашением должно обладать тремя свойствами:

    1. Полнота: если утверждение действительно верно, то доказывающий убедит в этом проверяющего.

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

    3. Нулевое разглашение: если утверждение верно, то любой даже нечестный проверяющий не узнает ничего кроме самого факта, что утверждение верно.

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

    Общая структура доказательств с нулевым разглашением

    Каждый раунд или аккредитация доказательства состоит из трёх этапов. Схематично их можно изобразить следующим образом:

    •  : доказательство (witness)

    •  : вызов (challenge)

    •  : ответ (response)

    Сначала A выбирает из заранее определенного множества некоторый элемент, который становится её секретом (закрытый ключ). На основе этого элемента вычисляется, а затем публикуется открытый ключ. Знание секрета определяет множество вопросов, на которые Авсегда сможет дать правильные ответы. Затем A выбирает случайный элемент из множества, по определенным правилам (в зависимости от конкретного алгоритма) вычисляет доказательство и затем отсылает его B. После этого B выбирает из всего множества вопросов один и просит A ответить на него (вызов). В зависимости от вопроса, А посылает B ответ. Полученной информации B достаточно, чтобы проверить действительно ли А владеет секретом. Раунды можно повторять сколько угодно раз, пока вероятность того, что A «угадывает» ответы не станет достаточно низкой.

    Такая техника называется также «разрезать и выбрать» (cut-and-choose).

    Пример

    Назовем проверяющую сторону Петей, а доказывающую сторону Димой (в англоязычной литературе обычно используются пары Alice и Bob). Допустим Диме известен Гамильтонов цикл в большом графе G. Пете известен граф G, но он не знает гамильтонова цикла в нём. Дима хочет доказать Пете, что он знает гамильтонов цикл, не выдавая при этом ни самого цикла, ни какой-либо информации о нём (возможно Петя хочет купить этот гамильтонов цикл у Димы, но перед этим удостовериться, что он у Димы действительно есть).

    Для этого Петя и Дима совместно выполняют несколько раундов протокола:

    • Вначале Дима создает граф Hизоморфный G. Преобразовывание гамильтонова цикла между изоморфными графами — тривиальная задача, поэтому если Диме известен гамильтонов цикл в G, то он также знает гамильтонов цикл в H.

    • Дима передает граф H Пете.

    • Петя выбирает случайный бит b ← {0,1}

      • Если b=0, то Петя просит Диму доказать изоморфизм G u H, то есть предоставить соответствие вершин этих двух графов. Петя может проверить, действительно ли G u H изоморфны.

      • Если b=1, то Петя просит Диму показать гамильтонов цикл в H. Для задачи изоморфизма графов на данный момент не доказана ни её принадлежность классу  , ни её  -полнота, поэтому будем здесь считать, что невозможно из гамильтонова цикла в H вычислить гамильтонов цикл в G.

    В каждом раунде Петя выбирает новый случайный бит, который неизвестен Диме, поэтому чтобы Дима мог ответить на оба вопроса, нужно чтобы H был в самом деле изоморфен G и Дима должен знать гамильтонов цикл в H (а значит также и в G). Поэтому после достаточного числа раундов, Петя может быть уверен в том, что у Димы действительно есть гамильтонов цикл в G. С другой стороны, Дима не раскрывает никакой информации о гамильтоновом цикле в G. Более того, Пете сложно будет доказать кому-либо ещё, что он сам или Дима знает гамильтонов цикл в G.

    Предположим, что у Димы нет гамильтонова цикла в G и он хочет обмануть Петю. Тогда Диме необходим неизоморфный G граф G' , в котором он всё-таки знает гамильтонов цикл. В каждом раунде он может передавать Пете либо H'  — изоморфный G' , либо H — изоморфныйG. Если Петя попросит доказать изоморфизм и был передан H, то обман не вскроется. Аналогично, если он просит показать гамильтонов цикл и был передан H' . В таком случае вероятность того, что Дима все-таки обманет Петю после n раундов, равна 1/2n, что может быть меньше любой заранее заданной величы при достаточном числе раундов.

    Предположим, что Петя не узнал гамильтонов цикл, но хочет доказать Васе, что Дима его знает. Если Петя, например, заснял на видео все раунды протокола, Вася едва ли ему поверит. Вася может предположить, что Петя и Дима в сговоре и в каждом раунде Петя заранее сообщал Диме свой выбор случайного бита, чтобы Дима мог передавать ему H для проверок изоморфизма и H' для проверок гамильтонова цикла. Таким образом без участия Димы доказать, что он знает гамильтонов цикл, можно лишь доказав, что во всех раундах протокола выбирались действительно случайные биты.

    Злоупотребления

    Предложено несколько способов злоупотребления доказательством с нулевым разглашением:

    • Проблема гроссмейстера

    • Обман, выполненный мафией

    • Обман с несколькими личностями

    43. Инфраструктура открытых ключей (pki), сертификат X.509, центр сертификации.

    Инфраструктура открытых ключей (англ. PKI - Public Key Infrastructure) - технология аутентификации с помощью открытых ключей. Это комплексная система, которая связывает открытые ключи с личностью пользователя посредством удостоверяющего центра (УЦ).

    В основе PKI лежит использование криптографической системы с открытым ключом и несколько основных принципов:

    1. закрытый ключ известен только его владельцу;

    2. удостоверяющий центр создает сертификат открытого ключа, таким образом удостоверяя этот ключ;

    3. никто не доверяет друг другу, но все доверяют удостоверяющему центру;

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

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

    Объекты pki

    PKI реализуется в модели клиент-сервер, то есть проверка какой-либо информации, предоставляемой инфраструктурой может происходить только по инициативе клиента.

    Основные компоненты PKI

    • Удостоверяющий центр (УЦ) является основной структурой, формирующей цифровые сертификаты подчиненных центров сертификации и конечных пользователей. УЦ является главным управляющим компонентом PKI:

    1. он является доверенной третьей стороной (trusted third party)

    2. это сервер, который осуществляет управление сертификатами.

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

    • Регистрационный центр (РЦ) - необязательный компонент системы, предназначенный для регистрации пользователей. Для этих целей РЦ обычно предоставляет web-интерфейс. Удостоверяющий центр доверяет регистрационному центру проверку информации о субъекте. Регистрационный центр, проверив правильность информации, подписывает её своим ключом и передаёт удостоверяющему центру, который, проверив ключ регистрационного центра, выписывает сертификат. Один регистрационный центр может работать с несколькими удостоверяющими центрами (т.е. состоять в нескольких PKI), один удостоверяющий центр может работать с несколькими регистрационными центрами. Иногда, удостоверяющий центр выполняет функции регистрационного центра.

    • Репозиторий - хранилище, содержащее сертификаты и списки отозванных сертификатов (СОС) и служащее для распространения этих объектов среди пользователей. В Законе РФ "Об электронной цифровой подписи" он называется реестр сертификатов ключей подписей.

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

    • Центр запросов - необязательный компонент системы, где конечные пользователи могут запросить или отозвать сертификат.

    • Конечные пользователи - пользователи, приложения или системы, являющиеся владельцами сертификата и использующие инфраструктуру управления открытыми ключами.

    • Основные задачи

    Основные задачи системы информационной безопасности, которые решает инфраструктура управления открытыми ключами:

    • обеспечение конфиденциальности информации;

    • обеспечение целостности информации;

    • обеспечение аутентификации пользователей и ресурсов, к которым обращаются пользователи;

    • обеспечение возможности подтверждения совершенных пользователями действий с информацией (неотказуемость, или апеллируемость - англ. non-repudiation).

    PKI напрямую не реализует авторизацию, доверие, именование субъектов криптографии, защиту информации или линий связи, но может использоваться как одна из составляющих при их реализации.

    Основная идея

    Задачей PKI является определение политики выпуска цифровых сертификатов, выдача их и аннулирование, хранение информации, необходимой для последующей проверки правильности сертификатов. В число приложений, поддерживающих PKI, входят: защищеннаяэлектронная почта, протоколы платежей, электронные чеки, электронный обмен информацией, защита данных в сетях с протоколом IP, электронные формы и документы с электронной цифровой подписью (ЭЦП).

    X.509 – стандарт, определяющий форматы данных и процедуры распределения открытых ключей с помощью сертификатов с цифровыми подписями, которые предоставляются сертификационными органами (CA). RFC 1422 создает основу для PKI на базе X.509.

    Описание

    Для технологии открытых ключей необходимо, чтобы пользователь открытого ключа был уверен, что этот ключ принадлежит именно тому удаленному субъекту (пользователю или системе), который будет использовать средства шифрования или цифровой подписи. Такую уверенность дают сертификаты открытых ключей, то есть структуры данных, которые связывают величины открытых ключей с субъектами. Эта связь достигается цифровой подписью доверенного CA под каждым сертификатом. Сертификат имеет ограниченный срок действия, указанный в его подписанном содержании. Поскольку пользователь сертификата может самостоятельно проверить его подпись и срок действия, сертификаты могут распространяться через незащищенные каналы связи и серверные системы, а также храниться в кэш-памяти незащищенных пользовательских систем. Содержание сертификата должно быть одинаковым в пределах всего PKI. В настоящее время в этой области предлагается общий стандарт для Интернет с использованием формата X.509 v3:

    • Номер версии

    • Серийный номер

    • Эмитент

    • Субъект

    • Открытый ключ субъекта (алгоритм, ключ)

    • Период действия

    • Дополнительные (необязательные) значения

    • Алгоритм подписи сертификата

    • Значение подписи сертификата

    X509-сертификаты хранятся как правило в виде DER (стандартное расширение .cer) или PEM-файлов.

    Cписок отзыва сертификатов (CRL)

    CRL представляет собой список отозванных сертификатов с указанием времени. Он подписывается CA и свободно распространяется через общедоступный репозиторий. В списке CRL каждый отозванный сертификат опознается по своему серийному номеру. Когда у какой-то системы возникает необходимость в использовании сертификата (например, для проверки цифровой подписи удаленного пользователя), эта система не только проверяет подпись сертификата и срок его действия, но и просматривает последний из доступных списков CRL, проверяя, не отозван ли этот сертификат.

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

    Электро́нная по́дпись (ЭП) — информация в электронной форме, присоединенная к другой информации в электронной форме (электронный документ) или иным образом связанная с такой информацией. Используется для определения лица, подписавшего информацию (электронный документ).

    По своему существу электронная подпись представляет собой реквизит электронного документа, позволяющий установить отсутствие искажения информации в электронном документе с момента формирования ЭП и проверить принадлежность подписи владельцусертификата ключа ЭП. Значение реквизита получается в результате криптографического преобразования информации с использованием закрытого ключа ЭП.

    Назначение и применение эп

    Электронная подпись предназначена для идентификации лица, подписавшего электронный документ и является полноценной заменой (аналогом) собственноручной подписи в случаях, предусмотренных законом[2].

    Использование электронной подписи позволяет осуществить:

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

    • Защиту от изменений (подделки) документа: гарантия выявления подделки при контроле целостности делает подделывание нецелесообразным в большинстве случаев.

    • Невозможность отказа от авторства. Так как создать корректную подпись можно, лишь зная закрытый ключ, а он должен быть известен только владельцу, то владелец не может отказаться от своей подписи под документом.

    • Доказательное подтверждение авторства документа: Так как создать корректную подпись можно, лишь зная закрытый ключ, а он должен быть известен только владельцу, то владелец пары ключей может доказать своё авторство подписи под документом. В зависимости от деталей определения документа могут быть подписаны такие поля, как «автор», «внесённые изменения», «метка времени» и т. д.

    Виды электронных подписей в Российской Федерации

    Федеральный закон РФ от 6 апреля 2011 г. № 63-ФЗ «Об электронной подписи» устанавливает следующие виды ЭП:

    • Простая электронная подпись (ПЭП);

    • Усиленная электронная подпись (УЭП);

      • Усиленная неквалифицированная электронная подпись (НЭП);

      • Усиленная квалифицированная электронная подпись (КЭП).

    Алгоритмы

    Существует несколько схем построения цифровой подписи:

    • На основе алгоритмов симметричного шифрования. Данная схема предусматривает наличие в системе третьего лица — арбитра, пользующегося доверием обеих сторон. Авторизацией документа является сам факт зашифрования его секретным ключом и передача его арбитру.[8]

    • На основе алгоритмов асимметричного шифрования. На данный момент такие схемы ЭП наиболее распространены и находят широкое применение.

    Кроме этого, существуют другие разновидности цифровых подписей (групповая подпись, неоспоримая подпись, доверенная подпись), которые являются модификациями описанных выше схем.[8] Их появление обусловлено разнообразием задач, решаемых с помощью ЭП.

    Использование хеш-функций

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

    Использование хеш-функций даёт следующие преимущества:

    • Вычислительная сложность. Обычно хеш цифрового документа делается во много раз меньшего объёма, чем объём исходного документа, и алгоритмы вычисления хеша являются более быстрыми, чем алгоритмы ЭП. Поэтому формировать хэш документа и подписывать его получается намного быстрее, чем подписывать сам документ.

    • Совместимость. Большинство алгоритмов оперирует со строками бит данных, но некоторые используют другие представления. Хеш-функцию можно использовать для преобразования произвольного входного текста в подходящий формат.

    • Целостность. Без использования хеш-функции большой электронный документ в некоторых схемах нужно разделять на достаточно малые блоки для применения ЭП. При верификации невозможно определить, все ли блоки получены и в правильном ли они порядке.

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

    В большинстве ранних систем ЭП использовались функции с секретом, которые по своему назначению близки к односторонним функциям. Такие системы уязвимы к атакам с использованием открытого ключа (см. ниже), так как, выбрав произвольную цифровую подпись и применив к ней алгоритм верификации, можно получить исходный текст.[9] Чтобы избежать этого, вместе с цифровой подписью используется хеш-функция, то есть, вычисление подписи осуществляется не относительно самого документа, а относительно его хеша. В этом случае в результате верификации можно получить только хеш исходного текста, следовательно, если используемая хеш-функция криптографически стойкая, то получить исходный текст будет вычислительно сложно, а значит атака такого типа становится невозможной.

    Симметричная схема

    Симметричные схемы ЭП менее распространены чем асимметричные, так как после появления концепции цифровой подписи не удалось реализовать эффективные алгоритмы подписи, основанные на известных в то время симметричных шифрах. Первыми, кто обратил внимание на возможность симметричной схемы цифровой подписи, были основоположники самого понятия ЭП Диффи и Хеллман, которые опубликовали описание алгоритма подписи одного бита с помощью блочного шифра.[3] Асимметричные схемы цифровой подписи опираются на вычислительно сложные задачи, сложность которых еще не доказана, поэтому невозможно определить, будут ли эти схемы сломаны в ближайшее время, как это произошло со схемой, основанной на задаче об укладке ранца. Также для увеличения криптостойкости нужно увеличивать длину ключей, что приводит к необходимости переписывать программы, реализующие асимметричные схемы, и в некоторых случаях перепроектировать аппаратуру.[8] Симметричные схемы основаны на хорошо изученных блочных шифрах.

    В связи с этим симметричные схемы имеют следующие преимущества:

    • Стойкость симметричных схем ЭП вытекает из стойкости используемых блочных шифров, надежность которых также хорошо изучена.

    • Если стойкость шифра окажется недостаточной, его легко можно будет заменить на более стойкий с минимальными изменениями в реализации.

    Однако у симметричных ЭП есть и ряд недостатков:

    • Нужно подписывать отдельно каждый бит передаваемой информации, что приводит к значительному увеличению подписи. Подпись может превосходить сообщение по размеру на два порядка.

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

    Из-за рассмотренных недостатков симметричная схема ЭЦП Диффи-Хелмана не применяется, а используется её модификация, разработанная Березиным и Дорошкевичем, в которой подписывается сразу группа из нескольких бит. Это приводит к уменьшению размеров подписи, но к увеличению объема вычислений. Для преодоления проблемы «одноразовости» ключей используется генерация отдельных ключей из главного ключа.[8]

    Асимметричная схема

    Схема, поясняющая алгоритмы подписи и проверки

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

    Общепризнанная схема цифровой подписи охватывает три процесса[7]:

    • Генерация ключевой пары. При помощи алгоритма генерации ключа равновероятным образом из набора возможных закрытых ключей выбирается закрытый ключ, вычисляется соответствующий ему открытый ключ.

    • Формирование подписи. Для заданного электронного документа с помощью закрытого ключа вычисляется подпись.

    • Проверка (верификация) подписи. Для данных документа и подписи с помощью открытого ключа определяется действительность подписи.

    Для того, чтобы использование цифровой подписи имело смысл, необходимо выполнение двух условий:

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

    • Без обладания закрытым ключом должно быть вычислительно сложно создать легитимную цифровую подпись.

    Следует отличать электронную цифровую подпись от кода аутентичности сообщения (MAC).

    Аутентифика́ция (англ. Authentication) — процедура проверки подлинности[1], например: проверка подлинности пользователя путём сравнения введённого им пароля с паролем в базе данных пользователей; подтверждение подлинности электронного письма путём проверки цифровой подписи письма по ключу шифрования отправителя; проверка контрольной суммы файла на соответствие сумме, заявленной автором этого файла. В русском языке термин применяется в основном в сфере информационных технологий.

    Для генерации пары ключей (секретного и открытого) в алгоритмах ЭЦП, используются разные математические схемы, основанные на применении однонаправленных функций. Эти схемы разделяются на две группы. В основе такого разделения лежат известные сложные вычислительные задачи:

    - задача факторизации (разложения на множители) больших целых чисел;

    - задача дискретного логарифмирования.

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

    1. Односторонность. Пусть дано хэш-значение H(M) некоторого неизвестного сообщения M. Тогда вычислительно невозможно определить M по имеющемуся H(M).

    2. Стойкость к столкновению (коллизии). Пусть дано сообщение M и его хэш-значение H(M). Тогда вычислительно невозможно определить M’ такое, что H(M) = H(M’). Это свойство эквивалентно свойству односторонности.

    3. Строгая стойкость к столкновению (коллизии). Вычислительно невозможно найти два произвольных сообщения M и M’, для которых H(M) = H(M’).

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

    Для верификации цифровая подпись дешифруется через RSA с применением, соответственно, открытого ключа. Результат сравнивается с хешем сообщения. При совпадении подпись признается соответствующей данному сообщению

    45. Алгоритм цифровой подписи rsa. Пример постановки и верификации подписи.

    Наиболее пpостым и pаспpостpаненным инстpументом электpонной подписи является уже знакомый алгоpитм RSA.

    Пpедположим, что

    d,p,q - секpетные, а е, n=pq - откpытые.

    Замечания.

    1. Разложение по n дает: (n)=(p-1)(q-1); зная (n) и e, можно найти d.

    2. Из e и d можно найти кpатность (n); кpатность (n) позволяет опpеделить делители n.

    Пусть DATA - пеpедаваемое Александpом Боpису сообщение.

    Александp подписывает DATA для Боpиса пpи пеpедаче :

    EeB,nB { EdA,nA {DATA}}.

    Пpи этом он использует:

    * закpытый ключ EdA,nA Александpа,

    * откpытый ключ EeB,nB Боpиса.

    Боpис может читать это подписанное сообщение сначала пpи помощи закpытого ключа EdВ,nВ Боpиса с целью получения

    EdA,nA {DATA} = EdB,nB {EeB,nB {EdA,nA {DATA}}}

    и затем - откpытого ключа EeA,nA Александpа для получения

    DATA = EeA,nA { EdA,nA {DATA}}.

    Таким обpазом, у Боpиса появляется сообщение DATA, посланное ему Александpом.

    Очевидно, что данная схема позволяет защититься от нескольких видов наpушений.

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

    Наpушитель без знания секpетного ключа не может ни сфоpмиpовать, ни сделать осмысленное изменение сообщения, пеpедаваемого по линии связи.

    46. Одноразовые пароли. Хеш-цепочки Lamport. Примеры использования.

    Одноразовый пароль (англ. one time password, OTP) — это пароль, действительный только для одного сеанса аутентификации. Действие одноразового пароля также может быть ограничено определённым промежутком времени. Преимущество одноразового пароля по сравнению со статическим состоит в том, что пароль невозможно использовать повторно. Таким образом, злоумышленник, перехвативший данные из успешной сессии аутентификации, не может использовать скопированный пароль для получения доступа к защищаемой информационной системе. Использование одноразовых паролей само по себе не защищает от атак, основанных на активном вмешательстве в канал связи, используемый для аутентификации (например, от атак типа «человек посередине»).

    Человек не в состоянии запомнить одноразовые пароли. Поэтому требуются дополнительные технологии для их корректной работы.

    Способы создания и распространения otp

    Алгоритмы создания OTP обычно используют случайные числа. Это необходимо, потому что иначе было бы легко предсказать последующие пароли на основе знания предыдущих. Конкретные алгоритмы OTP сильно различаются в деталях. Различные подходы к созданию одноразовых паролей перечислены ниже.

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

    • Основанные на временной синхронизации между сервером и клиентом, обеспечивающей пароль (пароли действительны в течение короткого периода времени)

    • Использующие математический алгоритм, где новый пароль основан на запросе (например. случайное число, выбираемое сервером или части входящего сообщения) и/или счётчике.

    Также существуют различные способы, чтобы сообщить пользователю следующий пароль. Некоторые системы используют специальные электронные токены, которые пользователь носит с собой, создающие одноразовые пароли и выводящие затем их на маленьком экране. Другие системы состоят из программ, которые пользователь запускает с мобильного телефона. Ещё другие системы генерируют одноразовые пароли на сервере и затем отправляют их пользователю используя посторонние каналы, такие как SMS сообщения. Наконец, в некоторых системах одноразовые пароли напечатаны на листе бумаги или на скретч-карте, которые пользователю необходимо иметь с собой.

    Реализация Математические алгоритмы

    Основная статья: Хэш цепочка

    Один подход, разработанный Лесли Лэмпортом, использует одностороннюю функцию (назовём её f). Система одноразовых паролей начинает работать от начального числа s, затем генерирует пароли

    f(s), f(f(s)), f(f(f(s))), …

    столько раз, сколько необходимо. Если ищется бесконечная серия паролей, новое начальное число может быть выбрано после того, как ряд для s оказывается исчерпанным. Каждый пароль распределяется в обратном порядке, начиная с f(f(…f(s))…), заканчивая f(s).

    Если злоумышленнику удаётся получить одноразовый пароль, он может получить доступ только на один период времени или одно соединение, но это становится бесполезным, когда этот период закончится. Чтобы получить следующий пароль в цепочке из предыдущих, необходимо найти способ вычисления обратной функции f−1. Так как f была выбрано односторонней, то сделать это невозможно. Если f — криптографическая хеш-функция, которая обычно используется, то, насколько известно, это будет вычислительно неосуществимая задача.

    Синхронизированные по времени

    RSA SecurID токены

    Синхронизированные по времени одноразовые пароли обычно связаны с физическими аппаратными токенами (например, каждому пользователю выдаётся персональный токен, который генерирует одноразовый пароль). Внутри токена вcтроены точные часы, которые синхронизированы с часами на сервере. В этих OTP системах, время является важной частью алгоритма создания пароля так как генерация нового пароля основывается на текущем времени, а не на предыдущем пароле или секретном ключе.

    В последнее время, стало возможным брать электронные компоненты, связанные с постоянными токенами-часами, такие как от ActivIdentity, InCard, RSA, SafeNet, Vasco, и VeriSign и встраивать их в форм-фактор кредитной карты. Однако, так как толщина карты (от 0.79 мм до 0.84мм) не позволяет использовать традиционные элементов батареек, необходимо использовать специальные батарейки, основанные на полимерах, время жизни которых гораздо больше, чем у обычных мини-батареек. Кроме того, должны использоваться крайне маломощные полупроводниковые компоненты для экономии энергии во время режима ожидания и/или использования продукта. В производстве тонких устройств OTP лидируют две компании: Identita и NagraID.

    Мобильные телефоны и КПК также могут быть использованы для генерации синхронизированных по времени одноразовых паролей. Этот подход может быть более экономной альтернативой, так как большинство пользователей Интернета уже имеет мобильные телефоны. Кроме того, это может быть более удобно, потому что у пользователя не будет необходимости носить с собой отдельный токен, для каждого безопасного соединения, когда он или она нуждается в доступе.

    Запрос

    Использование одноразовых паролей с запросом требует от пользователя обеспечивать синхронизированные по времени запросы, чтобы была выполнена проверка подлинности. Это может быть сделано путём ввода значения в сам токен. Чтобы избежать появления дубликатов, обычно включается дополнительный счётчик, так что если случится получение двух одинаковых запросов, то это всё равно приведёт к появлению разных одноразовых паролей. Однако, вычисления обычно не включают предыдущий одноразовый пароль, так как это приведёт к синхронизации задач. EMV начинают использовать такие системы (т. н. «Chip Authentication Program») для кредитных карт в Европе.

    Одноразовый пароль через sms

    Распространённая технология, используемая для доставки одноразовых паролей — это SMS. Так как SMS — это повсеместный канал связи, которая имеется во всех телефонах и используется большим количеством клиентов, SMS сообщения имеют наибольший потенциал для всех потребителей, обладающие низкой себестоимостью. Токены, смарт-карты и другие традиционные методы аутентификации гораздо более дороги для реализации и для использования и часто встречают сопротивление со стороны потребителей. Они также гораздо более уязвимы для атак типа «человек посередине», в которых фишеры крадут одноразовые пароли обманом или даже потому что одноразовые пароли отображаются на экране токена. Также токены могут быть потеряны и интеграция одноразовых паролей в мобильные телефоны может быть более безопасным и простым, потому что пользователям не придётся носить с собой дополнительные портативные устройства. В то же время, одноразовые пароли через SMS могут быть менее безопасны, так как сотовые операторы становятся частью цепи доверия. В случае роуминга, надо доверять более чем одному мобильному оператору.

    Одноразовый пароль на мобильном телефоне

    По сравнению с аппаратной реализацией токена, которая требует, чтобы пользователь имел с собой устройство-токен, токен на мобильном телефоне существенно снижает затраты и предлагает беспрецедентный уровень удобства. Это решение так же уменьшает материально-технические требования, так как нет необходимости выдавать отдельное устройство каждому пользователю. Мобильные токены, такие как FiveBarGate или FireID дополнительно поддерживают некоторое число токенов в течение одной установки приложения, позволяя пользователю аутентифицироваться на нескольких ресурсах с одного устройства. Этот вариант также предусматривает специфические приложения для разных моделей телефонов пользователя. Токены в мобильных телефонах также существенно более безопасны, чем OTP по SMS, так как SMS отправляются по сети GSM в текстовом формате с возможностью перехвата.

    Сравнение технологий

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

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

    Одноразовые пароли также уязвимы для «выуживания» (фишинга). В конце 2005 года у пользователей Банка Швеции обманом выманили их одноразовые пароли[1]. Даже синхронизированные по времени пароли уязвимы для фишинга, если взломщик успевает достаточно быстро воспользоваться паролем. Это было замечено в 2006 году по атаке на пользователей Citibank в США[2].

    Хотя одноразовые пароли являются более безопасными, чем обычные пароли, использование систем OTP всё ещё уязвимо для атак типа «человек посередине». Поэтому одноразовые пароли не должны передаваться третьей стороне. Синхронизирован ли одноразовый пароль по времени, в основном никак не влияет на степень уязвимости. Основанные на запросе одноразовые пароли тоже являются уязвимыми, хотя успешная атака требует от злоумышленника чуть более активных действий, чем для других типов OTP.

    Стандартизация

    Запатентовано множество технологий OTP. Это делает стандартизацию в этой области ещё более трудной, так как каждая компания пытается протолкнуть свою собственную технологию. Стандарты, тем не менее, существуют, например, RFC 2289 и RFC 4226 (HOTP).

    Otp в рамках банковского дела

    В некоторых странах одноразовые пароли используются для удалённого использования банков. В некоторых из этих систем банк посылает пользователю пронумерованный список одноразовых паролей, напечатанный на бумаге. Для каждой удалённой транзакции, пользователь должен ввести соответствующий одноразовый пароль из этого списка. В Германии эти пароли обычно называют TAN кодом (от «transaction authentication numbers»). Некоторые банки отправляют TAN-коды пользователю с помощью SMS, и в этом случае они называются mTAN-коды (от «mobile TANs»).

    Связанные технологии

    Чаще всего, одноразовые пароли являются олицетворением двухфакторной аутентификации. Некоторые Технологии единого входа системы используют одноразовые пароли. OTP технология так же используется в токенах безопасности.

    47. Управление секретами. Ключи и пароли, их энтропии. Принцип Kerckhoffs и длина ключа (пароля). Статические и сеансовые ключи. Слабые ключи (пароли) и атака по словарю. Сравнение длин ключей симметричных и асимметричных криптосистем.

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

    В криптографии имеет значение не только длина ключа, но и его качество. Для лучшего понимания этого момента необходимо рассмотреть, что такое «энтропия».

    Большинство ключей генерируются из паролей или парольных фраз. Система, принимающая 10 буквенные пароли в формате ASCII, может быть представлена, как 80 битовая система, но ее энтропия гораздо меньше, чем 80 бит. Как правило, в качестве паролей используются реальные слова (либо слегка измененные слова), которые имеют определенную предсказуемость. В стандартном английском языке каждая буква имеет менее 1.3 бит энтропии; пароли имеют менее 4 битов энтропии в одной букве. Это значит, что 8 буквенный пароль примерно равен 32 битному ключу. А если вам нужен 128 битный ключ, то вы должны использовать парольную фразу размером 98 букв.

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

    Впервые данный принцип сформулировал в XIX веке голландский криптограф Огюст КеркгоффсШеннон сформулировал этот принцип (вероятно, независимо от Керкгоффса) следующим образом: «Враг знает систему». Широко применяется в криптографии.

    Общие сведения

    Сущность принципа заключается в том, что чем меньше секретов содержит система, тем выше её безопасность. Так, если утрата любого из секретов приводит к разрушению системы, то система с меньшим числом секретов будет надёжней. Чем больше секретов содержит система, тем более она ненадёжна и потенциально уязвима. Чем меньше секретов в системе — тем выше её прочность.[1]

    Принцип Керкгоффса направлен на то, чтобы сделать безопасность алгоритмов и протоколов независимой от их секретности; открытость не должна влиять на безопасность.

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

    Шесть требований Керкгоффса

    Требования к криптосистеме впервые изложены в книге Керкгоффса «Военная криптография» (издана в 1883 году). Шесть основных требований к криптосистеме, все из которых до настоящего времени определяют проектирование криптографически стойких систем, в переводе с французского звучат так:

    1. Система должна быть физически, если не математически, невскрываемой;

    2. Нужно, чтобы не требовалось сохранение системы в тайне; попадание системы в руки врага не должно причинять неудобств;

    3. Хранение и передача ключа должны быть осуществимы без помощи бумажных записей; корреспонденты должны располагать возможностью менять ключ по своему усмотрению;

    4. Система должна быть пригодной для сообщения через телеграф;

    5. Система должна быть легко переносимой, работа с ней не должна требовать участия нескольких лиц одновременно;

    6. Наконец, от системы требуется, учитывая возможные обстоятельства её применения, чтобы она была проста в использовании, не требовала значительного умственного напряжения или соблюдения большого количества правил.

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

    Перебор по словарю (англ. dictionary attack) — атака на систему защиты, использующая метод полного перебора (англ. brute-force) предполагаемых паролей, используемых для аутентификации, осуществляемого путем последовательного пересмотра всех слов (паролей в чистом виде или их зашифрованных образов) определенного вида и длины из словаря с целью последующего взлома системы и получения доступа к секретной информации.[1] Данное мероприятие, в большинстве случаев, имеет негативный характер, противоречащий моральным и законодательным нормам.

    Перебор по словарю и сложность пароля

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

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

    Различают два вида атак:

    Online: атаки, в которых единственным способом для атакующего проверить, является ли данный пароль корректным, есть взаимодействие с сервером.

    Offline: атаки, когда атакующий имеет возможность проверить все допустимые пароли, не нуждаясь при этом в обратной связи с сервером.

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

    Основные противодействия атакам по словарю Противодействия online атакам по словарю

    Существует несколько способов противостоять online атакам по словарю:

    1. задержка ответа (англ. delayed response): для предоставленной пары login/password сервер использует небольшую, специально сгенерированную задержку ответа Yes/no (например, не чаще одного ответа в секунду);

    2. блокировка учетной записи (англ. account locking): учетная запись блокируется после нескольких (заранее установленное число) неудачных попыток ввода login/password (для примера, учетная запись блокируется на час после пяти неправильных попыток ввода пароля).

    Замечания

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

    2. данные реализации противодействия online атакам по словарю допускают долговременные блокировки пользовательских аккаунтов при правильном подборе периода атаки.

    Недостатки

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

    • Хотя сообщения надежно шифруются, но «засвечиваются» получатель и отправитель самим фактом пересылки шифрованного сообщения.[8]

    • Несимметричные алгоритмы используют более длинные ключи, чем симметричные. Ниже приведена таблица, сопоставляющая длину ключа симметричного алгоритма с длиной ключа несимметричного алгоритма (RSA) с аналогичной криптостойкостью:

    Длина симметричного ключа, бит

    Длина несимметричного ключа, бит

    56

    384

    64

    512

    80

    768

    112

    1792

    128

    2304

    • Процесс шифрования-расшифрования с использованием пары ключей проходит на два-три порядка медленнее, чем шифрование-расшифрование того же текста симметричным алгоритмом.

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

      1. Для ЭЦП сообщение предварительно подвергается хешированию, а с помощью асимметричного ключа подписывается лишь относительно небольшой результат хеш-функции.

      2. Для шифрования они используются в форме гибридных криптосистем, где большие объёмы данных шифруются симметричным шифром на сеансовом ключе, а с помощью асимметричного шифра передаётся только сам сеансовый ключ.

    48. Алгоритм Diffie–Hellman и задача нахождения дискретного логарифма. Пример выработки общего ключа. Атака типа «человек посередине» на алгоритм Diffie– Hellman.

    Алгори́тм Ди́ффи — Хе́ллмана (англ. Diffie-HellmanDH) — алгоритм, позволяющий двум сторонам получить общий секретный ключ, используя незащищенный от прослушивания, но защищённый от подмены канал связи. Этот ключ может быть использован для шифрования дальнейшего обмена с помощью алгоритма симметричного шифрования.

    Алгоритм был впервые опубликован Уитфилдом Диффи (Whitfield Diffie) и Мартином Хеллманом в 1976 году.

    В 2002 году Хеллман предложил называть данный алгоритм «Диффи — Хеллмана — Меркля», признавая вклад Меркля в изобретение криптографии с открытым ключом.

    Предположим, что обоим абонентам известны некоторые два числа g и p (например, они могут быть «зашиты» в программное обеспечение), которые не являются секретными и могут быть известны также другим заинтересованным лицам. Для того, чтобы создать неизвестный более никому секретный ключ, оба абонента генерируют большие случайные числа: первый абонент — число a, второй абонент — число b. Затем первый абонент вычисляет значение   и пересылает его второму, а второй вычисляет   и передаёт первому. Предполагается, что злоумышленник может получить оба этих значения, но не модифицировать их (то есть у него нет возможности вмешаться в процесс передачи). На втором этапе, первый абонент на основе имеющегося у него   и полученного по сети   вычисляет значение  , а второй абонент на основе имеющегося у него   и полученного по сети   вычисляет значение  . Как нетрудно видеть, у обоих абонентов получилось одно и то же число:  . Его они и могут использовать в качестве секретного ключа, поскольку здесь злоумышленник встретится с практически неразрешимой (за разумное время) проблемой вычисления   по перехваченным   и  , если числа   выбраны достаточно большими.

    Алгоритм Диффи — Хеллмана, где K — итоговый общий секретный ключ

    При работе алгоритма, каждая сторона:

    1. генерирует случайное натуральное число a — закрытый ключ

    2. совместно с удалённой стороной устанавливает открытые параметры p и g (обычно значения p и g генерируются на одной стороне и передаются другой), где

    p является случайным простым числом

    g является первообразным корнем по модулю p

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

    A = ga mod p

    1. обменивается открытыми ключами с удалённой стороной

    2. вычисляет общий секретный ключ K, используя открытый ключ удаленной стороны B и свой закрытый ключ a

    K = Ba mod p

    К получается равным с обеих сторон, потому что:

    Ba mod p = (gb mod p)a mod p = gab mod p = (ga mod p)b mod p = Ab mod p

    В практических реализациях, для a и b используются числа порядка 10100 и p порядка 10300. Число g не обязано быть большим и обычно имеет значение в пределах первого десятка.

    [Править]Пример

    Ева - криптоаналитик. Она читает пересылку Боба и Алисы, но не изменяет содержимого их сообщений.

    • s = секретный ключ. s = 2

    • g = открытое простое число. g = 5

    • p = открытое простое число. p = 23

    • a = секретный ключ Алисы. a = 6

    • A = открытый ключ Алисы. A = ga mod p = 8

    • b = секретный ключ Боба. b = 15

    • B = открытый ключ Боба. B = gb mod p = 19

    Алиса

    знает

    не знает

    p = 23

    b = ?

    g = 5

    a = 6

    A = 56 mod 23 = 8

    B = 5b mod 23 = 19

    s = 196 mod 23 = 2

    s = 8b mod 23 = 2

    s = 196 mod 23 = 8b mod 23

    s = 2

    Боб

    знает

    не знает

    p = 23

    a = ?

    g = 5

    b = 15

    B = 515 mod 23 = 19

    A = 5a mod 23 = 8

    s = 815 mod 23 = 2

    s = 19a mod 23 = 2

    s = 815 mod 23 = 19a mod 23

    s = 2

    Ева

    знает

    не знает

    p = 23

    a = ?

    g = 5

    b = ?

    s = ?

    A = 5a mod 23 = 8

    B = 5b mod 23 = 19

    s = 19a mod 23

    s = 8b mod 23

    s = 19a mod 23 = 8b mod 23

    [Править]Шифрование с открытым ключом

    Данный алгоритм может также использоваться в качестве алгоритма шифрования с открытым ключом. В этом случае общая схема остаётся аналогичной приведённой выше, но с небольшими отличиями. Алиса не передаёт значения pg и A Бобу напрямую, а публикует их заранее в качестве своего открытого ключа. Боб выполняет свою часть вычислений, после чего шифрует сообщение симметричным алгоритмом, используя K в качестве ключа, и передаёт шифротекст Алисе вместе со значением B. Однако такой подход не получил распространения, в этой области доминирует алгоритм RSA.

    Криптографическая стойкость

    Криптографическая стойкость алгоритма Диффи — Хеллмана (то есть сложность вычисления K=gab mod p по известным pgA=ga mod p и B=gb mod p), основана на предполагаемой сложности проблемы дискретного логарифмирования. Однако хотя умение решать проблему дискретного логарифмирования позволит взломать алгоритм Диффи — Хеллмана, обратное утверждение до сих пор является открытым вопросом (другими словами, эквивалентность этих проблем не доказана).

    Необходимо отметить, что алгоритм Диффи — Хеллмана работает только на линиях связи, надёжно защищённых от модификации. Если бы он был применим на любых открытых каналах, то давно снял бы проблему распространения ключей и, возможно, заменил собой всю асимметричную криптографию. Однако, в тех случаях, когда в канале возможна модификация данных, появляется возможность атаки «человек посередине». Атакующий заменяет сообщения переговоров о ключе на свои собственные и таким образом получает два ключа — свой для каждого из законных участников протокола. Далее он может перешифровывать переписку между участниками, своим ключом для каждого, и таким образом ознакомиться с их сообщениями, оставаясь незамеченным.