Существует ли в природе шифрование. Криптография и главные способы шифрования информации. Криптография – не просто какая-то компьютерная штука

Существует ли в природе шифрование. Криптография и главные способы шифрования информации. Криптография – не просто какая-то компьютерная штука

15.03.2019

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

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

Запомнить такое большое количество паролей практически невозможно.

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

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

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

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

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

№1. KeePass – OpenSource c человеческим лицом

Её главное преимущество – свободная лицензия, которая позволяет пользоваться всеми функциями софта бесплатно.

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

Начать пользоваться KeePass несложно, достаточно выполнить всего несколько простых действий:

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

Совет! На данный момент поддерживается две ветки программы версии 1.XX и 2.XX, причём вторая имеет обратную совместимость с первой. Рекомендуем выбрать именно версию 2, так как она обладает улучшенной системой шифрования и расширенными возможностями экспорта данных.

  • Далее необходимо создать новую базу паролей. Для этого используем команду Файл-Новый на панели инструментов. Здесь вводим придуманный мастер-пароль и запоминаем его, так как он потребуется при каждом новом запуске KeePass.
    Также в этом окне можно выбрать такие дополнительные меры защиты, как Ключевой Файл или Учётная запись Windows.

  • Рабочий интерфейс KeePass довольно интуитивен. Создать новую запись можно при помощи значка ключ с зелёной стрелкой на панели инструментов или используя Правка-Создать запись. Меню новой записи выглядит так:

Совет! KeePass поддерживает функцию автонабора, которую можно активировать при помощи хоткея Ctrl +Alt +A . При нажатии этой комбинации поля входа в аккаунт будут заполнены автоматически. Корректно настроить эту функцию можно в меню каждой записи, перейдя во вкладку Автонабор.

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

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

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

№2. LastPass – современный дизайн и юзабилити

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

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

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

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

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

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

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

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

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

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

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

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

Именно эти возможности являются основной причиной популярности данного приложения.

Нельзя не упомянуть, что в 2015 сервера LastPass были взломаны, в результате чего сотни тысяч учётных записей попали в руки злоумышленников.

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

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

№3. Dashlane – многофункциональное коммерческое решение

Особенностью данного менеджера паролей является его ориентация на организацию безопасных интернет-платежей .

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

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

Также довольно успешно реализована кроссплатформенность, позволяющая импортировать данное хранилище для Андроид, Windows, iOS и Mac .

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

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

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

Совет! Русская локализация отсутствует, поэтому если вы не в ладах с самыми популярными языками, такими как английский, немецкий или испанский, то Dashlane вам не подойдёт.

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

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

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

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

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

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

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

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

При этом KeePass остаётся единственным кросплатформенным OpenSource решением, проверить надёжность которого может каждый.

Видеоматериалы:

Менеджер паролей KeePass Password Safe (обзор программы)

Обзор и использование бесплатного и удобного менеджера паролей KeePass Password Safe в портабельном варианте.

Где хранить пароли. Обзор LastPass

Где хранить пароли? Такой вопрос для меня уже не актуален, так как я храню свои пароли в хранилище LatPass.

Программы для хранения паролей: ТОП-3 надежных хранилища


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

Чтобы отличие между блочными и поточными шифрами стало понятнее, приведем пример на простом шифре замены.

Поточное шифрование

Зашифруем поточным шифром замены слово CIPHER:

Зашифровали каждый символ и получили шифротекст. Проще простого.

БЛОЧНОЕ ШИФРОВАНИЕ

Зашифруем слово AVADAKEDAVRA. Поскольку шифр блочный, открытый текст разобьем на блоки по четыре символа: AVAD | AKED | AVRA (на практике блоки текста состоят из 64-256 бит). Для каждого блока придумаем свою таблицу замены:

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

СЕТЬ ФЕЙСТЕЛЯ

Теперь мы готовы перейти к очень важной теме, которая открывает дверь в бескрайний мир современных систем шифрования. Сеть Фейстеля - это метод блочного шифрования, разработанный Хорстом Фейстелем в лаборатории IBM в 1971 году. Сегодня сеть Фейстеля лежит в основе большого количества криптографических протоколов. Попробуем разобрать «на пальцах», что же она собой представляет.

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

  • Блок разбивается на две равные части - левую (L) и правую (R).
  • После разбиения левый подблок изменяется функцией f с использованием ключа K: x = f(L, K). В качестве функции можно представить себе какое угодно преобразование — например, старый добрый шифр сдвига с ключом К.
  • Полученный подблок складывается по модулю 2 с правым подблоком R, который до этого был не у дел: х=х+R
  • Далее полученные части меняются местами и склеиваются.

Как видишь, все достаточно просто. Для того чтобы понять, как это работает, посмотри на схему:

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

Теперь посмотрим работу сети Фейстеля на примере. Возьмем слово AVADAKEDAVRA и разобьем его на два блока по шесть символов - AVADAK | EDAVRA. За функцию возьмем шифр сдвига на число позиций, определенных раундовым ключом. Пусть секретный ключ K = . В качестве раундовых ключей возьмем K = 1, K = 2. Для сложения по модулю 2 переведем текст в двоичный код согласно телеграфному алфавитику , которым вряд ли кто-то еще пользуется вообще.

Вот что получилось:

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

Второй блок попробуй зашифровать сам, у меня получилось MOSSTR.

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

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

ГОСТ 28147-89 (МАГМА)

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

Основные характеристики: ключ 256 бит, блок 64 бита.

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

ГОСТ 28147 весьма скупо характеризует свои таблицы замены. Говорится лишь о том, что они являются дополнительным секретным элементом (наряду с секретным ключом) и «поставляются в установленном порядке». Больше ничего. С момента принятия ГОСТ 28147 научно-техническая неопределенность, связанная с выбором S-боксов, порождала слухи и домыслы. Ходили разговоры о секретных критериях, известных только разработчикам ГОСТа. Естественно, что эта неопределенность снижала доверие к криптосистеме.

Этот недостаток дал отличную почву для критики стандарта. Французский криптограф Николя Куртуа опубликовал несколько статей, содержащих ряд спорных положений относительно стойкости ГОСТа. Куртуа считает, что на российский стандарт легко построить атаку и его никак нельзя причислять к международным. Однако свой анализ Куртуа проводит для S-боксов, отличных от действующих, так что не стоит полагаться на его мнение.

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

Режим простой замены

В режиме простой замены на 32 раунда, согласно стандарту, нам нужно 32 раундовых ключа. Для генерации раундовых ключей исходный 256-битный ключ разбивается на восемь 32-битных блоков: K1…K8. Ключи K9…K24 являются циклическим повторением ключей K1…K8. Ключи K25…K32 являются ключами K8…K1.

  1. Каждый блок 64 бита делится на два подблока - Ai и Bi.
  2. Левый подблок Ai складывается по модулю 232 с раундовым ключом K1: Ai+1 = Ai + Ki mod 232.
  3. Левый подблок проходит через S-бокс.
  4. Биты левого подблока сдвигаются на 11 позиций (циклический сдвиг).
  5. Левый подблок складывается с правым по модулю 2: A = A ⊕ B . iii
  6. Правый подблок принимает первоначальное значение левого подблока: Bi+1 = Ai.
  7. Подблоки меняются местами.

Сразу пример одного раунда. Ключ 256 бит:

arvadek adava arvadek adava arvadek adava arvadek adava arva

00011 01010 11110 00011 01001 00001 01111 00011 01001 00011 11110

00011... . . . 00011 01010 11110 0

Тогда раундовые ключи

K1 = 00011 01010 11110 00011 01001 00001 01

K2 = 111 00011 01001 00011 11110 00011 0001

K3 = . . .

S - бокс= [ 1 , 15 , 13 , 0 , 5 , 7 , 10 , 4 , 9 , 2 , 3 , 14 , 6 , 11 , 8 , 12 ]

Как пользоваться таким S-боксом? Очень просто! Если на входе S-бокса 0, то на выходе будет 1 (берем 0-й символ S-бокса), если 4, то на выходе будет 5 (берем 4-й символ), если на входе 7, то на выходе 4, и так далее.

Открытый текст:

Делится на два 32-битных блока старших и младших битов:

Пример, конечно, вышел дикий, потому что ГОСТ - это все-таки не такой стандарт, чтоб каждый мог его ручками перебирать.

Режим простой замены чересчур простой и имеет существенные недостатки:

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

Таким образом, применять ГОСТ 28147-89 в режиме простой замены желательно лишь для шифрования ключевых данных.

РЕЖИМ ГАММИРОВАНИЯ

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

А теперь все по порядку.

Шаги 3–5 повторяются для каждого блока. Все эти манипуляции можно посмотреть на схеме.

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

Режим гаммирования с обратной связью

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

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

Режим имитовставки

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

1. Блок открытого текста проходит 16 раундов в режиме простой замены.
2. К полученному блоку по модулю 2 прибавляется еще один блок открытого текста.
3. Сумма проходит еще 16 раундов в режиме простой замены.
4. Прибавляется следующий блок открытого текста и опять простая замена и так далее, пока не кончатся блоки открытого текста.

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

ГОСТ 34.12-2015 (КУЗНЕЧИК)

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

Основные характеристики: ключ 256 бит, блок 128 бит.

Также стоит сказать, что в новом стандарте S-боксы фиксированы и продуманны, так что не стоит изобретать свои чудо-случайные подстановки. В новом ГОСТе режимов шифрования стало гораздо больше:
режим простой замены (Electronic Codebook, ЕСВ);
режим гаммирования (Counter, CTR);
режим гаммирования с обратной связью по выходу (Output Feedback, OFB);
режим простой замены с зацеплением (Cipher Block Chaining, СВС);
режим гаммирования с обратной связью по шифротексту (Cipher Feedback,CFB);
режим выработки имитовставки (Message Authentication Code algorithm).

Рассмотрим новые режимы.

Режим простой замены с зацеплением

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

  1. Инициализирующий вектор - звучит страшно, но на деле всего лишь последовательность битов, поступающая на вход.
  2. Вектор разбивается на две части - L и R, одна из которых складывается по модулю 2 с открытым текстом, а другая становится половинкой инициализирующего вектора для следующего блока.
  3. Сумма открытого текста и кусочка инициализирующего вектора проходит через шифр простой замены.
  4. Полученные блоки зашифрованного текста склеиваются.

Стоит посмотреть на схему, и сразу все становится ясно.

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

Для плюсов - Encryptions . Среди отечественных разработок это криптопровайдер КриптоПро CSP .

Пара слов о стойкости режимов шифрования. Немало зарубежных криптографов пытались поднять руку на наш стандарт, однако на данный момент не известно ни одной атаки, которая может быть реализована на современном технологическом уровне развития. Среди программистов этот стандарт долгое время был не слишком популярен, так как из его текста понять алгоритм работы тяжело, а более четких описаний маловато. Но сейчас уже полно реализаций на многих языках программирования. Так что теперь использование ГОСТа вполне реально, и по многим параметрам он превосходит зарубежные стандарты. В конце концов, где же патриотизмъ?!

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

Roadmap

Это четвертый урок из цикла «Погружение в крипту». Все уроки цикла в хронологическом порядке:

  • Основы и исторические шифраторы. Как работают (и анализируются) шифры сдвига, замены, Рихарда Зорге, шифр Вернама и шифровальные машины
  • Что это такое, как выполняется распределение ключей и как выбрать криптостойкий ключ
  • Что такое сеть Фейстеля и какими бывают отечественные блочные шифры, используемые в современных протоколах, - ГОСТ 28147-89, «Кузнечик»
  • Урок 4. Современные зарубежные шифры. В чем разница между 3DES, AES, Blowfish, IDEA, Threefish от Брюса Шнайера и как они работают (ты здесь)
  • Виды электронных подписей, как они работают и как их использовать
  • Урок 6. Квантовая криптография. Что это такое, где используется и как помогает в распределении секретных ключей, генерации случайных чисел и электронной подписи

3DES

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

DES разработан командой математиков научной лаборатории IBM, в которую входил уже знакомый нам Фейстель. Первая версия шифра получила имя «Люцифер», но затем он был модифицирован и в результате принят как официальный алгоритм шифрования данных (DEA). На протяжении более двадцати лет он оставался мировым стандартом, прежде чем его сменил Triple DES.

Рассмотрим, как работает алгоритм шифрования DES. Для этого необходимо вспомнить работу сети Фейстеля. DES - это сеть Фейстеля из 16 раундов с симметричными ключами шифрования. Длина блока текста - 64 бита, длина раундового ключа - 48 бит. Итак, пройдем основные этапы шифрования DES, опуская суровую математическую сторону:

  1. Текст, как и при любом другом шифровании, разбивается на блоки по 64 бита.
  2. Из 56-битного ключа генерируется 16 48-битных раундовых ключиков.
  3. Каждый блок подвергается перестановке, то есть все биты входного блока перемешиваются согласно определенной таблице.
  4. Блок расщепляется на половинки и поступает в знакомую нам сеть Фейстеля, где прокручивается 16 раундов.
  5. Соединяем половинки.
  6. И еще одна перестановка.

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

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

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

Но если взять компьютер с одним миллионом процессорных ядер, которые будут параллельно обрабатывать ключи, мы сможем проверить все множество ключей приблизительно за 20 часов. Когда был введен DES, стоимость такого компьютера равнялась нескольким миллионам долларов, но она быстро снизилась. Специальный компьютер был создан в 1998 году - и нашел ключ за 112 часов.

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

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

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


Замечательный DES

Так что же в DES такого замечательного? Этот алгоритм шифрования был подвергнут тщательному анализу. DES обладал двумя очень важными качествами блочных шифров - лавинностью и полнотой. Настало время расширить свой криптографический словарик!
Лавинный эффект означает, что небольшие изменения в исходном тексте (или ключе) могут вызвать значительные изменения в зашифрованном тексте.

Было доказано, что DES имеет все признаки этого свойства.

Хотя два блока исходного текста не совпадают только самым правым битом, блоки зашифрованного текста отличаются на 29 бит. Это означает, что изменение приблизительно в 1,5% исходного текста вызывает изменение приблизительно 45% зашифрованного текста.

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

Где же применяется DES? Да почти везде, его реализации присутствуют в большинстве программных библиотек. Однако кто знает, насколько использование DES безопасно в наше время? Хотя IBM утверждала, что работа алгоритма была результатом 17 человеко-лет интенсивного криптоанализа, некоторые люди опасались, не вставило ли NSA в алгоритм лазейку, которая позволяет агентству легко дешифровывать перехваченные сообщения. Комитет по разведке сената США тщательно изучал этот вопрос и, разумеется, ничего не обнаружил, обвинения с NSA были сняты, результаты исследования тем не менее засекречены. Одним словом, в Америке еще долго крутились слухи и домыслы насчет того, стоит доверять DES или нет. Но, как я считаю, здесь ситуация описывается поговоркой «Умный не скажет, дурак не поймет». В конце концов NSA признало, что не могло доверить IBM столь важную миссию и внесло несколько корректировок вроде задания S-боксов.

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



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows