11 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

Предисловие

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

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

Базовая терминология

В криптографической терминологии исходное послание именуют открытым текстом (plaintext или cleartext). Изменение исходного текста так, чтобы скрыть от прочих его содержание, называют шифрованием (encryption). Зашифрованное сообщение называют шифротекстом (ciphertext). Процесс, при котором из шифротекста извлекается открытый текст называют дешифровкой (decryption). Обычно в процессе шифровки и дешифровки используется некий ключ (key) и алгоритм обеспечивает, что дешифрование можно сделать лишь зная этот ключ.

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

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

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

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

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

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

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

Многие качественные криптографические алгоритмы доступны широко – в книжном магазине, библиотеке, патентном бюро или в Интернет. К широко известным симметричным алгоритмам относятся DES и IDEA, Наверное самым лучшим асимметричным алгоритмом является RSA.

Цифровые подписи

Цифровые подписи используются для того, чтобы подтвердить, что сообщение пришло действительно от данного отправителя (в предположении, что лишь отправитель обладает секретным ключом, соответствующим его открытому ключу). Также подписи используются для проставления штампа времени (timestamp) на документах: сторона, которой мы доверяем, подписывает документ со штампом времени с помошью своего секретного ключа и, таким образом, подтверждает, что документ уже существовал в момент, объявленный в штампе времени.

Цифровые подписи также можно использовать для удостоверения (сертификацииto certify) того, что документ принадлежит определенному лицу. Это делается так: открытый ключ и информация о том, кому он принадлежит подписываются стороной, которой доверяем. При этом доверять подписывающей стороне мы можем на основании того, что ее ключ был подписан третьей стороной. Таким образом возникает иерархия доверия. Очевидно, что некоторый ключ должен быть корнем иерархии (то есть ему мы доверяем не потому, что он кем-то подписан, а потому, что мы верим a-priori, что ему можно доверять). В централизованной инфраструктуре ключей имеется очень небольшое количество корневых ключей сети (например, облеченные полномочиями государственные агенства; их также называют сертификационными агенствамиcertification authorities). В распределенной инфраструктуре нет необходимости иметь универсальные для всех корневые ключи, и каждая из сторон может доверять своему набору корневых ключей (скажем своему собственному ключу и ключам, ею подписанным). Эта концепция носит название сети доверия (web of trust) и реализована, например, в PGP.

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

Читать еще:  Сети для самых маленьких. Часть четырнадцатая. Путь пакета

Свободно доступны несколько методов создания и проверки цифровых подписей. Наиболее известным является алгоритм RSA.

Криптографические хэш-функции

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

Много хороших криптографических хэш-функций доступно бесплатно. Широко известные включают MD5 и SHA.

Криптографические генераторы случайных чисел

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

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

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

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

Обеспечиваемая шифром степень защиты

Теоретически, любой шифровальный алгоритм с использованием ключа может быть вскрыт методом перебора всех значений ключа. Если ключ подбирается методом грубой силы (brute force), требуемая мощность компьютера растет экспоненциально с увеличением длины ключа. Ключ длиной в 32 бита требует 2^32 (около 10^9) шагов. Такая задача под силу любому дилетанту и решается на домашнем компьютере. Системы с 40-битным ключом (например, экспортный американский вариант алгоритма RC4) требуют 2^40 шагов — такие компьютерные мощности имеются в большинстве университетов и даже в небольших компаниях. Системы с 56-битными ключами (DES) требуют для вскрытия заметных усилий, однако могут быть легко вскрыты с помощью специальной аппаратуры. Стоимость такой аппаратуры значительна, но доступна для мафии, крупных компаний и правительств. Ключи длиной 64 бита в настоящий момент, возможно, могут быть вскрыты крупными государствами и уже в ближайшие несколько лет будут доступны для вскрытия преступными организацими, крупными компаниями и небольшими государствами. Ключи длиной 80 бит могут в будущем стать уязвимыми. Ключи длиной 128 бит вероятно останутся недоступными для вскрытия методом грубой силы в обозримом будущем. Можно использовать и более длинные ключи. В пределе нетрудно добиться того, чтобы энергия, требуемая для вскрытия (считая, что на один шаг затрачивается минимальный квантовомеханический квант энергии) превзойдет массу солнца или вселенной.

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

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

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

Читать еще:  Программы для ремонта флешек и карт памяти

Чтобы дать представление о степени сложности вскрытия RSA, скажем, что модули длиной 256 бит легко факторизуются обычными программистами. Ключи в 384 бита могут быть вскрыты исследовательской группой университета или компании. 512-битные ключи находятся в пределах досягаемости крупных государств. Ключи длиной в 768 бит вероятно не будут надежны продолжительное время. Ключи длиной в 1024 бит могут считаться безопасными до тех пор, пока не будет существенного прогресса в алгоритме факторизации; ключи длиной в 2048 большинство считает надежными на десятилетия. Более подробную информацию о длинах ключей RSA можно почерпнуть из статьи Брюса Шнайера (Bruce Scheier).

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

Криптоанализ и атаки на криптосистемы

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

  • Атака с помощью таймера (timing attack): Этот новый тип атак основан на последовательном измерении времен, затрачиваемых на выполнение операции возведения в стенень по модулю целого числа. Ей подвержены по крайней мере следующие шифры: RSA, Диффи-Хеллман и метод эллиптических кривых. Дополнительную информацию смотрите в оригинальной статье и во множестве последовавших статей.

  • Имеется множество других криптографических атак и криптоаналитических подходов. Однако приведенные выше являются, по-видимому, наиболее важными для практической разработки систем. Если кто-либо собирается создавать свой алгоритм шифрования, ему необходимо понимать данные вопросы значительно глубже. Одно из мест, где можно начать систематическое изучение информации — это замечательная книга Брюса Шнейера “Прикладная криптография” (Bruce Schneier, Applied Cryptography).

    Disclaimer. Все приведенные здесь мнения и выводы являются субъективной точкой зрения автора, и автор не может нести ответственность за их ильность.

    Статья [Начинающим] – Криптография. Введение.

    Перейти к странице

    sk3leton

    Cyberpunk

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

    [ 1 ] – Что изучает криптография .

    Если говорить простыми словами, то

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

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

    [ 2 ] – Где вам оно понадобится .

    Криптография очень пригодна ИБ специалисту, т.к. за частую без нее никак)
    Часто задания связаные с криптографией встречаются на CTF соревнованиях. Мы сегодня разберем малую часть таких заданий. В дальнейшем они будут все трудней. Чем выше в гору вы взберетесь, тем трудней вам будет.

    [ 3 ] – Что такое шифрование и как оно осуществляется .

    С шифрованием мы имеем дело повседневно. Когда мы находимся на веб ресурсе с протоколом https, когда разговариваем по телефону, говорим текст наоборот(редкие случаи ), и все этому подобное..
    Иными словами

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

    [ 3.1 ] – Симметричное шифрование.

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

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

    Этот ключь должен быть как у отправителя, так и у получающей стороны.

    [ 3.2 ] – Асимметричное шифрование.

    Тут дела обстаят интересней. В асимметричном шифровании используют 2 ключа(публичный и закрытый).

    Первый – для шифрации.
    Второй – для дешифрации.

    Эти ключи не должны быть одинаковы. Отсюда собственно и название – асимметричные. Для каждой стороны достаточно иметь и одного ключа.

    [ 4 ] – Кодируем информацию с base(64/32/16)

    Не молодая кодировка base – алгоритм кодирования информации.
    В чем отличия между 64/32/16? – А самое наиглавнейшее отличае в алгоритме. Там информация разделяется на группы. И в каждой кодировке base свое кол-во символов в одной группе. Поясняю.

    В алфавите a-z, A-Z, 0-9, ?, +. И так, всего в его алфавите 64 символа. Также, в конце шифрования может быть знак “=”. Он появляется из-за лишнего нулевого байта. А связано это стем, что при кодировании алгоритм переводит сообщение в двоичную систему которую должен разделить на равные группы. Так вот при нехватке для полноты равенства добавляется 0.

    Мы можем как закодировать так и декодировать информацию в base64 без использования ключа.
    Откройте свой терминал *nix.
    Для работы с этим алгоритмом нам потребуется инструмент который предустановлен в систему. Это base64)
    Давайте закодируем сообщение “CoDeBy123”
    Для этого запускаем base64.

    Далее пишем наш текст и зажимаем CTRL+D.
    Получаем закодированное в base64 сообщение

    Или же для работы с алгоритмом кодирования base, можете воспользоватся какими-либо специальными ресурсами.

    Он не далек от base64, но отличен тем, что

    • В алфавите 32 символа. С A-Z(иногда a-z) и 2-7.
    • При приобразовании, делим на группы так, чтоб в каждой группе было по 5 бит информации.
    Читать еще:  Лучший плеер для iphone 5s

    В конце закодированого сообщения будут специальные символы(=), ситуация одинакова с base64.

    В терминале используется аналогично предыдущему.

    Этот алгоритм “основан” на шеснадцатиричной системе и содержет в алфавите 16 символов. С A-F и 0-9
    При кодировании весь алгоритм не меняется, разве что в группе по 4 бита.

    А теперь предлогаю вам решить парочку заданий.

    Определите кодировку и расшифруйте сообщение ниже. Дешифрованый текст и есть ответ.

    Какая из кодировок ниже является base64?

    [ 5 ] – Base в Python .

    В Python имеется библиотека base64. В ней содержится много плюшек. В том числе и кодирование в base64/32/16

    Давайте напишем простую программку которая будет кодировать/декодировать сообщение. Я набросал не много, это сильно автоматизирует действия.

    До встречи в следующей части!

    valerian38

    ghost

    YW1uZXNpYQo=

    oappot

    Bunder99

    Member

    Darius

    Хотелось бы подобных примеров различных способов шифрования, или разбор шифрования основанного на своих алгоритмах* . Статья отличная!

    *aka насколько возможно

    arder

    Member
    Active member

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

    По факту можно более коротко и более емко сказать и дать больше информации.

    Например, шифрование состоит из 2-ух составляющих: Зашифровывание и расшифровывание
    С помощью шифрования обеспечиваются 3-и состояния безопасности информации:

    1. Конфиденциальность – шифрование используется для скрытия информации от не авторизованных пользователей при передаче или при хранении.
    2. Целостность – шифрование используется для предотвращения изменения информации при передаче или хранении.
    3. Идентифицируемость – шифрование используется для аутентификации источника информации и предотвращения отказа отправителя информации от того факта, что данные были отправлены именно им.

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

    А так за старание безусловно, потрачено время молодцы, но совершенно ушли не в ту сторону, и надо более узконоправленно и емко разбирать основные моменты если вы конечно понимаете о чем идет речь.

    sk3leton

    Cyberpunk

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

    По факту можно более коротко и более емко сказать и дать больше информации.

    Например, шифрование состоит из 2-ух составляющих: Зашифровывание и расшифровывание
    С помощью шифрования обеспечиваются 3-и состояния безопасности информации:

    1. Конфиденциальность – шифрование используется для скрытия информации от не авторизованных пользователей при передаче или при хранении.
      Целостность – шифрование используется для предотвращения изменения информации при передаче или хранении.
      Идентифицируемость – шифрование используется для аутентификации источника информации и предотвращения отказа отправителя информации от того факта, что данные были отправлены именно им.

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

    А так за старание безусловно, потрачено время молодцы, но совершенно ушли не в ту сторону, и надо более узконоправленно и емко разбирать основные моменты если вы конечно понимаете о чем идет речь.

    Вместо того чтобы комментировать как нужно писать статьи, лучьше напишите свою

    Введение в криптографию и шифрование, часть первая. Лекция в Яндексе


    Название: Основы криптографии
    Автор: Басалова Г.В.
    Издательство: М.: НОУ “Интуит”
    Год: 2016
    Страниц: 282
    Формат: PDF
    Размер: 25.8 Мб
    Язык: русский

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

    Лекция 0. Введение . 4
    Лекция I. Основные понятия криптографии . 6
    Лекция 2. Простейшие методы шифрования с закрытым ключом . 33
    Лекция 3. Принципы построения блочных шифров с закрытым ключом . 64
    Лекция 4. Алгоритмы шифрования DES и AES . 78
    Лекция 5. Алгоритм криптографического преобразования данных ГОСТ 28147-89 . 97
    Лекция 6. Криптографические хеш-функции . 108
    Лекция 7. Поточные шифры и генераторы псевдослучайных чисел. Часть 1 . 118
    Лекция 8. Поточные шифры и генераторы псевдослучайных чисел. Часть 2 . 133
    Лекция 9. Введение в криптографию с открытым ключом . 156
    Лекция 10. Основные положения теории чисел, используемые в криптографии с открытым ключом . 173
    Лекция 11. Криптографические алгоритмы с открытым ключом и их использование . 189
    Лекция 12. Электронная цифровая подпись . 213
    Лекция 13. Совершенно секретные системы . 233
    Лекция 14. Шифрование» помехоустойчивое кодирование и сжатие информации . 250
    Лекция 15. Общий глоссарий . 269
    Список литературы . 281

    голоса
    Рейтинг статьи
    Ссылка на основную публикацию
    Статьи c упоминанием слов: