Интегральная атака против блочного симметричного шифра Crypton
Основные требования к блочным симметричным шифрам как к механизмам, обеспечивающим конфиденциальность. Адаптация методики реализации интегральной атаки для расшифрования усеченного варианта Crypton. Использование криптографических способов защиты.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 05.06.2011 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
В схему на рисунке 1.11. включены еще рандомизатор и решающее устройство. Рандомизатор делает все шифрограммы непохожими друг на друга, даже если входные сообщения одинаковы. Цель этого будет разъяснена ниже. Решающее устройство принимает решение о том, является ли принятое сообщение подлинным, то есть выполняет функцию имитозащиты.
Операции шифрования и расшифрования можно описать так:
Y = E(X), X = D(Y)(1.16)
Для взаимной однозначности необходимо, чтобы DE было единичным преобразованием. В этом разделе будет предполагать наличие у отправителя и получателя общего секретного ключа Z. (На самом деле ключи у них не обязательно одинаковые, но знание одного ключа, например шифрования, позволяет легко вычислить другой. Поэтому рассматриваемые криптоалгоритмы иногда называют симметричными, или одноключевыми. Соответственно, и криптография, занимающаяся изучением таких алгоритмов, называется одноключевой). Данная схема применяется в том случае, если абоненты сети доверяют друг другу.
Ниже показано, как с помощью одноключевой криптографии решаются вопросы имитозащиты и опознавания (секретность обеспечивается очевидным образом). Подлинность и целостность сообщения обеспечиваются его криптографическим преобразованием, выполняемым с помощью секретного ключа. Например, если отправитель передаст сразу и открытый (не требующий засекречивания), и зашифрованный тексты, то это позволит получателю, знающему ключ, утверждать, что текст при передаче по каналу связи не был изменен, если результат расшифрования шифрограммы совпадает с открытым текстом. Действительно, случайное совпадение соответствующих друг другу открытого текста и шифрограммы -- практически невозможное событие. Эту пару мог составить лишь отправитель, знающий секретный ключ. Отсюда следует и подлинность сообщения (отправитель отождествляется с владельцем ключа). В действительности нет необходимости передавать всю шифрограмму, достаточно передать лишь ее часть, называемую имитовставкой, которая должна зависеть от всего открытого текста. Тогда получатель может на основании полученного текста и ключа вычислить свою имитовставку и проверить ее соответствие полученной.
Для опознавания пользователя используется следующий диалог. Проверяющий вырабатывает случайный текст и посылает опознаваемому для шифрования. Опознаваемый шифрует этот текст и возвращает проверяющему. Тот проверяет соответствие шифрограммы тексту. Правильный ответ может составить только владелец секретного ключа, который отождествляется с законным пользователем. Очевидно, что прослушивающий диалог нарушитель не сможет правильно зашифровать новый текст и назваться пользователем. (Исключением является аналогия известного жульничества, примененного при игре в шахматы по почте, когда нарушитель просто транслирует ответы и запросы подлинным проверяющему и проверяемому, ведя диалог одновременно с каждым из них). Принципиальное отличие данной системы от опознавания по паролю, где подслушивание позволяет узнать секретный пароль и в дальнейшем воспользоваться этим, заключается в том, что здесь по каналу связи секретная информация не передается. Ясно, что и стойкость шифрования, и имитостойкость, и стойкость опознавания могут быть обеспечены, если положенное в основу криптопреобразование является стойким в смысле раскрытия ключа.
Уровень стойкости зависит от возможностей криптоаналитика и от пользователя. Так, различают криптоанализ на основе только шифрованного текста, когда криптоаналитик располагает только набором шифрограмм и не знает открытых текстов, и криптоанализ на основе открытого текста, когда криптоаналитик знает и открытие, и соответствующие шифрованные тексты. Поскольку криптоалгоритм обычно должен быть достаточно универсальным, естественным представляется требование, чтобы стойкость ключа не зависела от распределени вероятностей источника сообщений. В общем случае источник сообщений может вырабатывать "удобные" для нарушителя сообщения, которые могут стать ему известными. В этом случае говорят о криптоанализе на основе специально выбранных открытых текстов. Очевидно, что стойкость ключа по отношению к анализу на основе выбранных текстов не может превышать стойкости по отношению к анализу на основе открытых текстов, а она, в свою очередь, не может превышать стойкости по отношению к анализу на основе шифрованных текстов. Иногда разработчиком СЗИ допускается даже, что враждебный криптоаналитик может иметь доступ к криптосистеме, то есть быть "своим".
Обычно криптоалгоритмы разрабатывают так, чтобы они были стойкими по отношению к криптоанализу на основе специально выбранных открытых текстов.
Понятие "наилучшего алгоритма" раскрытия ключа в определении стойкости неконструктивно и допускает субъективное толкование (для кого- то из разработчиков наилучшим алгоритмом может быть простой перебор ключей). По-видимому, ни для одного из используемых криптоалгоритмов не определен наилучший алгоритм раскрытия ключа, то есть задача нахождени наилучшего алгоритма является чрезвычайно сложной. Поэтому на практике для оценки стойкости пользуются наилучшим известным или найденным в ходе исследований алгоритмом раскрытия. Таким образом, на практике никто не может помешать способному криптоаналитику снизить оценку стойкости, придумав новый, более эффективный метод анализа.
Создание новых эффективных методов раскрытия ключа или иного метода ослабления криптоалгоритма может давать осведомленным лицам большие возможности по нанесению ущерба пользователям, применяющим данный криптоалгоритм. Публикация или замалчивание этих сведений определяются степенью открытости общества. Рядовой пользователь системы бессилен помешать нарушителю в раскрытии его ключей.
Из изложенного следует, что понятие "наилучшего известного" алгоритма неабсолютно: завтра может появиться новый более эффективный алгоритм раскрытия, который приведет к недопустимому снижению стойкости криптоалгоритма. С развитием математики и средств вычислительной техники стойкость криптоалгоритма может только уменьшаться. Для уменьшения возможного ущерба, вызванного несвоевременной заменой криптоалгоритма, потерявшего свою стойкость, желательна периодическая перепроверка стойкости криптоалгоритма. Для снижения вероятности непредсказуемого "обвала" вновь разработанного криптоалгоритма необходимо проведение криптографических исследований.
Из рассмотренного выше следует, что понятие стойкости криптосистемы многогранно. Стойкость зависит не только от разработчика, но и от особенностей использования данного криптоалгоритма в системе управлении или связи, от физической реализации криптоалгоритма, а также от будущих успехов математики и вычислительной техники. Ведь криптосистема может эксплуатировать много лет, а необходимость сохранять в секрете в течение длительного времени переданную ранее по открытым каналам связи информацию может сделать необходимым прогнозировать развитие науки и техники на десятилетия.
Последние десятилетие характеризуется резким увеличением числа открытых работ по всем вопросам криптологии, а криптоанализ становится одной из наиболее активно развивающихся областей исследований. Многие криптосистемы, стойкость которых не вызывала особых сомнений, оказались успешно раскрытыми. При этом разработан большой арсенал математических методов, представляющих прямой интерес для криптоаналитика.
В начале 1970-х гг. была известна только классическая одноключевая криптография, но число открытых работ по этой тематике было весьма скромным. Отсутствие интереса к ней можно объяснить целым рядом причин. Во-первых, острой потребности в криптосистемах коммерческого назначения, по-видимому, еще не ощущалось. Во-вторых, большой объем закрытых исследований по криптографии обескураживал многих ученых, которым, естественно, хотелось получить новые результаты. И наконец, может быть, самый важный фактор заключается в том, что криптоанализ как научная дисциплина фактически по-прежнему представлял собой большой набор разрозненных "трюков", не объединенных стройной математической концепцией.
В 1970-х гг. ситуация радикально изменилась. Во-первых, с развитием сетей связи и повсеместным вторжением ЭВМ необходимость в криптографической защите данных стала осознаваться все более широкими слоями общества. Во-вторых, изобретение Диффи и Хелманном криптографии с открытым ключом создало благоприятную почву для удовлетворения коммерческих потребностей в секретности, устранив такой существенный недостаток классической криптографии, как сложность распространения ключей. По существу, это изобретение гальванизировало научное сообщество, открыв качественно новую неисследованную область, которая к тому же обещала возможность широкого внедрения новых результатов быстро развивающейся теории вычислительной сложности для разработки конкретных систем с простым математическим описанием. Ожидалось, что стойкость таких систем будет надежно опираться на неразрешимость в реальном времени многих хорошо известных задач и что, может быть, со временем удастся доказать принципиальную нераскрываемость некоторых криптосистем.
Но надежды на достижение доказуемой стойкости посредством сведения задач криптографии к хорошо известным математическим задачам не оправдалась, а, скорее, наоборот. Именно то обстоятельство, что любую задачу отыскани способа раскрытия некоторой конкретной криптосистемы можно переформулировать как привлекательную математическую задачу, при решении которой удается использовать многие методы той же теории сложности, теории чисел и алгебры, привело к раскрытию многих криптосистем. На сегодняшний день классическая лента однократного использования остается единственной, безусловно, стойкой системой шифрования.
Идеальное доказательство стойкости некоторой криптосистемы с открытым ключом могло бы состоять в доказательстве того факта, что любой алгоритм раскрытия этой системы, обладающий не пренебрежимо малой вероятностью ее раскрытия, связан с неприемлемо большим объемом вычислений. И хотя ни одна из известных систем с открытым ключом не удовлетворяет этому сильному критерию стойкости, ситуацию не следует рассматривать как абсолютно безнадежную. Было разработано много систем, в отношении которых доказано, что их стойкость эквивалентна сложности решения некоторых важных задач, которые почти всеми рассматриваются как крайне сложные, таких, например, как известная задача разложения целых чисел. (Многие из раскрытых криптосистем были получены в результате ослабления этих предположительно стойких систем с целью достижения большого быстродействия.) Кроме того, результаты широких исследований, проводившихся в течение последних десяти лет как в самой криптографии, так и в общей теории вычислительной сложности, позволяют современному криптоаналитику гораздо глубже понять, что же делает его системы нестойкими.
Проведение криптоанализа для давно существующих и недавно появившихся криптоалгоритмов очень актуально, так как вовремя можно сказать, что данный криптоалгоритм нестоек, и усовершенствовать его или заменить новым. Для того, чтобы выявлять нестойкие криптоалгоритмы необходимо все время совершенствовать уже известные методы криптоанализа и находить новые.
Направление криптоанализа могут быть различными, в соответствии с направлениями криптографии: это раскрытие ключа, навязывание ложной информации за счет нахождения слабостей в криптоалгоритме или протоколе, возможность бесконечного чтения зашифрованной информации и т.п.
Криптоалгоритм, как правило, должен быть стойким по отношению к криптоанализу на основе выбранных открытых текстов. Первое требование по существу означает, что рассекречивание некоторой информации, передававшейся по каналу связи в зашифрованном виде, не должно приводить к рассекречиванию другой информации, зашифрованной на этом ключе. Второе требование учитывает особенности эксплуатации аппаратуры и допускает некоторые вольности со стороны оператора или лиц, имеющих доступ к формированию засекреченной информации.
Криптоанализ может базироваться на использовании как общих математических результатов (например методов разложения больших чисел для раскрытия криптосистемы RSA), так и частных результатов, полученных для конкретного криптоалгоритма. Как правило, алгоритмы криптоанализа являются вероятностными.
Дифференциальный метод криптоанализа [21] (ДКА) был предложен Э.Бихамом и А.Шамиром в 1990 г. Дифференциальный криптоанализ - это попытка вскрытия секретного ключа блочных шифров, которые основаны на повторном применении криптографически слабой цифровой операции шифрования r раз. При анализе предполагается, что на каждом цикле используется свой подключ шифрования. ДКА может использовать как выбранные, так и известные открытые тексты .
Отличительной чертой дифференциального анализа является то, что он практически не использует алгебраические свойства шифра (линейность, аффинность, транзитивность, замкнутость и т.п.), а основан лишь на неравномерности распределения вероятности дифференциалов.
В открытой печати линейный метод криптоанализа впервые был предложен японским математиком Мацуи. Метод предполагает, что криптоаналитик знает открытые и соответствующие зашифрованные тексты.
Обычно при шифровании используется сложение по модулю 2 текста с ключом и операции рассеивания и перемешивания. Задача криптоаналитика - найти наилучшую линейную аппроксимацию (после всех циклов шифрования)
Для раскрытия ключа шифра DES этим методом необходимо 247 пар известных открытых и зашифрованных текстов.
1.5 Выводы по разделу
Исходя из выше изложенного материала можно сделать вывод, что БСШ Crypton является эффективным и на программном и на аппаратном уровне: благодаря высокой степени паралельности и использованию очень простых логических операций ANDS/XORS, CRYPTON работает очень быстро на большинстве платформ, как в программном обеспечении, так и в аппаратных средствах. Анализ безопасности БСШ Crypton показывает, что 12-раундовый самозаменяемый шифр (с одинаковыми процессами для кодирования и расшифрования) с длиной блока 128 битов и длинной ключа до 128 битов обладает хорошей стойкостью к существующим атакам. Интегральная атака на 4-х раундовый БСШ Crypton является намного эффективнее, чем полный перебор по всему ключевому пространству.
Поэтому реализация интегрального алгоритма атаки на БСШ Crypton будет наиболее актуальной задачей.
2. ОСОБЕННОСТИ РЕАЛИЗАЦИИ ИНТЕГРАЛЬНОЙ АТАКИ НА ШИФР CRYPTON
2.1 Интегральные свойства БСШ Crypton
Crypton представляет собой блочный шифр. Длина ключа и длина блока 128 бит. Описание алгоритма атаки взято из [22].
Четыре преобразования работают с промежуточным результатом, называемым Состоянием (State). Состояние можно представить в виде прямоугольного массива из 16 байт , где . Обозначим - столбец из четырех байт. Аналогично представлен ключ шифрования , где . Обозначим .
В шифре определено поле Галуа GF(28), элементами которого являются байты. Байты рассматриваются как многочлены над Z2:
,
где i-й бит байта (0 или 1).
Операция сложения "". При сложении байт соответствующие им многочлены складываются над Z2 (1+1=0).
Операция умножения. При умножении байт соответствующие им многочлены перемножаются над Z2 и результирующий многочлен берется по модулю простого многочлена
.
В процессе работы алгоритма ключ расширяется (Key Schedule, Key Expansion). Первые 4 столбца (по 4 байта) массива являются исходным ключом (). Каждый последующий r-й набор из 4 столбцов вычисляется из предыдущего набора и используется для r-ого раунда, обозначим его . Раунд состоит из четырех различных элементарных преобразований, которые преобразуют состояние в состояние :
1. Замена байт - BS (Byte Substitution): применение перестановки S (также известной как S-блок, Sbox) ко всем байтам состояния независимо. для .
2. Сдвиг строк - SR (Shift Rows): циклический сдвиг байт по правилу .
3. Замешивание столбцов - MC (Mix Columns): каждый столбец состояния изменяется линейным преобразованием . Преобразование можно представить, как умножение столбца на матрицу слева:
Операция обратима: .
4. Добавление раундового ключа - KA (Key Addition): к текущему состоянию прибавляется раундовый ключ .
Финальный раунд не содержит операции MC. Составим 2 формулы, связывающие состояния Ar-1 и Ar:
(1)
(2)
2.2 Алгоритм реализации интегральной атаки на БСШ Crypton
В данном разделе описана специфичная для шифра Crypton интегральная атака [22]. Представлено математическое обоснование базовой атаки на 4 раунда.
Интегральная атака основана на возможности свободного подбора атакующим некоторого набора открытых текстов для последующего их зашифрования. Эта атака для 4-раундового шифра Crypton (стандарт Crypton включает в себя 12 раундов) эффективнее, чем полный перебор по всему ключевому пространству.
Введем определения.
Л-набор - набор из 256 входных блоков (массивов State), каждый из которых имеет байты (назовем их активными), значения которых различны для всех 256 блоков. Остальные байты (пассивные) остаются одинаковыми для всех 256 блоков из Л-набора. Т.е. : , если байт с индексом активный и иначе.
Лk - Л-набор c k активными байтами.
Pr - множество состояний в конце раунда r.
Возьмем Л-набор и проследим его изменение в течении нескольких раундов. После элементарных преобразований BS и KA блоки Л-набора дадут в результате другой Л-набор с активными байтами в тех же позициях, что и у исходного. Преобразование SR сместит эти байты соответственно заданным в ней смещениям. После преобразования MC Л-набор в общем случае необязательно останется Л-набором (т. е. результат операции может перестать удовлетворять определению Л-набора). Но поскольку каждый байт результата MC является линейной комбинацией (с обратимыми коэффициентами) четырех входных байт того же столбца , то столбец с единственным активным байтом на входе даст в результате на выходе столбец со всеми четырьмя активными байтами.
Рассмотрим шифрование Л1-набора, во всех блоках которого активен только один байт. Т.е. значение этого байта различно во всех 256 блоках, а остальные байты одинаковы. Проследим эволюцию этого байта на протяжении трех раундов. В первом раунде преобразование MC преобразует один активный байт в столбец из 4 активных байт, т.е. P1 является Л4. Во втором раунде эти 4 байта разойдутся по 4 различным столбцам в результате преобразования SR, P2 является Л16. Преобразование MC следующего, третьего раунда преобразует эти байты в 4 столбца, содержащие активные байты. Этот набор все еще остается Л-набором до того момента, когда он поступает на вход MC третьего раунда.
Основное свойство Л-набора - поразрядная сумма по модулю 2 () всех байтов, находящихся на одних и тех же местах, по всему набору равна нулю, т.е. . Действительно, поразрядная сумма неактивных (с одинаковыми значениями) байт равна нулю по определению операции "" (т.к. ), а активные байты, пробегая все 256 значений, также при поразрядном суммировании дадут нуль.
Рассмотрим теперь результат преобразования MC в третьем раунде байтов входного массива данных A в байты выходного массива данных B. Покажем, что и в этом случае поразрядная сумма всех блоков выходного набора будет равна нулю, то есть:
Таким образом, P3 является Л16, т.е. все данные на входе четвертого раунда сбалансированы (их полная сумма равна нулю). Этот баланс в общем случае нарушается последующим преобразованием BS. Ключ Kr также можно однозначно задать в L-представлении, которое строится следующим образом:
Зная Lr можно вычислить Kr, и обратно. Для проведения атаки потребуется множество Q4 состоящее из 256 состояний: . Множество Q4 можно получить из выходных данных шифра P4 применением 2 обратных преобразований SR-1 и MC-1 к каждому состоянию.
Схема базовой интегральной атаки на 4-раундовый Crypton.
Для всех
Для
Если , то
В этой схеме мы инвертируем 4-ый раунд шаг за шагом, чтобы получить сбалансированные байты P3. При сумма будет сбалансированной.
Если предполагаемое значение байта ключа было верно, то оно будет включено в возможные варианты на место . Большая часть неверных значений байта будет отсеяно. За счет того, что поиск может производиться отдельно (параллельно) для каждого байта ключа, скорость подбора всего значения раундового ключа весьма велика. Далее по значению можно найти , а потом и - исходный ключ [22].
2.3 Описание программной реализации
Разработанный в рамках дипломной работы программный продукт представляет собой реализацию шифрования и расшифрования данных с использованием алгоритма Crypton и реализацию интегральной атаки. Системные требования - компьютер на базе Intel Pentium и выше, ОС - Windows 95 + IE 4.0 и выше.
Программный продукт выполняет следующие операции:
- зашифрование входных данных в криптограму;
- расшифрование криптограммы;
- нахождение 128 - битного ключа.
Операция зашифрования выполняется следующим образом:
1. Запускаем файл ENCRDECR.EXE получаем на экране Рис.2.1
2. Нажатием кнопки "0" выбираем функцию зашифрования;
3. Указываем путь к файлу который необходимо зашифровать и путь где разместить криптограму Рис. 2.2
Рисунок 2.1 Начало работы программы
Рисунок 2.2 Указание пути к файлу
4. По указаному пути мы получим криптограму.
Операция расшифрования выполняется следующим образом:
1. Запускаем файл ENCRDECR.EXE получаем на экране Рис.2.1
2. Нажатием кнопки "1" выбираем функцию расшифрования;
3. Указываем путь к криптограме и путь где разместить расшифрованный файл Рис. 2.3
Рисунок 2.3 Операция расшифрования
5. По указаному пути мы получим исходные данные.
Операция нахождения ключа выполняется следующим образом:
1. Запускаем файл ENCRDECR.EXE получаем на экране Рис.2.1
2. Нажатием кнопки "2" выбираем функцию атаки;
3. Указываем путь к криптограме Рис. 2.4
Рисунок 2.4 Операция нахождения ключа.
В результате получим наш ключ Рис.2.5
3. БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ
3.1 Анализ условий труда
Дипломный проект выполнялся в помещении научно - исследовательской лаборатории (НИЛ). При разработке применялись ПЭВМ. В дальнейшем при разработке вопросов БЖД будем использовать источники и нормативные документы, регулирующие вопросы БЖД при эксплуатации ПЭВМ [23, 12, 16].
Исследовательские работы выполнялись в помещении НИЛ, размеры которой составляют 4х6х3 м (площадь 24м2). В помещении имеется 1 окно, площадью 6 м2. Рабочих мест 2 (2 программиста). Каждое рабочее место оборудовано ПЭВМ.
Помещение соответствует требованиям ДНАОП 0.00-1.31-99 - на одного работающего приходится 12 м2 площади и, 36 м3 объема при норме 6 м2 и 20 м3 соответственно.
Рассматривая НИЛ как систему "Человек-Машина-Среда" ("Ч-М-С"), можно выделить 2 подсистемы "рабочее место", в состав каждой из которых входят элементы "человек" (работник), "машина" (ПЭВМ). Элемент "среда" (производственная среда в помещении НИЛ) является общим для подсистем "рабочее место".
Элемент "человек" разделим на следующие функциональные части:
Ч1 - человек, выполняющий целенаправленные функции;
Ч2 - человек, рассматриваемый с точки зрения его влияния на "среду" за счет тепло-, влаговыделения и др.;
Ч3 - человек, рассматриваемый с точки зрения его психофизиологического состояния;
ПТ - предмет труда (проектирование программного продукта).
Элемент "машина" разделим на следующие части:
М1 - выполняет основную техническую функцию (программный продукт);
М2 - функции аварийной защиты (изоляция, предохранители);
М3 - управление окружающей средой (тепло, шум, электромагнитное излучение) (рисунок 1).
Рисунок 1. Система "Человек-Машина-Среда" для НИЛ
На рис. 1. приведены обозначения:
1 - (Ч1-М1) воздействие человека на управление машиной и ее настройки (программирование);
2 - (ПТ-М1) информация о состоянии предмета труда, управляемая машиной (исходные данные программы);
3 - (М1-ПТ) воздействие машины на предмет труда (компиляция программного кода);
4 - (Ч2-С) влияние "человека" на "среду" (теплообмен, шум) ;
5 - (С-Ч3) влияние "среды" на психофизиологическое состояние "человека" (утомление, перенапряженность анализаторов);
6 - (С-Ч1) влияние "среды" на качество работы "человека" (физическая и умственная активность);
7 - (М1-С) влияние "машины" на состояние "среды" (Эл.магн. излучение, тепло);
8 - (С-М1, С-М2, С-М3) влияние "среды" на качество работы "машины" (повышение температуры деталей компьютера);
9 - (Ч1-Ч3) связь выполняемой работы с психофизиологическим состоянием организма (утомление, умственная перенапряженность);
10 - (Ч1-Ч2) влияние характера труда на интенсивность обмена веществ ;
11 - (Ч3-Ч3) взаимодействие людей между собой ;
12 - (М1-Ч1) информация о состоянии машины, обрабатываемая человеком (программный код, изображенный на мониторе);
13 - (М1-М2) информационная связь между компьютером и защитной функцией;
14 - (М3-М1) аварийное управляющее воздействие.
Возникающие нецелевые (не связанные с выполнением работ) связи между элементами системы приводят к появлению опасных и вредных производственных факторов (ОВПФ). В таблице 1. перечислены, согласно [24] и ГОСТ 12.0.003-74 возможные ОВПФ с указанием их источника и последствий воздействия на человека. Помещение относится к классу помещений без повышенной опасности, поскольку нет признаков, свойственных особо опасным помещениям и помещениям с повышенной опасностью. Можно выделить следующие ОВПФ в помещении НИЛ.
Физические:
- повышенный уровень шума на рабочем месте;
- отсутствие или недостаток естественного света;
- недостаточная освещенность рабочей зоны;
- повышенная или пониженная температура воздуха рабочей зоны;
- повышенная или пониженная влажность воздуха рабочей зоны;
- повышенное значение напряжения в электрической цепи;
- повышенная напряженность электрического и магнитного поля;
- повышенный уровень ионизирующего излучения
Психофизиологические
- статические перегрузки;
- умственное перенапряжение, эмоциональные перегрузки;
- перенапряжение анализаторов (зрительных)
Оценка факторов производственной среды и трудового процесса приведена в таблице 1.
Таблица 1. Оценка факторов труда
Из таблицы 1 видно, что в помещении несколько повышена температура воздуха. Это связано с избыточным выделением тепла. Поэтому доминирующим вредным фактором выберем повышенную температуру воздуха рабочей зоны.
3.2 Техника безопасности
Электроснабжение НИЛ осуществляется от трехфазной четырехпроводной сети с глухозаземленной нейтралью, ток переменный, частота 50 Гц, напряжение 220/380 В. Согласно требованиям ПУЭ и ГОСТ 12.1.030-81 выполнено зануление, повторное заземление нулевого провода, проводится контроль изоляции.
Для зануления электрически соединены на вводе в НИЛ с нулевым проводником сети корпуса всех ПЭВМ. Соединение выполнено нулевым защитным проводником, полная проводимость которого не менее 50% полной проводимости фазового провода. Для отключения поврежденного участка сети на вводе электросети в НИЛ установлен автомат защиты, ток срабатывания которого выбран по току короткого замыкания. Зануление превращает замыкание на корпус ПЭВМ в однофазное короткое замыкание, в результате чего срабатывает автомат защиты. Время отключения поврежденного участка сети не более 0,1-0,2 с.
Для уменьшения напряжения, приложенного к телу человека в момент замыкания, необходимо выполнено повторное заземление нулевого провода. Нулевой защитный проводник заземлен при помощи искусственных заземлителей. Сопротивление повторного заземления нулевого провода не превышает 30 Ом согласно требованию ПУЭ-85.
Не реже 1 раза в год при отключенном электропитании проводится контроль изоляции между нулем и фазой, нулевым защитным проводником и фазой, между фазами. Сопротивление изоляции не превышает 500 кОм.
Электросеть розеток для питания ПЭВМ проложена под съемным полом в гибких металлических рукавах.
Не применяются: самодельные удлинители, не соответствующие требованиям ПУЭ к переносным электропроводкам; не используется для отопления нестандартное электронагревательное оборудование; не используется поврежденные розетки, разветвители, коробки, выключатели и другие электроизделия.
Согласно требованиям ДНАОП 0.00-4.12-99 [25] проводятся вводный, первичный на рабочем месте, повторный, внеплановый и целевой инструктажи.
Вводный инструктаж проводится при поступлении на работу. Инструктаж организует и проводит служба охраны труда, факт инструктажа фиксируется в журнале вводного инструктажа.
Первичный инструктаж проводится непосредственно на рабочем месте. Факт инструктажа фиксируется в журнале первичного инструктажа. Аналогично с периодичностью 1 раз в 6 месяцев проводятся повторные инструктажи.
Внеплановый инструктаж проводится при изменении условий труда, введения в эксплуатацию новой техники, а также при несчастных случаях.
Целевой инструктаж в НИЛ проводится при выполнении работ, не связанных с их основными обязанностями.
Содержание всех инструктажей соответствует требованиям ДНАОП 0.00-4.12-99.
3.3 Производственная санитария и гигиена труда
Работы в НИЛ согласно ДНАОП 0.00-1.31-99 относятся к категории работ по энергозатратам организма "легкая 1а" - работы, производимые сидя и сопровождающиеся незначительным физическим напряжением. С целью создания нормальных условий для персонала установлены следующие нормы микроклимата по ГОСТ 12.0.005-88, приведенные в таблице 2.
Для обеспечения установленных (оптимальных) норм микроклимата в помещении НИЛ следует применять кондиционирование. Выполним расчет кондиционирования.
Таблица 2. Оптимальные нормы микроклимата
Время года |
Температура воздуха, град. С |
Относительная влажность воздуха, % |
Скорость движения воздуха, м/с |
|
Холодное |
22-24 |
40-60 |
не более 0.1 |
|
Теплое |
23-25 |
40-60 |
не более 0.1 |
Для обеспечения установленных норм микроклиматических параметров и чистоты воздуха в НИЛ применяют естественную вентиляцию и кондиционирование. Основной задачей установок кондиционирования воздуха (УКВ) является поддержание параметров воздушной среды в допустимых пределах, обеспечивающих надежную работу ПЭВМ и комфортные условия для обслуживающего персонала. Расчет вентиляции необходим для определения потребного воздухообмена (количества воздуха в единицу времени). Для определения требуемого воздухообмена необходимо определить общее тепловыделение в помещении НИЛ [26].
Тепло , излучаемое оборудованием, равно
Qоб = 860•N1•K2 •K2 = 860•0,8•0,95•1 = 654 (ккал/ч), |
(3.1) |
где - суммарная мощность установленного оборудования;
- коэффициент использования мощностей, примем равным 0.95;
- коэффициент одновременной работы оборудования, с запасом примем равным 1.
Тепло , излучаемое людьми, равно
Qл = 0,5•n•g = 0,5•2•120 = 120 (ккал/ч), |
(3.2) |
где - количество работающих в помещении, 2 чел.;
- количество тепла, выделяемое человеком, при работе 1а равно 100-125 ккал/ч, примем равным 120 ккал/ч.
Тепло , излучаемое освещением, равно
Qос = k• E• S = 0,05•300•24 = 360 (ккал/ч), |
(3.3) |
где Е - наименьшая нормируемая освещенность, равна 300 кл;
S - площадь помещения, равна 24 кв.м.;
k - коэффициент тепловыделения,0,05 ккал/лк м2.
Тепло , выделяемое за счет солнечной радиации, равно:
Qр = nc•kc•S = 86•6•1,15 = 593,4 (ккал/ч), |
(3.4) |
где - удельное количество тепла, поступающего через единицу площади окна, равно 86 ккал/ч;
- поправочный коэффициент, зависит от географической полосы, для Харькова равен 1.15;
- площадь окон, равна 6 м2.
Общее выделение теплоты равно
Q = 654+120+360+593,4 = 1727,4 (ккал/ч) или 2 кВт. |
(3.5) |
Требуемый воздухообмен будет равен
Lтр = Q•(1/(c•r(tп - tк))) = 1727,4•(1/(0,24• 1,29(27-18)) = 619 (м3/ч) (3.6)
где - удельная теплоемкость воздуха, 0.24 ккал/кг·град;
- плотность воздуха, 1.29 кг/ м3;
- температура удаляемого воздуха, 270С;
- температура воздуха с кондиционера, 180С.
Lтр. ха= Lтрrc(tвнеш- tуд)
Lтр. ха=6191,290,24 (32-18)=2683 (м3/ч)
С учётом полученных результатов выбираем два кондиционера Samsung AW - 05EO.
Трудовая деятельность в НИЛ относится к группе В (отладка программ, перевод и редактирования и др.) [27]. Продолжительность работ превышает 4 ч и выполняемые работы относятся к III категории работ. Установлены перерывы по 20 мин каждый через 2 ч после начала работ, через 1,5 ч и 2, 5 ч после обеденного перерыва или же по 5-15 мин через каждый час работы. Общее время перерывов не превышает 60 мин.
Каждое рабочее место в НИЛ должно соответствует требованиям ДНАОП 0.00-1.31-99. Рабочие места расположены относительно световых проемов так, что естественный свет падает слева, при этом выдерживаются следующие расстояния:
от стен со световыми проемами до рабочего места - 1 м;
между тыльной поверхностью одного видеотерминала и экраном - 2,5 м.
Размещение рабочих мест в НИЛ показано на рисунке 2.
Рисунок 2. Схема размещения рабочих мест, оборудования и кондиционеров и схема эвакуации при пожаре.
На рисунке 2. приведены следующие обозначения:
К1, К2 - кондиционеры, П1,П2 - рабочие места
3.4 Пожарная безопасность
Пожарная безопасность объекта - состояние объекта, при котором с регламентированной вероятностью исключается возможность возникновения условий и воздействия на людей опасных факторов пожара, а также обеспечивается защита материальных ценностей [28]. Причинами, которые могут вызвать пожар в рассматриваемом помещении, являются:
неисправность электропроводки и приборов;
короткое замыкание электрических цепей;
перегрев аппаратуры и электропроводки;
нарушение правил пожарной безопасности;
разряд статического электричества;
молния.
Помещение отдела по пожарной и взрывопожарной опасности относится к категории В согласно ОНТП 24-86, так как в обращении находятся твердые сгораемые вещества и материалы. Степень огнестойкости здания - П согласно СНиП 2.01.02-85, класс помещения по пожарной опасности П-IIа, согласно ПУЭ-87. Пожарная безопасность в соответствии с ГОСТ 12.1.004-91* и ДСТУ 2272-93 обеспечивается системами предотвращения пожара, противопожарной защиты. Организационно-техническими мероприятиями. Система предотвращения пожара:
заземление корпусов для отвода заряда статистического электричества;
контроль и профилактика изоляции;
- наличие плавких вставок и предохранителей в электронном оборудовании;
-наличие вентилятора для охлаждения электронной аппаратуры.
Для данного класса зданий и местности со средней грозовой деятельностью 10 и более грозовых часов в год, установлена Ш категория молниезащиты. РД 34.21.122-87.
Степень защиты, соответствующая классу помещения П-II-а IP44 для оборудования и IP2X для светильников. ПУЭ-87 [29].
Система противопожарной защиты:
аварийное отключение и переключение аппаратуры;
наличие первичных средств пожаротушения, огнетушителей ОУ-2А, из расчета 1 шт. на каждые 20 м2 площади, так как углекислота обладает плохой электропроводностью;
наличие системы автоматической пожарной сигнализации;
дымовые извещатели из расчета 1 на 10 м2;
защита легковоспламеняющихся частей оборудования защитными материалами;
-использование негорючих материалов для акустической обработки стен и потолков.
Для успешной эвакуации персонала при пожаре размеры двери рабочего помещения предусмотрены следующими:
ширина двери не менее 1,5 м;
высота двери не менее 2,0 м;
ширина коридора 1,8 м;
рабочее помещение имеет два выхода;
-расстояние от самого удаленного рабочего места не превышает 100м. Организационные меры пожарной профилактики:
обучение персонала правилам пожарной безопасности;
издание необходимых инструкций и плакатов, плана эвакуации персонала в случае пожара.
3.5 Гражданская оборона
Т.к. разрабатываемый программный продукт производился в здании, вблизи которого не находятся потенциально опасные объекты, то разработка мер по защите персонала в чрезвычайных ситуациях не производилась.
3.6 Защита окружающей среды
Т.к. разрабатываемый программный продукт не наносит вред окружающей среде, меры защиты в данной дипломной работе не рассматривались.
Выводы
С развитием и постоянным внедрением компьютерных телекоммуникаций в различные сферы человеческой деятельности (научные исследования, электронная коммерция, банковское дело, медицина и т.д.) все более остро встает вопрос безопасного обмена данными через незащищенные каналы передачи. Единственным эффективным средством защиты информации остается ее криптографическое преобразование.
Актуальность данной разработки, обусловлен постоянно повышающимся интересом мирового сообщества к проблемам защиты информации - ее конфиденциальности и аутентичности.
В процессе анализа проблемной области были подвергнуты серьезному изучению математический аппарат шифра, критерии его применения, а также проблемы реализации на современных микропроцессорных архитектурах.
В ходе работы был реализован перечень основных научных, организационных и практических задач, требующих решения в процессе достижения цели дипломного проектирования, а именно:
-изучить методику применения интегральной атаки против блочного симметричного шифра Crypton,
-адаптировать методику применения интегральной атаки для использования против усеченного варианта блочного симметричного шифра Crypton,
-выполнить программную реализацию зашифрования, расшифрования и интегральной атаки против усеченного варианта блочного симметричного шифра Crypton .
В ходе работы дипломного проекта был сделан программный продукт.
Программа разрабатывалась на языке C++, финальная сборка была произведена в среде разработки Borland C++ v 3.1.
К основным операциям разработанным в ходе дипломного проектирования программного продукта можно отнести:
-практическое решение задач шифрования и расшифрования данных по алгоритму Crypton;
- реализация интегральной атаки на усеченный вариант шифра Crypton.
Возможными направлениями продолжения работ дипломного проекта можно рассматривать:
-расширение функциональности программного продукта в части увеличения детализации управления элементами алгоритма шифрования;
введение статистических средств анализа;
-распространение разработанных методик изучения криптографического алгоритма Crypton на другие современные алгоритмы шифрования.
В результате разработанных в разделе "Безопасность жизнедеятельности" организационных и технических мероприятий факторы производственной среды и трудового процесса в НИЛ стали находится в пределах допустимых условий труда. Технический и организационный уровень рабочего места обеспечивает безопасность человека. Дополнительных рекомендаций по улучшению условий труда не требуется.
Приложение А
шифр атака криптографический crypton
Файл <encrdecr.cpp>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <io.h>
#include <fcntl.h>
#include <iostream.h>
#include <sys/stat.h>
#include <stdlib.h>
#include "std_defs.h"
#include "crypton.h"
#include "atack.h"
void atack(int);
int main()
{
clrscr();
int i,q,f1,f2;
char f_nam1[111];
char f_nam2[111];
char f_nam3[111];
char w;
union
{
u1byte a1[4][4];
u4byte a4[4];
}
st,st1,st2,k;
for(i=0;i<4;i++)
k.a4[i]=0;
set_key(k.a4,128);
printf("encript/decrypt/atack(0/1/2)?");
cout<<'\n';
w=getch();
if((w!='0')&&(w!='1')&&(w!='2'))
exit(3);
if(w=='2')
{
cout<<"Enter name of atacking file"<<'\n';
gets(f_nam3);
f2=open(f_nam3,O_RDONLY|O_BINARY);
if(f2==-1)
{
close(f2);
exit(1);
}
atack(f2);
}
if(w=='0')
{
cout<<"Enter name of opening file"<<'\n';
gets(f_nam1);
cout<<"Enter name of encription file"<<'\n';
gets(f_nam2);
f1=open(f_nam1,O_RDONLY|O_BINARY);
if(f1==-1)
{ // perror(f_nam1);
puts(f_nam1);
cout<<'\n';
puts(f_nam2);
close(f1);
exit(1);
}
f2=open(f_nam2,O_WRONLY|O_CREAT|O_TRUNC|O_BINARY,S_IWRITE);
if(f2==-1)
{
close(f2);
exit(2);
}
do
{
q=read(f1,&st.a1[0][0],16);
if(q==16)
{
encrypt(st.a4, st1.a4);
write(f2,&st1.a1[0][0],16);
}
else
{
if(q>0)
{
for(i=0;i<4;i++)
st2.a4[i]=0;
for(i=0;i<q;i++)
{
st2.a1[i/4][i%4]=st.a1[i/4][i%4];
}
encrypt(st2.a4,st1.a4);
write(f2,&st1.a1[0][0],16);
}
}
}
while(q==16);
close(f1);
close(f2);
}
if(w=='1')
{
cout<<"Enter name of encription file"<<'\n';
gets(f_nam2);
cout<<"Enter name of decription file"<<'\n';
gets(f_nam3);
f1=open(f_nam2,O_RDONLY|O_BINARY);
if(f1==-1)
{
close(f1);
exit(1);
}
f2=open(f_nam3,O_WRONLY|O_CREAT|O_TRUNC|O_BINARY,S_IWRITE);
if(f2==-1)
{
close(f2);
exit(2);
}
do
{
q=read(f1,&st.a1[0][0],16);
if(q==16)
{
decrypt(st.a4, st1.a4);
write(f2,&st1.a1[0][0],16);
}
else
{
if(q>0)
{
for(i=0;i<4;i++)
st2.a4[i]=0;
for(i=0;i<q;i++)
{
st2.a1[i/4][i%4]=st.a1[i/4][i%4];
}
decrypt(st2.a4,st1.a4);
write(f2,&st1.a1[0][0],16);
}
}
}
while(q==16);
close(f1);
close(f2);
}
return 0;
}
Файл <crypton.h>
#include "std_defs.h"
static char *alg_name[] = { "crypton", "crypton.c" };
char **cipher_name()
{
return alg_name;
}
#define gamma_tau(x,b,m,p,q) \
(x) = (((u4byte)s_box[p][byte(b[0],m)] ) | \
((u4byte)s_box[q][byte(b[1],m)] << 8) | \
((u4byte)s_box[p][byte(b[2],m)] << 16) | \
((u4byte)s_box[q][byte(b[3],m)] << 24))
#define ma_0 0x3fcff3fc
#define ma_1 0xfc3fcff3
#define ma_2 0xf3fc3fcf
#define ma_3 0xcff3fc3f
#define mb_0 0xcffccffc
#define mb_1 0xf33ff33f
#define mb_2 0xfccffccf
#define mb_3 0x3ff33ff3
#define pi(b,n0,n1,n2,n3) \
(((b)[0] & ma_##n0) ^ \
((b)[1] & ma_##n1) ^ \
((b)[2] & ma_##n2) ^ \
((b)[3] & ma_##n3))
#define phi_n(x,n0,n1,n2,n3) \
( (x) & mb_##n0) ^ \
(rotl((x), 8) & mb_##n1) ^ \
(rotl((x), 16) & mb_##n2) ^ \
(rotl((x), 24) & mb_##n3)
#define phi_00(x) phi_n(x,0,1,2,3)
#define phi_01(x) phi_n(x,3,0,1,2)
#define phi_02(x) phi_n(x,2,3,0,1)
#define phi_03(x) phi_n(x,1,2,3,0)
#define phi_10(x) phi_n(x,3,0,1,2)
#define phi_11(x) phi_n(x,2,3,0,1)
#define phi_12(x) phi_n(x,1,2,3,0)
#define phi_13(x) phi_n(x,0,1,2,3)
#define phi0(x,y) \
(y)[0] = phi_00((x)[0]); \
(y)[1] = phi_01((x)[1]); \
(y)[2] = phi_02((x)[2]); \
(y)[3] = phi_03((x)[3])
#define phi1(x,y) \
(y)[0] = phi_10((x)[0]); \
(y)[1] = phi_11((x)[1]); \
(y)[2] = phi_12((x)[2]); \
(y)[3] = phi_13((x)[3])
u1byte p_box[3][16] =
{ { 15, 9, 6, 8, 9, 9, 4, 12, 6, 2, 6, 10, 1, 3, 5, 15 },
{ 10, 15, 4, 7, 5, 2, 14, 6, 9, 3, 12, 8, 13, 1, 11, 0 },
{ 0, 4, 8, 4, 2, 15, 8, 13, 1, 1, 15, 7, 2, 11, 14, 15 }
};
u4byte tab_gen = 0;
u1byte s_box[2][256];
u4byte s_tab[4][256];
u4byte l_key[104];
u4byte *e_key = l_key + 52;
u4byte *d_key = l_key;
void gen_tab(void)
{ u4byte i, xl, xr, yl, yr;
for(i = 0; i < 256; ++i)
{
xl = (i & 0xf0) >> 4; xr = i & 15;
yr = xr ^ p_box[1][xl ^ p_box[0][xr]];
yl = xl ^ p_box[0][xr] ^ p_box[2][yr];
yr |= (yl << 4); s_box[0][i] = (u1byte)yr; s_box[1][yr] = (u1byte)i;
xr = yr * 0x01010101; xl = i * 0x01010101;
s_tab[0][ i] = xr & 0x3fcff3fc;
s_tab[1][yr] = xl & 0xfc3fcff3;
s_tab[2][ i] = xr & 0xf3fc3fcf;
s_tab[3][yr] = xl & 0xcff3fc3f;
}
};
/* initialise the key schedule from the user supplied key */
u4byte kp[4] = { 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f };
u4byte kq[4] = { 0x9b05688c, 0x1f83d9ab, 0x5be0cd19, 0xcbbb9d5d };
#define h0_block(n,r0,r1) \
e_key[4 * n + 8] = rotl(e_key[4 * n + 0], r0); \
e_key[4 * n + 9] = rc ^ e_key[4 * n + 1]; \
e_key[4 * n + 10] = rotl(e_key[4 * n + 2], r1); \
e_key[4 * n + 11] = rc ^ e_key[4 * n + 3]
#define h1_block(n,r0,r1) \
e_key[4 * n + 8] = rc ^ e_key[4 * n + 0]; \
e_key[4 * n + 9] = rotl(e_key[4 * n + 1], r0); \
e_key[4 * n + 10] = rc ^ e_key[4 * n + 2]; \
e_key[4 * n + 11] = rotl(e_key[4 * n + 3], r1)
u4byte *set_key(const u4byte in_key[], const u4byte key_len)
{ u4byte i, rc, t0, t1, tmp[4];
if(!tab_gen)
{
gen_tab(); tab_gen = 1;
}
e_key[2] = e_key[3] = e_key[6] = e_key[7] = 0;
switch((key_len + 63) / 64)
{
case 4: e_key[3] = in_key[6]; e_key[7] = in_key[7];
case 3: e_key[2] = in_key[4]; e_key[6] = in_key[5];
case 2: e_key[0] = in_key[0]; e_key[4] = in_key[1];
e_key[1] = in_key[2]; e_key[5] = in_key[3];
}
tmp[0] = pi(e_key, 0, 1, 2, 3) ^ kp[0];
tmp[1] = pi(e_key, 1, 2, 3, 0) ^ kp[1];
tmp[2] = pi(e_key, 2, 3, 0, 1) ^ kp[2];
tmp[3] = pi(e_key, 3, 0, 1, 2) ^ kp[3];
gamma_tau(e_key[0], tmp, 0, 0, 1);
gamma_tau(e_key[1], tmp, 1, 1, 0);
gamma_tau(e_key[2], tmp, 2, 0, 1);
gamma_tau(e_key[3], tmp, 3, 1, 0);
tmp[0] = pi(e_key + 4, 1, 2, 3, 0) ^ kq[0];
tmp[1] = pi(e_key + 4, 2, 3, 0, 1) ^ kq[1];
tmp[2] = pi(e_key + 4, 3, 0, 1, 2) ^ kq[2];
tmp[3] = pi(e_key + 4, 0, 1, 2, 3) ^ kq[3];
gamma_tau(e_key[4], tmp, 0, 1, 0);
gamma_tau(e_key[5], tmp, 1, 0, 1);
gamma_tau(e_key[6], tmp, 2, 1, 0);
gamma_tau(e_key[7], tmp, 3, 0, 1);
t0 = e_key[0] ^ e_key[1] ^ e_key[2] ^ e_key[3];
t1 = e_key[4] ^ e_key[5] ^ e_key[6] ^ e_key[7];
e_key[0] ^= t1; e_key[1] ^= t1;
e_key[2] ^= t1; e_key[3] ^= t1;
e_key[4] ^= t0; e_key[5] ^= t0;
e_key[6] ^= t0; e_key[7] ^= t0;
rc = 0x01010101;
h0_block( 0, 8, 16); h1_block(1, 16, 24); rc <<= 1;
h1_block( 2, 24, 8); h0_block(3, 8, 16); rc <<= 1;
h0_block( 4, 16, 24); h1_block(5, 24, 8); rc <<= 1;
h1_block( 6, 8, 16); h0_block(7, 16, 24); rc <<= 1;
h0_block( 8, 24, 8); h1_block(9, 8, 16); rc <<= 1;
h1_block(10, 16, 24);
for(i = 0; i < 13; ++i)
{
if(i & 1)
{
phi0(e_key + 4 * i, d_key + 48 - 4 * i);
}
else
{
phi1(e_key + 4 * i, d_key + 48 - 4 * i);
}
}
phi1(e_key + 48, e_key + 48);
phi1(d_key + 48, d_key + 48);
return l_key;
};
/* encrypt a block of text */
#define fr0(i,k) \
b1[i] = s_tab[ (i) ][byte(b0[0],i)] ^ \
s_tab[((i) + 1) & 3][byte(b0[1],i)] ^ \
s_tab[((i) + 2) & 3][byte(b0[2],i)] ^ \
s_tab[((i) + 3) & 3][byte(b0[3],i)] ^ (k)
#define fr1(i,k) \
b0[i] = s_tab[((i) + 1) & 3][byte(b1[0],i)] ^ \
s_tab[((i) + 2) & 3][byte(b1[1],i)] ^ \
s_tab[((i) + 3) & 3][byte(b1[2],i)] ^ \
s_tab[(i) ][byte(b1[3],i)] ^ (k)
#define f0_rnd(kp) \
fr0(0,(kp)[0]); fr0(1,(kp)[1]); \
fr0(2,(kp)[2]); fr0(3,(kp)[3])
#define f1_rnd(kp) \
fr1(0,(kp)[0]); fr1(1,(kp)[1]); \
fr1(2,(kp)[2]); fr1(3,(kp)[3])
void encrypt(const u4byte in_blk[4], u4byte out_blk[4])
{ u4byte b0[4], b1[4];
b0[0] = in_blk[0] ^ e_key[0];
b0[1] = in_blk[1] ^ e_key[1];
b0[2] = in_blk[2] ^ e_key[2];
b0[3] = in_blk[3] ^ e_key[3];
f0_rnd(e_key + 4); f1_rnd(e_key + 8);
f0_rnd(e_key + 12); f1_rnd(e_key + 16);
f0_rnd(e_key + 20); f1_rnd(e_key + 24);
f0_rnd(e_key + 28); f1_rnd(e_key + 32);
f0_rnd(e_key + 36); f1_rnd(e_key + 40);
f0_rnd(e_key + 44);
gamma_tau(b0[0], b1, 0, 1, 0);
gamma_tau(b0[1], b1, 1, 0, 1);
gamma_tau(b0[2], b1, 2, 1, 0);
gamma_tau(b0[3], b1, 3, 0, 1);
out_blk[0] = b0[0] ^ e_key[48];
out_blk[1] = b0[1] ^ e_key[49];
out_blk[2] = b0[2] ^ e_key[50];
out_blk[3] = b0[3] ^ e_key[51];
};
/* decrypt a block of text */
void decrypt(const u4byte in_blk[4], u4byte out_blk[4])
{ u4byte b0[4], b1[4];
b0[0] = in_blk[0] ^ d_key[0];
b0[1] = in_blk[1] ^ d_key[1];
b0[2] = in_blk[2] ^ d_key[2];
b0[3] = in_blk[3] ^ d_key[3];
f0_rnd(d_key + 4); f1_rnd(d_key + 8);
f0_rnd(d_key + 12); f1_rnd(d_key + 16);
f0_rnd(d_key + 20); f1_rnd(d_key + 24);
f0_rnd(d_key + 28); f1_rnd(d_key + 32);
f0_rnd(d_key + 36); f1_rnd(d_key + 40);
f0_rnd(d_key + 44);
gamma_tau(b0[0], b1, 0, 1, 0);
gamma_tau(b0[1], b1, 1, 0, 1);
gamma_tau(b0[2], b1, 2, 1, 0);
gamma_tau(b0[3], b1, 3, 0, 1);
out_blk[0] = b0[0] ^ d_key[48];
out_blk[1] = b0[1] ^ d_key[49];
out_blk[2] = b0[2] ^ d_key[50];
out_blk[3] = b0[3] ^ d_key[51];
}
Файл <STD_DEFS.H>
/* 1. Standard types for AES cryptography source code */
typedef unsigned char u1byte; /* an 8 bit unsigned character type */
typedef unsigned short u2byte; /* a 16 bit unsigned integer type */
typedef unsigned long u4byte; /* a 32 bit unsigned integer type */
typedef signed char s1byte; /* an 8 bit signed character type */
typedef signed short s2byte; /* a 16 bit signed integer type */
typedef signed long s4byte; /* a 32 bit signed integer type */
/* 2. Standard interface for AES cryptographic routines */
/* These are all based on 32 bit unsigned values and will therefore */
/* require endian conversions for big-endian architectures */
#ifdef __cplusplus
extern "C"
{
#endif
char **cipher_name(void);
u4byte *set_key(const u4byte in_key[], const u4byte key_len);
void encrypt(const u4byte in_blk[4], u4byte out_blk[4]);
void decrypt(const u4byte in_blk[4], u4byte out_blk[4]);
#ifdef __cplusplus
};
#endif
/* 3. Basic macros for speeding up generic operations */
/* Circular rotate of 32 bit values */
#ifdef _MSC_VER
# include <stdlib.h>
# pragma intrinsic(_lrotr,_lrotl)
# define rotr(x,n) _lrotr(x,n)
# define rotl(x,n) _lrotl(x,n)
#else
#define rotr(x,n) (((x) >> ((int)(n))) | ((x) << (32 - (int)(n))))
#define rotl(x,n) (((x) << ((int)(n))) | ((x) >> (32 - (int)(n))))
#endif
/* Invert byte order in a 32 bit variable */
#define bswap(x) (rotl(x, 8) & 0x00ff00ff | rotr(x, 8) & 0xff00ff00)
/* Extract byte from a 32 bit quantity (little endian notation) */
#define byte(x,n) ((u1byte)((x) >> (8 * n)))
/* For inverting byte order in input/output 32 bit words if needed */
#ifdef BLOCK_SWAP
#define BYTE_SWAP
#define WORD_SWAP
#endif
#ifdef BYTE_SWAP
#define io_swap(x) bswap(x)
#else
#define io_swap(x) (x)
#endif
/* For inverting the byte order of input/output blocks if needed */
#ifdef WORD_SWAP
#define get_block(x) \
((u4byte*)(x))[0] = io_swap(in_blk[3]); \
((u4byte*)(x))[1] = io_swap(in_blk[2]); \
((u4byte*)(x))[2] = io_swap(in_blk[1]); \
((u4byte*)(x))[3] = io_swap(in_blk[0])
#define put_block(x) \
out_blk[3] = io_swap(((u4byte*)(x))[0]); \
out_blk[2] = io_swap(((u4byte*)(x))[1]); \
out_blk[1] = io_swap(((u4byte*)(x))[2]); \
out_blk[0] = io_swap(((u4byte*)(x))[3])
#define get_key(x,len) \
((u4byte*)(x))[4] = ((u4byte*)(x))[5] = \
((u4byte*)(x))[6] = ((u4byte*)(x))[7] = 0; \
switch((((len) + 63) / 64)) { \
case 2: \
((u4byte*)(x))[0] = io_swap(in_key[3]); \
((u4byte*)(x))[1] = io_swap(in_key[2]); \
((u4byte*)(x))[2] = io_swap(in_key[1]); \
((u4byte*)(x))[3] = io_swap(in_key[0]); \
break; \
case 3: \
((u4byte*)(x))[0] = io_swap(in_key[5]); \
((u4byte*)(x))[1] = io_swap(in_key[4]); \
((u4byte*)(x))[2] = io_swap(in_key[3]); \
((u4byte*)(x))[3] = io_swap(in_key[2]); \
((u4byte*)(x))[4] = io_swap(in_key[1]); \
((u4byte*)(x))[5] = io_swap(in_key[0]); \
break; \
case 4: \
((u4byte*)(x))[0] = io_swap(in_key[7]); \
((u4byte*)(x))[1] = io_swap(in_key[6]); \
((u4byte*)(x))[2] = io_swap(in_key[5]); \
((u4byte*)(x))[3] = io_swap(in_key[4]); \
((u4byte*)(x))[4] = io_swap(in_key[3]); \
((u4byte*)(x))[5] = io_swap(in_key[2]); \
((u4byte*)(x))[6] = io_swap(in_key[1]); \
((u4byte*)(x))[7] = io_swap(in_key[0]); \
}
#else
#define get_block(x) \
((u4byte*)(x))[0] = io_swap(in_blk[0]); \
((u4byte*)(x))[1] = io_swap(in_blk[1]); \
((u4byte*)(x))[2] = io_swap(in_blk[2]); \
Подобные документы
Теоретические основы, адаптация и практическое применение методики интегральной атаки для использования против усеченного варианта блочного симметричного шифра Crypton. Основные требования к механизмам системы, обеспечивающим конфиденциальность.
дипломная работа [642,7 K], добавлен 19.06.2011Алгоритм ГОСТ 28147-89 симметричного шифрования на основе сети Фейстеля, основные режимы его работы. Атаки на системы защиты информации. Метод грубой силы. Атаки класса "встреча посередине". Характеристики ГОСТ 28147-89 и американского шифра Rijndael.
курсовая работа [510,7 K], добавлен 17.01.2012Описание и предназначение протокола DNS. Использование файла host. Особенности и описание способов атак на DNS: ложный DNS-сервер, простой DNS-флуд, фишинг, атака посредством отраженных DNS-запросов. Защита и противодействие атакам на протокол DNS.
реферат [324,3 K], добавлен 15.12.2014Алгоритмы и стандарты криптографических преобразований. Криптографические преобразования на основе специального программного обеспечения. Метод криптографических преобразований на основе жесткой логики. Аналоги модуля шифрования и дешифрования данных.
курсовая работа [971,6 K], добавлен 30.01.2018Исследование наиболее распространенных видов сетевых атак. Сетевая разведка. Характеристика способов защиты от сетевых атак с использованием специальных программ. Изучение преимуществ и недостатков сетевых экранов. Переполнение буфера. Вирусные программы.
реферат [329,2 K], добавлен 23.12.2014История криптографии и ее основные задачи. Основные понятия криптографии (конфиденциальность, целостность, аутентификация, цифровая подпись). Криптографические средства защиты (криптосистемы и принципы ее работы, распространение ключей, алгоритмы).
курсовая работа [55,7 K], добавлен 08.03.2008Исследование элементов эллиптических кривых, необходимых для реализации криптографических протоколов. Изучение алгоритмов арифметики точек эллиптической кривой и способов генерации кривых для криптографических алгоритмов. Описание алгоритмов шифрования.
курсовая работа [371,2 K], добавлен 07.08.2012Классификации атак на отказ, их характеристики: тип, направление, схема и способ. Отраженные распределенные атаки на отказ. Назначение и проведение непрямой компьютерной атаки, функции IRC-ботнетов. Виды прямых атак (HTTP Flood, SYN Flood и прочие).
реферат [122,2 K], добавлен 22.01.2014Принятые на конкурс алгоритмы: CAST-256 (Канада), CRYPTON (Южная Корея), DEAL (Норвегия, Канада), DFC или Decorrelated Fast Cipher (Франция). Основные этапы конкурса на Advanced Encryption Standard. Финалист и победитель конкурса, сравнение шифров.
курсовая работа [439,9 K], добавлен 07.07.2012Современные физические и законодательные методы защиты информации. Внедрение системы безопасности. Управление доступом. Основные направления использования криптографических методов. Использование шифрования, кодирования и иного преобразования информации.
реферат [17,4 K], добавлен 16.05.2015