это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
ID (номер) заказа
3917065
Ознакомительный фрагмент работы:
Криптографические хэш-функции распространены очень широко. Они используются для хранения паролей при аутентификации, для защиты данных в системах проверки файлов, для обнаружения вредоносного программного обеспечения, для кодирования информации в блокчейне (блок – основной примитив, обрабатываемый Биткойном и Эфириумом). Поэтому данная тема так актуальна в сегодняшнем мире. В наши дни существует много криптографических алгоритмов. Они бывают разные и отличаются по сложности, разрядности, криптографической надежности, особенностям работы. С хешированием сталкиваются едва ли не на каждом шагу: при работе с браузером (список Web-ссылок), текстовым редактором и переводчиком (словарь), языками скриптов (Perl, Python, PHP и др.), компилятором (таблица символов). По словам Брайана Кернигана, это «одно из величайших изобретений информатики». Заглядывая в адресную книгу, энциклопедию, алфавитный указатель, мы даже не задумываемся, что упорядочение по алфавиту является не чем иным, как хешированием.Хеширование применяется для быстрого поиска в структурах данных и в криптографии, а также для проверки на наличия ошибок.Хеширование это процесс получения уникального (чаще цифрового) идентификатора для объекта.Алгоритмы хеширования – идея не новая. Они появилась более полувека назад, причем за много лет с принципиальной точки зрения мало что изменилось. Но в результате своего развития хеширование данных приобрело много новых свойств, поэтому его применение в сфере информационных технологий стало уже повсеместным.Хеш-функции чрезвычайно полезны и используются почти во всех приложениях информационной безопасности. ОСНОВНАЯ ЧАСТЬКриптография – наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации.Изначально криптография изучала методы шифрования информации – обратимого преобразования открытого (исходного) текста на основе секретного алгоритма и/или ключа в шифрованный текст (шифротекст). Традиционная криптография образует раздел симметричных криптосистем, в которых зашифрование и расшифрование проводится с использованием одного и того же секретного ключа. Помимо этого раздела современная криптография включает в себя асимметричные криптосистемы, системы электронной цифровой подписи (ЭЦП), хеш-функции, управление ключами, получение скрытой информации, квантовую криптографию.Разные люди понимают под шифрованием разные вещи. Дети играют в игрушечные шифры и секретные языки. Это, однако, не имеет ничего общего с настоящей криптографией. Настоящая криптография (strong cryptography) должна обеспечивать такой уровень секретности, чтобы можно было надежно защитить критическую информацию от расшифровки крупными организациями – такими как мафия, транснациональные корпорации и крупные государства. Настоящая криптография в прошлом использовалась лишь в военных целях. Однако сейчас, со становлением информационного общества, она становится центральным инструментом для обеспечения конфиденциальности.По мере образования информационного общества, крупным государствам становятся доступны технологические средства тотального надзора за миллионами людей. Поэтому криптография становится одним из основных инструментов обеспечивающих конфиденциальность, доверие, авторизацию, электронные платежи, корпоративную безопасность и бесчисленное множество других важных вещей.Криптография не является более придумкой военных, с которой не стоит связываться. Настала пора снять с криптографии покровы таинственности и использовать все ее возможности на пользу современному обществу. Широкое распространение криптографии является одним из немногих способов защитить человека от ситуации, когда он вдруг обнаруживает, что живет в тоталитарном государстве, которое может контролировать каждый его шаг.Основные алгоритмы шифрованияМетод шифровки/дешифровки называют шифром (cipher). Некоторые алгоритмы шифрования основаны на том, что сам метод шифрования (алгоритм) является секретным. Ныне такие методы представляют лишь исторический интерес и не имеют практического значения. Все современные алгоритмы используют ключ для управления шифровкой и дешифровкой; сообщение может быть успешно дешифровано, только если известен ключ. Ключ, используемый для дешифровки, может не совпадать с ключом, используемым для шифрования, однако в большинстве алгоритмов ключи совпадают.Алгоритмы с использованием ключа делятся на два класса: симметричные (или алгоритмы секретным ключом) и асимметричные (или алгоритмы с открытым ключом). Разница в том, что симметричные алгоритмы используют один и тот же ключ для шифрования и для дешифрования (или же ключ для дешифровки просто вычисляется по ключу шифровки). В то время как асимметричные алгоритмы используют разные ключи, и ключ для дешифровки не может быть вычислен по ключу шифровки.Симметричные алгоритмы подразделяют на потоковые шифры и блочные шифры. Потоковые алгоритмы позволяют шифровать информацию по битам, в то время как блочные работают с некоторым набором бит данных (обычно размер блока составляет 64 бита) и шифруют этот набор как единое целое.Ассиметричные шифры (также именуемые алгоритмами с открытым ключом, или – в более общем плане – криптографией с открытым ключом) допускают, чтобы открытый ключ был доступен всем (скажем, опубликован в газете). Это позволяет любому зашифровать сообщение. Однако расшифровать это сообщение сможет только нужный человек (тот, кто владеет ключом дешифровки). Ключ для шифрования называют открытым ключом, а ключ для дешифрования – закрытым ключом или секретным ключом.Современные алгоритмы шифровки/дешифровки достаточно сложны и их невозможно проводить вручную. Настоящие криптографические алгоритмы разработаны для использования компьютерами или специальными аппаратными устройствами. В большинстве приложений криптография производится программным обеспечением и имеется множество доступных криптографических пакетов.Вообще говоря, симметричные алгоритмы работают быстрее, чем ассиметричные. На практике оба типа алгоритмов часто используются вместе: алгоритм с открытым ключом используется для того, чтобы передать случайным образом сгенерированный секретный ключ, который затем используется для дешифровки сообщения.Многие качественные криптографические алгоритмы доступны широко – в книжном магазине, библиотеке, патентном бюро или в Интернете. К широко известным симметричным алгоритмам относятся DES и IDEA, Наверное, самым лучшим асимметричным алгоритмом является RSA.ХешированиеХеширование («hash» – смешивание, перемешивание, размешивание) – преобразование входного массива данных в короткое число фиксированной длины (которое называется хэш, хешем или хеш-кодом) таким образом, чтобы с одной стороны, это число было значительно короче исходных данных, а с другой стороны, с большой вероятностью однозначно им соответствовало.Преобразование выполняется при помощи хеш-функции. В общем случае однозначного соответствия между исходными данными и хеш-кодом быть не может. Обязательно будут возможны массивы данных, дающих одинаковые хеш-коды, но вероятность таких совпадений в каждой конкретной задаче должна быть сведена к минимуму выбором хеш-функции.Простым примером хеширования может служить нахождение циклической контрольной суммы, когда берётся текст (или другие данные) и суммируются коды входящих в него символов. Полученное число может являться примером хеш-кода исходного текста.Это самый простой пример и тут же понятно, что будут коллизии это когда одно и то же слово даст одно и тоже число. Например, слова дома и мода дадут одну и ту же цифру. Поэтому отсюда выход, либо усложнять алгоритм для гарантии неповторимости, а значит важно и расположение букв в плане порядка или при совпадении проверять уже саму строку непосредственно для гарантии того, что слова одинаковые. В любом случае ускорение выполнения значительно по причине того, что сравнивается все за один раз.Криптографические хэш-функцииТакой термин, как «хэш-функция», может означать несколько вещей для разных людей в зависимости от контекста. Для хеш-функций в криптографии определение немного проще. Хэш-функция – это уникальный идентификатор любого фрагмента контента. Это также процесс, который берет данные открытого текста любого размера и преобразует их в уникальный зашифрованный текст определенной длины.Первая часть определения говорит о том, что никакие две части контента не будут иметь один и тот же хеш-дайджест, и если контент изменится, хеш-дайджест тоже изменится. По сути, хеширование – это способ гарантировать, что любые данные, которые вы отправляете, дойдут до вашего получателя в том же состоянии, в котором они остались у вас, полностью нетронутыми и неизменными.Но, подождите, разве это не похоже на шифрование? Конечно, они похожи, но шифрование и хеширование – это не одно и то же. Это две отдельные криптографические функции, которые помогают обеспечить безопасный и законный обмен данными. Так что, если вы слышите, как кто-то говорит о «расшифровке» хеш-значения, то вы знаете, что они не знают, о чем говорят, потому что, во-первых, хэши не шифруются.Криптографические хэш-функции используются обычно для генерации дайджеста сообщения при создании цифровой подписи. Хэш-функции отображают сообщение в имеющее фиксированный размер хэш-значение (hash value) таким образом, что все множество возможных сообщений распределяется равномерно по множеству хэш-значений. При этом криптографическая хэш-функция делает это таким образом, что практически невозможно подогнать документ к заданному хэш-значению.Криптографические хэш-функции обычно производят значения длиной в 128 и более бит. Это число значительно больше, чем количество сообщений, которые когда-либо будут существовать в мире.Много хороших криптографических хэш-функций доступно бесплатно. Широко известные включают MD5 и SHA.Хэш-функция – это математическая функция, которая преобразует входное числовое значение в другое сжатое числовое значение. Входные данные хэш-функции имеют произвольную длину, но выходные данные всегда имеют фиксированную длину.Значения, возвращаемые хэш-функцией, называются дайджестом сообщения или просто хэш-значениями.Типичные особенности хэш-функций:Вывод фиксированной длины (хэш-значение):хэш-функция преобразует данные произвольной длины в фиксированную длину. Этот процесс часто называют хешированием данных;как правило, хэш намного меньше, чем входные данные, поэтому хэш-функции иногда называют функциями сжатия;поскольку хэш представляет собой меньшее представление больших данных, его также называют дайджестом;хэш-функция с n-битным выходом называется n-битной хэш-функцией. Популярные хэш-функции генерируют значения от 160 до 512 бит.Эффективность эксплуатациикак правило, для любой хэш-функции h с входом x вычисление h(x) является быстрой операцией;вычислительные хэш-функции намного быстрее, чем симметричное шифрование.Чтобы быть эффективным криптографическим инструментом, желательно, чтобы хэш-функция обладала следующими свойствами:Сопротивление перед изображением:это свойство означает, что обращение хэш-функции должно быть вычислительно сложным;если хэш-функция h выдает хэш-значение z, то поиск любого входного значения x, которое хешируется до z, должен быть сложным процессом;это свойство защищает от злоумышленника, который имеет только хэш-значение и пытается найти ввод.Второе сопротивление перед изображением:это свойство означает, что при заданном вводе и его хэше будет сложно найти другой ввод с таким же хэшем;другими словами, если хэш-функция h для входных данных x дает хэш-значение h(x), то должно быть трудно найти любое другое входное значение y, такое что h(y) = h(x);это свойство хэш-функции защищает от злоумышленника, который имеет входное значение и его хэш, и хочет заменить исходное входное значение другим значением в качестве допустимого.Сопротивление столкновениям:это свойство означает, что должно быть трудно найти два разных ввода любой длины, которые приводят к одному и тому же хэшу. Это свойство также называют хэш-функцией без коллизий;другими словами, для хэш-функции h трудно найти любые два разных входа x и y, такие что h(x) = h(y).поскольку хэш-функция сжимает функцию с фиксированной длиной хэш-функции, хэш-функция не может не иметь коллизий. Это свойство отсутствия столкновений только подтверждает, что эти столкновения должно быть трудно найти;из-за этого свойства злоумышленнику очень сложно найти два входных значения с одинаковым хэшем;кроме того, если хэш-функция устойчива к коллизиям, то она устойчива ко второму прообразу.Пусть у нас есть множество X каких-то объектов. Текстовых файлов, чисел, бутылок пива... Ещё есть множество чисел Y(N) = {0, 1, 2, ..., N-1}. Имеем функцию f(x) = k, где x - объект из X, k - из Y(N). Такая функция будет зваться хеш-функцией (можно звать её также функцией хеширования). Она по сути разбивает X на N непересекающихся подмножеств, это разбиение имеет название хеширование.Пример: X – целые неотрицательные числа, f(x) = x mod N (ищем остаток от деления). Эта хеш-функция называется методом деления. На практике метод деления используется в большинстве приложений, работающих с хешированием.Пример хэш-функций: f(x) = x mod 4 (функция mod возвращает остаток от деления).Ещё пример: X – опять целые неотрицательные числа. Функция f берёт первую цифру x. В этом случае N = 10.Хеширование применяется для быстрого поиска в структурах данных и в криптографии. При этом хеш-функции, хорошие для первого, вряд ли хороши для второго применения, и наоборот. хеш-функции, применяемые в криптографии, также называются функциями криптографического хеширования. Как правило, хеш-функции в сфере структур довольно просты, функции криптографического хеширования имеют довольно сложное тело.Одна из проблем криптографических функций хеширования – неизбежность коллизий. Раз речь идет о строке фиксированной длины, значит, существует вероятность, что для каждого ввода возможно наличие и других входов, способных привести к тому же самому хешу. В результате хакер может создать коллизию, позволяющую передать вредоносные данные под видом правильного хэша.Цель хороших криптографических функций – максимально усложнить вероятность нахождения способов генерации входных данных, хешируемых с одинаковым значением. Как уже было сказано ранее, вычисление хэша не должно быть простым, а сам алгоритм должен быть устойчив к «атакам нахождения прообраза». Необходимо, чтобы на практике было чрезвычайно сложно (а лучше – невозможно) вычислить обратные детерминированные шаги, которые предприняты для воспроизведения созданного хешем значения.Если S = hash (x), то, в идеале, нахождение x должно быть практически невозможным. Алгоритм MD5 и его подверженность взломуMD5 hash – один из первых стандартов алгоритма, который применялся в целях проверки целостности файлов (контрольных сумм). Также с его помощью хранили пароли в базах данных web-приложений. Функциональность относительно проста – алгоритм выводит для каждого ввода данных фиксированную 128-битную строку, задействуя для вычисления детерминированного результата однонаправленные тривиальные операции в нескольких раундах. Особенность – простота операций и короткая выходная длина, в результате чего MD5 является относительно легким для взлома. А еще он обладает низкой степенью защиты к атаке типа «дня рождения».Secure Hashing Algorithm (SHA1) – алгоритм, созданный Агентством национальной безопасности (NSA). Он создает 160-битные выходные данные фиксированной длины. На деле SHA1 лишь улучшил MD5 и увеличил длину вывода, а также увеличил число однонаправленных операций и их сложность. Однако каких-нибудь фундаментальных улучшений не произошло, особенно когда разговор шел о противодействии более мощным вычислительным машинам. Со временем появилась альтернатива – SHA2, а потом и SHA3. Последний алгоритм уже принципиально отличается по архитектуре и является частью большой схемы алгоритмов хеширования (известен как KECCAK – «Кетч-Ак»). Несмотря на схожесть названия, SHA3 имеет другой внутренний механизм, в котором используются случайные перестановки при обработке данных – «Впитывание» и «Выжимание» (конструкция «губки»).Требования к хеш-функциямПринято считать, что хорошей, с точки зрения практического применения, является такая хеш-функция, которая удовлетворяет следующим условиям:функция должна быть простой с вычислительной точки зрения;функция должна распределять ключи в хеш-таблице наиболее равномерно;функция не должна отображать какую-либо связь между значениями ключей в связь между значениями адресов;функция должна минимизировать число коллизий – то есть ситуаций, когда разным ключам соответствует одно значение хеш-функции (ключи в этом случае называются синонимами).При этом первое свойство хорошей хеш-функции зависит от характеристик компьютера, а второе – от значений данных.Если бы все данные были случайными, то хеш-функции были бы очень простые (например, несколько битов ключа). Однако на практике случайные данные встречаются достаточно редко, и приходится создавать функцию, которая зависела бы от всего ключа. Если хеш-функция распределяет совокупность возможных ключей равномерно по множеству индексов, то хеширование эффективно разбивает множество ключей. Наихудший случай – когда все ключи хешируются в один индекс.Безопасность хеш-функции может обеспечиваться сложностью некоторой математической задачи при наличии доказательства, что атаки, направленные на нарушение требований к ней, настолько же сложны, насколько и решение этой задачиКриптографическая хеш-функция является доказуемо защищённой от коллизий, если задача нахождения коллизий может быть средуцирована за полиномиальное время от задачи P, которая считается неразрешимой за полиномиальное время. Иначе говоря, если алгоритм A позволял бы за полиномиальное время решить задачу нахождения коллизий при существовании редуцирующего алгоритма R, работающего также за полиномиальное время, то последний позволил бы алгоритму A решить задачу P за полиномиальное время, что противоречит её сложности, а значит задача нахождения коллизий не легче задачи P.Аналогично определяется доказуемая защищённость от поиска первого и второго прообраза.Стойкость к поиску второго прообраза вытекает из доказанной стойкости к коллизиям, поэтому на практике иногда теоретически доказывается только стойкость к нахождению первого прообраза и стойкость к коллизиям.Некоторые задачи, полагающиеся неразрешимыми за полиномиальное время, которые могут быть использованы для построения таких функций:Дискретное логарифмирование.Нахождение квадратичного вычета.Факторизация целых чисел.Задача о сумме подмножеств.При наличии теоретических гарантий сложности, у доказательного подхода имеются и существенные недостатки:Текущие доказуемо безопасные алгоритмы хеширования слишком вычислительно сложны для того, чтобы использоваться на практике. По сравнению с обычными хеш-функциями они достаточно медленные.Создание доказуемо безопасных хеш-функций значительно более трудоёмко, чем классические подходы.Само доказательство безопасности часто основывается на задаче, имеющей требуемую сложность в среднем или в худшем случае. Сложность в худшем случае чаще всего описывает патологические ситуации, а не типичные для этой задачи. Даже редукция к задаче со сложностью в среднем обеспечивает ограниченную защищённость, так как может быть найден алгоритм, который легко решает проблему для определённого подмножества данных задачи. Так, например, было показано, что для двух из трёх предложенных в оригинальной статье для функции Fast Syndrome-Based hash параметров существуют более оптимальные атаки, чем предложенные создателями для доказательства безопасности.SWIFFT является примером хеш функции, которая несколько обходит описанную проблему безопасности. Может быть показано, что для любого алгоритма, который взламывает SWIFFT с вероятностью P за время T найдётся алгоритм, который решает определённую математическую задачу в худшем случае за время T в зависимости от P и T.Примеры доказуемо безопасных хеш-функцииVSH – Very Smooth Hash function – доказуемо безопасная устойчивая к коллизиям функция, опирающаяся на сложность нахождения нетривиальных квадратных корней по модулю составного числа n (что является настолько же сложным, насколько разложение n на множители).MuHASH.ECOH – Elliptic curve only hash – основанная на идее эллиптических кривых, задаче о сумме подмножеств и суммировании полиномов хеш-функция. Доказательство безопасности опиралось на предположение о NP-полноте лежащей в основе математической задачи, однако была найдена уязвимость для обобщённой атаки «дней рождения» Вагнера, связанной с поиском второго прообраза.FSB – Fast Syndrome-Based hash function – может быть показано, что взломать FSB по меньшей мере настолько же трудно, насколько решить NP-полную задачу, известную как регулярное синдромное декодирование.SWIFFT – SWIFFT основан на БПФ и доказуемо безопасен при довольно слабом предположении о сложности нахождения коротких векторов в циклической/идеальной решётке в худшем случае.Chaum, van Heijst, Pfitzmann hash function – функция, в которой нахождение коллизий так же трудоёмко, как и при нахождении дискретного логарифма в конечной группе F2p+1.Knapsack-based hash functions – семейство хеш-функций, основанное на задаче о рюкзаке.Существует общий подход к построению доказуемо безопасных алгоритмов хеширования на основе любого подходящего сигма протокола. Более быстрая версия VSH (называющаяся VSH*) может быть получена таким способом.Криптографические генераторы случайных чиселКриптографические генераторы случайных чисел производят случайные числа, которые используются в криптографических приложениях, например – для генерации ключей. Обычные генераторы случайных чисел, имеющиеся во многих языках программирования и программных средах, не подходят для нужд криптографии (они создавались с целью получить статистически случайное распределение, криптоаналитики могут предсказать поведение таких случайных генераторов).В идеале случайные числа должны основываться на настоящем физическом источнике случайной информации, которую невозможно предсказать. Примеры таких источников включают шумящие полупроводниковые приборы, младшие биты оцифрованного звука, интервалы между прерываниями устройств или нажатиями клавиш. Полученный от физического источника шум затем «дистиллируется» криптографической хэш-функцией так, чтобы каждый бит зависел от каждого бита. Достаточно часто для хранения случайной информации используется довольно большой пул (несколько тысяч бит) и каждый бит пула делается зависимым от каждого бита шумовой информации каждого другого бита пула криптографически надежным (strong) способом.Когда нет настоящего физического источника шума, приходится пользоваться псевдослучайными числами. Такая ситуация нежелательна, но часто возникает на компьютерах общего назначения. Всегда желательно получить некий шум окружения – скажем от величины задержек в устройствах, цифры статистики использования ресурсов, сетевой статистики, прерываний от клавиатуры или чего-то иного. Задачей является получить данные, непредсказуемые для внешнего наблюдателя. Для достижения этого случайный пул должен содержать, как минимум 128 бит настоящей энтропии.Криптографические генераторы псевдослучайных чисел обычно используют большой пул (seed-значение), содержащий случайную информацию. Биты генерируется путем выборки из пула с возможным прогоном через криптографическую хэш-функцию, чтобы спрятать содержимое пула от внешнего наблюдателя. Когда требуется новая порция бит, пул перемешивается путем шифровки со случайным ключом (его можно взять из неиспользованной пока части пула) так, чтобы каждый бит пула зависел от каждого другого бита. Новый шум окружения должен добавляться к пулу перед перемешиваниям, дабы сделать предсказание новых значений пула еще более сложным.Несмотря на то, что при аккуратном проектировании криптографически надежный генератор случайных чисел реализовать, не так уж и трудно, этот вопрос часто упускают из вида. Таким образом, следует подчеркнуть важность криптографического генератора случайных чисел – если он сделан плохо, он может легко стать самым уязвимым элементом системы.Несмотря на то, что два или более ключей могут хешироваться одинаково, они не могут занимать в хеш-таблице одну и ту же ячейку. Остаются два пути: либо найти для нового ключа другую позицию в таблице, либо создать для каждого значения хеш-функции отдельный список, в котором будут все ключи, отображающиеся при хешировании в это значение. Оба варианта представляют собой две классические стратегии разрешения коллизий – открытую адресацию с линейным перебором и метод цепочек.Метод цепочекТехнология сцепления элементов состоит в том, что элементы множества, которым соответствует одно и то же хеш-значение, связываются в цепочку-список. В позиции номер i хранится указатель на голову списка тех элементов, у которых хеш-значение ключа равно i ; если таких элементов в множестве нет, в позиции i записан NULL. Каждая ячейка массива является указателем на связный список (цепочку) пар ключ-значение, соответствующих одному и тому же хеш-значению ключа. Коллизиипросто приводят к тому, что появляются цепочки длиной более одного элемента.Операции поиска или удаления данных требуют просмотра всех элементов соответствующей ему цепочки, чтобы найти в ней элемент с заданным ключом. Для добавления данных нужно добавить элемент в конец или начало соответствующего списка, и, в случае если коэффициент заполнения станет слишком велик, увеличить размер массива и перестроить таблицу.Безопасное хранение паролей с помощью хеш-функцийПусть есть у нас социальная сеть, база данных или прочее, где может быть вход по логину и паролю. Чтобы система проверила, правильно ли введён пароль, требуется где-то хранить пароли. Хранить пароль в открытом виде не рекомендуется.Причины:Любой файл можно открыть блокнотом и просмотреть.Если хранить в реестре, то также можно проследить обращение программы к реестру и обнаружить то место где хранятся пароли.Скомпилированную программу (exe файл) можно вскрыть дизассемблегом (например ida pro) и отследить обращение к месту сравнения пароля (например, soft-ice).Таким образом, если пароль хранится в открытом виде его легко можно обнаружить. Чтобы хранить пароль в зашифрованном виде можно прибегнуть к хешированию – использовать хеш-функции с длинными хеш-значениями.Вместо паролей следует хранить их хеш-значения. Пользователь вводит при входе логин и пароль. В файле по логину ищется нужный хеш. Он сравнивается с хешем того, что введено в поле «пароль» пользователем. Если они равны, то пользователя пропускают, иначе – нет.Если кто-то залезет в файл с данными пользователей (где хранится логин и пароли), вместо паролей он увидит хеши.Контрольная суммаКонтрольная сумма файла (хеш) – это определенное значение, которое рассчитывается по набору данных с использованием определенного алгоритма. Она помогает проверить целостность данных при их хранении и передаче. Если у двух файлов совпадает контрольная сумма, это значит, что эти файлы идентичны по содержанию, даже если по какой-то причине имеют разные названия.Например, вы скачали файл, а потом выяснили, что он дефектный (к примеру, программа, которой вы пытаетесь его открыть, выдает сообщение об ошибке, хотя остальные файлы этого же формата открывает «на ура»). Как проверить, был ли он дефектным изначально, или же произошли какие-то проблемы при скачивании? Для этого и нужна контрольная сумма файла.Существуют различные алгоритмы хеширования для создания контрольных сумм. Скажем, программы-архиваторы используют так называемый циклический избыточный код (CRC). Он позволяет удостовериться, что распаковка файла из архива прошла без проблем, a полученный файл идентичен изначальному. Программа BitTorrent использует алгоритм SHA-1, чтобы проверять целостность загружаемых данных. Для проверки целостности скачанных файлов и поиска дубликатов файлов обычно используют алгоритм MD5.Скажем, вы решили скачать дистрибутив операционной системы. Если при закачке произойдет какой-то сбой, операционная система может установиться «криво» или не установиться вообще. А контрольная сумма поможет определить, совпадает ли скачанный вами файл с изначальным. Для этих целей контрольную сумму обычно указывают на сайте, предоставляющем файлы для закачки. Вам нужно лишь узнать контрольную сумму скачанного вами файла и сравнить два значения. Если контрольные суммы совпадают, файлы идентичны.Контрольная сумма определяется при помощи специальных программ. Одна из самых распространенных программ для проверки контрольных сумм файлов – HashTab.Криптоанализ и атаки на криптосистемыКриптоанализ – это наука о дешифровке закодированных сообщений, не зная ключей. Имеется много криптоаналитических подходов. Некоторые из наиболее важных для разработчиков приведены ниже.Атака со знанием лишь шифрованного текста (ciphertext-only attack) – это ситуация, когда атакующий не знает ничего о содержании сообщения, и ему приходится работать лишь с самим шифрованным текстом. На практике, часто можно сделать правдоподобные предположения о структуре текста, поскольку многие сообщения имеют стандартные заголовки. Даже обычные письма и документы начинаются с легко предсказуемой информации. Также часто можно предположить, что некоторый блок информации содержит заданное слово.Атака со знанием содержимого шифровки (known-plaintext attack) – атакующий знает или может угадать содержимое всего или части зашифрованного текста. Задача заключается в расшифровке остального сообщения. Это можно сделать либо путем вычисления ключа шифровки, либо минуя это.Атака с заданным текстом (chosen-plaintext attack) – атакующий имеет, возможно, получить шифрованный документ для любого нужного ему текста, но не знает ключа. Задачей является нахождение ключа. Некоторые методы шифрования и, в частности, RSA, весьма уязвимы для атак этого типа. При использовании таких алгоритмов надо тщательно следить, чтобы атакующий не мог зашифровать заданный им текст.Атака с подставкой (Man-in-the-middle attack) – атака направлена на обмен шифрованными сообщениями и, в особенности, на протокол обмена ключами. Идея заключается в том, что когда две стороны обмениваются ключами для секретной коммуникации (например, используя шифр Диффи-Хелмана, Diffie-Hellman), противник внедряется между ними на линии обмена сообщениями. Далее противник выдает каждой стороне свои ключи. В результате, каждая из сторон будет иметь разные ключи, каждый из которых известен противнику. Теперь противник будет расшифровывать каждое сообщение своим ключом и затем зашифровывать его с помощью другого ключа перед отправкой адресату. Стороны будут иметь иллюзию секретной переписки, в то время как на самом деле противник читает все сообщения. Одним из способов предотвратить такой тип атак заключается в том, что стороны при обмене ключами вычисляют криптографическую хэш-функцию значения протокола обмена (или, по меньшей мере, значения ключей), подписывают ее алгоритмом цифровой подписи и посылают подпись другой стороне. Получатель проверит подпись и то, что значение хэш-функции совпадает с вычисленным значением. Такой метод используется, в частности, в системе Фотурис (Photuris).Атака с помощью таймера (timing attack) – этот новый тип атак основан на последовательном измерении времен, затрачиваемых на выполнение операции возведения в степень по модулю целого числа. Ей подвержены, по крайней мере, следующие шифры: RSA, Диффи-Хеллман и метод эллиптических кривых. Дополнительную информацию смотрите в оригинальной статье и во множестве последовавших статей.Имеется множество других криптографических атак и криптоаналитических подходов. Однако приведенные выше являются, по-видимому, наиболее важными для практической разработки систем.Криптография сегодня Криптография сегодня – это важнейшая часть всех информационных систем: от электронной почты до сотовой связи, от доступа к сети Internet до электронной наличности. Криптография обеспечивает подотчетность, прозрачность, точность и конфиденциальность. Она предотвращает попытки мошенничества в электронной коммерции и обеспечивает юридическую силу финансовых транзакций. Криптография помогает установить вашу личность, но и обеспечивает вам анонимность. Она мешает хулиганам испортить вашу WWW-страницу и не позволяет конкурентам залезть в ваши конфиденциальные документы. А в будущем, по мере того как коммерция и коммуникации будут все теснее связываться с компьютерными сетями, криптография станет жизненно важной.Электронный вандализм становится все более серьезной проблемой. Вандалы уже разрисовывали граффити Internet-страницу ЦРУ, забрасывали почтовыми бомбами провайдеров Internet и отменили тысячи сообщений ньюз-групп. Обычным делом для компьютерных вандалов и воров стал взлом компьютерных сетей. Когда средства безопасности неадекватны угрозе, риск быть пойманными для нарушителей невелик.Нападающие не соблюдают правил, они прибегают к обману. Они могут атаковать систему с помощью технических средств, о которых проектировщики и не помышляли. Похитители произведений искусства, бывало, грабили дома, разрезая стены цепной пилой. Ни одна охранная система не имеет ни малейшего шанса устоять перед такой атакой. Компьютерные воры тоже умеют «проходить сквозь стены» – они крадут техническую информацию, подкупают сотрудников, модифицируют программное обеспечение, вступают в тайный сговор. Они используют технологии более современные, чем те, что используются в системе безопасности, и даже изобретают новые математические приемы для успешной атаки на системы.Случай благоволит атакующему. Злоумышленники всегда имеют шанс узнать о системе безопасности больше, чем пользователи. Защищающимся приходится учитывать все вероятные уязвимые места, а нападающему нужно нащупать только одну брешь, чтобы скомпрометировать всю систему.
ЗАКЛЮЧЕНИЕ
Вне зависимости от того, какие технологии шифрования и криптографические новинки будут использоваться в этом направлении, все сводится к решению одной из двух задач: 1) увеличению сложности внутренних операций хэширования; 2) увеличению длины hash-выхода данных с расчетом на то, что вычислительные мощности атакующих не смогут эффективно вычислять коллизию.И, несмотря на появление в будущем квантовых компьютеров, специалисты уверены, что правильные инструменты (то же хэширование) способны выдержать испытания временем, ведь ни что не стоит на месте. Дело в том, что с увеличением вычислительных мощностей снижается математическая формализация структуры внутренних алгоритмических хэш-конструкций. А квантовые вычисления наиболее эффективны лишь в отношении к вещам, имеющим строгую математическую структуру.Таким образом, хэш-функции – это математические функции, которые преобразуют или «отображают» заданный набор данных в битовую строку фиксированного размера, также известную как «хэш-значение».Хэш-функции используются в криптографии и имеют различные уровни сложности и сложности. Также хэш-функции используются для криптовалюты, защиты паролей и сообщений.Хэш-функции – это обычно используемые структуры данных в вычислительных системах для таких задач, как проверка целостности сообщений и аутентификация информации. Хотя они считаются криптографически «слабыми», поскольку могут быть решены за полиномиальное время, их нелегко расшифровать.Криптографические хэш-функции добавляют функции безопасности к типичным хеш-функциям, что затрудняет обнаружение содержимого сообщения или информации о получателях и отправителях. В частности, криптографические хэш-функции обладают следующими тремя свойствами:Они «бесконфликтные». Это означает, что никакие два входных хэша не должны сопоставляться с одним и тем же выходным хэшем. Их можно скрыть. Должно быть трудно угадать входное значение для хэш-функции по ее выходу. Они должны быть удобными для головоломок. Должно быть сложно выбрать вход, который обеспечивает заранее определенный результат. Таким образом, входные данные должны быть выбраны из как можно более широкого распределения.
СПИСОК ИСТОЧНИКОВ И ЛИТЕРАТУРЫ
Авезова, Я. Э. Современные подходы к построению хеш-функций на примере финалистов конкурса SHA-3 / Я. Э. Авезова // Вопросы кибербезопасности, 2015. – №3 (11). – С. 24-28.Алферов, А. П. Основы криптографии / А. П. Алферов, А. Ю. Зубов, А. С. Кузьмин, А. В. Черемушкин. – М. : Гелиос АРВ, 2002. – 480 с.Богданов, Д. С. Об универсальном древовидном режиме выработки хэш-кода / Д. С. Богданов, Ф. А. Дали, В. О. Миронкин // Современные информационные технологии и ИТ-образование, 2018. – №2. URL: https://cyberleninka.ru/article/n/ob-universalnom-drevovidnom-rezhime-vyrabotki-hesh-koda (дата обращения: 29.03.2022).Горбенко, И. Д. Функции хеширования. Понятия, требования, классификация, свойства и применение / И. Д. Горбенко, И. А. Штанько // Радиоэлектроника и информатика, 1998. – №1 (2). URL: https://cyberleninka.ru/article/n/funktsii-heshirovaniya-ponyatiya-trebovaniya-klassifikatsiya-svoystva-i-primenenie (дата обращения: 29.03.2022).Трубникова, Е. А. Применение хеш-функции в создании электронной цифровой подписи / Е. А. Трубникова, В. П. Батунина // Юный ученый, 2020. – № 7 (37). – С. 19-22.Шамухамедов, Г. Х. Анализ современных методов хеширования / Г. Х. Шамухамедов, Н. К. Хыдыров, О. М. Союнова // Science Time, 2015. – №6 (18). URL: https://cyberleninka.ru/article/n/analiz-sovremennyh-metodov-heshirovaniya (дата обращения: 29.03.2022).
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Требуется разобрать ст. 135 Налогового кодекса по составу напогового...
Решение задач, Налоговое право
Срок сдачи к 5 дек.
Школьный кабинет химии и его роль в химико-образовательном процессе
Курсовая, Методика преподавания химии
Срок сдачи к 26 дек.
Реферат по теме «общественное мнение как объект манипулятивного воздействий. интерпретация общественного мнения по п. бурдьё»
Реферат, Социология
Срок сдачи к 9 дек.
Выполнить курсовую работу. Образовательные стандарты и программы. Е-01220
Курсовая, Английский язык
Срок сдачи к 10 дек.
Изложение темы: экзистенциализм. основные идеи с. кьеркегора.
Реферат, Философия
Срок сдачи к 12 дек.
Заполните форму и узнайте цену на индивидуальную работу!