Вводная

Цель работы

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

Введение

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

  • "Золотой жук" Эдгара По - небольшой рассказ про простейшее шифрование методом подстановки и его взлом при помощи частнотного анализа.
  • "Криптономикон" Нила Стивенсона - исторический роман с привкусом киберпанка, в котором достаточно правдоподобно показана криптография, и неотъемлимым сюжетом книги являются фрагменты кода на Perl.
  • Чтобы оценить важность этой науки, история которой, кстати, насчитывает более 4000 лет, можно так же почитать про Алана Тьюринга.

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

  • Симметричное шифрование. Заключается в том, что обе стороны-участники обмена данными имеют абсолютно одинаковые ключи для шифрования и расшифровки данных. Данный способ осуществляет преобразование, позволяющее предотвратить просмотр информации третьей стороной.
  • Асимметричное шифрование. Предполагает использовать в паре два разных ключа — открытый и секретный. В асимметричном шифровании ключи работают в паре — если данные шифруются открытым ключом, то расшифровать их можно только соответствующим секретным ключом и наоборот — если данные шифруются секретным ключом, то расшифровать их можно только соответствующим открытым ключом. Использовать открытый ключ из одной пары и секретный с другой — невозможно. Каждая пара асимметричных ключей связана математическими зависимостями. Данный способ также нацелен на преобразование информации от просмотра третьей стороной.
  • Цифровые подписи. Цифровые подписи используются для установления подлинности документа, его происхождения и авторства, исключает искажения информации в электронном документе.
  • Хеширование. Преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют, хеш-кодом, контрольной суммой или дайджестом сообщения (англ. message digest). Результаты хэширования статистически уникальны. Последовательность, отличающаяся хотя бы одним байтом, не будет преобразована в то же самое значение.

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

  • DES (Data Encryption Standart). DES (англ. data encryption standard) — алгоритм для симметричного шифрования, разработанный фирмой IBM и утверждённый правительством США в 1977 году как официальный стандарт (FIPS 46-3). Прямым развитием DES в настоящее время является алгоритм Triple DES (3DES). В 3DES шифрование/расшифровка выполняются путём троекратного выполнения алгоритма DES.

    Общественная организация «EFF», занимающаяся проблемами информационной безопасности и личной тайны в сети Internet, инициировала исследование «DES Challenge II» с целью выявления проблем DES. В рамках исследования сотрудники фирмы «RSA Laboratory» построили суперкомпьютер стоимостью 250 тыс. долл. В 1998 году суперкомпьютер выполнил расшифровку данных, закодированных методом DES с использованием 56-битного ключа, менее чем за три дня. Суперкомпьютер получил название «EFF DES Cracker». Специально по этому случаю учёные организовали пресс-конференцию и с беспокойством говорили о том, что злоумышленники вряд ли упустят случай воспользоваться подобной уязвимостью. Некоторые правительственные чиновники и специалисты утверждали, что для взлома кода DES требуется суперкомпьютер стоимостью в несколько миллионов долларов. «Правительству пора признать ненадёжность DES и поддержать создание более мощного стандарта шифрования», — сказал президент EFF Барри Штайнхардт. Экспортные ограничения, накладываемые правительством США, касаются технологий шифрования по ключам длиной более 40 бит. Однако, как показали результаты эксперимента RSA Laboratory, существует возможность взлома и более мощного кода. Проблема усугублялась тем, что стоимость постройки подобного суперкомпьютера неуклонно снижалась. «Через четыре-пять лет такие компьютеры будут стоять в любой школе», — заявил Джон Гилмор, руководитель проекта «DES Challenge» и один из основателей EFF.
  • Triple DES (3DES) — симметричный блочный шифр, созданный Уитфилдом Диффи, Мартином Хеллманом и Уолтом Тачманном в 1978 году на основе алгоритма DES с целью устранения главного недостатка последнего — малой длины ключа (56 бит), который может быть взломан методом полного перебора ключа. Скорость работы 3DES в 3 раза ниже, чем у DES, но криптостойкость намного выше — время, требуемое для криптоанализа 3DES, может быть в миллиард раз больше, чем время, нужное для вскрытия DES.
  • MD5. 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или дайджестов сообщения произвольной длины и последующей проверки их подлинности. Широко применялся для проверки целостности информации и хранения паролей в закрытом виде. Взлом данного алгоритма возможен путем перебора по словарю и для хранения действительно чувствительно данных рекомендуется его не использовать.
  • IDEA (International Data Encryption Algorithm). Международный алгоритм шифрования данных. Работает с блоками длиной 64 бита и использует 128-битный ключ. Так же известен тем, что применяется в пакете программ шифрования PGP. Так как IDEA использует 128-битный ключ и 64-битный размер блока, открытый текст разбивается на блоки по 64 бит. Если такое разбиение невозможно, последний блок дополняется различными способами определённой последовательностью бит. Для избежания утечки информации о каждом отдельном блоке используются различные режимы шифрования. Каждый исходный незашифрованный 64-битный блок делится на четыре подблока по 16 бит каждый, так как все алгебраические операции, использующиеся в процессе шифрования, совершаются над 16-битными числами. Для шифрования и расшифровки IDEA использует один и тот же алгоритм.
  • RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел. Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений, включая PGP, S/MIME, TLS/SSL, IPSEC/IKE и других.
  • BLOWFISH - криптографический алгоритм, реализующий блочное симметричное шифрование с переменной длиной ключа. Разработан Брюсом Шнайером в 1993 году. Представляет собой сеть Фейстеля. Выполнен на простых и быстрых операциях: XOR, подстановка, сложение. Является незапатентованным и свободно распространяемым. Blowfish зарекомендовал себя как надёжный алгоритм, поэтому реализован во многих программах, где не требуется частая смена ключа и необходима высокая скорость шифрования/расшифровывания
  • Twofish — симметричный алгоритм блочного шифрования с размером блока 128 бит и длиной ключа до 256 бит. Число раундов 16. Разработан группой специалистов во главе с Брюсом Шнайером. Являлся одним из пяти финалистов второго этапа конкурса AES. Алгоритм разработан на основе алгоритмов Blowfish, SAFER и Square.

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

    Изучение Twofish с сокращенным числом раундов показало, что алгоритм обладает большим запасом прочности, и, по сравнению с остальными финалистами конкурса AES, он оказался самым стойким.
  • CRC32. Это 32-битовая CRC (Cyclical Redundancy Checking, или циклический контроль с помощью избыточных кодов). Этот алгоритм используется для проверки целостности файлов при шифрованной передаче.
  • SHA (Secure Hash Algorithm). Безопасный алгоритм хэширования, используется в компьютерных системах оборонных ведомств. Существует алгоритм SHA-1, SHA-2 и SHA-3. Суть SHA-1 состоит в том, что для входного сообщения произвольной длины (максимум 264-1 бит, что равно 2 эксабайта) алгоритм генерирует 160-битное хеш-значение, называемое также дайджестом сообщения. Используется во многих криптографических приложениях и протоколах. Также рекомендован в качестве основного для государственных учреждений в США. Принципы, положенные в основу SHA-1, аналогичны тем, которые использовались Рональдом Ривестом при проектировании MD4. SHA-2 является улучшенной версией данного алгоритма.

    Национальный институт стандартов и технологий США (англ. National Institute of Standards and Technology, сокращённо NIST) создал конкурс на новую криптографическую хеш-функцию, названную SHA-3, для дополнения и дальнейшей замены старых функций: SHA-1 и SHA-2. Конкурс был анонсирован в журнале Federal Register 2 ноября 2007 года. NIST инициировал разработку одного или нескольких дополнительных алгоритмов хеширования через открытый конкурс, подобный процесс развития был использован ранее для шифрования Advanced Encryption Standard (сокращённо AES). Конкурс завершился 2 октября 2012 года, когда NIST объявил, что Keccak будет новым SHA-3 хеш-алгоритмом

    Изначально организаторы конкурса предполагали заменить старые хеш-функции победителем, так как в 2006 году возникло предположение, что в будущем надежность хеш-функции SHA-2 значительно снизится из-за роста мощности и производительности устройств, а также из-за появления новых методов криптоанализа. Но к 2013 году так и не было предложено ни одной достаточно серьезной атаки на SHA-2, и, по мнению Брюса Шнайера, переход на SHA-3 не являлся необходимым.
  • xTEA (Tiny Encryption Algorithm). Это достаточно простой алгоритм шифрования, используется в приложении с ограниченным размером кода. Длина ключа 128 бит, длина блока 64 бит. В криптографии, XTEA (eXtended TEA) — блочный шифроалгоритм, призванный устранить критические ошибки алгоритма TEA. Разработчиками шифра являются Дэвид Уилер и Роджер Нидхэм (факультет компьютерных наук Кэмбриджского университета). Алгоритм был представлен в неизданном техническом отчете в 1997 году . Шифр не патентован, широко используется в ряде криптографических приложений и широком спектре аппаратного обеспечения благодаря крайне низким требованиям к памяти и простоте реализации.

Детальное описание каждого вида шифрования можно посмотреть в пособии к курсу лекций.

Задание

  • Под каждый вид шифрования из перечисленных выше, сделайте реализацию на удобном языке разработки. Можно как использовать как готовые библиотеки и функции (openssl, strtr, md5, sha1, etc...), так и реализовать свои варианты.
  • Реализовать алгоритм взлома моноалфавитного шифра методом частотного анализа (с демонстрацией).

Вопросы

  1. Перечислите, какие бывают виды шифрования.
  2. Для чего используются функции хэширования?
  3. С какими основными опасностями вы сталкиваетесь при попытке безопасного шифрования?
  4. Объясните принцип ассиметричного шифрования.
  5. Какие есть методы взломы моноалфавитного шифра?
  6. Как можно узнать исходный пароль по хэшу?