Криптография на пальцах


Гео и язык канала: Россия, Русский
Категория: Образование


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

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Образование
Статистика
Фильтр публикаций


Репост из: КБ
Видео недоступно для предпросмотра
Смотреть в Telegram
Странная смесь пород )






Сеть ассиметричного шифрования

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

Предположим, что кроме Боба и Алисы в диалоге пристутствует третий участник - Кэрол. Она, в отличие от Евы, не собирается пакостить, а просто хочет пообщаться. Как же организовать передачу их сообщений ? Для этого выдадим каждому из собеседников по два ключа : у Алисы это будут К(a) и К(b), у Боба - К(b) и К(c), у Кэрол - К(a) и К(c). На три участника приходится три ключа. Принцип же шифрования таков - если сообщение зашифровано одним множеством ключей, для его расшифровки необходимо использовать их оставшееся множество. То есть, если сообщение было зашифровано ключом К(b), то его можно расшифровать, последовательно применяя ключи К(a) и К(c). Если сообщение зашифровано ключами К(b) и К(c), то расшифровать его можно одним лишь ключом К(a).

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

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


Взлом

Казалось бы, криптосистема с открытым ключом идеальна и абсолютно безопасна. К сожалению ( или к счастью ) это совсем не так.

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

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


Ассиметричное шифрование

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

Начало ассиметричному шифрованию было положено в работе криптографов Уитфилда Диффи и Мартина Хеллмана " Новые направления в современной криптографии", опубликованной в 1976 году, где был предложен метод получения секретных ключей с использованием открытого ( незащищённого, доступного для наблюдения ) канала, который по сей день известен как протокол Диффи - Хеллмана.
В отличие от разобранных нами симметричных криптосистем, системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах, в частности в TLS и SSL ( лежат в основе HTML ), SSH, а также для подписи файлов в PGP и шифрования электронных сообщений S/MIME.

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

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

Вся изюминка процесса в использовании идеи односторонних функций. Односторонняя функция предполагает, что по известному x довольно легко найти f(x), но вот из f(x) найти x - практически нереальная задача. Простым ( очень простым ) примером может служить возведение числа в квадрат и нахождение квадратного корня. Например, число 372 очень просто возвести в квадрат даже вручную, перемножив столбиком. Но вот чтобы найти квадратный корень числа 138 384, придётся изрядно попотеть, перебрав множество вариантов. Вот и в шифровании принцип совершенно тот же, только разрыв в сложности гораздо больше.

Но сама по себе односторонняя функция бесполезна в применении : ею можно зашифровать сообщение ( возведение в квадрат в примере ), но расшифровать нельзя ( извлечение квадратного корня ). Поэтому ассиметричное шифрование предполагает наличие в односторонней функции лазейки - некоего секрета, который помогает расшифровать. То есть, наличие такого y, что зная f(x) и y, можно вычислить x.
Касательно примера с Бобом и Алисой это выглядит так : Боб создаёт у себя f() с лазейкой y, затем f() передаёт Алисе. Алиса с помощью f() формирует f(x) и отправляет обратно Бобу, который с получает x из f(x), зная y.

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

Вот так вот.














Пароли

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

На эту тему было написано немало статей, инструкций и памяток, но всё же позволю напомнить вам, как правильно составлять пароли:

- Избегайте использования словарный слов ( "password" ), всякого рода последовательностей ( "yyy", "1234" ), повторяющихся наборов букв ( "passpass" )
- Не используйте в качестве пароля ники, имена, клички домашних животных, биографическую информацию, номера телефонов, даты, адрес, ИНН
- Старайтесь там, где это позволяет система, включать в пароль цифры и иные символы
- Не используйте один и тот же пароль в различных системах
- По возможности лучше не составляйте самостоятельно, а генерируйте случайные пароли с помощью специальных сервисов
- Составляйте пароли минимум из 12 - 14 знаков
- Если ваш пароль записан на листке бумаги, храните его в надёжном, недоступном для де... Кхм. Просто надёжном месте
- По возможности меняйте пароль каждые полгода
- Не заменяйте буквы в пароле на схожие по написанию и звучанию символы ( например, вместо "password" - "passw0rd" или "чемодан" - "4емодан" ). Для хакера такой пароль сложней для взлома не станет, а вот забыть его будет легче.

Минутка интересных фактов - на сложность пароля влияет не столько размер используемого алфавита, сколько длина самого пароля. Подтверждается это простыми математическими расчётами - вариантов пароля из 4 - х символов на основе 30 -ти значного алфавита будет 810 000 ( 30 * 30 * 30 * 30 ), а пароля из 5 - ти символов на основе 20 - ти значного алфавита - 3 200 000 ( 20 * 20 * 20 * 20 * 20 ). Даже на таких малых длинах различие почти в 4 раза.

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


Брутфорс

Брутфорс ( от англ. "Brute force" - "грубая сила" ) - метод решения математических задач. Как метод криптоанализа заключается в переборе всех возможных вариантов ключа для взламываемой системы. Является "тяжёлой артиллерией" дешифрации и используется только в том случае, если в системе шифрования не удалось найти слабых мест и создать методики криптоанализа, основанные на этих изъянах и существенно упрощающие процесс взлома. Это обуславливается универсальностью метода и его пригодности для взлома почти любой системы кроме "абсолютно стойкого" шифра Вернама с одной стороны, и сложностью реализации с другой. Для подобного рода операций порой необходимы колоссальные вычислительные мощности и временные затраты.

Рассмотрим пример. Вы обладаете "очень мощным" компьютером, способным перебирать 100 000 вариантов пароля в секунду ( уровень 90 - х годов, атака класса В ). Если ваш недруг имеет пароль длинной в 1 символ, значит вариантов этого пароля будет 36 ( 26 английских букв + цифры ). В этом случае перебрать все варианты для вашей "адской машинки" не составит труда, что она и сделает за считанные доли доли секунды. Если же длина пароль равняется 4, то сумма всех возможных вариантов составит 1 679 616 ( 36 в 4 степени ). При скорости 100 000 паролей в секунду вы подберёте нужный вариант примерно за 17 секунд, что ещё вполне приемлемо. Если пароль восьмизначный, то его вариантов будет уже 282 110 990 000 000 000 00 (36 в 8 степени!). Перебирать такое количество на своём "старичке" вы будете всего лишь 11 месяцев. Возможно, если арендовать дата - центр ( помещение с серверами ), то вычисления будут проходить немного быстрее.

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


Безопасность через неясность

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

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

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

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

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


Принцип Керкгоффса

Каждый уважающий себя шифр должен соответствовать принципу, сформированному голландцем Огюстом Керкгоффсом – «система не должна требовать секретности, на случай, если она попадёт в руки врага ( с фр.) ».

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

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

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

Нередко из – за отсутствия знаний противопоставлятся безопасности через неясность, о которой будет рассказано в следующем посте









Показано 20 последних публикаций.

322

подписчиков
Статистика канала