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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.08.2012
Размер файла 2,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Оглавление

  • Введение
  • 1. Теоретическая часть криптографической защиты файлов
  • 1.1 Задачи криптографии
    • 1.2 Работа криптографии
    • 1.3 Тpебования к кpиптосистемам
    • 1.4 Режимы шифрования
    • 1.4.1 Электронная кодовая книга
    • 1.4.2 Сцепление блоков по шифротексту
    • 1.4.3 Обратная загрузка шифротекста
    • 1.4.4 Обратная загрузка выходных данных
    • 1.5 Аутентификация. Контроль целостности
    • 1.5.1 Задача имитозащиты данных
    • 1.5.2 Подходы к контролю неизменности данных
    • 1.6 Обзор существующих программных криптографических средств защиты данных
    • 1.6.1 Линейка eToken
    • 1.6.2 Программа шифрования и аутентификации данных PGP
    • 1.6.3 Программа шифрования данных TrueCrypt
    • 1.7 Выводы по главе
    • 1.8 Постановка задачи
    • 2. Алгоритмическая реализация криптографической защиты файлов
    • 2.1 Алгоритм хэш-функции SHA-512
    • 2.2 Алгоритм контрольной суммы CRC-64
    • 2.3 Алгоритм шифрования RC6
    • 2.4 Алгоритм шифрования IDEA
    • 3. Програмная реализация криптографической защиты файлов
    • 3.1 Выбор обоснования языка программирования
    • 3.2 Организация данных
    • 3.3 Основные структуры данных
    • 3.4 Общая схема программного средства
    • 3.5 Создание USB-ключа и нового пользователя
    • 3.6 Вход в систему
    • 3.7 Основные модули программы
    • 3.7.1 Модуль вычисления контрольной суммы
    • 3.7.2 Модуль алгоритма шифрования RC6
    • 3.7.3 Модуль алгоритма шифрования IDEA
    • 3.7.4 Модуль создания архива
    • 3.7.5 Модуль создания USB-ключа
    • 3.8 Выводы по главе
    • 4. Контрольный пример
    • 4.1 Запуск программы
    • 4.2 Сообщения оператору
    • 4.3 Пример шифрования и расшифрования файлов
    • 4.4 Выводы по главе
  • Заключение
    • Список источников
    • Приложения

Введение

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

Среди криптографических программных средств с платной лицензией здесь можно выделить продукты eToken и ruToken [2], среди свободно распространяемых программ - PGP, TrueCrypt. Однако данные программы обладают рядом недостатков - они либо платные, либо являются продуктами иностранного производства, где не гарантировано отсутствие закладок. Также порой бесплатные программы не имеют документированного сопровождения на русском языке. Еще одной проблемой бесплатных программ является использование морально устаревших алгоритмов шифрования, в то время, как реализация принципиально новых алгоритмов шифрования дает хорошие результаты [3]. В программных средствах практически не используемым остается многоэтапная аутентификация посредством USB-ключа, что также является большим недостатком таких систем.

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

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

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

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

  • 1. Теоретическая часть криптографической защиты файлов

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

1.1 Задачи криптографии

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

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

Буpное pазвитие кpиптогpафические системы получили в годы пеpвой и втоpой миpовых войн. Начиная с послевоенного вpемени и по нынешний день появление вычислительных сpедств ускоpило pазpаботку и совеpшенствование кpиптогpафических методов [4].

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

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

Пpоблемой защиты инфоpмации путем ее пpеобpазования занимается кpиптология (kryptos - тайный, logos - наука). Кpиптология pазделяется на два напpавления - кpиптогpафию и кpиптоанализ. Цели этих напpавлений пpямо пpотивоположны.

Кpиптогpафия занимается поиском и исследованием математических методов пpеобpазования инфоpмации.

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

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

- симметpичные кpиптосистемы;

- кpиптосистемы с откpытым ключом;

- системы электpонной подписи;

- упpавление ключами.

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

1.2 Работа криптографии

Кpиптогpафия дает возможность пpеобpазовать инфоpмацию таким обpазом, что ее пpочтение (восстановление) возможно только пpи знании ключа.

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

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

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

Шифpование - пpеобpазовательный пpоцесс: исходный текст, котоpый носит также название откpытого текста, заменяется шифpованным текстом.

Рисунок 1 - Схема шифрования.

Расшифрование - обpатный шифpованию пpоцесс. На основе ключа шифpованный текст пpеобpазуется в исходный.

Рисунок 2 - Схема расшифровывания.

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

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

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

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

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

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

Для совpеменных кpиптогpафических систем защиты инфоpмации сфоpмулиpованы следующие общепpинятые тpебования [1]:

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

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

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

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

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

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

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

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

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

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

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

1.4 Режимы шифрования

Далее будут рассмотрены пять режимов шифрования так, как они представлены в документе [5], изданном НИСТ США и озаглавленном «Рекомендации для режимов шифрования с блочным шифром». Вот эти режимы:

- ECB (Electronic Code Book) - электронная кодовая книга;

- CBC (Cipher Block Chaining) - сцепление блоков по шифротексту;

- CFB (Cipher Feed Back) - обратная загрузка шифротекста;

- OFB (Output Feed Back) - обратная загрузка выходных данных;

- CTR (Counter) - шифрование со счетчиком.

При этом основными являются первые четыре режима шифрования. Последний режим (CTR) появился позже - спустя три года после принятия первого стандарта шифрования [1].

Стоит отметить, что в ГОСТ 28147-89 отсутствует режим OFB, а соотнести названия режимов с классификацией НИСТ можно следующим образом [1]:

- ECB (Electronic Code Book) - режим Простой замены;

- CBC (Cipher Block Chaining) - режим Выработка Имитовставки;

- CFB (Cipher Feed Back) - режим Гаммирования с обратной связью;

- CTR (Counter) - режим Гаммирования.

криптографический защита шифрование кодирование

1.4.1 Электронная кодовая книга

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

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

В ECB использованию одной страницы кодовой книги при зашифровании соответствует применение к входным данным преобразования функцией CIPHK, а при расшифровании - CIPH-1K. Обоим сторонам для того, чтобы синхронизироваться достаточно договориться о значении секретного ключа K [5]. Вообще этот режим является самым простым и первым приходящим на ум способом использования блочного шифра для шифрования сообщений. Он проиллюстрирован на рисунке 3.

Рисунок 3 - Режим шифрования электронная кодовая книга.

Как видно из рисунка весь алгоритм ECB состоит в применении напрямую функций CIPHK и CIPH-1K к сообщению и шифротексту для зашифрования и расшифрования соответственно, что также может быть выражено в виде уравнений:

ECB зашифрование: Cj= CIPHK(Pj), где j=1…n

ECB расшифрование: Pj= CIPH-1K(Cj), где j=1…n

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

Pj - очередной, j-ый блок открытого текста;

Cj - очередной, j-ый блок зашифрованного текста.

Таким образом шифрование происходит блоками, соответствующими размеру входных/выходных данных для функций CIPHK и = CIPH-1K. Блоки шифруются отдельно и независимо друг от друга, что позволяет делать это параллельно. Это достоинство режима ECB и его простота скрадываются двумя значительными недостатками. Первый - то, что длина сообщения должна быть кратна длине блока входных данных блочного шифра, то есть все сообщение либо можно разбить на целое число таких блоков, либо необходимо каким-то образом дополнять последний блок не несущими информацию данными. Второй недостаток еще более существенный - если на вход подается одинаковая последовательность, то после шифрования выход также будет одинаковым. А это может дать ключ к анализу содержания сообщения.

1.4.2 Сцепление блоков по шифротексту

В режиме шифрования CBC происходит «сцепливание» всех блоков сообщения по шифротексту. Как это достигается - видно из рисунка 4, иллюстрирующего этот режим шифрования.

Рисунок 4 - Режим шифрования сцепление блоков по шифротексту.

Как видно из рисунка в алгоритме шифрования на вход функции CIPHK каждый раз подается результат суммирования по модулю 2 открытых данных очередного блока сообщения и выходных данных функции CIPHK для предыдущего блока. Поскольку выходные данные функции CIPHK для очередного блока идут прямо на выход алгоритма CBC, то есть являются шифротекстом этого блока и одновременно поступают на вход этой же функции для зашифрования последующего блока, то говорят, что происходит сцепление блоков по шифротексту. Первый блок открытых данных суммируется с вектором инициализации, речь о котором пойдет ниже. Пока же достаточно понимать, что этот вектор инициализации становится известен как отправителю, так и получателю в самом начале сеанса связи (поэтому зачастую его называют просто вектором инициализации, синхропосылкой). Расшифрование происходит, соответственно, в обратном порядке - сначала к шифротексту применяют функцию CIPH-1K, а затем суммируют с предыдущим блоком шифротекста для получения на выходе алгоритма очередного блока открытого текста. Первый блок открытого текста, опять же, восстанавливается с помощью вектора инициализации. Таким образом весь алгоритм может быть выражен в виде уравнений следующим образом:

CBC зашифрование:

C1 = CIPHK(P1 xor IV);

Cj = CIPHK (Pj xor Cj-1), где: j = 1…n

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

IV - вектор инициализации (на рисунке - Initialization Vector);

Pj - очередной, j-ый блок открытого текста;

Cj - очередной, j-ый блок шифротекста.

1.4.3 Обратная загрузка шифротекста

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

Рисунок 5 - Режим шифрования обратная загрузка шифротекста.

Уравнения режима шифрования CFB приведены ниже:

CFB зашифрование:

I1 = IV;

Ij = LSBb-5(Ij-1) | Cj-1, где: j = 2…n,

Oj = CIPHK(Ij), где: j = 1,2…n;

Cj = Pj xor MSB5(Oj), где: j = 1,2…n.

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

1.4.4 Обратная загрузка выходных данных

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

Рисунок 6 - Режим шифрования OFB - обратная загрузка выходных данных.

Ниже приведены уравнения для за- и расшифрования в режиме OFB:

OFB зашифрование:

I1 = IV;

Ij = Oj-1, где: j = 2…n,

Oj = CIPHK(Ij), где: j = 1,2…n;

Cj = Pj xor Oj, где: j = 1,2..n-1;

Cj = Pj xor MSBr(Oj).

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

IV - вектор инициализации;

Pj - очередной, j-ый блок открытого текста.

Cj - очередной, j-ый блок шифротекста.

MSBr (X) - r старших бит (most significant bits) двоичного числа X

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

1.5 Аутентификация. Контроль целостности.

В данном разделе рассматриваются два основных подхода к контролю целостности передаваемых данных.

1.5.1 Задача имитозащиты данных

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

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

1.5.2 Подходы к контролю неизменности данных

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

Выработка MAC - Message Authentification Code - кода аутентификации сообщений. Этот подход заключается в том, что контрольная комбинация вычисляется с использованием секретного ключа с помощью некоторого блочного шифра. Важно, что на основе любого такого шифра можно создать алгоритм вычисления MAC для массивов данных произвольного размера. Данный подход к аутентификации данных общепризнан и закреплен практически во всех криптографических стандартах - имитовставка, формируемая согласно ГОСТ 28147-89 является типичным образцом MAC.

Выработка MDC - Маnipulation Detection Code - кода обнаружения манипуляций (с данными). Для вычисления MDC для блока данных используется так называемая необратимая функция сжатия информации, в литературе также называемая односторонней функцией, функцией одностороннего сжатия (преобразования) информации, криптографической хэш-функцией, или просто хэш-функцией.

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

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

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

1.6 Обзор существующих программных криптографических средств защиты данных

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

1.6.1 Линейка eToken

eToken - персональное средство строгой аутентификации и хранения данных, аппаратно поддерживающее работу с цифровыми сертификатами и ЭЦП [2]. Данное устройство является разработкой компании Aladdin и выпускается в двух форм-факторах: USB-токен и смарт-карта. В обоих случаях взаимодействие носителей с различными программными приложениями безопасности имеет единую структуру, которая представлена.

Компания Aladdin представляет ряд продуктов, имеющих свои преимущества и назначения:

- eToken PRO;

- eToken PRO (Java);

- eToken ГОСТ;

- eToken NG-FLASH;

- eToken NG-OTP;

- КриптоПро eToken CSP.

eToken может выступать в качестве единой корпоративной карты, служащей для визуальной идентификации сотрудника, для доступа в помещения, для входа в компьютер, в сеть, для доступа к защищенным данным, для защиты электронных документов (ЭЦП, шифрование), для установления защищенных соединений (VPN, SSL), для проведения финансовых транзакций [2].

1.6.2 Программа шифрования и аутентификации данных PGP

PGP (англ. Pretty Good Privacy) -- компьютерная программа, так же библиотека функций, позволяющая выполнять операции шифрования (кодирования) и цифровой подписи сообщений, файлов и другой информации, представленной в электронном виде. Первоначально разработана Филиппом Циммерманном в 1991 году.

PGP имеет множество реализаций, совместимых между собой и рядом других программ (GnuPG, FileCrypt и др.) благодаря стандарту OpenPGP (RFC 4880), но имеющих разный набор функциональных возможностей.

Шифрование PGP осуществляется последовательно хешированием, сжатием данных, шифрованием с симметричным ключом, и, наконец, шифрованием с открытым ключом, причем каждый этап может осуществляться одним из нескольких поддерживаемых алгоритмов. Симметричное шифрование производится с использованием одного из пяти симметричных алгоритмов (AES, CAST5, TripleDES, IDEA, Twofish) на сеансовом ключе. Сеансовый ключ генерируется с использованием криптографически стойкого генератора псевдослучайных чисел. Сеансовый ключ зашифровывается открытым ключом получателя с использованием алгоритмов RSA или Elgamal (в зависимости от типа ключа получателя). Каждый открытый ключ соответствует имени пользователя или адресу электронной почты.

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

PGP поддерживает аутентификацию и проверку целостности посредством цифровой подписи. По умолчанию она используется совместно с шифрованием, но также может быть применена и к открытому тексту. Отправитель использует PGP для создания подписи алгоритмом RSA или DSA. При этом сначала создается хеш открытого текста (также известный как дайджест), затем -- цифровая подпись хеша при помощи закрытого ключа отправителя. Для формирования хеша могут использоваться алгоритмы MD5, SHA-1, RIPEMD-160, SHA-256, SHA-384, SHA-512. В новых версиях PGP поддержка MD5 осуществляется для сохранения совместимости с ранними версиями. Для подписи используются алгоритмы RSA или DSA (в зависимости от типа ключа).

В целях уменьшения объема сообщений и файлов и, возможно, для затруднения криптоанализа PGP производит сжатие данных перед шифрованием. Сжатие производится по одному из алгоритмов ZIP, ZLIB, BZIP2. Для сжатых, коротких и слабосжимаемых файлов сжатие не выполняется.

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

Криптографическая стойкость PGP основана на предположении, что используемые алгоритмы устойчивы к криптоанализу на современном оборудовании [15].

1.6.3 Программа шифрования данных TrueCrypt

TrueCrypt -- компьютерная программа для шифрования «на лету» (On-the-fly encryption) для 32- и 64-разрядных операционных систем семейств Microsoft Windows NT 5 и новее (GUI-интерфейс), Linux и Mac OS X [16]. Она позволяет создавать виртуальный зашифрованный логический диск, хранящийся в виде файла. С помощью TrueCrypt также можно полностью шифровать раздел жесткого диска или иного носителя информации, такой как флоппи-диск или USB флеш-память. Все сохраненные данные в томе TrueCrypt полностью шифруются, включая имена файлов и каталогов. Смонтированный том TrueCrypt подобен обычному логическому диску, поэтому с ним можно работать с помощью обычных утилит проверки и дефрагментации файловой системы [16].

TrueCrypt умеет создавать зашифрованный виртуальный диск:

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

- в виде зашифрованного раздела диска, что делает работу более производительной и удобной, в версии 5.0 добавилась возможность шифровать системный раздел;

- путем полного шифрования содержимого устройства, такого как USB флеш-память (устройства флоппи-диск не поддерживаются с версии 7.0).

В список поддерживаемых TrueCrypt 6.2 алгоритмов шифрования входят AES, Serpent и Twofish. Предыдущие версии программы также поддерживали алгоритмы с размером блока 64 бита (Тройной DES, Blowfish, CAST5). Кроме того, возможно использование каскадного шифрования различными шифрами, к примеру: AES+Twofish+Serpent [16].

Программа позволяет выбрать одну из трех хеш-функций: HMAC-RIPEMD-160, HMAC-Whirlpool, HMAC-SHA-512 для генерации ключей шифрования, соли и ключа заголовка.

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

1.7 Выводы по главе

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

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

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

При реализации криптографического программного средства следует помнить о простоте и прозрачности структуры ПС.

1.8 Постановка задачи

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

- обзор применяемых алгоритмов;

- разработку программного средства для работы с файлами;

- организацию защиты и доступа к обрабатываемым данным.

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

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

Для реализации внутренних вычислений и генерации случайных последовательностей используется стойкая хэш-функция SHA-512.

Для обеспечения контроля целостности использован алгоритм CRC-64.

2. Алгоритмическая реализация криптографической защиты файлов

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

2.1 Алгоритм хэш-функции SHA-512

Хэш-функции семейства SHA-512 относится к семейству хэш-функций SHA-2. SHA-512 построена на основе структуры Меркла-Дамгарда.

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

Алгоритм использует следующие битовые операции:

- -- конкатенация;

- + -- сложение;

- and -- побитовое «И»;

- or -- побитовое «ИЛИ»;

- xor -- исключающее «ИЛИ»;

- shr (Shift Right) -- логический сдвиг вправо;

- rotr (Rotate Right) -- циклический сдвиг вправо.

Общая схема одной итерации SHA-512 представлена на рисунке 7.

Стоит заметить, что на данный момент хэш-функции SHA-2 и SHA-512 в частности изучены не достаточно хорошо. Однако, проведенные исследования по криптостойкости данных хэш-функций каких-либо критических уязвимостей не обнаружили, что позволяет рекомендовать широкое применение SHA-512 [10]. Вместе с тем, на данный момент ведутся работы по созданию и внедрению нового поколения хэш-функций, призванных заменить SHA-2.

Рисунок 7 - Одна итерация алгоритма SHA-512.

2.2 Алгоритм контрольной суммы CRC-64

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

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

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

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

Количество различных многочленов степени меньшей N равно 2N, что совпадает с числом всех двоичных последовательностей длины N.

Значение CRC с порождающим многочленом G(x) степени N определяется как битовая последовательность длины N, представляющая многочлен R(x), получившийся в остатке при делении многочлена P(x), представляющего входной поток бит, на многочлен G(x):

где:

- многочлен, представляющий значение CRC;

- многочлен, коэффициенты которого представляют входные данные;

- порождающий многочлен;

- степень порождающего многочлена.

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

При делении с остатком степень многочлена-остатка строго меньше степени многочлена-делителя, то есть при делении на многочлен G(x) степени N можно получить 2N различных остатков от деления. При «правильном» выборе порождающего многочлена G(x), остатки от деления на него будут обладать нужными свойствами хеширования -- хорошей перемешиваемостью и быстрым алгоритмом вычисления. Высокая скорость вычисления обеспечивается тем фактом, что степень порождающего многочлена обычно пропорциональна длине байта или машинного слова (например 8, 16, 32 или 64).

Операция деления на примитивный полином также эквивалентна следующей схеме: пусть выбран примитивный полином, задающий цикл де Брейна 0010111001011100… и блок данных 0111110, построена таблица, верхняя строка заполнена блоком данных, а нижние строки -- смещения на 0,1,2 бит цикла де Брейна:

Тогда контрольная сумма будет равна операции XOR тех столбцов, над которыми в верхней строке расположена 1. В этом случае, 010 xor 101 xor 011 xor 111 xor 110 = 101 (CRC).

В то время, как циклические избыточные коды являются частью стандартов, сами они не стандартизированы в плане адаптации одного алгоритма для конкретной степени полинома. Например, существуют три описания полинома для CRC-12, десять противоречивых определений CRC-16 и четыре -- CRC-32.

Существует много полиномов, которые используются в различных протоколах, причём в конкретных реализациях вычисление CRC может включать пре- и пост-инверсию, а также обратный порядок обработки битов. В проприетарных реализациях CRC для усложнения анализа кода иногда применяется запутанное вычисление начальных значений, однако криптостойкости алгоритму это не добавляет. В предлагаемой реализации используется полином CRC-64-ECMA-182 (0xC96C5795D7870F42).

2.3 Алгоритм шифрования RC6

RC6 -- симметричный блочный криптографический алгоритм, производный от алгоритма RC5. Был создан Роном Ривестом, Мэттом Робшау и Рэем Сиднеем для удовлетворения требований конкурса Advanced Encryption Standard (AES). Алгоритм был одним из пяти финалистов конкурса, был также представлен NESSIE и CRYPTREC.

RC6 -- полностью параметризированная семья алгоритмов шифрования. Для спецификации алгоритма с конкретными параметрами, принято обозначение

RC6-w/r/b,

где:

w -- длина машинного слова в битах;

r -- число раундов;

b -- длина ключа в байтах. Возможные значения 0..255 байт.

Общая схема реализации алгоритма RC6 представлена на Рисунке 8.

Рисунок 8 - Общая схема RC6.

Вариант алгоритма RC6, который был заявлен на AES, как уже было сказано, поддерживает блоки длиной 128 бит и ключи длиной 128, 192 и 256 бит, а также содержит 20 раундов. То есть

RC6-128/20/b,

где b=128,192 или 256 бит. В отношении такого алгоритма никаких атак не было обнаружено. Были обнаружены атаки только против упрощенных версий алгоритма, то есть алгоритма с уменьшенным количеством раундов.

Полагается, что лучший вариант нападения на RС6, доступный для криптоаналитика, является полным перебором b-байтового ключа шифрования (или расширенный ключевой массив S [0,…,43], когда предоставленный пользователем ключ шифрования особенно длинный). Таким образом, можно заключить, что RC6 можно считать полностью безопасным алгоритмом.

2.4 Алгоритм шифрования IDEA

IDEA -- симметричный блочный алгоритм шифрования данных, запатентованный швейцарской фирмой Ascom. Известен тем, что применялся в пакете программ шифрования PGP. В ноябре 2000 года IDEA был представлен в качестве кандидата в проекте NESSIE в рамках программы Европейской комиссии IST [9].

Общая структура алгоритма приведена на рисунке 9.

Рисунок 9 - Общая схема IDEA.

Первую версию алгоритма разработали в 1990 году Лай и Джеймс Мэсси из Швейцарского института ETH Zurich в качестве замены DES. Алгоритм использует 128 бит ключевой информации и оперирует блоками данных длиной 64 бита.

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

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

- сложение по модулю;

- умножение по модулю;

- побитовое исключающее ИЛИ (XOR).

Эти три операции несовместимы в том смысле, что:

- никакие две из них не удовлетворяют дистрибутивному закону, то есть:

- a*(b+c) <> (a*b)+(a*c)

- никакие две из них не удовлетворяют ассоциативному закону, то есть:

- a+(b XOR c) <> (a+b) XOR c.

Применение этих трех операций затрудняет криптоанализ IDEA по сравнению с DES, который основан исключительно на операции исключающее ИЛИ, а также позволяет отказаться от использования S-блоков и таблиц замены [9].

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

- умножение по модулю 216 + 1 = 65537, причем вместо нуля используется 216;

- сложение по модулю 216;

- побитовое исключающее ИЛИ.

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

- умножение по модулю 216 +1;

- сложение по модулю 216.

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

К неоспоримым достоинствам IDEA стоит отнести практическую устойчивость ко всем атакам и хорошую скорость шифрования. К недостаткам алгоритма принято относить медленную скорость шифрования по сравнению с новейшими алгоритмами [9].

3. Програмная реализация криптографической защиты файлов

В данной главе описаны модули, реализующие алгоритмы CRC64, RC6, IDEA, а так же другие вспомогательные модули и структуры данных.

3.1 Выбор обоснования языка программирования

Для реализации поставленных задач, был выбран язык программирования Object Pascal и среда разработки Borland Delphi 7.

Object Pascal -- язык программирования применяемый для разработки приложений под ОС Windows любой сложности. Язык заслужил большое уважение и популярность среди разработчиков самых разных программных продуктов. Являясь одним из самых популярных языков программирования, Object Pascal широко используется для разработки программного обеспечения. На языке Object Pascal написаны такие известные программы, как: Total Commander, Light Alloy, The KMPlayer, AIMP, QIP, R&Q, The Bat!, ALZip, PowerArchiver, PeaZip, Dev-C++, Skype (графический интерфейс). Область применения языка широка и включает в себя написание как прикладных программ и драйверов устройств, так и развлекательных приложений (например, видеоигр). Написанные программы быстры и легки.

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

3.2 Организация данных

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

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

3.3 Основные структуры данных

В программе применяются структуры данных.

Данная структура описывает файл <USB-ключ>\ qwallke.qwkey.

Поля структуры:

USB_key = record

Key_RC: Array [1..8] of cardinal; //256bit ключ шифрования RC6

Key_IDEA: Array [1..4] of cardinal;//128bit ключ шифрования IDEA

Key_CONST: Array [1..4] of cardinal;//128bit вектор инициализации

CRC64_2: int64; //64bit конт сумма открытых полей выше

Key_counter: cardinal; //32bit счетчик - меняется каждый сеанс работы с ключом

data_key: cardinal;//32bit дата создания ключа ДДММГГ

Control_hash: string[128]; //512bit

Familiy: string[60];

Name: string[30];

CRC64_1: int64;//64 end;

3.4 Общая схема программного средства

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

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

Общая схема программного средства представлена на Рисунке 10.

Вход в систему Создание USB-ключа

Нет

Да Да

Рисунок 10 - Общая схема программного средства.

3.5 Создание USB-ключа и нового пользователя

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

На первом шаге от пользователя требуется ввести свои личные данные (Фамилию и Имя), логин и пароль для входа в систему, а также указать USB. Затем происходит проверка верности введенных данных. Требования следующие:

- длина фамилии от 7 до 50 символов;

- длина имени от 2 до 30 символов;

- длина логина от 5 до 50 символов;

- длина пароля от 8 до 30 символов.

При этом в режиме реального времени (во время ввода данных в информационные поля) происходит оценка надежности пароля, или соответствия при повторе пароля.

Если все данные введены верно, генерируется S-key: вычисляется хэш-функция в 512 бит от <сеансовый счетчик> + <соль> + <логин> + <соль> + <пароль> + <соль> + < id USB-ключа>.

Случайным образом генерируются ключи шифрования и константа шифрования: 256-битный ключ для алгоритма RC6, 128-битный для алгоритма IDEA и 128-бит вектора инициализации. Вычисляется контрольная сумма от этих данных (CRC64_2). После чего ключи шифрования и вектор инициализации шифруется S-key путем наложения гаммы.

Берется временная метка - дата создания USB-ключа. Производится вычисление хэша доступа (LiteKey) - SHA-512 от следующих данных: логин входа в систему + пароль входа в систему + соль + id USB-ключа. При помощи хэша доступа (LiteKey) шифруются поля данных: контрольная сумма (CRC64_2), сеансовый счетчик, временная метка.

Затем от зашифрованных полей вычисляется контрольная сумма (CRC64_1).

Вычисляется контрольный хэш (ControlHash) - SHA-512 от следующих данных: соль + пароль входа в систему + логин входа в систему + соль + id USB-ключа.

На этом процедура создания USB-ключа завершена. Общая схема USB-ключа представлена на Рисунке 11.

Рисунок 11 - Схема USB-ключа.

3.6 Вход в систему

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

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

Первым шагом проверяется лимит попыток входа: если более трех попыток - происходит завершение программы.

Выбранный пользователем USB проверяется на причастность к USB-ключам.

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

Затем происходит генерация хэша доступа (LiteKey) и S-key, которыми расшифровываются зашифрованные поля USB-ключа. Происходит генерация нового значения сеансового счетчика. После чего генерируется новый S-key, которым перезашифровывается поле ключей шифрования и вектора инициализации. Также старым хэшем доступа (LiteKey) зашифровывается сеансовый счетчик. Вычисляется новая контрольная сумма (CRC64_2).

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

3.7 Основные модули программы

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

- CryptoAPI - данный модуль используется для вычисления хэш-суммы SHA-512 (FIPS PUB 180-2). Модуль взят из библиотеки HashLib! 1.03 ((C) Alex Demchenko, 2002, Moldova, Chishinev) и видоизменен в целях удобства интеграции в программу;

- CRC64 - данный модуль используется для вычисления контрольной суммы CRC64;

- RC6 - данный модуль используется для шифрования/расшифрования файлов по алгоритму RC6;

- IDEA - данный модуль используется для шифрования/расшифрования файлов по алгоритму IDEA;

- FolderActions - модуль обеспечивает создание архива;

- Unit3 - модуль позволяет создать новый USB-ключ;

3.7.1 Модуль вычисления контрольной суммы

Модуль CRC64.pas позволяет вычислить контрольную сумму CRC64 файла. Основные применяемые функции и процедуры представлены в таблице 1.

Таблица 1 - Основные функции и процедуры модуля CRC64.pas

Входные данные

Выходные данные

Описание

CRC64Stream

const Source: TStream - имя файла от которого берется сумма;

Count: Integer - размер этого файла;

const BufSize: Cardinal = 1024 - размер выделенного буфера

CRC64Stream: Int64 - итоговая контрольная сумма файла

Основная функция модуля - выполняет подсчет контрольной суммы файла

CRC64Next

const Data - входные данные для расчета промежуточного значения контрольной суммы;

const Count: Cardinal - значение промежуточного счетчика.

CRC64: Int64 - итог вычислений.

Вычисление промежуточных данных

3.7.2 Модуль алгоритма шифрования RC6

Модуль RC6.pas позволяет производить шифрование, расшифрование файлов по алгоритму RC6. Основные применяемые функции и процедуры представлены в таблице 2.

Таблица 2 - Основные функции и процедуры модуля RC6.pas

Функция или процедура

Входные данные

Выходные данные

Описание

CalculateSubKeys

KeyPtr: PChar - исходный ключ шифрования.

S: array[0..KeyLength-1] of LongWord - развернутый подключ шифрования;

Процедура выполняет разворачивание основного ключа шифрования на раундовые подключи.

DecipherBlock

Block: array[1..4] of LongWord - входной блок данных.

DecipherBlock: Boolean - успешное или незавершенное расшифрование блока данных.

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

EncipherBlock

Block: array[1..4] of LongWord - входной блок данных.

EncipherBlock: Boolean - успешное или незавершенное расшифрование блока данных.

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

EncryptCopy

DestStream, SourseStream: TStream - итоговый и исходный потоки для шифрования;

Count: Int64 - размер потока данных;

Key : string - ключ шифрования.

EncryptCopy: Boolean - успешное или аварийное завершение работы.

Шифрование одного потока данных в другой согласно алгоритму RC6.

DecryptCopy

DestStream, SourseStream: TStream - итоговый и исходный потоки для расшифрования;

Count: Int64 - размер потока данных;

Key : string - ключ расшифрования.

DecryptCopy: Boolean - успешное или аварийное завершение работы.

Расшифрование одного потока данных в другой согласно алгоритму RC6.

EncryptStream

DataStream: TStream - поток данных для шифрования;

Count: Int64 - размер потока;

Key: string - ключ шифрования;

KCONST: Array of cardinal - вектор инициализации.

EncryptStream: Boolean - успешное или аварийное завершение работы.

Выполняет шифрование одного потока данных согласно алгоритму RC6.

DecryptStream

DataStream: TStream - поток данных для расшифрования;

Count: Int64 - размер потока;

Key: string - ключ расшифрования;

KCONST: Array of cardinal - вектор инициализации.

DecryptStream: Boolean - успешное или аварийное завершение работы.

Выполняет расшифрование одного потока данных согласно алгоритму RC6.

Initialize

AKey: string - ключ шифрования.

KeyPtr : PChar - развернутый ключ.

Производит разворачивание ключа шифрования до 64 байт.

3.7.3 Модуль алгоритма шифрования IDEA

Модуль IDEA.pas позволяет производить шифрование, расшифрование файлов по алгоритму IDEA. Основные применяемые функции и процедуры представлены в таблице 3.

Таблица 3 - Основные функции и процедуры модуля IDEA.pas

Функция или процедура

Входные данные

Выходные данные

Описание

CalculateSubKeys

FKeyPtr: PChar - исходный ключ шифрования;

FKeySize: Integer - размер ключа.

pz: PWord;- развернутый подключ шифрования;

Процедура выполняет разворачивание основного ключа шифрования на раундовые подключи.

DecipherBlock


Подобные документы

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

    дипломная работа [802,2 K], добавлен 08.06.2013

  • Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства.

    курсовая работа [314,2 K], добавлен 27.01.2015

  • Основные методы криптографической защиты информации. Система шифрования Цезаря числовым ключом. Алгоритмы двойных перестановок и магические квадраты. Схема шифрования Эль Гамаля. Метод одиночной перестановки по ключу. Криптосистема шифрования данных RSA.

    лабораторная работа [24,3 K], добавлен 20.02.2014

  • Особенности работы "поисковика" дублирующихся файлов на диске. Выбор среды программирования. Разработка программного продукта. Основные требования, предъявляемые к программе, производящей поиск дублирующихся файлов на диске. Отображение скрытых файлов.

    курсовая работа [1,8 M], добавлен 28.03.2015

  • История появления симметричных алгоритмов шифрования. Роль симметричного ключа в обеспечении степени секретности сообщения. Диффузия и конфузия как способы преобразования бит данных. Алгоритмы шифрования DES и IDEA, их основные достоинства и недостатки.

    лабораторная работа [335,9 K], добавлен 18.03.2013

  • Установка TrueCrypt и создание стандартного тома. Мастер создания томов и настройки шифрования. Безопасность пароля, подключение тома и работа с ним. Создание и использование скрытого тома. Различия между обычной и портативной версиями TrueСrypt.

    практическая работа [2,7 M], добавлен 19.11.2015

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

    курсовая работа [804,0 K], добавлен 08.01.2014

  • Проектирование структуры и архитектуры программного продукта. Реализация программы конвертера файлов баз данных. Описание пользовательского интерфейса. Выбор порядка конвертации dbf файлов. Создание и исполнение шаблонов. Расчет себестоимости продукта.

    дипломная работа [2,2 M], добавлен 21.06.2013

  • Утилиты архивации для создания резервных копий файлов путем помещения их в архив в сжатом виде. Операции над архивами. Алгоритмы архивации. Универсальные алгоритмы уплотнения. Формат задания команд. Степень сжатия файлов. Основные виды архиваторов.

    презентация [241,0 K], добавлен 13.08.2013

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

    дипломная работа [968,8 K], добавлен 01.07.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.