Какая существует схема шифрования
Перейти к содержимому

Какая существует схема шифрования

  • автор:

Какая существует схема шифрования

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

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

Симметричные алгоритмы
Алгоритмы шифрования делятся на два больших класса: симметричные (AES, ГОСТ, Blowfish, CAST, DES) и асимметричные (RSA, El-Gamal). Симметричные алгоритмы шифрования используют один и тот же ключ для зашифровывания информации и для ее расшифровывания, а асимметричные алгоритмы используют два ключа — один для зашифровывания, другой для расшифровывания.

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

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

Обычно в Программах для шифрования (WinRAR, Rohos и т.д.) ключ создается из пароля , который задает пользователь.

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

В криптографии считается, что механизм шифрования — это несекретная величина, и злоумышленник может иметь полный исходный код алгоритма шифрования, а также зашифрованный текст (правило Керкхоффа). Еще одно допущение, которое может иметь место — злоумышленник может знать часть незашифрованного (открытого) текста.

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

Теоретическая и практическая стойкость.
В 1949 г. К.Э. Шеннон опубликовал статью "Теория связи в секретных системах". Шеннон рассматривал стойкость криптографических систем как Практическую и Теоритическую. Вывод по теоритической стойкости до сих пор остается пессимистическим: длина ключа должна быть равна длине открытого текста.
Поэтому Шеннон также рассмотрел вопрос и по практической стойкости криптографических систем. Надежна ли система, если злоумышленник обладает ограниченным временем и вычислительными ресурсами для анализа перехваченных сообщений ?

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

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

В криптологии есть подраздел — криптоанализ, который изучает вопросы взлома или подделывания зашифрованных сообщений. Существует много способов и методов криптоанализа. Самый популярный — это метод прямого перебора всех возможных значений ключа шифрования (так называемым методом "грубой силы" или brute force). Суть данного метода состоит в переборе всех возможных значений ключа шифрования до тех пор, пока не будет подобран нужный ключ.

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

Алгоритмы шифрования
AES (Rijndael). В настоящее время является федеральным стандартом шифрования США. Утвержден министерством торговли в качестве стандарта 4 декабря 2001 года. Решение вступило в силу с момента опубликования в федеральном реестре (06.12.01). В качестве стандарта принят вариант шифра только с размером блока 128 бит.

ГОСТ 28147-8. Стандарт Российской Федерации на шифрование и имитозащиту данных. Первоначально имел гриф (ОВ или СС — точно не известно), затем гриф последовательно снижался, и к моменту официального проведения алгоритма через Госстандарт СССР в 1989 году был снят. Алгоритм остался ДСП (как известно, ДСП не считается грифом). В 1989 году стал официальным стандартом СССР, а позже, после распада СССР, федеральным стандартом Российской Федерации.

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

DES Федеральный стандарт шифрования США в 1977-2001 годах. В качестве федерального стандарта США принят в 1977 году. В декабре 2001 года утратил свой статус в связи с введением в действие нового стандарта.

CAST В некотором смысле аналог DES.

www.codenet.ru/progr/alg/enc
Алгоритмы шифрования, Обзор, информация, сравнение.

http://www.enlight.ru/crypto
Материалы по асимметричному шифрованию, цифровой подписи и другим "современным" криптографическим системам.

Александр Великанов,
Ольга Чебан,
Tesline-Service SRL.

Дата: 1 Марта 2004

6.4 Системы шифрования

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

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

История криптографии

Проблема сокрытия содержания послания при его транспортировке волновала людей с древних пор. Достаточно давно были использованы методы стеганографии, когда на выбритой голове писался текст послания, затем ждали, когда отрастут волосы, и посланец отправлялся в путь. По прибытии голову снова брили и сообщение читалось. В 21-ом веке метод стеганографии неожиданно получил новое развитие. Оказалось, что в графическом файле можно пересылать сообщения и изображения, даже факт наличия которых трудно установить. Смотри History of Cryptography.

Известно, что еще Цезарь (100-44 годы до нашей эры) при переписке использовал шифр, получивший его имя. В 1518 году Джоанес Тритемиус написал первую книгу по криптографии, где впервые были описаны многоалфавитные подстановочные шифры. Лишь в 1918 году во время первой мировой войны в Германии была применена шифровальная система ADFGVX. Позднее в 1933-45 годах в Германии была разработана и применена первая шифровальная машина Enigma (на этом принципе работает система crypt в UNIX). Мощное развитие криптография получила в период второй мировой войны. С этой шифровальной машиной связан и первый успех в области вскрытия сложных шифров. В 19-ом веке голандец Август Керкхоф сформулировал фундаментальное требование, предъявляемое к криптосистемам и сегодня (принцип Керкхофа):

Секретность шифра должна базироваться не на секретности алгоритма, а на секретном ключе.

Если в алгоритм заложена возможность относительно быстрого дешифрования (мечта всех спецслужб мира), то рано или поздно это станет известно, и такой возможностью воспользуются злоумышленники, что может привести к утечке критическо важной информации. Основы современной криптографии были заложены в работе Клода Шеннона “Теория связи в секретных системах” (1949).

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

Во время второй мировой войны в Великобритании в Government Code and Cypher School работало более 10000 человек (из них две трети женщин). Код немецкой шифровальной машины Энигма взломал английский математик Алан Тьюринг, но в той или иной степени в этом участвовали и остальные 10000 сотрудников. Ключи настройки машины Энигма изменялись каждые сутки в полночь. В результате были дешифрованы два с половиной миллиона нацистских секретных сообщений. Следует иметь в виду, что тогда не было ЭВМ в современном понимании этого слова и вся работа выполнялась с помощью электромеханических устройств (Colossus — British Tabulating Machine Company). Англичане считают эту машину первым программируемым электронным компьютером. Если бы эти сообщения дешифровались в ручную, то надо было бы перебрать 158×10 18 вариантов. Colossus эмулировал работу 36 машин Энигма. Многие сообщения начинались с метеорологических данных, что позволяло проверить настройки дешифровальной машины. Сотрудники, обслуживающие Colossus, работали парами, чтобы исключить случайные ошибочные действия. Работа была посменная, круглосуточная. Работа проходила в условиях глубокой секретности. Более поздняя версия Mark II Colossus была способна дешифровать до 25000 символов в секунду. Машина Colossus поддерживается в рабочем состоянии и сегодня, но уже в качестве музейного экспоната.

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

Общие требования, предъявляемые к криптосистемам

  • Знание использованного алгоритма не должно снижать надежность шифрования.
  • Длина зашифрованного текста должна быть равна длине исходного открытого текста (это требование относится к числу желательных и выполняется не всегда).
  • Зашифрованный текст не может быть прочтен без знания ключа.
  • Каждый ключ из многообразия ключей должен обеспечивать достаточную надежность.
  • Изменение длины ключа не должно приводить к изменению алгоритма шифрования.
  • Если известен зашифрованный и открытый текст сообщения, то число операций, необходимых для определения ключа, не должно быть меньше полного числа возможных ключей.
  • Дешифрование путем перебора всех возможных ключей должно выходить далеко за пределы возможностей современных ЭВМ.
  • Если при шифровании в текст вводятся дополнительные биты, то алгоритм их внесения должен быть надежно скрыт.
  • Не должно быть легко устанавливаемой зависимости между последовательно используемыми ключами.
  • Алгоритм может быть реализован аппаратно.

В симметричных криптосистемах могут использоваться одно- или многоалфавитные подстановки (например, одно-алфавитная подстановка Цезаря), при этом производится замена символов исходного текста на другие с использованием достаточно сложных алгоритмов. Многоалфавитные подстановки несравненно более надежны. К числу простых методов шифрования относится способ перестановок символов исходного текста (этот метод эффективен только лишь при достаточно большой длине исходного текста). Множество перестановок символов для текста из N символов равно N!, что до какой-то степени гарантирует надежность процедуры. Несколько большую надежность предлагает метод гаммирования, когда на исходный текст накладывается псевдослучайная последовательность бит, генерируемая на основе ключа шифрования, например, с использованием операции исключающего ИЛИ. Обратное преобразование (дешифрование) выполняется генерацией точно такой же псевдослучайной последовательности и наложением ее на зашифрованной текст. Гаммирование уязвимо для случая, когда злоумышленнику становится известен фрагмент исходного текста. В этих обстоятельствах он без труда восстановит фрагмент псевдослучайной последовательности, а по нему и всю последовательность. Так если достаточно большое число сообщений начинается со слов "Секретно", а в конце ставится дата сообщения, расшифровка становится вопросом времени и терпения.

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

Исходный текст 9 5 18 1 3 19 20 3 21 11 20 6
Используемый ключ 23 5 13 14 10 17 5 1 13 9 27 11
Зашифрованный текст 32 10 31 15 13 36 25 4 34 20 47 17

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

Примером шифрования с использованием секретного ключа является метод Видженера (Vigenere; www.massconfusion.com/crypto/lecture/method6.shtml), относящийся к числу много алфавитных подстановок. Здесь берется небольшое целое число m и алфавит после каждой символьной подстановки сдвигается на m символов. Например, для m=4

1. abcdefghijklmnopqrstuvwxyz
ghijklmnopqrstuvwxyzabcdef
2. opqrstuvwxyzabcdefghijklmn
3. lmnopqrstuvwxyzabcdefghijk
4. fghijklmnopqrstuvwxyzabcde

Ключ = golf (смотри левую вертикальную колонку символов).

Исходный текст разбивается на группы по m символов (в рассмотренном случае по 4). Для каждой группы первый символ заменяется соответствующей буквой первого алфавита, вторая — из второго и т.д. Например, фраза "get me out of here please" будет преобразована следующим образом:

getm eout ofhe repl ease
mser kcfy utsj xsaq kohj.

Система DES

Наибольшее распространение в последнее время получило блочное шифрование, где последовательность процедур воздействует на блок входного текста. Одним из наиболее известных таких методов стал DES (Data Encryption Standard), который работает с блоками данных по 64 байта (1998 год). Существует четыре режима работы:

ECB electronic code book.
CBC cipher block chaining
CFB cipher feedback
OFB output feedback.

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

Шифрование и дешифрование базируются на использовании ключей. Математически это можно выразить следующим образом (cм. lglwww.epfl.ch/~jkienzle/digital_money/node11.html; www.ee.mtu.edu/courses/ ee465/groupa/overvi ew.html):

EK(M) = C
DK(c) = M, где K — ключ, M — исходный текст; C — зашифрованный текст.

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

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

Асимметричные схемы шифрования/дешифрования предполагают существования независимых ключей для шифрования и дешифрования. Причем один не может быть получен из другого и наоборот. В идеале ключ дешифровки не может быть получен из шифрующего ключа за любое разумное время. В этом случае ключ шифрования может быть сделан общедоступным (например, алгоритм RSA). Партнеры до начала коммуникаций должны послать друг другу ключи шифрования КШО и КШП (ключи шифрования отправителя и получателя). Возможность перехвата таких ключей опасности не представляет. Дешифрование выполняется с помощью ключей КДО и КДП, которые образуют пары с КШО и КШП соответственно и формируются совместно. Ключи КШО и КШП обычно пересылаются на фазе инициализации сессии информационного обмена.

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

Базовые определения и теоремы

Конгруентность. a конгруентно b по модулю n (a ≡ nb), если при делении на n a и b, получается идентичный остаток. Так 100 ≡ 1134 (100 и 34 при делении на 11 дают остаток 1) и -6 ≡ 810 (ведь -6 =8(-1)+2). Мы всегда имеем a ≡ nb для некоторого 0 ≤ b≤ n-1. Если a ≡ nb и с ≡ d, то справедливы равенства:

Аналогичная процедура для деления не всегда справедлива: 6 ≡ 1218 но 3 ≠ 9. Приведенные здесь и далее математические определения и обоснования взяты из: http://lglwww.epfl.ch/~jkienzle/digital/node20.html.

Необходимо также вспомнить о знакомом всем со школьной скамьи понятии наибольшего общего делителя. Для a и b число (a,b) является наибольшим общим делителем, который делит a и b без остатка:

Теорема 1. Для любых a,b существуют целые числа x,y, для которых ax+by=(a,b). В данной статье не приводится доказательств представленных утверждений, их следует искать в книгах по дискретной математике.

В этом можно убедиться, решая уравнение 30x+69y=3 путем последовательных упрощающих подстановок (ищется целочисленное решение:

30x’+9y=3 [x’=x+2y]
3x’+9y’=3 [y’=y+3x’]
3x"+0y’=3 [x"=x’+3y’]

Легко видеть, что x"=1, y’=0 является решением окончательного уравнения. Мы можем получить решение исходного уравнения путем обратной подстановки.

Мы можем решить уравнение вида 30x+69y=15 путем умножения нашего решения: y=-15, x=35. Должно быть ясно, что уравнение не будет иметь целочисленного решения, если 15 заменить на что-то некратное (30,69)=3.

Все другие целочисленные решения 30x+69y=15 могут быть получены, варьируя первое решение:

y=-15+(30/3)t x=35 -(69/3)t для целого t

Если мы проделаем то же для произвольного равенства ax+by=(a,b), мы возможно получим один из коэффициентов равным нулю, а другой — (a,b). В действительности эта процедура представляет собой алгоритм Евклида для нахождения наибольшего общего делителя.

Важно то, что этот процесс реализуем на ЭВМ даже в случае, когда a и b имеют несколько сотен значащих цифр. Легко показать, что 600-значное число не потребует более чем 4000 уравнений. Теорема 1 справедлива и для простых чисел.

Следствие 1. Если p является простым числом, ar ≡ pas и a ≠ 0, тогда r ≡ s.
Следствие 2. Если p простое число и a ≠ 0 mod p, тогда для любого b существует y, для которого ay ≡ pb.
Следствие 3. ("Теорема о китайском остатке"). Если (p,q)=1, тогда для любого a,b существует n, для которого n ≡ pa и n≡ qb.

Во многих криптографических приложениях используется:

a a 2 a 3 … mod p, где a и p целые числа.

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

432 678 mod 987.

Фокус заключается в том, что берется число и осуществляется возведение в квадрат.

432 2 = 186624; 186624 mod 987 = 81; 432 4 mod 987 = 81 2 mod 987 = 639
432 8 -> 639 2 mod 987 -> 690 …. 432 512 -> 858
так как 678= 512+128+32+4+2, то:
432 678 ->(81)(639)….(858) -> 204

Вычисления с использованием показателя включают в себя ограниченное число умножений. Если числа содержат несколько сотен цифр, необходимы специальные подпрограммы для выполнения таких вычислений. Рассмотрим последовательность степеней 2 n mod 11:

2 4 8 5 10 9 7 3 6 1

Здесь числа от 1 до 10 появляются в виде псевдослучайной последовательности.

Пусть p является простым числом. Существует такое a, что для каждого 1≤ b ≤ p-1, существует такое 1≤ x ≤ p-1, что a x ≡ pb, a не обязательно равно 2.

Степени 2 mod 7 равны 2, 4, 1. Далее числа повторяются, а числа 3, 5, или 6 не могут быть получены никогда. Рассмотрим некоторые следствия этой теоремы.

Следствие 4. Пусть a соответствует требованиям теоремы 2, тогда a p-1 ≡ p1.

Следствие 5. Для любого b ≠ 0, b p-1 ≡ p1.

Следствие 6. Если x ≡ (p-1)y, тогда b x ≡ pb y

Пусть b ≠ 0, d наименьшее положительное число, такое что b d ≡ p1. Тогда для любого с>0 c b c ≡ p1 d делит c без остатка. В частности для следствия 5, d делит p-1 без остатка.

Согласно теореме 2, если p простое число, существует такое a, при котором равенство a x ≡ pb имеет решение для любого b ≠ 0. Такое значение a называется примитивным корнем p, а x называется дискретным логарифмом b. Получение b при заданных a и x относительно просто, определение же x по a и b заметно сложнее. Многие современные системы шифрования основываются на факте, что никаких эффективных путей вычисления дискретных логарифмов не найдено. Никакого эффективного метода определения примитивных корней также неизвестно. Однако часто возможно найти примитивные корни в некоторых специальных случаях. Возьмем p=1223. p-1=2*13*47. Согласно лемме, если a не примитивный корень, тогда мы либо имеем a 26 , a 94 или
a 611 ≡ 12231. a=2 и a=3 не годятся, но a=5 соответствует всем трем условиям, таким образом, это значение является примитивным корнем. Мы могли бы сказать, что a=4 не может быть признано примитивным корнем без проверки.

Легко показать, что если a примитивный корень, a x примитивный корень в том и только том случае, если (x,p-1)=1. В этом примере это означает, что число примитивных корней равно

Таким образом, если мы выберем а произвольно, вероятность того, что это будет примитивный корень равна ~.45. Выбирая а наугад и тестируя, можно сравнительно быстро найти примитивный корень.

Наиболее современные системы шифрования используют асимметричные алгоритмы с открытым и секретным ключами, где нет проблемы безопасной транспортировки ключа. К числу таких систем относится алгоритм rsa (rivest-shamir-adleman — разработчики этой системы — Рональд Ривест, Ади Шамир и Леонард Адлеман, 1977 год), базирующийся на разложение больших чисел на множители.

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

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

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

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

Если хакер умудрится вставить свою ЭВМ в разрыв канала, соединяющего субъектов А и В , у него появляется возможность перехватывать в том числе и шифрованные сообщения. Пусть субъект А сформировал пару ключей К 1А и К 2А (ключ с индексом 2 является секретным), аналогичную пару ключей сгенерировал субъект В ( К 1В и К 2В ). Хакер же тем временем подготовил две пары ключей ( К 1ХА :К 2ХА и К 1ХВ :К 2ХВ ). Когда субъект А пошлет открытый ключ К 1А субъекту В , хакер его подменит ключом К 1ХА . Аналогичную процедуру он проделает с ключом К 1В , посланным от В к А . Теперь сообщение А к В , зашифрованное с помощью ключа К 1ХА будет послано В . Хакер его перехватывает, дешифрует с помощью ключа К 2ХА , шифрует с помощью ключа К 1ХВ и посылает В . Субъект В , получив послание, дешифрует его с помощью "секретного" ключа К 2ХВ , полученного от хакера (о чем он, естественно, не подозревает). Аналогичная процедура будет проведена и при посылки сообщения от В к А . В сущности единственным параметром который изменится существенным образом будет время доставки сообщения, так как это время будет включать дешифровку и повторную шифровку сообщения. Но при использовании быстродействующей ЭВМ и при работе с традиционной электронной почтой это может оказаться незаметным. Понятно, что между А и В появится дополнительный шаг (hop). Но и это может быть легко замаскировано под прокси сервер или Firewall.

Решить эту проблему подмены ключей можно путем пересылки открытого ключа своему партнеру по какому-то альтернативному каналу или сверки его по телефону.

Начиная с 1997 года NIST (National Institute for Standards and Technology) совместно с промышленностью и криптографическим сообществом разрабатывал приемника для алгоритма DES (длина ключа 56 бит). В результате был создан алгоритм AES (Advanced Encryption Standard), который был опубликован в 2001 году (FIPS 197). AES представляет собой блочный, симметричный алгоритм шифрования с длиной блока 128 бит. Длина ключа может принимать значения 128, 192 или 256 бит (AES-128, AES-192 и AES-256, соответственно). Если предположить, что ключ DES можно подобрать за секунду, то для подбора ключа AES-128 потребуется около 149 триллионов лет (кстати, возраст нашей вселенной всего 20 миллиардов лет). Кроме AES ISO/IEC 18033 (см. http://www.ni.dm.de, http://csrc.nist.gov и www.x9.org) специфицирует еще шесть различных блочных шифров (см. таблицу ниже).

Базовые характеристики блочных алгоритмов шифрования представлены в таблице ниже (смотри http://book.itep.ru/6/idea_647.htm, ~6/des_641.htm и ~6/safr_648.htm).

Относительные уровни безопасности разных алгоритмов представлены ниже.

Стандарт на хэш функции задает документ ISO/IEC 10118. К сожалению, не существует международного стандарта для управления информационными системами безопасности.Стандарт на хэш функции задает документ ISO/IEC 10118. Эти хэш функции (см. табл. 19.5) используются практически во всех видах электронных подписей (ISO/IEC 14888). К сожалению, не существует международного стандарта для управления информационными системами безопасности.

В настоящее время имеется три семейства криптосистем с открытым ключом.

  1. Системы IF (Integer Factorization — целочисленная факторизация), такие как система цифровой подписи, базирующаяся на RSA, использует сложность факторизации при работе с большими целыми числами.
  2. Системы DL (Discrete Logarithm — целочисленный логарифм), такие как алгоритм цифровой подписи NIST (DSA, FIPS 186), базируются на вычислительной сложности оперирования с целочисленными логарифмами.
  3. Системы EC (Elliptic Curve эллиптические кривые) являются сходными с DL примитивами. Они основываются на вычислительной сложности проблемы расчета целочисленных логарифмов через эллиптические кривые. Преимуществом этой системы является относительная ее сила по отношению к длине параметра. Другими словами эллиптические кривые предоставляют большую секретность на бит. Примером эллиптической кривой является уравнение типа Y 2 =X 3 +aX+b.

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

Согласно закону Мура число компонентов на чип удваивается каждые 18 месяцев. Это можно интерпретировать как удвоение вычислительной мощности ЭВМ каждые 18 месяцев.

Развитие методов программирования и повышение быстродействия ЭВМ приводит к понижению надежности систем шифрования. Симметричные шифры теряют один бит безопасности в год. Хэш-функции и схемы, основанные на эллиптических кривых (ISO/IEC 15946-2), теряют два бит безопасности в год. RSA-схемы теряют 30 бит безопасности в год. На рис. 6.4.2. показана временная зависимость деградации безопасности шифров (см. Network Security, V2004, Issue 12, декабрь 2004, стр. 6-11).

Рис. 6.4.2. Время жизни криптографических алгоритмов

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

Для взлома паролей и подбора крипто-ключей могут использоваться botnet (сети, состоящие из взломанных машин). Ведь размеры таких сетей достигает нескольких миллионов, в 2009 году поставлен рекорд в 10.000.000. За год взламывается более 100.000.000 машин.

Полезную информацию по системам шифрования можно получить на следующих серверах:

Системы шифрования

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

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

То есть систему шифрования можно представить в виде совокупности [math]\langle E_,D_ \rangle[/math] , где [math]E_[/math] — шифровальная функция, [math]D_[/math] — дешифровальная функция, обе из которых зависят от ключей [math]k_1[/math] и [math]k_2[/math] .

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

  • симметричные шифрования,
  • асимметричные шифрования.

10 популярных кодов и шифров

Коды и шифры — не одно и то же. Объяснили разницу и разобрали 10 популярных методов шифрования, которые повлияли на сферу безопасности.

Коды и шифры — это не одно и то же: в коде каждое слово заменяется другим, в то время как в шифре заменяются все символы сообщения.

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

  1. Стандартные шифры
  2. Цифровые шифры
  3. Как расшифровать код или шифр?

Стандартные шифры

ROT1

Этот шифр известен многим детям. Ключ прост: каждая буква заменяется на следующую за ней в алфавите. Так, А заменяется на Б, Б — на В, и т. д. Фраза «Уйрйшоьк Рспдсбннйту» — это «Типичный Программист».

Попробуйте расшифровать сообщение:

Лбл еёмб, рспдсбннйту? 

Поняли, как работает это шифрование? Напишите в комментариях, что у вас получилось.

Шифр транспонирования

В транспозиционном шифре буквы переставляются по заранее определённому правилу. Например, если каждое слово пишется задом наперед, то из hello world получается dlrow olleh. Другой пример — менять местами каждые две буквы. Таким образом, предыдущее сообщение станет eh ll wo ro dl.

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

Из этого способа мы получим шифр holewdlo lr. А вот столбчатая транспозиция, реализованная программно:

def split_len(seq, length): return [seq[i:i + length] for i in range(0, len(seq), length)] def encode(key, plaintext): order = < int(val): num for num, val in enumerate(key) >ciphertext = '' for index in sorted(order.keys()): for part in split_len(plaintext, len(key)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO')) 

Азбука Морзе

10 популярных кодов и шифров 2

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

Сможете расшифровать сообщение, используя картинку?

Шифр Цезаря

Это не один шифр, а целых 26, использующих один принцип. Так, ROT1 — лишь один из вариантов шифра Цезаря. Получателю нужно просто сообщить, какой шаг использовался при шифровании: если ROT2, тогда А заменяется на В, Б на Г и т. д.

А здесь использован шифр Цезаря с шагом 5:

Иербэй йюк ёурбэй нтчйхйцтаъ энщхуж 

Моноалфавитная замена

Коды и шифры также делятся на подгруппы. Например, ROT1, азбука Морзе, шифр Цезаря относятся к моноалфавитной замене: каждая буква заменяется на одну и только одну букву или символ. Такие шифры очень легко расшифровываются с помощью частотного анализа.

Например, наиболее часто встречающаяся буква в английском алфавите — «E». Таким образом, в тексте, зашифрованном моноалфавитным шрифтом, наиболее часто встречающейся буквой будет буква, соответствующая «E». Вторая наиболее часто встречающаяся буква — это «T», а третья — «А».

Однако этот принцип работает только для длинных сообщений. Короткие просто не содержат в себе достаточно слов.

Шифр Виженера

10 популярных кодов и шифров 3

Представим, что есть таблица по типу той, что на картинке, и ключевое слово «CHAIR». Шифр Виженера использует принцип шифра Цезаря, только каждая буква меняется в соответствии с кодовым словом.

В нашем случае первая буква послания будет зашифрована согласно шифровальному алфавиту для первой буквы кодового слова «С», вторая буква — для «H», etc. Если послание длиннее кодового слова, то для (k*n+1)-ой буквы, где n — длина кодового слова, вновь будет использован алфавит для первой буквы кодового слова.

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

Попробуйте расшифровать эту фразу самостоятельно:

зюм иэлруй южжуглёнъ 

Подсказка длина кодового слова — 4.

Шифр Энигмы

Энигма — это машина, которая использовалась нацистами во времена Второй Мировой для шифрования сообщений.

Есть несколько колёс и клавиатура. На экране оператору показывалась буква, которой шифровалась соответствующая буква на клавиатуре. То, какой будет зашифрованная буква, зависело от начальной конфигурации колес.

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

Цифровые шифры

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

Двоичный код

Текстовые данные вполне можно хранить и передавать в двоичном коде. В этом случае по таблице символов (чаще всего ASCII) каждое простое число из предыдущего шага сопоставляется с буквой: 01100001 = 97 = «a», 01100010 = 98 = «b», etc. При этом важно соблюдение регистра.

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

110100001001101011010000101111101101000010110100 

Шифр A1Z26

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

Попробуйте определить, что здесь написано:

15-6-2-16-13-30-26-16-11 17-18-10-14-6-18 

Шифрование публичным ключом

10 популярных кодов и шифров 4

Алгоритм шифрования, применяющийся сегодня буквально во всех компьютерных системах. Есть два ключа: открытый и секретный. Открытый ключ — это большое число, имеющее только два делителя, помимо единицы и самого себя. Эти два делителя являются секретным ключом, и при перемножении дают публичный ключ. Например, публичный ключ — это 1961, а секретный — 37 и 53.

Открытый ключ используется, чтобы зашифровать текст сообщения, а секретный — чтобы расшифровать текст.

Как-то RSA выделила 1000 $ в качестве приза тому, кто найдет два пятидесятизначных делителя числа:

1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139 

Почувствуйте себя детективом: сможете разгадать эти 10 шифров и кодов?

Как расшифровать код или шифр?

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

  • Азбука Морзе
  • RSA (криптографический алгоритм с открытым ключом)
  • Двоичный код
  • Другие онлайн-дешифраторы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *