Криптографические алгоритмы


Содержание

Криптографические алгоритмы

В зарубежной литературе общепринято определять область защиты информации собирательным термином «криптология» (от греческих корней «скрытно» и «слово»). Как считает патриарх академической криптологии Джеймс Мэсси (Университет ETH, Швейцария), криптология вполне естественным образом делится на два направления: криптографию и криптоанализ. Криптограф изыскивает методы гарантированного засекречивания и/или подтверждения подлинности (аутентичности) сообщения. Криптоаналитик ищет способы вскрыть шифр или так подделать код сигнала, чтобы его принимали за подлинный. Оригинал сообщения, который криптограф пытается засекретить, называется открытым текстом, а плод его труда — шифртекстом, или криптограммой. Криптограф всегда использует секретный ключ для управления процессом шифрования.

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

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

В соответствии с общепринятой сегодня терминологией криптосистемы подразделяются на криптосистемы ограниченного использования и криптосистемы общего использования; симметричные, или с секретным ключом, и асимметричные, или с открытым ключом. Криптографическая система является криптосистемой ограниченного использования, если ее стойкость основывается на сохранении в секрете самого характера алгоритмов шифрования и дешифрования. Простейшим историческим примером такой системы можно считать так называемый шифр Цезаря, который является шифром простой замены каждого символа открытого текста третьим следующим за ним символом алфавита с циклическим переносом, когда это необходимо. Например, слово «cleartext» превращается в «fohduwhaw». Криптографическая система называется криптосистемой общего использования, если ее стойкость основывается не на секретности алгоритмов шифрования и дешифрования, а на секретности некоторого сравнительно короткого значения, которое называется ее ключом. В криптосистеме с открытым ключом отправитель использует общедоступную (известную) информацию (открытый ключ) для того, чтобы послать сообщение получателю. Получатель, в свою очередь, использует секретную информацию для восстановления сообщения. В случае криптографии с секретным ключом отправитель и получатель предварительно договариваются о некоторой лишь им известной информации, которую они будут использовать как для шифрования, так и для расшифровывания. Эта информация (секретный ключ) должна храниться в тайне от потенциальных злоумышленников, перехватывающих сообщения.

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

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

Всякий, кто возьмется за изучение открытой криптографической литературы, будет поражен тем, насколько различаются принципы рассмотрения блочных шифров и поточных шифров. Подавляющее большинство работ по криптоанализу блочных шифров сфокусировано на DES-алгоритме, и почти все предложенные блочные шифры в той или иной степени основаны на конструктивных принципах DES (Data Encryption Standard) — перестановках и перемешивании. Что касается поточных шифров, то здесь не существует алгоритма, который играл бы аналогичную роль. Здесь имеется огромное разнообразие альтернативных конструкций поточных шифров, а криптоанализ имеет тенденцию к разработке алгоритмов в самых общих терминах.

Кроме того, любопытно отметить, что рассматривать поточные шифры принято преимущественно у европейских исследователей. Сравнивая доклады двух основных криптографических конференций, нетрудно увидеть, что на симпозиумах Eurocrypt поточным шифрам посвящается несколько сессий, в то время как на американских встречах Crypto в калифорнийском городе Санта-Барбара такая сессия, как правило, одна. Столь явный дисбаланс, с одной стороны, является побочным продуктом повышенного интереса в США к алгоритму DES, с другой же — следствием значительного влияния на европейскую открытую криптографию Цюрихского политехникума (ETH, Федеральный технологический институт). Этот знаменитый швейцарский вуз, в числе выпускников которого можно назвать Альберта Эйнштейна и Джона фон Неймана, имеет также мощную криптографическую школу, поставляющую кадры всемирно известным фирмам, производящим шифраппаратуру: Crypto AG, Gretag AG, Omnisec AG и др. Эти фирмы проявляют традиционный и естественный интерес к высокопроизводительным системам поточного шифрования, а многие выпускники и сотрудники ETH стояли у истоков создания в начале 1980-х годов Международной ассоциации криптографических исследований (International Association for Cryptologic Research, IACR).

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

Одноразовый блокнот использует длинную шифрующую последовательность, которая состоит из случайно выбираемых бит или наборов бит (символов). Шифрующая последовательность побитно или посимвольно накладывается на открытый текст, имеет ту же самую длину, что и открытое сообщение, и может использоваться только один раз (о чем свидетельствует само название шифрсистемы); ясно, что при таком способе шифрования требуется огромное количество шифрующей гаммы. Открытый текст сообщения m записывают как последовательность бит или символов m = mm1. mn-1, а двоичную или символьную шифрующую последовательность k той же самой длины — как k = kk1. kn-1. Шифртекст c = cc1. cn-1 определяется соотношением ci = mi ki при 0≤i≤n-1, где обозначает операцию «исключающее ИЛИ» (ассемблерная операция XOR) по модулю два или по любому другому модулю в случае символьной гаммы.

В своей исторической работе «Communication theory of secrecy systems» Шеннон доказал то, что до этого многие принимали на веру: одноразовый гамма-блокнот является «невскрываемой» шифрсистемой. Фактически Шеннон представил эту криптосистему как совершенную: даже противник, обладающий безграничным количеством вычислительной мощности, не в силах придумать ничего лучшего, чем предполагать значения бит или символов сообщения, поскольку шифртекст статистически не зависит от открытого текста.

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

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

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

Одна из проблем организации секретной связи в случае поточных шифров — проблема передачи этих ключей между абонентами. В 1976 году Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) заложили основу для преодоления этого препятствия, предложив понятие криптографии с открытым ключом. Сходное понятие самостоятельно открыл Ральф Меркль (Ralf Merkle). Вскоре последовала первая практическая реализация криптографии с открытым ключом, предложенная Рональдом Райвистом (Ronald Rivest), Ади Шамиром (Adi Shamir) и Леонардом Адлеманом (Leonard Adleman) и получившая название RSA (по первым буквам фамилий ее создателей).

Основное наблюдение, которое, собственно, и привело к появлению криптографии с открытым ключом, заключалось в следующем: тот, кто зашифровывает сообщение, не обязан уметь его расшифровывать. В таких системах каждый пользователь Y выбирает свой собственный секретный ключ, на основании которого получает пару алгоритмов. Затем он делает один из них доступным каждому из возможных абонентов, объявляя этот алгоритм своим открытым алгоритмом шифрования, в то время как другой, соответствующий первому и являющийся его личным алгоритмом дешифрования, хранит в строгом секрете. Это позволяет даже совершенно незнакомому пользователю, например абоненту сети по имени Х, применять его общедоступный алгоритм шифрования, чтобы зашифровать предназначенное для Y сообщение; однако лишь сам Y сможет расшифровать его после получения с помощью своего секретного алгоритма дешифрования. Такие системы могут быть стойкими только при условии, что свойства общедоступного алгоритма шифрования делают невозможным «вычисление» или подбор соответствующего ему алгоритма дешифрования.

RSA — очень медленный алгоритм. Для сравнения: программа, реализующая DES, по меньшей мере в 100 раз быстрее RSA, на аппаратном уровне — в 1000-10 000 раз, в зависимости от реализации.

Алгоритм RSA представляет собой следующую последовательность действий:

  1. Берутся два очень больших целых числа P и Q и находятся N=P×Q и M=(P-1)×(Q-1).
  2. Выбирается случайное целое число D, взаимно простое с M, и вычисляется
  • Потом D и N публикуются как открытый ключ, E сохраняется в тайне.
  • Если S — сообщение, длина которого, определяемая по значению выражаемого им целого числа, должна быть в интервале (1,N), то оно превращается в шифровку возведением в степень D по модулю N и отправляется получателю S’=S D MOD N.
  • Получатель сообщения расшифровывает его, возведя в степень E (число E ему уже известно) по модулю N, так как

    S=(S’ E MOD N)=S( DE ) MOD N.

    Шафи Гольдвассер (Shafi Goldwasser) и Сильвио Микэли (Silvio Micali) ввели понятие вероятностного шифрования, которое является очень интересной разновидностью криптографии с открытым ключом. Когда какое-то сообщение шифруется при помощи вероятностного шифрования, то при криптоанализе шифртекста становится одинаково трудно получить о сообщении любую информацию, позволяющую восстановить весь его открытый текст. Кроме того, существует вероятностная схема шифрования, которая является более быстрой, чем предложенная до этого схема шифрования с открытым ключом RSA. Подобные криптографические системы называются вероятностными, поскольку шифрование в них сообщений, имеющих один и тот же исходный текст и шифрующихся с использованием одного и того же ключа, может в разное время привести к совершенно различным шифртекстам.

    Предлагались и разные другие подходы к проблеме распределения ключей. Например, бесключевая криптография Альперна (Alpern) и Шнейдера (Schneider) может эффективно использоваться в сети связи, которая скрывает происхождение (но не содержание) сообщений. В идентификационной криптосистеме Шамира (Shamir) отпадает необходимость в распределении ключей, но требуется наличие некоего центра, которому должна быть доверена генерация секретных ключей.

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

    DES (Data Encryption Standard) — это симметричный алгоритм шифрования, то есть один ключ используется здесь как для зашифровывания, так и для расшифровывания сообщений. Разработан фирмой IBM и в 1977 году утвержден правительством США как официальный стандарт.

    Алгоритм имеет блоки по 64 бит и основан на 16-кратной перестановке данных; для зашифровывания он использует ключ длиной 56 бит. Существует несколько режимов DES, например Electronic Code Book (ECB) и Cipher Block Chaining (CBC).

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

    Один из шагов алгоритма DES заключается в следующем.

    Входной блок данных делится пополам на левую (L’) и правую (R’) части. После этого формируется выходной массив так, что его левая часть L’’ представлена правой частью R’ входного слова, из 32-битового слова R’ с помощью битовых перестановок формируется 48-битовое слово. Полученное 48-битовое слово «XOR’ится» с 48-битовым раундовым ключом. Результирующее 48-битовое слово разбивается на восемь 6-битовых групп, каждая 6-битовая группа посредством соответствующего S-блока заменяется на 4-битовую группу, и из полученных восьми 4-битовых групп составляется 32-битовое слово. Полученное слово «XOR’ится» с L’, в результате получается R’’. Можно убедиться, что все произведенные операции могут быть обращены и расшифровывание осуществляется за число операций, линейно зависящее от размера блока. После нескольких таких перемешиваний можно считать, что каждый бит выходного блока шифровки может зависеть от каждого бита сообщения.

    Поскольку текст, зашифровaнный двойным алгоритмом DES, оказывается нестойким при криптографической атаке, то текст шифруется три раза. Таким образом, длина ключа возрастает до 168 бит (56×3).

    Типы тройного шифрования DES:

    • DES-EEE3: шифруется три раза с тремя различными ключами.
    • DES-EDE3: три DES-операции «шифровка-расшифровка-шифровка» с тремя различными ключами.
    • DES-EEE2 и DES-EDE2: как и предыдущие, за исключением того, что первая и третья операции используют одинаковый ключ.

    ГОСТ 28147-89 (русская альтернатива американскому DES) — это стандарт, принятый в 1989 году в Советском Союзе и установивший алгоритм шифрования данных, составляющих государственную тайну. Алгоритм был разработан в 70-е годы в 8-м Главном управлении КГБ СССР; тогда он имел гриф «Сов. секретно». Затем гриф был понижен до «Секретно», а когда в 1989 году алгоритм был проведен через Госстандарт и стал официальным государственным стандартом, гриф с него был снят, однако алгоритм имел гриф «для служебного пользования». В начале 90-х он стал полностью открытым.

    Данный алгоритм предусматривает три режима шифрования (простая замена, гаммирование, гаммирование с обратной связью) и один режим выработки имитовставки. Первый из режимов шифрования предназначен для шифрования ключевой информации и не может использоваться для шифрования других данных; для этого предусмотрены два других режима шифрования. Режим выработки ИМИТОВСТАВКИ (криптографической контрольной комбинации) предназначен для ИМИТОЗАЩИТЫ шифруемых данных, то есть для их защиты от случайных или преднамеренных несанкционированных изменений.

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

    В силу намного большей длины ключа ГОСТ гораздо устойчивей, чем DES, к вскрытию путем полного перебора по множеству возможных значений ключа.

    Функция шифрования ГОСТ гораздо проще функции шифрования DES, она не содержит операций битовых перестановок, которыми изобилует DES и которые крайне неэффективно реализуются на современных универсальных процессорах (хотя их очень просто реализовать аппаратно — путем разводки проводников в кристалле или на плате). Таким образом, при вдвое большем количестве раундов (32 против 16) программная реализация ГОСТ на процессорах Intel x86 в среднем более чем в два раза превосходит по быстродействию реализацию DES.

    Существенное повышение производительности микропроцессоров в 80-е годы обусловило в криптографии усиление интереса к программным методам реализации шифралгоритмов — как к возможной альтернативе аппаратным схемам на регистрах сдвига. Одним из самых первых программных криптоалгоритмов, получивших широкое распространение, стал алгоритм RC4.

    Алгоритм RC4 — это поточный шифр с переменной длиной ключа, разработанный в 1987 году Рональдом Райвистом для компании RSA Data Security. Как и его «компаньон», блочный шифр RC2, RC4 представляет собой шифр с переменной длиной ключа, пригодный для быстрого магистрального шифрования. Он очень компактен в терминах размера кода и особенно удобен для процессоров с побайтно-ориентированной обработкой. RC4 может шифровать со скоростью около 10 Мбайт/с на процессоре с тактовой частотой 330 Мгц и, подобно RC2, имеет особый статус, значительно упрощающий получение разрешения на экспорт (схема позволяет безболезненно редуцировать длину ключа). В течение семи лет этот алгоритм был фирменным секретом, и подробности о его конструкции предоставлялись только после подписания договора о неразглашении.

    Но в сентябре 1994 года кто-то анонимно распространил исходный код алгоритма через Internet. Пользователи Сети, которые имели легальные шифрсредства фирмы RSA, реализующие RC4, подтвердили совместимость кода с криптопрограммой. Обеспокоенная компания попыталась затолкать джинна обратно в бутылку, провозгласив, что, несмотря на нелегальную публикацию, алгоритм продолжает оставаться коммерческой тайной, но было уже слишком поздно. Через Internet описание алгоритма широко распространилось по миру; его обсуждают, анализируют и включают в учебные криптографические курсы.

    В настоящее время алгоритм RC4 реализован в десятках коммерческих криптопродуктов, включая Lotus Notes, Apple Computer’s AOCE, Oracle Secure SQL; он также является частью спецификации стандарта сотовой связи CDPD.

    В RC4 криптогенератор функционирует независимо от открытого текста. Генератор имеет подстановочную таблицу (S-бокс 8×8): S0, S1. S255. Входами генератора являются замененные по подстановке числа от 0 до 255, и эта подстановка является функцией от ключа изменяемой длины. Генератор имеет два счетчика i и j, инициализируемых нулевым значением.

    Для генерации случайного байта гаммы выполняются следующие операции:

    t = (Si+Sj) mod 256

    Байт K складывается операцией XOR с открытым текстом для выработки шифртекста либо для получения байта открытого текста. Шифрование происходит весьма быстро — примерно в 10 раз быстрее DES-алгоритма.

    Инициализация S-бокса столь же проста. На первом шаге он заполняется линейно:

    S0 = 0, S1 = 1. S255 = 255. Затем еще один 256-байтный массив полностью заполняется ключом, для чего ключ повторяется соответствующее число раз в зависимости от длины: K0, K1. K255. Индекс j выставляется равным нулю. Затем:

    j = (j+Si+Ki) mod 256

    Схема показывает, что RC4 может принимать примерно 21700 (256! × 2562) возможных состояний, а это очень много. S-бокс медленно изменяется в процессе работы: параметр i обеспечивает изменение каждого элемента, а j отвечает за то, чтобы эти элементы изменялись случайным образом.

    RC4 представляет собой семейство алгоритмов, задаваемых параметром n, который является положительным целым с рекомендованным типичным значением n = 8. Внутреннее состояние генератора RC4 в момент времени t состоит из таблицы содержащей 2n n-битных слов, и из двух n-битных слов-указателей it и jt. Таким образом, размер внутренней памяти составляет M = n2n + 2n бит. Пусть выходное n-битное слово генератора в момент t обозначается как Zt. Пусть начальные значения i0 = j0 = 0. Тогда функция следующего состояния и функция выхода RC4 для каждого t Ј 1 задаются следующими соотношениями:

    St (it) = St-1(jt), St (jt) = St-1(it)

    Zt = St (St (it) + St (jt)),

    где все сложения выполняются по модулю 2n. Подразумевается, что все слова, кроме подвергаемых перестановке, остаются теми же самыми. Выходная последовательность n-битных слов обозначается как

    Начальная таблица S0 задается в терминах ключевой последовательности

    с использованием той же самой функции следующего состояния, начиная от таблицы единичной подстановки. Более строго — пусть j0 = 0 и для каждого 1 Ј t Ј 2n вычисляется jt = (jt-1+S t-1 (t-1) + K t-1) mod 2n, а затем переставляются местами S t-1(t-1) и S t-1(jt). На последнем шаге порождается таблица, представляющая S0. Ключевая последовательность K составляется из секретного ключа (возможно, повторяющегося) и рандомизирующего ключа, передаваемого в открытом виде в целях ресинхронизации.

    Компания RSA Data Security объявила, что шифр обладает иммунитетом к методам линейного и дифференциального криптоанализа и до сих пор у него не обнаружены короткие циклы. Обычно цитируется заключение закрытой работы криптографа RSA Labs Мэтта Робшоу: «Не имеется известных слабых ключей, и, хотя нет доказательства для нижней границы периодов последовательностей RC4, проведенный теоретический анализ показывает, что период в подавляющем большинстве случаев превышает 10100. Тщательный и всеобъемлющий анализ стойкости RC4 не выявил никаких оснований подвергать сомнению стойкость, обеспечиваемую генератором RC4».

    Существует еще много блочных симметричных алгоритмов, таких как IDEA, AES, RC2, RC5, RC6, SkipJack, Blowfish, MISTY1 и др., а также поточных симметричных алгоритмов, таких как SEAL, WAKE, PIKE, GOAL, ORYX, ISAAC, Chameleon и др. Кроме RSA, существуют асимметричные алгоритмы шифрования DH, DSA, а также большой класс алгоритмов, использующих хэш-функцию: MD2, MD5, SHA, SHA-1, RIPEMD, MDC2, которые невозможно рассмотреть в рамках этой статьи из-за ограниченного объема. Все они могут быть выполнены как в программном, так и в аппаратном варианте.

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

    SSL (Secure Sockets Layer) — секретный уровень сокетов. Назначение протокола SSL в том, чтобы обеспечить секретность и надежность связи между двумя программными приложениями. Протокол состоит из двух уровней. На низком уровне многоуровневого транспортного протокола (например, TCP) SSL является протоколом записи. SSL используется для формирования пакета (инкапсуляции) различных протоколов более высокого уровня. Для каждого инкапсулированного протокола SSL позволяет серверу и клиенту подтверждать подлинность друг друга, выполнять алгоритмы шифрования и обмен криптографическими ключами прежде, чем протокол прикладной программы передает или получает первые данные. Преимущество SSL состоит в том, что он является независимым протоколом прикладной программы. Более высокий протокол уровня может лежать на уровень выше SSL.

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

    Симметричная криптография используется для шифрования данных (например, DES, RC4, и т.д.).

    Цифровая подпись обеспечивается при помощи асимметричного шифрования с открытым ключом (например, RSA, DSS и т.п.).

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

    В сочетании с протоколом HTTP и аутентификацией сервера протокол SSL обеспечивает необходимые функции шифрования и далее поддерживает установленное соединение, перепроверяя подлинность Web-сервера и т.п. Важно понять, что SSL только защищает связь «в процессе передачи данных», а не заменяет других защитных механизмов. Также нужно иметь в виду, что протокол инкапсулирует в себя шифралгоритмы, рассмотренные выше.

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

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

    Алгоритмы шифрования данных. Симметричные алгоритмы шифрования. Алгоритм шифрования RSA. Алгоритм шифрования DES. Выбор алгоритма шифрования

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

    Что собой представляет система шифрования данных?

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

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

    Зачем это нужно?

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

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

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

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

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

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

    Современный мир: виды алгоритмов шифрования

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

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

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

    Симметричные и асимметричные алгоритмы шифрования: в чем разница

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

    Симметричный алгоритм шифрования DES, разработанный еще в 1977 году, подразумевает наличие единого ключа, который, предположительно, известен двум заинтересованным сторонам. Зная такой ключ, нетрудно применить его на практике, чтобы прочитать тот же бессмысленный набор символов, приведя его, так сказать, в читабельный вид.

    А что представляют собой асимметричные алгоритмы шифрования? Здесь применяются два ключа, то есть для кодирования исходной информации использует один, для расшифровки содержимого – другой, причем совершенно необязательно, чтобы они совпадали или одновременно находились у кодирующей и декодирующей стороны. Для каждой из них достаточно одного. Таким образом, в очень высокой степени исключается попадание обоих ключей в третьи руки. Однако, исходя из современной ситуации, для многих злоумышленников кражи такого типа особо проблемой и не являются. Другое дело – поиск именно того ключа (грубо говоря, пароля), который подойдет для расшифровки данных. А тут вариантов может быть столько, что даже самый современный компьютер будет обрабатывать их в течение нескольких десятков лет. Как было заявлено, ни одна из имеющихся в мире компьютерных систем взломать доступ к нему и получить то, что называется «прослушкой», не может и не сможет в течение ближайших десятилетий.

    Наиболее известные и часто применяемые алгоритмы шифрования

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

    В большинстве стран стандартом де-факто является криптографическая система AES на основе 128-битного ключа. Однако параллельно с ней иногда используется и алгоритм шифрования RSA, который хоть и относится к шифрованию с использованием открытого (публичного) ключа, тем не менее является одним из самых надежных. Это, кстати, доказано всеми ведущими специалистами, поскольку сама система определяется не только степенью шифрования данных, но и сохранением целостности информации. Что касается ранних разработок, к коим относится алгоритм шифрования DES, то он безнадежно устарел, а попытки его замены начали проводиться еще в 1997 году. Вот тогда-то на его основе и возник новый расширенный (Advanced) стандарт шифрования AES (сначала с ключом 128 бит, потом – с ключом 256 бит).

    Шифрование RSA

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

    Для шифрования берутся два достаточно больших числа X и Y, после чего вычисляется их произведение Z, называемое модулем. Далее выбирается некое постороннее число A, удовлетворяющее условию: 1 10 мая, 2020

    Основные алгоритмы шифрования

    Основные понятия и определения

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

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

    Криптография занимается поиском и исследованием математических методов преобразования информации. Сфера интересов криптоанализа – исследование возможности расшифрования информации без знания ключей.

    Современная криптография включает в себя 4 основных раздела:

    1. Симметричные криптосистемы.

    2. Криптосистемы с открытым ключом.

    3. Системы электронной подписи.

    4. Управление ключами.

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

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

    Алфавит – конечное множество используемых для кодирования информации знаков. Примеры:

    ü алфавит Z33 – содержит 32 буквы русского алфавита и пробел;

    ü алфавит Z256 – символы, входящие в стандартные коды ASCII и КОИ-8;

    ü бинарный алфавит Z2 – два символа (0 и 1);

    ü восьмеричный или шестнадцатеричный алфавиты.

    Текст – упорядоченный набор из элементов алфавита.

    Шифрование – преобразовательный процесс замены исходного (открытого) текста на шифрованный текст.

    Дешифрование (обратный шифрованию) – преобразовательный процесс замены на основе ключа шифрованного текста на исходный текст.

    Ключ – информация, необходимая для беспрепятственного шифрования и дешифрования текстов.

    Криптографическая система представляет собой семейство Т [Т1, Т2, …, Тк] преобразований открытого текста. Члены этого семейства индексируются или обозначаются символом к; параметр к является ключом. Пространство ключей К – это набор возможных значений ключа. Обычно ключ представляет собой последовательный ряд знаков алфавита.

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

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

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

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

    количество всех возможных ключей;

    среднее время, необходимое для криптоанализа.

    Требования к криптосистемам

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

    Общепринятые требования к криптографическим системам:

    · зашифрованное сообщение должно поддаваться чтению только при наличии ключа;

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

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

    · знание алгоритма шифрования не должно влиять на надежность защиты;

    · незначительное изменение ключа должно приводить к существенному изменению вида зашифрованного сообщения;

    · структурные элементы алгоритма шифрования должны быть неизменными;

    · дополнительные биты, вводимые в сообщение в процессе шифрования, должны быть полностью и надежно скрыты в шифрованном тексте;

    · длина шифрованного текста должна быть равной длине исходного текста;

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

    · любой ключ из множества возможных должен обеспечивать надежную защиту информации;

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

    Основные алгоритмы шифрования

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

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

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

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

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

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

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

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

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

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

    Криптографические системы с открытым ключом используют так называемые необратимые или односторонние функции, которые обладают свойством: при заданном значении х относительно просто вычислить значение f(x) , однако, если yM = j(x) , то нет простого пути вычисления значения х. Множество классов необратимых функций и порождает все разнообразие систем с открытым ключом.

    Процесс передачи зашифрованной информации в асимметричной криптосистеме осуществляется следующим образом.

    · абонент В генерирует пару ключей: секретный ключ kв и открытый ключ Кв;

    · открытый ключ Кв посылается абоненту А и остальным абонентам (или делается доступным, например на разделяемом ресурсе).

    Использование (обмен информацией между А и В):

    · абонент А зашифровывает сообщение с помощью открытого ключа Кв абонента В и отправляет шифротекст абоненту В;

    · абонент В расшифровывает сообщение с помощью своего секретного ключа kв; никто другой не может расшифровать данное сообщение, т.к. не имеет секретного ключа абонента В.

    Защита информации в асимметричной криптосистеме основана на секретности ключа kв получателя сообщения.

    Преимущества асимметричных криптографических систем перед симметричными криптосистемами:

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

    ü исчезает квадратичная зависимость числа ключей от числа пользователей; в асимметричной криптосистеме число используемых ключей связано с числом абонентов линейной зависимостью (в системе из N пользователей используется 2N ключей), а не квадратичной, как в симметричных системах;

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

    Недостатки асимметричных криптосистем:

    ü на настоящий момент нет математического доказательства необратимости используемых в асимметричных алгортмах функций;

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

    ü необходимость защиты открытых ключей от подмены.

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

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

    Многие качественные криптографические алгоритмы доступны широко. Наиболее известными симметричными алгоритмами являются DES и IDEA; лучший асимметричный алгоритм – RSA. В России за стандарт шифрования принят ГОСТ 28147-89.

    В таблице 1 приведена классификации криптографического закрытия информации.

    Виды преобразования Способы преобразований Разновидности способа Способ реализации
    Шифрование Замена (подстановка) Простая (одноалфавитная) Прогр.
    Многоалфавитная одноконтурная обыкновенная Прогр.
    Многоалфавитная одноконтурная монофоническая Прогр.
    Многоалфавитная многоконтурная Прогр.
    Перестановка Простая Прогр.
    Усложненная по таблице Прогр.
    Усложненная по маршрутам Прогр.
    Аналитическое преобразование По правилам алгебры матриц Прогр.
    По особым зависимостям Прогр.
    Гаммирование С конечной короткой гаммой Аппар.-прогр.
    С конечной длинной гаммой Аппар.-прогр.
    С бесконечной гаммой Аппар.-прогр.
    Комбинированные Замена+перестановка Аппар.-прогр.
    Замена+гаммирование Аппар.-прогр.
    Перестановка+гаммирование Аппар.-прогр.
    Гаммирование+гаммирование Аппар.-прогр.
    Кодирование Смысловое По специальным таблицам (словарям) Прогр.
    Символьное По кодовому алфавиту Прогр.
    Другие виды Рассечение-разнесение Смысловое Аппар.-прогр.
    Механическое Прогр.
    Сжатие-расширение

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

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

    Разновидности способа замена (подстановка):

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

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

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

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

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

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

    Шифрование простой перестановкой осуществляется следующим образом:

    · выбирается ключевое слово с неповторяющимися символами;

    · шифруемый текст записывается последовательными строками под символами ключевого слова;

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

    открытый текст: БУДЬТЕ ОСТОРОЖНЫ

    ключ: 5 8 1 3 7 4 6 2

    5 8 1 3 7 4 6 2

    Б У Д Ь Т Е q О (где q – пробел)

    С Т О Р О Ж Н Ы

    Группируем по 2 символа и получаем зашифрованный текст:

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

    Усложненная перестановка по таблицам заключается в том, что для записи символов шифруемого текста используется специальная таблица, в которую введены некоторые усложняющие элементы. Таблица представляет собой матрицу, размеры которой могут быть выбраны произвольно. В нее, как в случае простой перестановки, записываются знаки шифруемого текста. Усложнение заключается в том, что определенное число клеток таблицы не используются. Количество и расположение неиспользуемых элементов является дополнительным ключом шифрования. Шифруемый текст блоками по (m x nS) элементов записывается в таблицу (m x n – размеры таблицы, S – количество неиспользуемых элементов). Далее процедура шифрования аналогична простой перестановке.

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

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

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

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

    tc = (tp + tg) mod K, где tc, tp,tgсимволы соответственно зашифрованного текста, исходного текста и гаммы.

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

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

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

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

    Типичным примером комбинированного шифра является национальный стандарт США криптографического закрытия данных (DES).

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

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

    При правильном использовании коды намного сложнее раскрыть, чем другие классические системы. Это объясняется тремя причинами. Во-первых, большая длина используемого кода (при шифровании – несколько сотен бит; кодовая книга – сотни тысяч – миллион бит). Во-вторых, коды удаляют избыточность – работа криптоаналитика осложняется. В-третьих, коды работают с относительно большими блоками открытого текста (словами и фразами) и, следовательно, скрывают локальную информацию, которая, в противном случае, могла бы дать ценные «зацепки» для криптоаналитика.

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

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

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

    Хеш-функции

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

    Изначально функции хеширования использовались как функции создания уникального образа информационных последовательностей произвольной длины, с целью идентификации и определения их подлинности. Сам образ должен быть небольшим блоком фиксированной длины, как правило, 30, 60, 64, 128, 256, или 512 бит. Поэтому операции поиска сортировки и другие с большими массивами или базами данных существенно упрощаются, т.е. занимают гораздо меньшее время. Для обеспечения требуемой вероятности ошибки необходимо обеспечивать ряд требований к функции хеширования:

    · хеш-функция должна быть чувствительна к всевозможным изменениям в тексте M, таким как вставки, выбросы, перестановки;

    · хеш-функция должна обладать свойством необратимости, то есть задача подбора документа M’, который обладал бы требуемым значением хеш-функции, должна быть вычислительно неразрешима;

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

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

    Большинство хеш-функций строится на основе однонаправленной функции f(•), которая образует выходное значение длиной n при задании двух входных значений длиной n. Этими входами являются блок исходного текста Mi и хеш-значение Hi–1 предыдущего блока текста (рис.1):

    Hi = f (Mi, Hi–1).

    Хеш-значение, вычисляемое при вводе последнего блока текста, становится хеш-значением всего сообщения M.

    Рис.1. Схема однонаправленной хэш-функции

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

    | следующая лекция ==>
    Система обнаружения вторжений | Философия и мировоззрение

    Дата добавления: 2015-11-18 ; просмотров: 35333 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

    37. Криптографические методы защиты информации.

    koralexand.ru > Личное: Информатика > 37. Криптографические методы защиты информации.

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

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

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

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

    Требования к криптосистемам

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

    Симметричные криптосистемы

    Все многообразие существующих криптографических методов в симметричных криптосистемах можно свести к следующим 4 классам преобразований:

    Как бы ни были сложны и надежны криптографические системы — их слабое мест при практической реализации — проблема распределения ключей. Для того, чтобы был возможен обмен конфиденциальной информацией между двумя субъектами ИС, ключ должен быть сгенерирован одним из них, а затем каким-то образом опять же в конфиденциальном порядке передан другому. Т.е. в общем случае для передачи ключа опять же требуется использование какой-то криптосистемы. Для решения этой проблемы на основе результатов, полученных классической и современной алгеброй, были предложены системы с открытым ключом. Суть их состоит в том, что каждым адресатом ИС генерируются два ключа, связанные между собой по определенному правилу. Один ключ объявляется открытым, а другой закрытым. Открытый ключ публикуется и доступен любому, кто желает послать сообщение адресату. Секретный ключ сохраняется в тайне. Исходный текст шифруется открытым ключом адресата и передается ему. Зашифрованный текст в принципе не может быть расшифрован тем же открытым ключом. Дешифрование сообщения возможно только с использованием закрытого ключа, который известен только самому адресату. Криптографические системы с открытым ключом используют так называемые необратимые или односторонние функции, которые обладают следующим свойством: при заданном значении x относительно просто вычислить значение f(x), однако если y=f(x), то нет простого пути для вычисления значения x. Множество классов необратимых функций и порождает все разнообразие систем с открытым ключом. Однако не всякая необратимая функция годится для использования в реальных ИС. В самом определении необратимости присутствует неопределенность. Под необратимостью понимается не теоретическая необратимость, а практическая невозможность вычислить обратное значение используя современные вычислительные средства за обозримый интервал времени. Поэтому чтобы гарантировать надежную защиту информации, к системам с открытым ключом (СОК) предъявляются два важных и очевидных требования:

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

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

    • Разложение больших чисел на простые множители;
    • Вычисление логарифма в конечном поле;
    • Вычисление корней алгебраических уравнений.

    Здесь же следует отметить, что алгоритмы криптосистемы с открытым ключом (СОК) можно использовать в следующих назначениях:

    1. Как самостоятельные средства защиты передаваемых и хранимых данных.
    2. Как средства для распределения ключей.

    Алгоритмы СОК более трудоемки, чем традиционные криптосистемы. Поэтому часто на практике рационально с помощью СОК распределять ключи, объем которых как информации незначителен. А потом с помощью обычных алгоритмов осуществлять обмен большими информационными потоками. Один из наиболее распространенных — система с открытым ключом — RSA. Криптосистема RSA, разработанная в 1977 году и получила название в честь ее создателей: Рона Ривеста, Ади Шамира и Леонарда Эйдельмана. Они воспользовались тем фактом, что нахождение больших простых чисел в вычислительном отношении осуществляется легко, но разложение на множители произведения двух таких чисел практически невыполнимо. Доказано (теорема Рабина), что раскрытие шифра RSA эквивалентно такому разложению. Поэтому для любой длины ключа можно дать нижнюю оценку числа операций для раскрытия шифра, а с учетом производительности современных компьютеров оценить и необходимое на это время. Возможность гарантированно оценить защищенность алгоритма RSA стала одной из причин популярности этой СОК на фоне десятков других схем. Поэтому алгоритм RSA используется в банковских компьютерных сетях, особенно для работы с удаленными клиентами (обслуживание кредитных карточек).

    Электронная подпись

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

    Управление ключами

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

    • генерацию ключей;
    • накопление ключей;
    • распределение ключей.

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

    Генерация ключей

    В самом начале разговора о криптографических методах было сказано, что не стоит использовать неслучайные ключи с целью легкости их запоминания. В серьезных ИС используются специальные аппаратные и программные методы генерации случайных ключей. Как правило используют датчики ПСЧ. Однако степень случайности их генерации должна быть достаточно высоким. Идеальным генераторами являются устройства на основе “натуральных” случайных процессов. Например случайным математическим объектом являются десятичные знаки иррациональных чисел, которые вычисляются с помощью стандартных математических методов.
    5.3.5.2. Накопление ключей.

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

    Распределение ключей

    Распределение ключей — самый ответственный процесс в управлении ключами. К нему предъявляются два требования:

    • Оперативность и точность распределения;
    • Скрытность распределяемых ключей.

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

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

    Криптография. Основные методы и проблемы. Современные тенденции криптографии

    Рубрика: 1. Информатика и кибернетика

    Дата публикации: 23.09.2015

    Статья просмотрена: 8097 раз

    Библиографическое описание:

    Дошина А. Д., Михайлова А. Е., Карлова В. В. Криптография. Основные методы и проблемы. Современные тенденции криптографии [Текст] // Современные тенденции технических наук: материалы IV Междунар. науч. конф. (г. Казань, октябрь 2015 г.). — Казань: Бук, 2015. — С. 10-13. — URL https://moluch.ru/conf/tech/archive/163/8782/ (дата обращения: 12.11.2020).

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

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

    Чтобы понять, как развивалась наука криптография, обратимся к ее истории. Криптография (с греческого — «тайнопись») — наука о защите информации с использованием математических методов. Первый труд о криптографии был написан еще до Рождества Христова. Первые уже надежные системы защиты информации были разработаны в Китае. Чаще всего шифрование информации использовалось в военных делах.

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

    Во время Первой мировой войны криптография стала признанным боевым инструментом. Вторая мировая война послужила своеобразным катализатором развития компьютерных систем — через криптографию. Использованные шифровальные машины (немецкая «Энигма» (Рис.1), английская «Бомба Тьюринга» (Рис.2)) ясно показали жизненную важность информационного контроля. [1, с. 2]

    Рис.1 Шифровальная машина Третьего рейха «Энигма»

    Рис.2 Шифровальная машина «Бомба Тьюринга»

    В 20 в. сформировался современный подход к криптографии. Эта наука была разделена на две части: криптосинтез и криптоанализ. Криптосинтез обеспечивал защиту информации, а криптоанализ ищет пути взлома системы.

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

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

    Рис.3 Классификация криптографических методов

    Следует также отметить и остальные криптографические методы, такие как:

    1. Электронная подпись, где алгоритм использует два вида ключей: секретный и открытый. Используется для подтверждения целостности данных и авторства.

    2. Аутентификация. Данный метод позволяет определить действительно ли пользователь является тем, за кого себя выдает.

    3. Методы криптографического контрольного суммирования:

    — ключевое и бесключевое хеширование;

    — использование кодов аутентификации сообщений.

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

    4. Генераторы случайных и псевдослучайных используются в криптографии, в частности:

    — для генерации секретных ключей;

    — в большинстве алгоритмов электронной подписи;

    — в большинстве схемах аутентификации.

    Как видно из рис.3 алгоритмы шифрования можно разделить на две категории:

    — алгоритмы асимметричного шифрования;

    — алгоритмы симметричного шифрования.

    В алгоритме симметричного шифрования обычно используется тот же самый ключ, которым зашифровывали данные, или используют другой ключ, который связан с основным ключом простым соотношением. А в алгоритме ассиметричного шифрования используется ключ зашифрования k1, который легко вычисляется из ключа k2 таким образом, что обратное вычисление невозможно. [6, c. 28]

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

    — ограниченность рабочих схем с открытым ключом;

    — увеличение размера шифрируемых блоков данных и ключей к ним;

    — ненадежность фундамента шифрования.

    Рассмотрим каждую из них в отдельности.

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

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

    «Увеличение размера шифрируемых блоков данных и ключей». Быстрые темпы развития вычислительной техники приводят к увеличению размеров блоков данных и их ключей. В доказательство своих слов, приведем пример. Изначально для создания криптосистемы RSA было достаточно 512 бит, а сейчас рекомендуемый объем составляет не менее 4096 бит. Аналогичная ситуация происходит и в других методах шифрования. В традиционной криптографии объем памяти для создания системы увеличился всего лишь в 2 раза.

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

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

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

    На сегодняшний день, криптография занимает в жизни каждого человека важное место. Любой человек хотя бы раз в день сталкивается с шифрованием данных. Все большее и большее количество информации передается по тем каналам связи, которые требуют особой защищенности данных. Современная криптография полностью основана на математике. Основная задача, которую преследует математика в криптографии — это криптографическая стойкость, т. е. способность противостоять теоретическому и практическому взлому. Таким образом, системы шифрования, применяющиеся в криптографических системах сети Интернет (RSA, ElGamal, Shamir и др.) используют последние достижения теории чисел и алгебры. Взломать их — значит решить сложные математические задачи.

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

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

    Одно из новых направлений в исследовании криптографии — исследование методов защиты шифров от атак по сторонним каналам, от «нечестного» криптоанализа, который проводится на основе «прослушивания» реализации шифра.

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

    1. Нил Стивенсон «Криптономикон». 1999 г.

    2. Партыка Т. Л., Попов И. И. Информационная безопасность. Учебное пособие для студентов учреждений среднего профессионального образования.— М.: ФОРУМ: ИНФРА-М, 2004.

    3. Крысин А. В. Информационная безопасность. Практическое руководство — М.: СПАРРК, К.:ВЕК+,2003.

    4. Тарасюк М. В. Защищенные информационные технологии. Проектирование и применение — М.: СОЛОН-Пресс, 2004.

    5. Лукашов И. В. Криптография? Железно! //Журнал «Мир ПК». 2003. № 3.

    6. Панасенко С. П., Защита информации в компьютерных сетях // Журнал «Мир ПК» 2002 № 2.

    7. Бунин О. Занимательное шифрование // Журнал «Мир ПК» 2003 № 7.

    8. Панасенко С. П., Ракитин В. В. Аппаратные шифраторы // Журнал «Мир ПК». 2002. № 8

    9. Панасенко С. П. Чтобы понять язык криптографов // Журнал «Мир ПК». 2002. № 5.

    10. Панасенко С. П. Чтобы понять язык криптографов // Журнал «Мир ПК». 2002. № 6.

    11. Lieven M. K. et al. Experimental realization of Shor’s quantum factoring algorithm using nuclear magnetic resonance// Nature 414. 20–27 Dec. 2001.

    Похожие статьи

    Пост-квантовый алгоритм электронно-цифровой подписи на.

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

    Обзор видов атак по побочным каналам на криптографические.

    криптография, RSA, ключ, квантовая криптография, канал связи, алгоритм. Оценка стойкости криптосистемы Эль-Гамаля | Статья в сборнике.

    Симметричное (одноключевое) шифрование данных при защите.

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

    Реализация Windows-приложения, выполняющего шифрование.

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

    Криптография с открытым ключом. Криптосистема RSA.

    Ключевые слова: защита информации, криптография.

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

    Алгоритмы шифрования данных | Статья в журнале.

    Шифрование является важной частью криптографии — науки о защите информации.

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

    Шифрование и криптоанализ | Статья в журнале «Молодой. »

    Примером ассиметричного алгоритма криптографии могут выступать алгоритмы основаны на RSA. Алгоритмы шифрования данных | Статья в журнале. Алгоритмы асимметричного шифрования используют два ключа шифрования.

    Способ хранения закрытого ключа криптосистемы цифровой.

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

    Реализация алгоритма шифрования RSA на языке.

    Статья посвящена реализации алгоритма шифрования на открытом ключе RSA.

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

    Криптографические алгоритмы

    Классификация криптографических алгоритмов

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

      алгоритмы шифрования с секретным ключом (симметричные)

        блочные шифры поточные шифры

      алгоритмы шифрования с открытым ключом (асимметричные)

    Криптоалгоритмы с секретным ключом

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

    В 1973-74 гг. Национальное Бюро Стандартов США (NBS) опубликовало документы, содержащие требования к криптографическому алгоритму, который мог бы быть принят в качестве стандарта шифрования данных в государственных и частных учреждениях. В 1976 г. в качестве такового стандарта был утвержден алгоритм, разработанный фирмой IBM. В 1977 г. этот стандарт был официально опубликован и вступил в силу как федеральный стандарт США для шифрования данных — Data Encryption Standard или сокращенно DES.

    В самом схематичном виде DES представляет собой 16-цикловой итерационный блочный шифр. DES работает с блоками данных разрядностью 64 бита с ипользованием 56-разрядного ключа. Применяемые преобразования — поразрядное сложение по модулю два, подстановки и перестановки. Алгоритм выработки 48-битовых цикловых ключей из 56-битового ключа системы и ряд преобразований служат для обеспечения необходимого перемешивания и рассеивания перерабатываемой информации, однако при анализе DES чаще всего играют не самую существенную роль.

    В 1999 г. на конференции, организованной RSA, компания Electronic Frontier Foundation взломала ключ DES менее чем за 24 часа. Одной из замен DES, получившей широкое распространение, стал алгоритм Triple DES. В этом случае алгоритм DES выполняется трижды, при этом используются 3 ключа, каждый из которых состоит из 56 битов (что, по сути, соответствует использованию 168-битного ключа). Тем не менее, криптоаналитики обнаружили способ, позволяющий сделать атаку прямого перебора эквивалентной атаке на 108-битовый ключ. Второй проблемой является значительное снижение скорости зашифрования и расшифрования данных.

    В ответ на проблемы с длиной ключа и производительностью, проявившиеся в Triple DES, многие криптографы и компании разработали новые блочные шифры. Наиболее популярными предложениями стали алгоритмы RC2 и RC5 [5.3] корпорации RSA Data Security, IDEA [5.5] компании Ascom, Cast [5.4] компании Entrust, Safer [5.6] компании Cylink и Blowfish [5.7] компании Counterpane Systems. Коммерческие альтернативы DES получили определенное распространение, но ни одна из них не стала стандартом.

    В 1997 г. Национальный институт стандартов и технологий США (NIST) объявил о начале программы по принятию нового стандарта криптографической защиты. В октябре 2000 г. конкурс завершился. Победителем был признан шифр Rijndael [5.8], разработанный бельгийцами Д. Дейменом и В. Райменом. Алгоритм Rijndael стал основой для нового американского стандарта AES (Advanced Encryption Standard), который в 2001 г. пришел на смену DES и Triple DES и действует и по сей день. Rijndael — это итерационный блочный шифр, имеющий архитектуру «Квадрат». Он быстрый, простой, защищенный, универсальный и хорошо подходит для реализации на смарт-картах. Шифр имеет переменную длин у блоков и различные длины ключей. Длина ключа и длина блока могут быть равны независимо друг от друга 128, 192 или 256 битам. В стандарте AES определена длина блока, равная 128 битам. Шифр AES характеризуется хорошей устойчивостью по отношению к атакам по мощности и по времени. Именно этот шифр рекомендует использовать Microsoft для симметричного шифрования.

    Отечественный стандарт шифрования носит официальное название «Алгоритм криптографического преобразования ГОСТ » [5.10]. Как явствует из его номера, стандарт был принят в СССР в 1989 г. Если охарактеризовать алгоритм ГОСТ в самом общем виде, то он является блочным шифром, построенным по схеме Фейстеля с 32 циклами шифрования. Длина информационного блока — 64 бита, длина ключа — 256 бит.

    Основные отличия алгоритма ГОСТ от алгоритма DES — в строении функции, которая осуществляет отображение , и алгоритме выработки цикловых ключей. И в том и в другом случае преобразования, используемые в алгоритме ГОСТ, проще для программной реализации. Исследования [5.9] показывают, что российский стандарт не уступает по стойкости американскому AES.

    Основная идея поточного шифрования состоит в том, что каждый из последовательных знаков открытого текста подвергается своему преобразованию. В идеале разные знаки открытого текста подвергаются разным преобразованиям, т. е. преобразование, которому подвергаются знаки открытого текста, должно изменяться с каждым следующим моментом времени. Реализуется эта идея следующим образом. Некоторым способом получается последовательность знаков , называемая ключевым потоком (keystream) или бегущим ключом (running key, RK). Затем каждый знак открытого текста подвергается обратимому преобразованию, зависящему от — соответствующего знака ключевого потока.

    Поточные шифры почти всегда работают быстрее и обычно требуют для своей реализации гораздо меньше программного кода, чем блочные шифры. Наиболее известный поточный шифр был разработан Р. Ривестом; это шифр RC4, который характеризуется переменным размером ключа и байт-ориентированными операциями. На один байт требуется от 8 до 16 действий, программная реализация шифра выполняется очень быстро. Независимые аналитики исследовали шифр, и он считается защищенным. RC4 используется для шифрования файлов в таких изделиях, как RSA SecurPC. Он также применяется для защиты коммуникаций, например, для шифрования потока данных в Интернет-соединениях, использующих протокол SSL.

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

      DES (Причины: малая длина ключей — 56 бит; если в 1993 г. атака на алгоритм заняла 3,5 часа на машине стоимостью $1 млн., то сегодня взлом можно осуществить в реальном времени; 3DES является более защищенным, но наличие лучших вариантов делает его использование неоправданным); IDEA (International Data Encryption Standard)- хотя длина ключа (128 бит) является приемлемой, Microsoft проводит аналогии с алгоритмом DES: как известно, NSA подозревалось в сознательном ослаблении алгоритма DES, чтобы легко просматривать зашифрованные сообщения; RC2 и RC5 — причины недоверия Microsoft к этим шифрам те же, что к DES и IDEA. Поскольку для шифрования используются «одноразовые блокноты», слабым местом может стать генератор псевдослучайных последовательностей. Современной тенденцией является использование блочных шифров в режиме поточного шифрования (например, поточное шифрование обеспечивают режимы CBF и OFB для алгоритма DES или режим гаммирования для алгоритма ГОСТ ); Blowfish и Twofish — криптоалгоритмы, разработанные Брюсом Шнайером (B. Schneier), удовлетворяют требованиям стойкости, но не являются стандартами: Twofish, являющийся более поздней версией Blowfish, вышел в финал конкурса на замену DES, но уступил шифру Rijndael; CAST: несмотря на то, что алгоритм показал себя устойчивым к линейному и дифференциальному криптоанализу, он имеет слишком малую длину ключа — 64 бита; ГОСТ : Microsoft подозревает стойкий шифр в наличии «лазеек» — «backdoors».

    Криптоалгоритмы с открытым ключом

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

    Наиболее известные криптосистемы с открытым ключом:

      Рюкзачная криптосистема (Knapsack Cryptosystem) [5.13]; Криптосистема RSA; Криптосистема Эль-Гамаля — EGCS (El Gamal Cryptosystem); Криптосистема, основанная на свойствах эллиптических кривых — ECCS (Elliptic Curve Cryptosystems).

    Применение алгоритмов шифрования с открытым ключом позволяет:

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

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

    Схема ЭЦП должна определять три следующих алгоритма:

      алгоритм подписи; алгоритм проверки подписи. алгоритм генерации ключевой пары для подписи и ее проверки;


    RSA [5.14] — криптографическая система с открытым ключом, обеспечивающая оба механизма защиты: шифрование и цифровую подпись. Криптосистема RSA была разработана в 1977 году и названа в честь авторов: Рональда Ривеста, Ади Шамира и Леонарда Адлемана.

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

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

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

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

    Схема Эль-Гамаля [5.15] основана на трудности вычисления дискретных логарифмов в конечном поле в сравнении с лёгкостью возведения в степень в том же самом поле.

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

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

    На схеме Эль-Гамаля базировались стандарты ЭЦП в России и США, принятые в 1994 году [5.17, 5.16] и действовавшие вплоть до 2001 г.

    Последние математические достижения показали, что проблема логарифмирования в конечных полях не является достаточно прочным фундаментом. Наиболее эффективные на сегодняшний день алгоритмы дискретного логарифмирования имеют уже не экспоненциальную, а субэкспоненциальную временную сложность. Это алгоритмы «index-calculus», использующие факторную базу, к числу которых относятся алгоритм Адлемана [5.18], несколько версий «COS» (алгоритма Копперсмита-Одлыжко-Шреппеля) [5.19] и решето числового поля [5.20]. Ведутся работы по повышению эффективности этих алгоритмов. Так, метод, описанный в [5.21], направлен на повышение эффективности решения линейных уравнений в кольцах вычетов, поскольку все субэкспоненциальные методы дискретного логарифмирования сводятся к этой задаче.

    Ряд успешных атак, описанных, например, в [5.23], на системы, основанные на сложности дискретного логарифмирования в конечных полях, привел к тому, в 2001 г. России и США были приняты новые стандарты на ЭЦП [5.22, 5.24]. Процессы формирования и проверки электронной ЭЦП существенно не изменились, однако вместо элементов конечного поля или они оперируют эллиптическими числами, т. е. решениями уравнения эллиптических кривых над указанными конечными полями, а роль операции возведения в степень в конечном поле выполняет операция взятия кратной точки эллиптической кривой. Если старый российский стандарт ЭЦП оперирует 1024-битовыми блоками, то новый — 256-битовыми, но при этом обладает большей стойкостью. Важно отметить, что специальный выбор типа эллиптической кривой позволяет не только во много раз усложнить задачу взлома схемы ЭЦП, но и уменьшить рабочий размер блоков данных. Криптосистемы на основе эллиптической кривой получают все большее распространение скорее как альтернатива, а не замена системам на основе RSA. Они имеют некоторые преимущества, особенно при использовании в устройствах с маломощными процессорами и/или маленькой памятью. Так, согласно стандарту США [5.24] на выработку и верификацию цифровой подписи DSS (Digital Signature Standard), ЭЦП может вырабатываться по одному из трех алгоритмов: DSA (Digital Signature Algorithm), основанному на проблеме дискретного логарифма в конечном поле, ANSI X9.31 (RSA DSA) [5.26] или ANSI X9.63 [5.25] (EC DSA — алгоритм выработки подписи, основанный на проблеме дискретного логарифма в группе точек эллиптической кривой над конечным полем).

    Шифрование на платформе Windows

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

    На платформах Windows XP и Windows Server 2003 компания Microsoft рекомендует использовать следующие криптографические алгоритмы [5.11]:

      AES-128 (или AES-192, или AES-256); RSA 2048 (или с еще более длинным ключом); SHA-2 (т. е. SHA-256 или SHA-512); DSA (или SHA-2/RSA).

    Криптография Windows Vista (и Longhorn Server) соответствует рекомендациям Агентства Национальной Безопасности США и Национального института стандартов и технологии (NIST) по реализации протоколов «Suite B» [5.12] и предусматривает использование асимметричных криптоалгоритмов на основе эллиптических кривых. Алгоритмы «Suite B» включают:

      AES (шифрование); EC-DSA (электронно-цифровая подпись); EC-DH или EC-MQV (обмен секретными ключами); SHA-2 (хеширование).

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

    Понятие криптоанализа

    Криптоанализом (от греческого krypts — «скрытый» и analein — «ослаблять» или избавлять») называют науку восстановления (дешифрования) открытого текста без доступа к ключу. Хотя история криптоанализа насчитывает многие века, особенно интенсивно эта область знаний начала развиваться с наступлением компьютерной эры. Какие методы криптоанализа считаются наиболее эффективными сегодня, и что нас ждет в будущем? Существует ли предельно стойкий шифр, взлом которого является непосильной задачей при любом уровне развития криптоанализа и средств вычислительной техники? В чем отличие научного и практического криптоанализа? На эти и другие вопросы мы постараемся ответить в этой лекции.

    Великий сыщик Шерлок Холмс утверждал, что «любая тайна, порожденная человеческим сознанием, им же может быть и раскрыта.» Его слова были в середине 40х гг. прошлого века опровергнуты великим ученым и основоположником современной криптографии Клодом Шенноном. Он показал ([6.5]), что если на любой исходный текст наложить (т. е. сложить по модулю с текстом) ключ длины не меньшей, чем само сообщение, то такой шифр будет нераскрываемым: потенциальному злоумышленнику потребуется перебрать все возможные ключи и каждым из них попробовать расшифровать сообщение. Однако использование такого способа шифрования, получившего название «одноразовых блокнотов», в большинстве случаев оказывается слишком дорогим и неоправданным. Это связано с тем, что нет смысла бороться за устойчивость системы защиты информации к взлому ниже некоторой «фоновой» вероятности, т. е. вероятности события, которое мы не в состоянии предотвратить [6.6]. Задача криптоанализа состоит в том, чтобы определить вероятность взлома шифра и, таким образом, оценить его применимость в той или иной области.

    Попытка криптоанализа называется атакой. Криптоанализ ставит своей задачей в разных условиях получить дополнительные сведения о ключе шифрования, чтобы значительно уменьшить диапазон вероятных ключей. Результаты криптоанализа могут варьироваться по степени практической применимости. Так, криптограф Ларс Кнудсен [6.7] предлагает следующую классификацию успешных исходов криптоанализа блочных шифров в зависимости от объема и качества секретной информации, которую удалось получить:

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

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

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

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

    На рис.6.1 методы криптоанализа систематизированы по хронологии их появления и применимости для взлома различных категорий криптосистем. Горизонтальная ось разделена на временные промежутки: в область «вчера» попали атаки, которые успешно применялись для взлома шифров в прошлом; «сегодня» — методы криптоанализа, представляющие угрозу для широко используемых в настоящее время криптосистем; «завтра» — эффективно применяемые уже сегодня методы, значение которых в будущем может возрасти, а также методы, которые пока не оказали серьезного влияния на криптологию, однако со временем могут привести прорывам во взломе шифров. На вертикальной оси обозначены области применения методов криптоанализа: для взлома криптосистем с секретным ключом, открытым ключом или хеш-функций.

    Рис. 6.1. Методы криптоанализа

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

    Частотный анализ

    На протяжении веков дешифрованию криптограмм помогает частотный анализ появления отдельных символов и их сочетаний. Идея этого метода хорошо известна любителям детективов по рассказу А. Конан Дойля «Пляшущие человечки». Вероятности появления отдельных букв, а также их порядок в словах и фразах естественного языка подчиняются задокументированным статистическим закономерностям: например, пара стоящих рядом букв «ся» в русском языке более вероятна, чем «цы», а «оь» не встречается никогда. Анализируя достаточно длинный текст, зашифрованный методом замены, можно по частотам появления символов произвести обратную замену и восстановить исходный текст.

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

    Метод полного перебора

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

    При осуществлении попытки атаки на основе только шифртекста криптоаналитику требуется анализировать выходные данные алгоритма и проверять их «осмысленность». В случае, когда в качестве объекта шифрования выступает графический файл или программа, задача определения «осмысленности» выходных данных становится очень трудной. Если известно, что открытый текст представляет собой предложение на естественном языке, проанализировать результат и опознать успешный исход дешифрования сравнительно несложно, тем более что криптоаналитик зачастую располагает некоторой априорной информацией о содержании сообщения. Задачу выделения осмысленного текста, т. е. определения факта правильной дешифрации, решают при помощи ЭВМ с использованием теоретических положений, разработанных в конце XIX века петербургским математиком , — цепей Маркова.

    Атаки с использованием известного или подобранного открытого текста встречаются чаще, чем можно подумать. В среде криптоаналитиков нельзя назвать неслыханными факты добычи открытого текста шифрованного сообщения или подкупа лица, которое должно будет зашифровать избранное сообщение. Предположим, злоумышленнику известна одна или несколько пар . Пусть для простоты для любой пары существует единственный ключ , удовлетворяющий соотношению . Примем проверку одного варианта ключа k \in K за одну операцию. Тогда полный перебор ключей потребует операций, где — число элементов в множестве. Если в качестве оценки трудоемкости метода взять математическое ожидание случайной величины, соответствующей числу опробований до момента обнаружения использованного ключа, то мы получим операций. Кроме того, алгоритм полного перебора допускает распараллеливание, что позволяет значительно ускорить нахождение ключа.

    Оценка предельных мощностей взлома

    Можно подумать, что с ростом мощности компьютеров разрядность ключа, достаточная для обеспечения безопасности информации против атаки методом полного перебора, будет неограниченно расти. Однако это не так. Существуют фундаментальные ограничения вычислительной мощности, наложенные структурой вселенной: например, скорость передачи любого сигнала не может превышать скорость распространения света в вакууме, а количество атомов во Вселенной (из которых, в конечном счете, состоят компьютеры) огромно, но конечно. Так, например, в [6.4] описаны два фундаментальных ограничения:

    Предел, основанный на выделяемой Солнцем энергии. Все вычисления потребляют энергию. Согласно принципам классической термодинамики и статистической механики, потребление энергии при осуществлении необратимого преобразования (вычисления) имеет порядок , где — температура окружающей среды (по абсолютной шкале Кельвина), а — постоянная Больцмана (равная ). Мощность излучения Солнца составляет приблизительно ; таким образом, за весь свой предполагаемый период существования — 10 млрд. лет, или секунд — Солнце выделит около Дж). Предположим, температура окружающей среды градусов, тогда энергозатраты на одну операцию составляют . Значит, количество вычислительных операций, которые можно осуществить с использованием всей выделяемой солнцем энергии, равно выделяемой мощности, поделенной на количество энергии, необходимой для осуществления одной операции, т. е. всего операций. Такое количество операций потребовалось бы на взлом ключа из 73 десятичных цифр (или около 250 бит) методом прямого перебора при грубом предположении, что для проверки одного значения ключа необходима всего одна операция (на самом деле — сотни операций). Для справки, количество атомов солнечной системы — около . Предел, основанный на массе Земли. Масса Земли составляет порядка кг. Масса протона — , т. е. Земля содержит приблизительно протонов. Сопоставим каждому протону отдельный компьютер и примем за скорость выполнения операции на таком компьютере время, за которое луч света проходит расстояние, равное диаметру этого протона ( ). Таким образом, каждый компьютер может выполнять операций в секунду. Если все эти компьютеры будут работать параллельно, их суммарное быстродействие составит операций в секунду, т. е. операций в секунду. Возраст Вселенной приблизительно 10 млрд. лет, т. е. секунд. За весь период существования Вселенной такие гипотетические компьютеры размером с протон смогли бы выполнить операций. При описанных в п. 1 предположений относительно количества операций, необходимых на проверку значения ключа, такое количество операций позволит взломать ключ длиной 95 десятичных цифр, или 320 бит.

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

    Атака по ключам

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

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

    Метод «встречи посередине»

    Известно, что если считать, что дни рождения распределены равномерно, то в группе из 23 человек с вероятностью 0,5 у двух человек дни рождения совпадут. В общем виде парадокс дней рождения формулируется так: если предметов выбираются с возвращением из некоторой совокупности размером , то вероятность того, что два из них совпадут, равна (в описанном частном случае — количество дней в году, , т. е. ).

    Данный метод криптоанализа (см. [6.1]) основан на «парадоксе дней рождения». Пусть нам нужно найти ключ по известному открытому тексту и криптограмме . Если множество ключей криптоалгоритма замкнуто относительно композиции, т. е. для любых ключей и >найдется ключ такой, что результат шифрования любого текста последовательно на и равен результату шифрования этого же текста на , т. е. , то можно воспользоваться этим свойством. Поиск ключа сведем к поиску эквивалентной ему пару ключей , . Для текста построим базу данных, содержащую случайное множество ключей и соответствующих криптограмм , и упорядочим ее по криптограммам . Объем базы данных выбираем , где — мощность множества ключей . Затем подбираем случайным образом ключи для расшифровки текстов и результат расшифрования сравниваем с базой данных. Если текст окажется равным одной из криптограмм , то ключ эквивалентен искомому ключу .

    Алгоритм является вероятностным. Существуют детерминированный аналог этого алгоритма «giant step — baby step» с такой же сложностью, предложенный американским математиком Д. Шенксом.

    Криптоанализ симметричных шифров

    Наибольший прогресс в разработке методов раскрытия блочных шифров был достигнут в самом конце ХХ века и связан с появлением двух методов — разностного (дифференциального) криптоанализа и линейного криптоанализа.

    Метод разностного анализа сочетает в себе обобщение идеи общей линейной структуры с применением вероятностно-статистических методов исследования. Этот метод относится к атакам по выбранному открытому тексту. Копперсмит утверждает, что разностный криптоанализ был известен команде разработчиков DES алгоритма еще в начале 70-х годов, официальной датой появления этого метода считается 1990 г., а первенство в разработке признано за израильскими математиками Э. Бихамом и А. Шамиром. Разностный анализ основан на использовании неравновероятности в распределении значений разности двух шифртекстов, полученных из пары открытых текстов, имеющих некоторую фиксированную разность. Отметим, что разностный анализ применим и для взлома хеш-функций.

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

    На сегодняшний день метод линейного криптоанализа позволил получить наиболее сильные результаты по раскрытию ряда итерационных систем блочного шифрования, в том числе и системы DES. Метод линейного криптоанализа в неявном виде появился еще в работе С. Мёрфи в 1990 г., где он успешно применялся при анализе системы блочного шифрования FEAL. В 1992 г. М. Мацуи формализовал этот подход, а позже успешно применил его к анализу криптоалгоритма DES. В 2001 г. в США на смену DES и Triple DES пришел новые стандарт AES, действующий и по сей день.

    Криптоанализ асимметричных шифров

    Практически все используемые алгоритмы асимметричной криптографии основаны на задачах факторизации (например, известная криптосистема RSA) и дискретного логарифмирования в различных алгебраических структурах (схема электронно-цифровой подписи Эль-Гамаля). Несмотря на то, что принадлежность этих задач к классу NP-полных задач не доказана, на сегодняшний день не найден полиномиальный алгоритм их решения. Для криптоанализа асимметричных криптосистем можно применять универсальные методы — например, метод «встречи посередине». Другой подход заключается в решении математической задачи, положенной в основу асимметричного шифра. С того момента, как У. Диффи и М. Хеллман в 1976 г. предложили концепцию криптографии с открытым ключом, проблемы факторизации целых чисел и дискретного логарифмирования стали объектом пристального изучения математиков всего мира. За последние годы в этой области наблюдался значительный прогресс. Подтверждением тому может служить следующий казус: в 1977 г. Р. Ривест заявил, что разложение на множиразрядного числа потребует 40 квадриллионов лет, однако уже в 1994 г. было факторизовано число, состоящее из 129 двоичных разрядов!

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

    Последние достижения теории вычислительной сложности показали, что общая проблема логарифмирования в конечных полях уже не является достаточно прочным фундаментом. Наиболее эффективные на сегодняшний день алгоритмы дискретного логарифмирования имеют уже не экспоненциальную, а субэкспоненциальную временную сложность. Это алгоритмы «index-calculus», использующие факторную базу. Первый такой алгоритм для вычисления дискретного логарифма в простом поле был предложен Л. Адлеманом. На практике алгоритм Адлемана оказался недостаточно эффективным; Д. Копперсмит, А. Одлыжко и Р. Шреппель предложили свою версию субэкспоненциального алгоритма дискретного логарифмирования — «COS». Алгоритм решета числового поля, предложенный О. Широкауэром, при 10^<100>» w />работает эффективнее различных модификаций метода COS.

    Ряд успешных атак на системы, основанные на сложности дискретного логарифмирования в конечных полях, привел к тому, что стандарты ЭЦП России и США, которые были приняты в 1994 г. и базировались на схеме Эль-Гамаля, в 2001 году были обновлены: переведены на эллиптические кривые. Схемы ЭЦП при этом остались прежними, но в качестве чисел, которыми они оперируют, теперь используются не элементы конечного поля или , а эллиптические числа — решения уравнения эллиптических кривых над указанными конечными полями. Алгоритмов, выполняющих дискретной логарифмирование на эллиптических кривых в общем случае хотя бы с субэкспоненциальной сложностью, на сегодняшний день не существует, хотя работы в этом направлении ведутся. Так, для эллиптических кривых специального вида наш соотечественник И. Семаев указал способ сведения задачи логарифмирования в группе точек эллиптической кривой к задаче логарифмирования в некотором расширении простого поля.

    Криптоанализ хеш-функций

    Основная атака на хеш — это метод коллизий [6.2] . Пусть и — сообщения, — хеш-функция, а ЭЦП представляет собой некоторую функцию от хеша сообщения: . Законный обладатель пары «открытый ключ — секретный ключ» готов подписать сообщение , но злоумышленник заинтересован в получении подписи под сообщением . Если выбрано так, что , то злоумышленник может предъявить пару : тогда атака удалась. Реализовать подбор такого сообщения можно методом, который основан на упомянутом выше «парадоксе дней рождения». Варьируя интервалы, шрифты, формат и т. п., злоумышленник получает пар вариантов и без изменения их смысла. Сообщения отличаются слабо, а их хеш-функции — значительно, т. е. можно считать, что значения хеш-функций выбираются случайно, равновероятно и независимо друг от друга. Тогда при ( 0″ w /> — некоторая константа, — мощность множества всевозможных хеш-функций) вероятность того, что имеется пара сообщений и , для которых , вычисляется по формуле .

    Этот метод криптоанализа породил требования устойчивости к коллизиям для хеш-функций.

    Криптоанализ по побочным каналам

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

    В последние годы количество криптографических атак, использующих слабости в реализации и размещении механизмов криптоалгоритма, резко возросло. Противник может замерять время, затрачиваемое на выполнение криптографической операции, или анализировать поведение криптографического устройства при возникновении определённых ошибок вычисления. Другой подход предполагает отслеживание энергии, потребляемой смарт-картой в процессе выполнения операций с секретным ключом (например, расшифрования или генерации подписи). Побочную информацию собрать порой несложно — на сегодняшний день выделено более десяти побочных каналов, в т. ч. электромагнитное излучение, ошибки в канале связи, кэш-память и световое излучение. Более подробное описание перечисленных типов атак можно найти в материалах доклада на конференции РусКрипто2006 [6.3] , использованных при подготовке данного раздела.

    Нанотехнологии в криптоанализе

    С помощью квантового компьютера можно проводить вычисления, не реализуемые на сегодняшних (классических) компьютерах. В 1994 году П. Шор открыл так называемый «ограниченно-вероятностный» алгоритм факторизации, который позволяет разложить на множители число за полиномиальное от размерности задачи время . Алгоритм Шора разложения чисел на множители явился главным достижением в области квантовых вычислительных алгоритмов. Это был не только крупный успех математики. Именно с этого момента началось усиленное финансирование работ по созданию квантовых компьютеров.

    Важно отметить, что алгоритм Шора чрезвычайно прост и довольствуется гораздо более скромным аппаратным обеспечением, чем то, которое понадобилось бы для универсального квантового компьютера. Поэтому вероятно, что квантовое устройство для разложения на множители будет построено задолго до того, как весь диапазон квантовых вычислений станет технологически осуществимым. На сегодняшний день есть конкретные результаты. Так, IBM продемонстрировала использование созданного в лабораториях компании семикубитового квантового компьютера для факторизации чисел по алгоритму Шора. Хотя решённая им задача вряд ли способна поразить воображение (компьютер верно определил, что делителями числа 15 являются числа 5 и 3), это самое сложное вычисление в области теории чисел за всю историю квантовых компьютеров.

    Экономика информационной безопасности на примере оценки криптосистем

    Важность экономического обоснования инвестиций в ИБ подчеркивал В. Мамыкин, директор по информационной безопасности кабинета президента Microsoft в России и СНГ, в своих выступлениях на конференциях Security @ Interop’2008 и IT-Summit’2008 [7.48]. Согласно [7.49], большинство зарубежных компаний (84%) используют ROI и другие инструменты для оценки инвестиций в ИБ, которые составляют в среднем 5% всего ИТ-бюджета. В России на ИБ идет 0,5% ИТ бюджета, т. е. в 10 раз меньше. Такую ситуацию В. Мамыкин напрямую связывает с тем, что в нашей стране пока не получила широкого распространения практика оценки эффективности средств обеспечения ИБ с экономических позиций.

    Расчет финансово-экономических показателей СЗИ позволяет решить следующие задачи [7.47]:

      Обоснование внедрения системы по обеспечению информационной безопасности на предприятии с экономической точки зрения; Оценка экономической эффективности внедрения или замены системы безопасности информации; Прогнозирование расходов по созданию/ функционированию/ модернизации СЗИ (задача управления бюджетом); Сравнение по экономическим критериям нескольких вариантов создания СЗИ, построенных на различных архитектурах (системах и компонентах), с целью выбора оптимального варианта реализации проекта (задача выбора ИТ-стратегии).

    Качество информации, необходимой для принятия решения о целесообразности инвестиций, в первую очередь, будет зависеть от исходных данных, на основе которых производились вычисления. Уязвимым местом в любой методике расчета является именно сбор и обработка первичных данных, их качество и достоверность. Одним из основных вопросов является оценка затрат на ИБ. Выбор необходимой степени защиты должен учитывать ряд критериев: уровень секретности информации; ее стоимость; время, в течение которого она должна оставаться в тайне и т. д. Известный криптограф Брюс Шнайер (Bruce Schneier) в работе [7.26] подчеркивает, что термин «безопасность» лишен смысла без сведений о том, от кого и на какой срок защищена информация. Это утверждение применимо как к системам обеспечения безопасности в целом, так и к их важнейшему компоненту — средствам криптографической защиты информации.

    Средства криптографической защиты информации (СКЗИ) представляют собой средства вычислительной техники, осуществляющие криптографическое преобразование информации для обеспечения ее безопасности. Росс Андерсон (Ross J Anderson), ведущий эксперт в области информационной безопасности, в своей статье [7.3] приходит к выводу, что при оценке уровня защищенности специалист должен принимать во внимание не только технические характеристики криптосистемы, получаемые путем криптоанализа и анализа информационных потоков, но использовать также и экономические инструменты.

    Рассмотрим возможность разработки методики анализа эффективности СКЗИ с учетом того, каким угрозам защищаемая информация будет подвергаться со стороны злоумышленников.

    Для решения поставленной задачи необходимо:

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

    Поставленные цели согласуются с задачами, вошедшими в перечень основных направлений и приоритетных проблем научных исследований в области информационной безопасности Российской Федерации, который был разработан секцией по информационной безопасности Научного совета при Совете Безопасности Российской Федерации при активном участии ведущих ученых и специалистов научных учреждений и организаций РАН, вузов, федеральных органов исполнительной власти, работающих в различных областях, связанных с обеспечением национальной безопасности (см. [7.44], пп. 46, 47 и 56).

    Процесс оценки эффективности криптографической защиты

    Анализ существующих подходов

    При оценке эффективности СКЗИ важнейшим критерием считается криптостойкость, т. е. способность противостоять атакам криптоаналитика [7.40]. Такой подход не учитывает других важных требований к криптосистемам, а именно (см. [7.46]):

      минимальный объем используемой ключевой информации; минимальная сложность реализации (в количестве машинных операций); стоимость; высокое быстродействие.

    Кроме того, использование СКЗИ, обеспечивающих устойчивость к взлому ниже некоторой «фоновой» вероятности, является экономически неоправданным [7.35]. Например, если вероятность выхода компании из бизнеса равна 230 (менее чем один из миллиона), то есть ли смысл для защиты информации, которая может нанести компании ущерб, сопоставимый с кризисом рынка, использовать алгоритм, вероятность вскрытия которого за приемлемое время составляет 2100?

    В статье [7.38] эффективность криптографических средств защиты предлагается оценивать с использованием математического аппарата теории массового обслуживания и теории катастроф на основе вероятностно-временной группы показателей, в числе которых:

      среднее время безопасного функционирования защищаемой системы; время безопасного функционирования защищаемой системы с вероятностью НСД не выше заданной; экономическая эффективность созданной системы защиты информации.

    Выбор показателей эффективности представляет интерес, однако методика имеет ряд критических недостатков, которые делают невозможным ее применение на практике для оценки современных СКЗИ. В первую очередь это границы применимости: методика подходит только для оценки криптосистем, принадлежащих по классификации Ж. Брассара (Gilles Brassard) [7.6] к классу криптосистем ограниченного использования, стойкость которых основывается на сохранении в секрете алгоритмов зашифрования и расшифрования. Однако, согласно фундаментальному допущению Кирхгоффа (Auguste Kerckhoffs) [7.14], стойкость криптосистемы должна основываться не на секретности алгоритмов зашифрования и расшифрования, а на секретности некоторого значения, которое называется ее ключом. Все современные криптосистемы построены по этому принципу, и исследования их надежности всегда должны проводиться в предположении, что потенциальному противнику о криптосистеме известно все, за исключением используемого ключа.

    Еще одним недостатком методики, описанной в работе [7.38], является то, что она не учитывает зависимости эффективности криптосистемы от условий ее использования. Очевидно, эффективность одной и той же криптосистемы в разных контекстах может существенно отличаться, т. к. среда функционирования системы накладывает определенные ограничения на возможные сценарии атак.

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

      метод CRAMM, разработанный Агентством по компьютерам и телекоммуникациям Великобритании по заданию Британского правительства [7.9]; семейство программных продуктов RiskWatch от одноименной американской компании [7.23]; комплексная система анализа и управления рисками информационной системы ГРИФ, созданная отечественной компанией Digital Security [7.10].

    Эти инструментальные средства полезны специалисту при проведении аудита систем обеспечения безопасности предприятия, однако они не учитывают специфики СКЗИ и, как показано в [7.34], не подходят для решения поставленной в данной работе задачи.

    Наконец, существуют методы формального анализа криптопротоколов. Криптографический протокол [7.24] регламентирует последовательность действий, выполняемых двумя и более сторонами для решения какой-либо задачи с использованием криптографических преобразований и алгоритмов. Можно выделить три основных класса методов анализа криптопротоколов:

      Дедуктивные методы, основанные на автоматическом доказательстве теорем, связанных со свойствами исследуемого криптопротокола [7.5]; Методы анализа состояний, моделирующие криптопротокол в виде конечного автомата [7.4]; Методы статического анализа, объектом исследования в которых являются потоки данных и управления [7.7].

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

    Модель процесса оценки эффективности СКЗИ

    Наиболее эффективным при выборе и оценке криптографической системы считается использование экспертных оценок [7.46]. При оценке эффективности СКЗИ необходимо принимать во внимание взаимосвязь факторов, определяющих ее подверженность атаке определенного типа. Упрощенное графическое представление модели сценария атаки изображено на рис. 7.1. Во избежание избыточности из модели исключен элемент «Защищаемые ресурсы», который задается неявно — через элемент «Злоумышленник» (характер зашифрованной информации определяет возможных злоумышленников, которые могут осуществлять попытки взлома в целях нарушения конфиденциальности, целостности или доступности).

    Рис. 7.1. Модель сценария взлома

    На основании предложенной модели сценария атаки построена модель угроз безопасности информационных ресурсов из трех элементов [7.30] — ABC-модель («A» от англ. Attack — атака, «B» от англ. code-Breaker — взломщик шифра, «C» от англ. Cryptosystem — криптосистема). Математическое описание ABC-модели дано позже, здесь мы рассмотрим процесс экспертной оценки эффективности криптографической защиты (графическая модель процесса изображена на рис. 7.2).

    Целью этапов 1-3 является построение ABC-модели. Первый этап — определение объекта исследования. Здесь описываются конкретные характеристики криптосистемы. На втором этапе задаются параметры, определяющие тип потенциальных взломщиков криптосистемы. Как будет показано в следующем разделе, при наличии формальных представлений исследуемой криптосистемы и потенциальных злоумышленников мы можем перейти к третьему этапу, т. е. определить типы атак, которым подвержена криптосистема, а также связанный с ними риск.

    Четвертый этап представляет собой анализ устойчивости криптосистемы к атакам, определенным на третьем этапе. Для проведения криптоанализа специалиста необходимо обеспечить набором инструментальных средств, исследование и разработке которых будет рассмотрена далее.

    Наконец, пятый этап предполагает использование различных подходов к оценке экономической эффективности инвестиций в СКЗИ на основании данных, полученных на этапах 1-4.

    Рис. 7.2. Процесс оценки эффективности криптографической защиты

    Моделирование угроз безопасности информационных ресурсов

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

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

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

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

    Анализ существующих подходов

    Для идентификации исследуемой криптосистемы нужно выделить набор ее ключевых свойств. Известны классификации криптосистем, в числе которых — классификационная схема, предложенная швейцарским математиком и криптографом У. Маурером (Ueli Maurer) [7.21] и основанная на том, чтобы различать криптосистемы по количеству ключей, упомянутая выше схема Ж. Брассара [7.6], в которой криптосистемы различаются в зависимости от сохранения в секрете механизма шифрования. Ни одна из этих классификаций сама по себе не позволит идентифицировать криптосистему — необходима многокритериальная классификация. С этой точки зрения представляет интерес работа К. Черезова [7.43], в которой предлагаются обобщающие критерии для сравнения продуктов на российском рынке СКЗИ:

      Фирма-производитель; Тип реализации; Наличие действующих сертификатов соответствия ФСБ России и классы защиты; Реализованные криптографические алгоритмы; Поддерживаемые операционные системы; Предоставляемый программный интерфейс; Наличие реализации протокола SSL/TLS; Поддерживаемые типы ключевых носителей; Интегрированность с продуктами и решениями компании Microsoft; Наличие дистрибутива продукта в свободном доступе на сайте производителя, дилерской сети распространения и сервиса поддержки.

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

    Типы взломщиков, от которых криптосистема должна обеспечить защиту, определяют разумный уровень безопасности. Чтобы понять, каким атакам будет подвергаться система, необходимо выделить наиболее вероятных взломщиков. Классификации Дж. Говарда (John D Howard) [7.13] и Б. Шнайера [7.25], в которых злоумышленники различаются в зависимости от их движущих мотивов, подходят для высокоуровневого анализа контекста использования криптосистемы, однако не позволяют установить зависимость возможных сценариев атак от характеристик злоумышленников.

    Существует большое количество классификаций и таксономий атак. Недостатком схем, описанных в [7.15, 7.17, 7.22, 7.28], является то, что они разработаны для описания атак на компьютерные системы, а объектом нашего исследования является более узкий класс атак — криптоаналитические атаки. Классификация Кирхгоффа [7.14] по доступу к открытому и зашифрованному тексту с появлением атак по побочным каналам [7.37] уже не может считаться полной; кроме того, она не позволяет учитывать такие важные факторы, как объем необходимых ресурсов, возможность распараллеливания и т. д.

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

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

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

    Аналогично, параметрическая модель злоумышленника задается в виде вектора , где , ( ) — множество значений j-го параметра модели злоумышленника, модель криптосистемы — , где , ( ) — множество значений k-го параметра модели криптосистемы в соответствии с многокритериальной классификацией. Заметим, что множества значений параметров модели атаки, злоумышленника и криптосистемы конечны.

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

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

    Риск = Влияние Вероятность

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

    Пусть — функция влияния (от англ. impact — влияние, воздействие). Под влиянием мы будем понимать степень ущерба от применения атаки к криптосистеме .

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

    Тогда функция риска выражается следующим образом:

    Определим функцию . Для этого рассмотрим семейство функций , , где — множество неотрицательных действительных чисел. Здесь функция задает уровень взаимного влияния параметра криптосистемы и параметра атаки :

      , если атака со значением параметра не применима к криптосистеме со значением параметра ; , если значение параметра криптосистемы снижает вероятность успешного применения атаки со значением параметра ;

    Рис. 7.3. Классификация криптосистем

    Рис. 7.4. Классификация злоумышленников

    увеличить изображение
    Рис. 7.5. Классификация криптоатак

      , если значение параметра криптосистемы не влияет на применимость атаки с параметром ; 1″ w />, если значение параметра криптосистемы указывает на то, что атака с параметром применима для ее взлома.

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

    Обозначим через нормированную функцию:

    Тогда уровень ущерба от применения атаки к криптосистеме вычисляется по следующей формуле:

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

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

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

    Будем считать, что криптосистема подвержена атаке в условиях, когда ей угрожает злоумышленник , если \theta» w />, т. е. связанный с ней уровень риска превышает заданное пороговое значение , где . Допустимый уровень риска является настраиваемым параметром ABC-модели угроз криптосистемы. Значение задается с учетом двух критериев:

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

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

    Множество атак, которым подвержена криптосистема, состоящая из подсистем ( ), в условиях, когда ей угрожают злоумышленники ( ), будем определять по формуле , где \theta \> » w />при заданном уровне риска. Для оценки защищенности криптосистемы необходимо с использованием инструментальных средств оценить ее способность противостоять атакам, входящим в множество .

    В описанной математической модели сделаны следующие допущения:

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

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

    Важно отметить, что разработанная классификационная схема для построения моделей атак на алгоритмы шифрования с небольшими модификациями применима и для моделирования атак на криптопротоколы. Возможность использования ABC-модели угроз для комплексного исследования криптосистемы является важной, т. к. вопрос совместного функционирования криптопротоколов и шифров в рамках одной криптосистемы, как показано в [7.27], до сих пор был мало изучен.

    Оценка стойкости криптографических средств к идентифицированным угрозам

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

    Базой для получения таких оценок может служить статистика взлома и успешных атак на криптосистемы. Например, известно, что стартовавший в 1997 г. на сайте www. проект «распределенного взлома» RC5-64 (блочного шифра компании RSA, использующего 64-битный ключ) [7.29], в котором на добровольной основе приняли участие более 300 тысяч пользователей глобальной сети, был успешно завершен за пять лет (1757 дней) — за это время было перебрано 85% всего пространства ключей. Однако такая информация, во-первых, не всегда доступна, а, во-вторых, со временем теряет актуальность, т. к. повышение производительности вычислительной техники и появление новых видов атак на шифры ведет к понижению стойкости известных криптографических алгоритмов. Для проверки надежности шифров, используемых в криптосистеме, специалисту необходим набор инструментальных средств, позволяющих осуществлять криптоанализ и не предполагающих у использующего их специалиста наличия глубоких знаний в программировании или электротехнике. В качестве примера можно привести упомянутые в п.1.1 автоматизированные средства анализа криптопротоколов [7.7] или прототип программного комплекса для моделирования атак по побочным каналам [7.37], описанный в [7.19]. Моделирование аппаратного обеспечения в работе [7.19 осуществляется с использованием SystemC [7.2] — языка проектирования и верификации моделей системного уровня, реализованного в виде библиотеки на C++ с открытым исходным кодом. На примере программных и аппаратных реализаций шифра AES показано, каким образом разработанный инструмент позволяет обнаружить уязвимости в реализации криптографического алгоритма.

    Особого внимания заслуживают асимметричные криптосистемы. Функциональные возможности шифров с открытым ключом используются в разнообразных технологиях, в числе которых [7.33]:

      Управление идентичностью; Цифровая подпись кода; Доверенная платформа; Управление авторством; Построение VPN; Гарантированное уничтожение информации; Защита от физической кражи носителя информации.

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

    Итак, выделим набор основных требований к инструментальным средствам криптоанализа:

      Эффективность вычислений с длинными числами в модулярной арифметике; Наличие алгоритмов работы с разреженными матрицами; Наличие алгоритмов создания факторной базы, решета и разложения на множители; Удобство пользовательского интерфейса; Возможность сборки в ОС Windows.

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

    Анализ существующих подходов

    Математические пакеты Maple [7.36] и Mathematica [7.45] отличаются простотой кодирования алгоритмов и не имеют встроенных ограничений на разрядность операндов. Тем не менее, помимо платформенной зависимости они обладают критическим недостатком — низкой эффективностью теоретико-числовых операций.

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

      long: 32 бита; long long: 64 бита; double: 53 бита — мантисса, 11 бит — экспонента; long double: в зависимости от реализации языка может быть определен как double (см. выше) либо как extended double: 64 бита — мантисса, 15 бит — экспонента [7.1].

    В реализации языков на платформе. NET отсутствует тип extended double: он доступен только неявно при выполнении промежуточных вычислений (например, где умножение дает результат, выходящий за пределы диапазона значений double, но последующее деление возвращает промежуточный результат обратно в этот диапазон). Кроме того, существует встроенный 128-битный тип данных decimal, позволяющий представлять целые числа разрядностью до 96 бит (в соответствии с размером мантиссы), однако он реализуется в режиме эмуляции, поскольку аппаратная поддержка этого типа на сегодняшний день отсутствует [7.11].

    Java поддерживает возможность работы с длинными числами и обладает переносимостью, однако недостатком является низкая эффективность реализации.

    Рассмотрим специализированные библиотеки функций для работы с длинной арифметикой и теоретико-числовыми задачами, находящиеся в открытом доступе: LIP, LiDIA, CLN, GMP, NTL.

    Библиотека для работы с длинной арифметикой LIP (Long Integer Package) [7.18] является одной из первых таких библиотек. Она была разработана на языке ANSI C известным специалистом Арженом Ленстрой (Arjen K. Lenstra) и поддерживается Полом Лейлендом (Paul Leyland). При хорошей переносимости эта библиотека обладает низкой эффективностью. Кроме того, в ней отсутствует поддержка высокоуровневых теоретико-числовых алгоритмов.

    Библиотека CLN (a Class Library for Numbers) [7.8] реализует элементарные арифметические, логические и трансцендентные функции. Авторами библиотеки являются Бруно Хейбл (Bruno Haible) и Ричард Крекел (Richard Kreckel). CLN содержит большой набор классов, реализованных на C++, в частности, классы для поддержки модулярной арифметики, операций с целыми, рациональными и комплексными числами, числами с плавающей запятой. Поскольку числовая библиотека задумывалась как универсальная, это привело к ее ограниченной применимости для решения узкоспециализированных задач.

    Библиотека теоретико-числовых алгоритмов LiDIA [7.16], предложенная Томасом Папаниколау (Thomas Papanikolau, Technical University of Darmstadt), написана на C++, поддерживает различные пакеты для работы с целыми числами (GMP, CLN, LIP) и характеризуется высокоэффективными реализациями типов данных с увеличенной точностью и алгоритмов с большой временной сложностью. Недостатком библиотеки LiDIA является невозможность сборки в операционных системах Windows, что очень существенно в связи с широким использованием продуктов Microsoft и необходимостью проверки их защищенности.

    При разработке GMP (GNU Multiple Precision arithmetic library) [7.12] был сделан упор на скорость. Эффективность от использования библиотеки теоретико-числовых алгоритмов GMP растет при увеличении разрядности операндов. Часть функций реализована на языке C, часть — на ассемблере. Автором является Торбжорд Гранланд (Torbjord Granlund). Помимо несовместимости с платформой Windows, недостатком GMP является отсутствие алгоритмов формирования факторной базы, разложения на множители и ряда других, необходимых для реализации современных методов криптоанализа.

    Таблица 7.1. Сравнительный анализ программных решений для решения задач криптоанализа

    Криптографические алгоритмы

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

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

    Базовая терминология

    В криптографической терминологии исходное послание именуют открытым текстом ( plaintext или cleartext ). Изменение исходного текста так, чтобы скрыть от прочих его содержание, называют шифрованием ( encryption ). Зашифрованное сообщение называют шифротекстом ( ciphertext ). Процесс, при котором из шифротекста извлекается открытый текст называют дешифровкой ( decryption ). Обычно в процессе шифровки и дешифровки используется некий ключ ( key ) и алгоритм обеспечивает, что дешифрование можно сделать лишь зная этот ключ.

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

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

    Алгоритмы с использованием ключа делятся на два класса: симметричные (или алгоритмы секретным ключом) и асиметричные (или алгоритмы с открытым ключом). Разница в том, что симметричные алгоритмы используют один и тот же ключ для шифрования и для дешифрования (или же ключ для дешифровки просто вычисляется по ключу шифровки). В то время как асимметричные алгоритмы используют разные ключи, и ключ для дешифровки не может быть вычислен по ключу шифровки.

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

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

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

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

    Многие качественные криптографические алгоритмы доступны широко — в книжном магазине, библиотеке, патентном бюро или в Интернет. К широко известным симметричным алгоритмам относятся DES и >Цифровые подписи

    Цифровые подписи используются для того, чтобы подтвердить, что сообщение пришло действительно от данного отправителя (в предположении, что лишь отправитель обладает секретным ключом, соответствующим его открытому ключу). Также подписи используются для проставления штампа времени ( timestamp ) на документах: сторона, которой мы доверяем, подписывает документ со штампом времени с помошью своего секретного ключа и, таким образом, подтверждает, что документ уже существовал в момент, объявленный в штампе времени.

    Цифровые подписи также можно использовать для удостоверения ( сертификации — to certify ) того, что документ принадлежит определенному лицу. Это делается так: открытый ключ и информация о том, кому он принадлежит подписываются стороной, которой доверяем. При этом доверять подписывающей стороне мы можем на основании того, что ее ключ был подписан третьей стороной. Таким образом возникает иерархия доверия. Очевидно, что некоторый ключ должен быть корнем иерархии (то есть ему мы доверяем не потому, что он кем-то подписан, а потому, что мы верим a-priori, что ему можно доверять). В централизованной инфраструктуре ключей имеется очень небольшое количество корневых ключей сети (например, облеченные полномочиями государственные агенства; их также называют сертификационными агенствами — certification authorities ). В распределенной инфраструктуре нет необходимости иметь универсальные для всех корневые ключи, и каждая из сторон может доверять своему набору корневых ключей (скажем своему собственному ключу и ключам, ею подписанным). Эта концепция носит название сети доверия ( web of trust ) и реализована, например, в PGP.

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

    Свободно доступны несколько методов создания и проверки цифровых подписей. Наиболее известным является алгоритм RSA.

    Криптографические хэш-функции

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

    Много хороших криптографических хэш-функций доступно бесплатно. Широко известные включают MD5 и SHA.

    Криптографические генераторы случайных чисел

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

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

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

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

    Обеспечиваемая шифром степень защиты

    Теоретически, любой шифровальный алгоритм с использованием ключа может быть вскрыт методом перебора всех значений ключа. Если ключ подбирается методом грубой силы ( brute force ), требуемая мощность компьютера растет экспоненциально с увеличением длины ключа. Ключ длиной в 32 бита требует 2^32 (около 10^9) шагов. Такая задача под силу любому дилетанту и решается на домашнем компьютере. Системы с 40-битным ключом (например, экспортный американский вариант алгоритма RC4) требуют 2^40 шагов — такие компьютерные мощности имеются в большинстве университетов и даже в небольших компаниях. Системы с 56-битными ключами (DES) требуют для вскрытия заметных усилий, однако могут быть легко вскрыты с помощью специальной аппаратуры. Стоимость такой аппаратуры значительна, но доступна для мафии, крупных компаний и правительств. Ключи длиной 64 бита в настоящий момент, возможно, могут быть вскрыты крупными государствами и уже в ближайшие несколько лет будут доступны для вскрытия преступными организацими, крупными компаниями и небольшими государствами. Ключи длиной 80 бит могут в будущем стать уязвимыми. Ключи длиной 128 бит вероятно останутся недоступными для вскрытия методом грубой силы в обозримом будущем. Можно использовать и более длинные ключи. В пределе нетрудно добиться того, чтобы энергия, требуемая для вскрытия (считая, что на один шаг затрачивается минимальный квантовомеханический квант энергии) превзойдет массу солнца или вселенной.

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

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

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

    Чтобы дать представление о степени сложности вскрытия RSA, скажем, что модули длиной 256 бит легко факторизуются обычными программистами. Ключи в 384 бита могут быть вскрыты исследовательской группой университета или компании. 512-битные ключи находятся в пределах досягаемости крупных государств. Ключи длиной в 768 бит вероятно не будут надежны продолжительное время. Ключи длиной в 1024 бит могут считаться безопасными до тех пор, пока не будет существенного прогресса в алгоритме факторизации; ключи длиной в 2048 большинство считает надежными на десятилетия. Более подробную информацию о длинах ключей RSA можно почерпнуть из статьи Брюса Шнайера (Bruce Scheier).

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

    Криптоанализ и атаки на криптосистемы

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

  • Атака с помощью таймера ( timing attack ): Этот новый тип атак основан на последовательном измерении времен, затрачиваемых на выполнение операции возведения в стенень по модулю целого числа. Ей подвержены по крайней мере следующие шифры: RSA, Диффи-Хеллман и метод эллиптических кривых. Дополнительную информацию смотрите в оригинальной статье и во множестве последовавших статей.

  • Имеется множество других криптографических атак и криптоаналитических подходов. Однако приведенные выше являются, по-видимому, наиболее важными для практической разработки систем. Если кто-либо собирается создавать свой алгоритм шифрования, ему необходимо понимать данные вопросы значительно глубже. Одно из мест, где можно начать систематическое изучение информации — это замечательная книга Брюса Шнейера «Прикладная криптография» (Bruce Schneier, Applied Cryptography).

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

    Криптография под прицелом I: ищем ключи криптографических алгоритмов

    Все материалы сюжета:

    Это — первая статья из цикла «Криптография под прицелом» Романа Коркикяна. Также стоит прочесть:

    Откуда растут рога

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

    В конечном счете любой алгоритм выполняется с помощью аппаратных средств, под которыми понимаются любые вычислительные механизмы, способные выполнять логические операции И, ИЛИ и операцию логического отрицания. К ним относятся стандартные полупроводниковые устройства, такие как процессор и ПЛИС, нейроны мозга, молекулы ДНК и другие. У всех вычислительных средств есть как минимум два общих свойства. Первое свойство — для того, чтобы выполнить вычисление, нужно затратить энергию. В случае полупроводниковых устройств мы говорим об электрической энергии, в случае нейронов мозга, вероятно, о затраченных калориях (видел когда-нибудь толстых шахматистов?), в случае ДНК это, к примеру, химические реакции с выделением теплоты. Второе общее свойство в том, что для корректного выполнения операций все вычислительные механизмы требуют нормальных внешних условий. Полупроводниковые устройства нуждаются в постоянном напряжении и токе, нейроны мозга в покое (пробовал вести машину, когда твоя девушка пытается выяснить отношения?), ДНК в температуре. На этих двух свойствах основаны аппаратные атаки (hardware attacks), о которых пойдет речь.

    На первый взгляд кажется, что физические процессы абсолютно нерелевантны с точки зрения безопасности, но это не так. Энергию, которая была израсходована в данный конкретный момент работы алгоритма, можно измерить и связать с двоичными данными, которые позволят найти ключ шифрования. На измерении физических эффектов, протекающих во время вычислений, основаны все атаки, которые называются атаки по второстепенным каналам (Side Channel Attacks). В России этот термин еще не до конца устоялся, поэтому можно встретить словосочетания «атаки по побочным каналам», «атаки по сторонним каналам» и другие.

    Нормальные внешние условия тоже являются немаловажными. Рассмотрим, к примеру, напряжение, которое необходимо подать на вход процессора. Что случится, если это напряжение упадет до нуля на несколько наносекунд? Как может показаться на первый взгляд, процессор не перезагрузится, но, скорее всего, континуум физических процессов будет нарушен и результат алгоритма будет неверным. Создав ошибку в нужный момент, злоумышленник может вычислить ключ, сравнивая правильный и неправильный шифротексты. Изменение внешних условий используется для вычисления ключей в атаках по ошибкам вычислений (Fault attacks). Опять же в России этот термин устоялся не полностью: называют их и атаками с помощью ошибок, и атаками методом индуцированных сбоев, и по-другому.

    Атаки по второстепенным каналам

    Мы начнем введение в атаки по второстепенным каналам с алгоритма DES, реализованного на C++ (схема алгоритма представлена на рис. 1, а его подробное описание ищи в Сети). Помимо того что ты увидишь, в каких неожиданных местах могут скрываться уязвимости, ты также узнаешь про основные приемы, используемые в атаках по второстепенным каналам. Эти приемы необходимо прочувствовать, так как они служат основой для более сложных атак, которые будут рассмотрены в последующих статьях.

    Рис. 1. Блок-схема DES

    Атаки по времени

    Итак, атака по времени (Timing attack) на реализацию алгоритма DES. Полный код будет ждать тебя на нашем Гитхабе, нас же в данный момент интересует побитовая перестановка Р (ищи круг с буквой Р на рис. 2), выполняемая на последнем шаге блока Файстеля. В нашем случае код этой функции выполнен следующим образом:

    Рис. 2. Блок Файстеля

    С точки зрения аппаратных атак этот код содержит гигантскую уязвимость: программа будет выполнять операцию res |= one , то есть затрачивать дополнительное время (читай энергию), только если бит переменной var равен 1 . Переменная var , в свою очередь, зависит от исходного текста и ключа, поэтому, связав время работы программы со значением ключа, мы получим инструмент для атаки. Чтобы понять, как использовать связь между временем и данными, я рассмотрю два теоретических примера. Затем в третьем примере будет показано, как непосредственно найти ключ алгоритма, использующего данную реализацию.

    Сравнение ключей при идеальных измерениях

    Первый теоретический пример заключается в том, что у нас есть пять исходных текстов, идеально измеренное время шифрования каждого текста и два ключа: К1=0x3030456789ABCDEF , К2=0xFEDCBA9876540303 , из которых нужно выбрать правильный. Мы полагаем, что код не прерывался во время выполнения, данные были заранее размещены в кеше первого уровня, а время работы всех функций шифра за исключением функции DES_P было постоянным. Замечу, что шифротекстов нет, поэтому зашифровать один исходный текст с помощью двух ключей и сравнить получившиеся шифротексты с оригиналом не получится. Что в этом случае можно сделать?

    Ты уже знаешь, что переменная var влияет на время работы, которое содержит две составляющие:

    • переменное время, затрачиваемое на выполнение всех операций DES_P, которое зависит от количества бит переменной var для каждого раунда: a*(∑HW(var)) , где
      • а — это постоянная времени, фактически это количество тактов процессора, затраченных на выполнение одной операции res |= one ;
      • HW(var) — расстояние Хемминга, то есть количество бит переменной var , установленных в 1. Знак суммы ∑ означает, что мы считаем расстояние Хемминга для всех 16 раундов;
    • постоянное время, затрачиваемое на выполнение всех остальных операций, будет обозначено Т .

    Следовательно, время работы всего алгоритма равно t = a*(∑HW(var)) + T . Параметры a и T нам неизвестны, и, сразу тебя обрадую, искать мы их не будем. Время шифрования каждого исходного текста t мы измерили идеально. Также у нас есть значения ключей, поэтому мы можем рассчитать переменную var для каждого раунда.

    Я думаю, ты уже догадался, как проверить, какой из двух ключей правильный: нужно рассчитать сумму расстояний Хемминга ∑HW(var) для каждого исходного текста и одного значения ключа и сравнить получившиеся значения с измеренным временем. Очевидно, что с ростом значения ∑HW(var) время также должно увеличиваться. Следовательно, если ключ правильный, то такая зависимость будет прослеживаться, а вот для неправильного ключа такой зависимости не будет.

    Все вышесказанное можно записать в виде одной таблицы (рис. 3).

    Рис. 3. Данные для примера № 1

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

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

    Угадай число

    Мне хотелось бы показать, что происходит со случайными величинами, когда они очень долго усредняются. Если ты хорошо знаешь статистику, то сразу переходи к следующей части, в противном случае давай рассмотрим небольшую игру, где компьютер случайно выбирает натуральное число А и предлагает тебе угадать его. Каждый раз компьютер выбирает дополнительную пару чисел (b, c) из диапазона от 0 до М и возвращает тебе лишь значения (А + b, c) . Числа b и с выбираются случайно и могут быть значительно больше числа А . Значение числа М ты не знаешь (но можешь примерно догадаться о его порядке из-за разброса значений c ). Как угадать число А ?

    Программа, которая симулирует эту игру, приведена ниже:

    Согласно коду, значение А берется из диапазона от 1 до 100, а значения переменных b и с из диапазона от 0 до 999, что примерно в десять раз больше максимального значения А , то есть уровень шума значительно выше уровня самого значения! Но если пара значений (А + b, с) возвращается 100 тысяч раз (много, но и уровень шума тоже не маленький), то значение переменной А угадывается примерно в половине случаев. Для этого нужно усреднить все возвращенные значения А + b и все значения с , а затем посчитать разность средних. Эта разность и будет значением переменной А . Конечно, если мы уменьшим значение М , то и количество пар (A + b, с) , необходимых для вычисления ключа, будет меньшим.

    Теперь нужно разобраться, почему так происходит. Существует замечательный закон, который является ключевым для атак по второстепенным каналам, — закон больших чисел Чебышева. Согласно этому закону, при большом числе независимых опытов среднее арифметическое наблюденных значений μ(x) случайной величины x сходится по вероятности к ее математическому ожиданию. Если рассматривать этот закон в рамках нашей игры, сумма значений A + b и c сойдется соответственно к А + μ(b) и μ(c) , а так как значения b и c выбираются случайно из одного диапазона, то μ(b) и μ(c) будут сходиться к их математическому ожиданию, следовательно, разность А + μ(b) – μ(c) будет сходиться к значению переменной А .

    Сравнение ключей при реальных измерениях

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

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

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

    • переменное время, затрачиваемое на выполнение операции DES_P , которое зависит от количества бит переменной var : a*(∑HW(var)) . а по-прежнему постоянная времени, а HW(var) — расстояние Хемминга;
    • постоянное время, затрачиваемое на выполнение всех остальных Т ;
    • шумы измерений Δ(t) , которые нормально распределены в диапазоне [0:D] . Значение D неизвестно, и, как всегда, искать его мы не будем.

    Таким образом, время работы алгоритма можно записать в виде t = a*(∑HW(var)) + T + Δ(t) . В таблице, представленной на рис. 4, приведены значения исходных текстов и реально измеренное время для них. Замечу, что ∑HW(var) для правильного ключа и каждого исходного текста равно 254, но при этом разница между наименьшим и наибольшим временем составляет 327 тактов!

    Рис. 4. Пример реального измерения времени для одинаковых расстояний Хемминга

    При таких вариациях в измерениях простое попарное сравнение расстояний Хемминга для одного исходного текста и времени его шифрования не даст результатов. Здесь мы должны воспользоваться законом больших чисел Чебышева. Что случится, если мы будем усреднять время алгоритма для разных шифротекстов, которые дают одинаковое расстояние Хемминга ∑HW(var) :

    Фактически, когда определяется среднее арифметическое времени для различных исходных текстов, происходит усреднение шумов, и, как мы знаем из статистики, эти шумы будут сходиться к одному и тому же значению при увеличении количества измерений, то есть μ(Δ(t)) будет сходиться к константе.

    Давай посмотрим на примере. Я измерил работу 100 тысяч операций шифрования алгоритма DES, то есть у меня есть 100 тысяч исходных текстов и соответствующих времен работы. В этот раз мы будем сравнивать четыре ключа: К1=0x3030456789ABCDEF , K2=0xFEDCBA9876540303 , K3=0x2030456789ABCDEF , K4=0x3030456789ABCDED . Как и в первом примере, мы рассчитываем значение расстояний Хемминга для всех исходных текстов и ключей К1,К2,К3,К4 — это сделано в таблице, представленной на рис. 5. Ни для одного из ключей нет очевидной зависимости времени от расстояний Хемминга.

    Рис. 5. Данные для примера № 2

    Давай усредним время работы шифрований (для каждого ключа по отдельности), у которых одно и то же расстояние Хемминга (возьмем лишь те исходные тексты, для которых ∑HW(var) лежит в интервале 234,276). В этот раз мы построим график (рис. 6), где по оси Х будет отложено расстояние Хемминга, а по оси Y — среднее арифметическое времени для этого расстояния.

    Рис. 6. Зависимость между временем и расстоянием Хемминга

    Коэффициент корреляции Пирсона

    Что мы видим на рис. 6? Для трех ключей ( К2 , К3 , К4 ) время работы шифра слабо зависит от расстояния Хемминга, а для ключа К1 мы видим восходящий тренд. Обрати внимание на пилообразный вид графиков — это из-за того, что у нас не так много измерений и они не настолько точные, чтобы μ(Δ(t)) усреднилось к одному значению. Все же мы можем видеть, что среднее время работы шифра увеличивается с ростом расстояний Хемминга, посчитанных для ключа К1 , а для трех других ключей — нет. Поэтому предполагаем, что ключ К1 верный (это действительно так). С ростом количества данных восходящий тренд для правильного ключа будет разве что усиливаться, а для неправильных ключей все значения будут сходиться к среднему. «Гребенка» тоже будет исчезать с ростом количества данных.

    Согласись, строить такие графики и постоянно проверять их глазами довольно неудобно, для этого есть несколько стандартных тестов проверки зависимости между моделью и реальными данными: коэффициент корреляции, Т-тест и взаимная информация. Можно вспомнить и придумать еще парочку других коэффициентов, но мы будем в основном пользоваться коэффициентом корреляции Пирсона или, что то же самое, линейным коэффициентом корреляции pcc(x,y) (описание коэффициента есть на Wiki). Этот коэффициент характеризует степень линейной зависимости между двумя переменными. В нашем случае зависимость именно линейная, ибо μ(t) = a*(∑HW(var)) + T + μ(Δ(t)) можно представить как y = a*x + b , где x — это рассчитываемое нами расстояние Хемминга, а y — реально измеренное время. Значение коэффициента корреляции Пирсона для средних значений времени и расстояний Хемминга показано в строке «с усреднением» на рис. 7.

    Рис. 7. Коэффициенты Пирсона между моделью и временем

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

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

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

    Атака на неизвестный ключ

    Вот мы и подошли к моменту, когда ключ будет искаться частями по 6 бит. Искать 6 бит мы будем абсолютно аналогично тому, как проверяли корректность 64 бит до этого (когда работали с четырьмя ключами). Значения 6 бит ключа, которые дают самую хорошую линейную связь между моделью и реальными данными, скорее всего, будут правильными. Как это работает?

    Давай рассмотрим, как можно представить время работы шифра, когда мы ищем лишь 6 бит ключа:

    • переменное время, затрачиваемое на выполнение операции DES_P , зависящее от:
      • 4 бит переменной var первого раунда a*HW(var[1,1:4]) (6 бит ключа первого раунда участвуют в формировании 4 бит переменной var );
      • всех остальных бит переменной var за исключением 4 бит первого раунда a*(∑ HW(var[:,1:32])) ;
    • постоянное время Т ;
    • шумы измерений Δ(t) .

    Таким образом, время работы алгоритма можно записать в виде

    Еще раз по поводу 6 бит ключа и 4 бит переменной var . Блок Файстеля берет 32 бита регистра R и с помощью специальной перестановки E() получает 48 бит, которые затем складываются с 48 битами ключа. На первом раунде значение R нам известно, а ключ нет. Далее результат сложения разбивается (внимание!) на восемь блоков по 6 бит, и каждый набор из 6 бит подается на свою собственную таблицу Sbox. Каждая из восьми таблиц заменяет шесть входных бит четырьмя выходными битами, поэтому на выходе получается 32-битная переменная var , которая уже влияет на время работы шифра.

    Если мы сгруппируем время работы всех операций шифрования, для которых расстояние Хемминга HW(var[1,1:4]) одинаковое, то среднее арифметическое времени работы будет сходиться к следующему значению:

    Так как мы берем одинаковые значения HW(var[1,1:4]) и разные значения ∑ HW(var[:,1:32]) (мы берем исходные тексты, где HW(var[1,1:4]) обязательно одинаковое, а остальные части нас не интересуют, поэтому суммы ∑ HW(var[:,1:32]) будут разные), то среднее арифметическое μ(a*(∑ HW(var[:,1:32]))) будет сходиться к константе (если совсем точно, то μ(∑ HW(var[:,1:32])) без учета первых четырех бит должна сходиться к 254), точно так же, как в предыдущем примере сходилась величина μ(Δ(t)) !

    Первые четыре бита переменной var можно записать как var[1,1:4] = Sbox , где E(R)[1,1:6] — первые 6 бит регистра R после операции E() ; K[1,1:6] — первые 6 бит ключа; Sbox<> — таблица перестановки Sbox. Теперь заменим выражение для var[1,1:4] :

    Значения μ(a*(∑ HW(var[:,1:32]))) , μ(Δ(t)) сходятся к своим средним арифметическим, когда они считаются для разных исходных текстов. Следовательно, при очень большом количестве усреднений значение μ(a*(∑ HW(var[:,1:32]))) + Т + μ(Δ(t)) можно просто заменить на const :

    Чтобы найти ключ в этом выражении, нужно для каждого значения 6 бит ключа выбрать исходные тексты с одинаковым HW(Sbox) , усреднить их время выполнения и сравнить с моделью. Окончательный алгоритм поиска ключа запишем в виде псевдокода:

    Этот алгоритм был реализован на С++ (полный исходный код будет ждать тебя на нашем Гитхабе), и посчитанные коэффициенты корреляции показаны на рис. 8. Для расчета корреляции был использован миллион измерений. Комбинации битов ключа 000010 =2 дает корреляцию в четыре раза выше, чем для любого другого значения, поэтому, скорее всего, эта комбинация битов является верной. Замечу, что мы ищем ключ первого раунда, который не равен изначальному ключу.

    Рис. 8. График корреляции для всех возможных значений шести бит ключа

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

    Продолжение следует

    Пришло время закругляться. Первая статья всегда комом, ибо она может показаться легкой/непрактичной/неинтересной, но без вводной части далеко не уйдешь. Ну а в последующих мы продолжим изучение аппаратных атак, разберем, как воспользоваться потребленным питанием устройства, чтобы взломать шифр, и как восстановить ключ с помощью ошибок в вычислениях. Так что stay tuned, как говорят.

    Криптографические алгоритмы

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

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

    Базовая терминология

    В криптографической терминологии исходное послание именуют открытым текстом ( plaintext или cleartext ). Изменение исходного текста так, чтобы скрыть от прочих его содержание, называют шифрованием ( encryption ). Зашифрованное сообщение называют шифротекстом ( ciphertext ). Процесс, при котором из шифротекста извлекается открытый текст называют дешифровкой ( decryption ). Обычно в процессе шифровки и дешифровки используется некий ключ ( key ) и алгоритм обеспечивает, что дешифрование можно сделать лишь зная этот ключ.

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

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

    Алгоритмы с использованием ключа делятся на два класса: симметричные (или алгоритмы секретным ключом) и асиметричные (или алгоритмы с открытым ключом). Разница в том, что симметричные алгоритмы используют один и тот же ключ для шифрования и для дешифрования (или же ключ для дешифровки просто вычисляется по ключу шифровки). В то время как асимметричные алгоритмы используют разные ключи, и ключ для дешифровки не может быть вычислен по ключу шифровки.

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

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

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

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

    Многие качественные криптографические алгоритмы доступны широко — в книжном магазине, библиотеке, патентном бюро или в Интернет. К широко известным симметричным алгоритмам относятся DES и >Цифровые подписи

    Цифровые подписи используются для того, чтобы подтвердить, что сообщение пришло действительно от данного отправителя (в предположении, что лишь отправитель обладает секретным ключом, соответствующим его открытому ключу). Также подписи используются для проставления штампа времени ( timestamp ) на документах: сторона, которой мы доверяем, подписывает документ со штампом времени с помошью своего секретного ключа и, таким образом, подтверждает, что документ уже существовал в момент, объявленный в штампе времени.

    Цифровые подписи также можно использовать для удостоверения ( сертификации — to certify ) того, что документ принадлежит определенному лицу. Это делается так: открытый ключ и информация о том, кому он принадлежит подписываются стороной, которой доверяем. При этом доверять подписывающей стороне мы можем на основании того, что ее ключ был подписан третьей стороной. Таким образом возникает иерархия доверия. Очевидно, что некоторый ключ должен быть корнем иерархии (то есть ему мы доверяем не потому, что он кем-то подписан, а потому, что мы верим a-priori, что ему можно доверять). В централизованной инфраструктуре ключей имеется очень небольшое количество корневых ключей сети (например, облеченные полномочиями государственные агенства; их также называют сертификационными агенствами — certification authorities ). В распределенной инфраструктуре нет необходимости иметь универсальные для всех корневые ключи, и каждая из сторон может доверять своему набору корневых ключей (скажем своему собственному ключу и ключам, ею подписанным). Эта концепция носит название сети доверия ( web of trust ) и реализована, например, в PGP.

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

    Свободно доступны несколько методов создания и проверки цифровых подписей. Наиболее известным является алгоритм RSA.

    Криптографические хэш-функции

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

    Много хороших криптографических хэш-функций доступно бесплатно. Широко известные включают MD5 и SHA.

    Криптографические генераторы случайных чисел

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

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

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

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

    Обеспечиваемая шифром степень защиты

    Теоретически, любой шифровальный алгоритм с использованием ключа может быть вскрыт методом перебора всех значений ключа. Если ключ подбирается методом грубой силы ( brute force ), требуемая мощность компьютера растет экспоненциально с увеличением длины ключа. Ключ длиной в 32 бита требует 2^32 (около 10^9) шагов. Такая задача под силу любому дилетанту и решается на домашнем компьютере. Системы с 40-битным ключом (например, экспортный американский вариант алгоритма RC4) требуют 2^40 шагов — такие компьютерные мощности имеются в большинстве университетов и даже в небольших компаниях. Системы с 56-битными ключами (DES) требуют для вскрытия заметных усилий, однако могут быть легко вскрыты с помощью специальной аппаратуры. Стоимость такой аппаратуры значительна, но доступна для мафии, крупных компаний и правительств. Ключи длиной 64 бита в настоящий момент, возможно, могут быть вскрыты крупными государствами и уже в ближайшие несколько лет будут доступны для вскрытия преступными организацими, крупными компаниями и небольшими государствами. Ключи длиной 80 бит могут в будущем стать уязвимыми. Ключи длиной 128 бит вероятно останутся недоступными для вскрытия методом грубой силы в обозримом будущем. Можно использовать и более длинные ключи. В пределе нетрудно добиться того, чтобы энергия, требуемая для вскрытия (считая, что на один шаг затрачивается минимальный квантовомеханический квант энергии) превзойдет массу солнца или вселенной.

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

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

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

    Чтобы дать представление о степени сложности вскрытия RSA, скажем, что модули длиной 256 бит легко факторизуются обычными программистами. Ключи в 384 бита могут быть вскрыты исследовательской группой университета или компании. 512-битные ключи находятся в пределах досягаемости крупных государств. Ключи длиной в 768 бит вероятно не будут надежны продолжительное время. Ключи длиной в 1024 бит могут считаться безопасными до тех пор, пока не будет существенного прогресса в алгоритме факторизации; ключи длиной в 2048 большинство считает надежными на десятилетия. Более подробную информацию о длинах ключей RSA можно почерпнуть из статьи Брюса Шнайера (Bruce Scheier).

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

    Криптоанализ и атаки на криптосистемы

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

  • Атака с помощью таймера ( timing attack ): Этот новый тип атак основан на последовательном измерении времен, затрачиваемых на выполнение операции возведения в стенень по модулю целого числа. Ей подвержены по крайней мере следующие шифры: RSA, Диффи-Хеллман и метод эллиптических кривых. Дополнительную информацию смотрите в оригинальной статье и во множестве последовавших статей.

  • Имеется множество других криптографических атак и криптоаналитических подходов. Однако приведенные выше являются, по-видимому, наиболее важными для практической разработки систем. Если кто-либо собирается создавать свой алгоритм шифрования, ему необходимо понимать данные вопросы значительно глубже. Одно из мест, где можно начать систематическое изучение информации — это замечательная книга Брюса Шнейера «Прикладная криптография» (Bruce Schneier, Applied Cryptography).

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

    Типы алгоритмов шифрования

    Читайте также:

    1. I. Стандартные процедуры реализации условных алгоритмов в среде VBA.
    2. Алгоритмов работы с величинами
    3. Алгоритмы блочного шифрования: DES и ГОСТ 28147-89
    4. Асимметричные алгоритмы шифрования
    5. Достоинства и недостатки генетических алгоритмов
    6. Использование алгоритмов порождения комбинаторных объектов при решения задач выбора
    7. Количество алгоритмов AES
    8. Лабораторная работа №2.Реализация и исследование временных характеристик алгоритмов порождения комбинаторных объектов.
    9. МАС на основе алгоритма симметричного шифрования
    10. Модификация алгоритмов
    11. Общие правила создания схем алгоритмов
    12. Основные свойства алгоритмов

    Время жизни информации

    Тип информации Время жизни
    Военная тактическая информация мин/ч
    Информация о выпуске продукции дни/недели
    Долгосрочные бизнес-проекты годы
    Производственные секреты десятилетия
    Секрет создания водородной бомбы Более 40 лет
    Информация о разведчиках Более 50 лет
    Личная информация Более 50 лет
    Дипломатическая тайна Более 65 лет
    Информация о переписи населения 100 лет

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

    § Наличие вероятных слов. Это слова или выражения, появление которых можно ожидать в перехваченном сообщении (например, для английского текста – «and», «the», «аrе» и др.).

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

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

    § Запутывание. Развитие принципа рассеивания. В нём влияние одного символа ключа распространяется на множество символов зашифрованного

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

    Примерами изложенных методов служат стандарты шифрования DES и ГОСТ 28147-89.

    Существует два основных типа алгоритмов шифрования:

    § алгоритмы симметричного шифрования;

    § алгоритмы асимметричного шифрования.

    Симметричное шифрование.

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

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

    Неизбежно возникаем проблема: как передать ключ и при этом не позволить злоумышленникам перехватить его.

    Преимущества криптографии с симметричными ключами:

    · Высокая стойкость. При прочих равных условиях стойкость криптографического алгоритма определяется длиной ключа. При длине ключа 256 бит необходимо произвести 10 77 переборов для его определения.

    Недостатки криптографии с симметричными ключами.

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

    § Масштабируемость. Так как и отправитель, и получатель используют единый ключ, количество необходимых ключей возрастает в геометрической прогрессии в зависимости от числа участников коммуникации. Для обмена сообщениями между 10 пользователями необходимо иметь 45 ключей, а для 1000 пользователей – уже 499 500.

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

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

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

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

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

    Асимметричная схема идеально сочетается с использованием общедоступных сетей передачи сообщений (например, Интернет). Любой абонент сети может совершенно свободно переслать открытый ключ своему партнеру по переговорам, а последний, в роли отправителя сообщения, будет использовать этот ключ при шифровании отсылаемого сообщения (рис. 2). Это сообщение сможет расшифровать своим личным ключом только получатель сообщения, который отсылал раньше соответствующий открытый ключ. Злоумышленник, перехвативший такой ключ, сможет воспользоваться им только с единственной целью – передавать законному владельцу ключа какие-нибудь зашифрованные сообщения.

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

    Рис. 2. Асимметричная схема шифрования

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

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

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

    Дата добавления: 2014-12-27 ; Просмотров: 4118 ; Нарушение авторских прав? ;

    Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

    Илон Маск рекомендует:  Два фона и больше
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL