special

Криптография для начинающих. Часть 1

.:( Next Generation Hackers Group):. ngh.void.ru
статья написана: SHurON
-----------------| дата написания: 03/04/05 года
-----| контакты: don-ya@rambler.ru
Криптография для начинающих. Часть 1


Всем привет!

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

Любознательный юзверь задаст вопрос, а на кой оно мне всё это надо? Хорошо, попытаюсь дать ответ. Давным-давно...
когда еще бегали динозавры :), жили-были дяди и была у них необходимость по роду своей деятельности (в основном
военной) скрывать информацию от других дядек, хотевших узнать ихние секреты :-). Существовало много разных
примитивных способов, на память приходят такие как шифр Цезаря, который представляет из себя простую замену каждой
буквы открытого текста третьей следующей за ней буквой алфавита (с циклическим переносом, когда это необходимо),
наматывание бумажного послания (лента бумаги) на палку (копьё, дубинка, дерево etc) определенного диаметра и т.д.
Постепенно появилось такое понятие как криптография. А необходима данная штука ой как сильно. Любая действительно
хорошо спроектированная защита обязательно должна включать в себя криптографические протоколы, шифры;
конфиденциальность данных, аутентификация, цифровая подпись, всё это неполный список, где используется
криптография.

Общие сведения.

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

Введём такое понятие, как криптографический протокол.
Протокол - набор правил, регламентирующих использование криптографических преобразований и алгоритмов в
информационных процессах.
Чтобы понять значимость криптографического протокола (и еще раз убедиться в необходимости криптографии) перечислим
его функции и отведенную ему роль:
1) шифрование всего информационного трафика, который передаётся по открытому каналу (сети);
2) криптографическая аутентификация объектов, которые устанавливают связь;
3) шифрование данных, представленных в виде файлов;
4) контроль целостности программного обеспечения путём использования криптографически стойких контрольных сумм
(СRC);
5) использование электронно-цифровой подписи для обеспечения юридической значимости платёжных документов.

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

Алгоритмы шифрования.

Для начала выясним, что же такое шифр, шифрование, а далее перейдем к рассмотрению их типов.
Шифр - cовокупность алгоритмов криптографических преобразований, отображающих множество возможных открытых данных
на множество возможных зашифрованных данных, и обратных им преобразований. То есть, шифр нам нужен для
преобразования открытых данных в зашифрованный вид и наоборот.
Шифрование - это процесс зашифрования (текст-> шифротекст) или расшифрования(шифротекст-> текст).
Перейдём теперь к алгоритмам шифрования. Очень важным параметром таких алгоритмов является понятие стойкости. Под
стойкостью понимается способность противостояния любым возможным атакам против данного алгоритма шифрования.
Стойким является такой алгоритм, который для своего раскрытия требовал бы от злоумышленника практически
недосягаемых ресурсов и времени (хочу отметить такой интересный момент, как жизнь секретной инфы, т.е. в
зависимости от своего типа и характера информация считается секретной и недопустимо её раскрытие, но после
окончания времени её жизни она становится попросту ненужной для её владельца, соответственно стойкость алгоритма
шифрования должна регулироваться временем, на которое рассчитана секретность информации). Для того чтобы алгоритм
был абсолютно стойким, необходимо учитывать следующее:
- длина ключа (ключ - конкретное секретное значение набора параметров криптографического алгоритма, обеспечивающее
выбор одного преобразования из совокупности возможных для данного алгоритма преобразований) и открытого сообщения
одинакова, т.е. если у нас сообщение имеет длину в 1000 символов, то в идеале ключ также должен иметь длину равную
1000 символов;
- ключ должен использоваться один раз.

Различается шифрование двух типов: симметричное и асимметричное (шифрование с использованием открытого ключа).
При симметричном шифровании необходимо создать ключ, зашифровать исходное сообщение на данном ключе (объясню фразу
на "данном ключе", имеется в виду, что ключ является входным параметром алгоритма шифрования) и передать данный
месседж адресату, а ключ (обычно пароль или файл с данными) передается отдельно. Полученное сообщение адресат
сможет прочитать, расшифровав шифротекст при помощи того же ключа, на котором происходило шифрование. Симметричное
шифрование не так надежно, как асимметричное, поскольку ключ может быть перехвачен, но из-за высокой скорости оно
очень распространенно.
Асимметричное шифрование является более сложным в реализации, но на практике оно гораздо надежнее. Для него нужны
два взаимосвязанных ключа: открытый и закрытый. Сгенерированный открытый ключ сообщается всем желающим, т.е. он
всеобще открыт для использования. Что нам это даёт? А даёт следующее, любой юзверь при желании может послать нам
зашифрованное сообщение (зашифровав его на нашем открытом ключе), а вся прелесть заключается в том, что
закодировать то он может, а вот обратно никак :-), т.е. открытый ключ позволяет кодировать данные, но не
раскодировать их. А закрытый ключ есть только у нас и соответственно только мы можем прочитать адресованное нам
сообщение.

Алгоритмы, применяемые для симметричного и асимметричного шифрования, основаны на таких принципах:
-при симметричном шифровании алгоритм разделяет данные на небольшие части (блоки), представляя каждую некоторым
числом, далее преобразует эти числа по очень сложнючим формулам (учите матчасть ;-)), в расчёты также входит ключ,
а затем эти преобразования повторяются etc.
-алгоритм асимметричного шифрования рассматривает текст как одно очень большое число, которое, возводится в степень
(обычно большое простое число), делит результат на еще одно очень большое число и вычисляет остаток, после чего
преобразует этот остаток обратно в текст etc.

Вот вроде бы пока и всё. В следующей статье я продолжу ознакомление с основами криптографии. На этом разрешите
откланяться.
Удачи!
To be continued...
______________________________________________________________


Copyright © 2005 NGH Group

Дата створення/оновлення: 25.05.2018

';