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

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

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

Storyteller

I’m gorgeous
  • 15 Дек 2017
  • 261
  • 281
  • 63

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

Мы впервые публикуем эту лекцию вместе с расшифровкой. Начнём с первой части. Под катом вы найдёте текст и часть слайдов.

Я когда-то читал в МГУ лекции по крипте, и они занимали у меня по полгода. Я попытаюсь вам всё рассказать за два с половиной часа. Никогда этого не делал. Вот и попробуем.

Кто понимает, что такое DES? AES? TLS? Биноминальное отображение?

Современные и коммерчески доступные системы шифрования — все или почти все или лучшие из них — построены из компонент, устройство и принцип работы которых хорошо известны. Единственная секретная вещь в них — ключ шифрования. Есть только одно известное мне значимое исключение — набор секретных криптографических протоколов для всевозможных государственных организаций. В США это называется NSA suite B, а в России это всякие странные секретные алгоритмы шифрования, которые до определенной степени используются военными и государственными органами.

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

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

Первый криптографический примитив — симметричные шифры.

Какие здесь важные нюансы? В большинстве распространенных алгоритмов симметричного шифрования, с которыми можно столкнуться, размер шифротекста всегда равен размеру открытого текста. Современные алгоритмы шифрования оперируют размерами ключей. Размер ключей измеряется в битах. Современный размер — от 128 до 256 бит для алгоритмов симметричного шифрования. Об остальном, в том числе о размере блока, мы поговорим позже.

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

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

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

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

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

Storyteller

I’m gorgeous
  • 15 Дек 2017
  • 261
  • 281
  • 63

Исторически, в условном IV веке до нашей эры, существовало два метода дизайна шифров: шифры подстановки и перестановки. Шифры подстановки — алгоритм, где в те времена заменяли одну букву сообщения на другую по какому-то принципу. Простой шифр подстановки — по таблице: берем таблицу, где написано, что А меняем на Я, Б на Ю и т. д. Дальше по этой таблице шифруем, по ней же дешифруем.

Как вы считаете, с точки зрения размера ключа насколько это сложный алгоритм? Сколько вариантов ключей существует? Порядок факториала длины алфавита. Мы берем таблицу. Как мы ее строим? Допустим, есть таблица на 26 символов. Букву А можем заменить на любой из них, букву Б — на любой из оставшихся 25, С — на любой из оставшихся 24… Получаем 26*25*24*… — то есть факториал от 26. Факториал размерности алфавита.

Если взять log226!, это будет очень много. Думаю, вы точно получите в районе 100 бит длины ключа, а то и поболее. Оказалось, что с точки зрения формального представления стойкости указанный алгоритм шифрования — довольно неплохой. 100 бит — приемлемо. При этом все, наверное, в детстве или юности, когда сталкивались с кодировками, видели, что такие алгоритмы дешифруются тривиально. Проблем с расшифровкой нет.

Долго существовали всякие алгоритмы подстановки в разных конструкциях. Одним из них, еще более примитивным, является шифр Цезаря, где таблица формируется не случайной перестановкой символов, а сдвигом на три символа: А меняется на D, B на Е и т. д. Понятно, что шифр Цезаря вместе со всеми его вариантами перебрать очень легко: в отличие от табличной подстановки, в ключе Цезаря всего 25 вариантов при 26 буквах в алфавите — не считая тривиального шифрования самого в себя. И его как раз можно перебрать полным перебором. Здесь есть некоторая сложность.

Почему шифр табличной подстановки такой простой? Откуда возникает проблема, при которой мы можем легко, даже не зная ничего про криптографию, расшифровать табличную подстановку? Дело в частотном анализе. Есть самые распространенные буквы — какая-нибудь И или Е. Их распространенность велика, гласные встречаются намного чаще, чем согласные, и существуют негативные пары, никогда не встречающиеся в естественных языках, — что-то вроде ЬЪ. Я даже давал студентам задание сделать автоматический дешифратор шифра подстановки, и, в принципе, многие справлялись.

В чем проблема? Надо статистику распределения букв исказить, чтобы распространенные буквы не так светились в зашифрованном тексте. Очевидный способ: давайте будем шифровать самые часто встречающиеся буквы не в один символ, а в пять разных, например. Если буква встречается в среднем в пять раз чаще, то давайте по очереди — сначала в первый символ будем зашифровывать, потом во второй, в третий и т. д. Далее у нас получится маппинг букв не 1 к 1, а, условно, 26 к 50. Статистика, таким образом, нарушится. Перед нами первый пример полиалфавитного шифра, который как-то работал. Однако с ним есть довольно много проблем, а главное, очень неудобно работать с таблицей.

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

Берем в качестве ключа слово ВАСЯ. Берем сообщение МАША. Задействуем шифр Цезаря, но отсчитывая от этих букв. Например, В — третья буква в алфавите. Мы должны сдвинуть на три буквы соответствующую букву в открытом тексте. М сдвигается в П. А в А. Ш — на 16, перескочим букву А, получим, условно, Д. Я сдвинет А в Я. ПАДЯ.

Что удобно в получившемся шифре? Здесь было две одинаковых буквы, но в результате они зашифровались в разные. Это классно, потому что размывает статистику. Метод хорошо работал, пока где-то в XIX веке, буквально недавно на фоне истории криптографии, не придумали, как его ломать. Если посмотреть на сообщение из нескольких десятков слов, а ключ довольно короткий, то вся конструкция выглядит как несколько шифров Цезаря. Мы говорим: окей, давайте каждую четвертую букву — первую, пятую, девятую — рассматривать как шифр Цезаря. И поищем среди них статистические закономерности. Мы обязательно их найдем. Потом возьмем вторую, шестую, десятую и так далее. Опять найдем. Тем самым мы восстановим ключ. Единственная проблема — понять, какой он длины. Это не очень сложно, ну какой он может быть длины? Ну 4, ну 10 символов. Перебрать 6 вариантов от 4 до 10 не очень сложно. Простая атака — она была доступна и без компьютеров, просто за счет ручки и листа бумаги.

Как из этой штуки сделать невзламываемый шифр? Взять ключ размера текста. Персонаж по имени Клод Шэннон в ХХ веке, в 1946 году, написал классическую первую работу по криптографии как по разделу математики, где сформулировал теорему. Длина ключа равна длине сообщения — он использовал XOR вместо сложения по модулю, равному длине алфавита, но в данной ситуации это не очень принципиально. Ключ сгенерирован случайным образом, является последовательностью случайных бит, и на выходе тоже получится случайная последовательность бит. Теорема: если у нас есть такой ключ, то подобная конструкция является абсолютно стойкой. Доказательство не очень сложное, но сейчас не буду про него говорить.

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

Возьмем два сообщения: МАША, зашифрованная ключом ВАСЯ, и другое слово, у которого ключ тоже был ВАСЯ, — ВЕРА. Получим примерно следующее: ЗЕШЯ. Сложим два полученных сообщения, причем так, чтобы два ключа взаимно удалились. В итоге получим лишь разницу между осмысленным шифротекстом и осмысленным шифротекстом. На XOR это делается удобнее, чем на сложении по длине алфавита, но разницы практически никакой.

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

Помимо шифров подстановки, были еще шифры перестановки. С ними тоже все довольно просто. Берем сообщение ВАСЯИ, записываем его в блок какой-то длины, например в ДИДОМ, и считываем результат так же.

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

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

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

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

Предисловие

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

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

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

В криптографической терминологии исходное послание именуют открытым текстом (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. Все приведенные здесь мнения и выводы являются субъективной точкой зрения автора, и автор не может нести ответственность за их ильность.

    Основные понятия криптографии

    Цель лекции: познакомить студента с основными понятиями криптографии.

    Предмет и задачи криптографии

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

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

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

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

    В условиях повсеместного использования информационных технологий возникают новые стеганографические приемы. Например, известен способ, при котором секретное сообщение прячется в файле графического изображения. При использовании этого способа младший значащий бит в описании каждого пикселя изображения заменяется битом сообщения. Разделив все исходное сообщение на биты и разместив эти биты по всему графическому файлу, мы пересылаем изображение с замаскированным сообщением получателю. Графическое изображение при этом меняется не слишком сильно, особенно если использовался режим с большим количеством цветов, например, с глубиной цвета 24 бита на пиксел . Это связано с тем, что человеческий глаз не может различать такое большое количество цветов. В результате в картинке размером всего 32 на 32 точки можно вместить тайное сообщение длиной 1024 бита или 128 байт .

    Третий способ защиты информации – наиболее надежный и распространенный в наши дни – криптографический . Этот метод защиты информации предполагает преобразование информации для сокрытия ее смысла от противника. Криптография в переводе с греческого означает “тайнопись”. В настоящее время криптография занимается поиском и исследованием математических методов преобразования информации.

    Наряду с криптографией развивается и совершенствуется криптоанализ – наука о преодолении криптографической защиты информации. Криптоаналитики исследуют возможности расшифровывания информации без знания ключей. Успешно проведенный криптоанализ позволяет получить ключ шифрования , или открытый текст , или то и другое вместе. Иногда криптографию и криптоанализ объединяют в одну науку – криптологию (kryptos – тайный, logos – наука), занимающуюся вопросами обратимого преобразования информации с целью защиты от несанкционированного доступа, оценкой надежности систем шифрования и анализом стойкости шифров.

    В настоящее время криптография прочно вошла в нашу жизнь. Перечислим лишь некоторые сферы применения криптографии в современном информатизированном обществе:

    • шифрование данных при передаче по открытым каналам связи (например, при совершении покупки в Интернете сведения о сделке, такие как адрес, телефон, номер кредитной карты, обычно зашифровываются в целях безопасности);
    • обслуживание банковских пластиковых карт;
    • хранение и обработка паролей пользователей в сети;
    • сдача бухгалтерских и иных отчетов через удаленные каналы связи;
    • банковское обслуживание предприятий через локальную или глобальную сеть;
    • безопасное от несанкционированного доступа хранение данных на жестком диске компьютера (в операционной системе Windows даже имеется специальный термин – шифрованная файловая система (EFS)).

    До начала ХХ века криптографические методы применялись лишь для шифрования данных с целью защиты от несанкционированного доступа. В двадцатом веке в связи с развитием техники передачи информации на дальние расстояния интерес к криптографии значительно возрос. Благодаря созданию новых криптографических методов расширился и спектр задач криптографии. В настоящее время считается, что криптография предназначена решать следующие задачи:

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

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

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

    Основные определения

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

    Читать еще:  Sys no graphics как исправить ошибку?

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

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

    Символ – это любой знак, в том числе буква, цифра или знак препинания.

    Алфавит – конечное множество используемых для кодирования информации символов. Например, русский алфавит содержит 33 буквы от А до Я . Однако этих тридцати трех знаков обычно бывает недостаточно для записи сообщений, поэтому их дополняют символом пробела, точкой, запятой и другими знаками. Алфавит арабских цифр – это символы 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 . Этот алфавит содержит 10 знаков и с его помощью можно записать любое натуральное число . Любое сообщение может быть записано также с помощью двоичного алфавита , то есть с использованием только нулей и единиц.

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

    Преобразование открытого текста в криптограмму называется зашифрованием. Обратное действие называется расшифрованием. В англоязычной литературе терминам “зашифрование/ расшифрование ” соответствуют термины “enciphering/deciphering”.

    Ключ – информация , необходимая для шифрования и расшифрования сообщений.

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

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

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

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

    Все методы преобразования информации с целью защиты от несанкционированного доступа делятся на две большие группы: методы шифрования с закрытым ключом и методы шифрования с открытым ключом . Шифрование с закрытым ключом ( шифрование с секретным ключом или симметричное шифрование ) используется человеком уже довольно долгое время. Для шифрования и расшифрования данных в этих методах используется один и тот же ключ , который обе стороны стараются хранить в секрете от противника. Системы шифрования с закрытым ключом подробно рассматриваются в лекциях 2-9. Шифрование с открытым ключом ( асимметричное шифрование ) стало использоваться для криптографического закрытия информации лишь во второй половине ХХ века. В эту группу относятся методы шифрования, в которых для шифрования и расшифрования данных используются два разных ключа. При этом один из ключей (открытый ключ ) может передаваться по открытому (незащищенному) каналу связи. Алгоритмам преобразования информации с открытым ключом посвящены лекции 10-14 учебного пособия.

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

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

    Требования к криптографическим системам защиты информации

    Для разрабатываемых в настоящее время криптографических систем защиты информации сформулированы следующие общепринятые требования:

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

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

    Криптография и шифрование данных – все что нужно знать

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

    Что такое криптография?

    Криптография — это наука, изучающая способы сокрытия данных и обеспечения их конфиденциальности. Это одна из старейших наук и ее история насчитывает четыре тысячелетия. Сам термин “криптография” образовался от двух древнегреческих слов “крипто” — скрытый, “графо” — пишу. Для начинающих принцип криптографии можно объяснить на примере шифра Цезаря, где каждый символ алфавита был заменен на тот, который находится на 3 позиции до нужного.

    Первые примеры записей криптографии были моноалфавитными и начали появляться еще с третьего тысячелетия до нашей эры. Они представляли собой записи, текст которых был изменен путем подстановки других знаков. Начиная с IX века начали применяться полиалфавитные шифры, а с середины XX – стали применяться электромеханические шифровальщики, но все еще использовались полиграфические шифры.

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

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

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

    Виды криптографии

    В основе криптографических систем лежат различные виды криптографии. Всего различаю четыре основных криптографических примитива:

    • Симметричное шифрование. Данный метод предотвращает перехват данных третьими лицами и базируется на том, что отправитель и получатель данных имеет одинаковые ключи для разгадки шифра.
    • Асимметричное шифрование. В этом методе задействованы открытый и секретный ключ. Ключи взаимосвязаны – информация, зашифрованная открытым ключом, может быть раскрыта только связанным с ним секретным ключом. Применять для разгадки ключи из разных пар невозможно, поскольку они связаны между собой математической зависимостью.
    • Хэширование. Метод основывается на преобразовании исходной информации в байты заданного образца. Преобразование информации называется хэш-функцией, а полученный результат хэш-кодом. Все хэш-коды имеют уникальную последовательность символов.
    • Электронная подпись. Это преобразование информации с использованием закрытого ключа, позволяющее подтвердить подлинность документа и отсутствие искажений данных.

    Возможности и сферы применения

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

    В частности криптографические методы применяются для:

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

    Криптография и блокчейн

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

    Хеш функции

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

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

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

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

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

    Среди множества схем криптографии на основе открытого ключа наиболее распространенной является схема на основе эллиптических кривых и схема, основанная на разложении множителей. В биткоине задействована первая схема – эллиптических кривых. Закрытый ключ в нем имеет размер в 32 байта, открытый – 33 байта, а подпись занимает около 70 байт.

    Криптография с открытым ключом

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

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

    Заключение

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

    Что такое криптография? Кто такие шифропанки?

    Что такое криптография?

    Когда и как возникла и развивалась криптография?

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

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

    Моноалфавитные шифры были известны в Иудее, Спарте, Древней Греции, Древнем Риме.

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

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

    Четвертый период – с середины до 70-х годов XX века – ознаменовался переходом к математической криптографии. К тому времени окончательно сформировались такие разделы математики, как математическая статистика, теория вероятностей, теория чисел и общая алгебра, были заложены основы кибернетики и теории алгоритмов.

    Ключевой вехой в этом переходном процессе стала публикация труда американского математика и криптоаналитика Клода Шеннона «Теория связи в секретных системах». В нем впервые был представлен подход к криптографии как к математической науке. Шеннон сформулировал ее теоретические основы и ввел понятия, с которых в наши дни студенты начинают изучение криптографии.

    После Второй Мировой войны правительства Великобритании и США создали организации, призванные заниматься вопросами электронной слежки и информационной безопасности, – Центр правительственной связи Великобритании и Агентство Национальной Безопасности США.

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

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

    В 1980-е годы компьютерные ученые, а в 1990-е, с распространением интернета, уже и простые пользователи столкнулись с проблемой защиты данных в открытой среде.

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

    Как возникло движение шифропанков?

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

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

    Одним из идеологов движения стал американский криптограф, бывший ведущий научный сотрудник Intel Тимоти Мэй. В 1987 году Мэй познакомился с американским экономистом, предпринимателем и футуристом Филиппом Салином, основавшим American Information Exchange (AMiX), сетевую площадку для торговли данными.

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

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

    Читать еще:  Бесплатный ftp сервер для хранения файлов

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

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

    В 1992 году Мэй, один из основателей Electronic Frontier Foundation Джон Гилмор и Эрик Хьюз, математик из Калифорнийского университета в Беркли, пригласили на неофициальную встречу 20 своих близких друзей. В ходе встречи они обсудили самые актуальные на тот момент вопросы криптографии и программирования. Подобные встречи стали проводиться регулярно и положили начало целому движению. Была создана рассылка электронной почты (мейлинг-лист) с целью привлечь к работе других людей, разделяющих интересы и базовые ценности группы основателей. Вскоре рассылка имела уже сотни подписчиков – они тестировали шифры, обменивались идеями и обсуждали новые разработки. Переписка велась с использованием новейших на то время методов шифрования, таких как PGP. Участники группы вели дискуссии на темы политики, философии, информатики, криптографии и математики.

    В 1993 году Эрик Хьюз опубликовал «Манифест шифропанка», содержащий ключевые положения этого движения:

    «Конфиденциальность необходима открытому обществу цифрового века. […] Конфиденциальность в открытом обществе требует использования криптографии. […] Мы, шифропанки, призваны создать анонимные системы. Мы защищаем свою конфиденциальность с помощью криптографии, анонимных систем переадресации электронной почты, цифровых подписей и электронных денег. […] Криптография неизбежно распространится по всему миру, а вместе с ней и системы анонимных транзакций, существование которых она делает возможным».

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

    К 1997 году мейлинг-лист имел около 2000 подписчиков и 30 сообщений ежедневно. В 1995 году свой первый пост в «Шифропанке» опубликовал создатель WikiLeaks Джулиан Ассанж. В 2016 году он выпустил книгу о движении шифропанков под названием «Шифропанки: Свобода и будущее Интернета».

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

    Как движение шифропанков повлияло на возникновение криптовалют?

    В 1989 году Дэвид Чаум основал в Амстердаме компанию DigiCash. Она специализировалась на цифровых деньгах и платежных системах, а ее флагманским продуктом стала цифровая денежная система eCash с денежной единицей CyberBucks. eCash использовала разработанную Чаумом технологию слепой цифровой подписи. Хотя систему даже тестировали некоторые банки, а компания Microsoft предположительно вела переговоры об интеграции eCash в Windows 95, коммерческого успеха предприятие не добилось.

    В 1997 году британский криптограф Адам Бэк создал Hashcash – антиспам-механизм, суть которого заключалась в том, что для отправки электронных писем было необходимо использовать определенное количество вычислительных мощностей. Это делало рассылку спама экономически невыгодной.

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

    Именно первую концепцию взял впоследствии на вооружение создатель биткоина Сатоши Накамото, вторая же оказалась наиболее близка к тому, что сегодня известно как Proof-of-Stake.

    В 2004 году шифропанк Хэл Финни на основе Hashcash Адама Бэка создал алгоритм Reusable Proof of Work (RPoW). Идея заключалась в создании уникальных криптографических токенов, которые по аналогии с неизрасходованными выходами в биткоине можно было бы использовать только один раз. Недостатком этого механизма было то, что валидация и защита от двойной траты по-прежнему осуществлялась через центральный сервер.

    В 2005 году криптограф Ник Сабо, который в 1990-х годах разработал концепцию смарт-контрактов, объявил о создании Bit Gold – цифрового предмета коллекционирования и инвестирования капитала. Bit Gold был создан на основе предложения RPOW Хэла Финни, однако вместо единоразового использования монет предполагал, что они будут иметь различную ценность, рассчитываемую на основе вычислительных мощностей, задействованных для их создания.

    В октябре 2008 года Сатоши Накамото отправил в мейлинг-лист white paper «Биткоин: система цифровой пиринговой наличности». Содержание работы Накамото свидетельствует о влиянии шифропанков и криптоанархистов. В white paper биткоина цитируются Адам Бэк и Вэй Дай. По словам Накамото, биткоин «представляет собой реализацию предложения b-money Вэя Дая… и предложения Bit Gold Ника Сабо». В свою очередь манифест Вэя Дая, в котором он выдвигает идею b-money, начинается со слов: «Я восхищаюсь криптоанархизмом Тима Мэя». После публикации статьи Накамото продолжил работу и 3 января 2009 года намайнил генезис-блок.

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

    Как развивается движение шифропанков?

    К современным шифропанкам можно отнести криптографа и пионера в области смарт-контрактов Ника Сабо, разработчика BitTorrent Брэма Коэна, создателя браузера Tor Джейкоба Эпплбаума, основателя WikiLeaks Джулиана Ассанжа, который в 2016 году выпустил книгу о движении шифропанков под названием «Шифропанки: Свобода и будущее Интернета», а также многих других разработчиков и хакеров.

    В наши дни многие процессы в интернете испытывают влияние деятельности шифропанков. Торренты, VPN, электронные подписи – эти явления были созданы либо непосредственно шифропанками, либо с применением их идей и разработок.

    В 1993 году в «Манифесте шифропанков» Эрик Хьюз отметил:

    «Шифропанки пишут код. Мы знаем, что кто-то должен продолжать писать код в целях защиты информации, и поскольку не видим другого пути защитить свои данные, продолжаем это делать […] Наш код доступен любому человеку на земле. Нас не слишком заботит то, что некоторым не по душе то, что мы делаем. Мы знаем, что наши программы невозможно уничтожить, а разрастающуюся сеть уже не остановить».

    Подписывайтесь на новости Forklog в Facebook!

    Подписаться на новости Forklog

    Свободное копирование и распространение материалов с сайта ForkLog разрешено только с указанием активной ссылки на ForkLog как на источник. Указание ссылки также является обязательным при копировании материалов в социальные сети или печатные издания.

    Журнал ForkLog – информационный ресурс о криптовалютах, блокчейне и децентрализованных технологиях. Мы работаем для вас с 2014 года.
    © 2020

    Погружение в крипту. Часть 1: как работают самые известные шифры в истории?

    Содержание статьи

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

    Roadmap

    Это первый урок из цикла «Погружение в крипту». Все уроки цикла в хронологическом порядке:

    • Урок 1. Исторические шифры. Основы и исторические шифраторы. Как работают (и анализируются) шифры сдвига, замены, Рихарда Зорге, шифр Вернама и шифровальные машины (ты здесь)
    • Урок 2. Распределение ключей. Что это такое, как выполняется распределение ключей и как выбрать криптостойкий ключ
    • Урок 3. Современные отечественные шифры. Что такое сеть Фейстеля и какими бывают отечественные блочные шифры, используемые в современных протоколах, — ГОСТ 28147—89, «Кузнечик»
    • Урок 4. Современные зарубежные шифры. В чем разница между 3DES, AES, Blowfish, IDEA, Threefish от Брюса Шнайера и как они работают
    • Урок 5. Электронная подпись. Виды электронных подписей, как они работают и как их использовать
    • Урок 6. Квантовая криптография. Что это такое, где используется и как помогает в распределении секретных ключей, генерации случайных чисел и электронной подписи

    В современном обществе, где почти каждый человек имеет электронный девайс (а то и не один), где каждую минуту совершаются операции с электронной валютой, пересылаются конфиденциальные email, подписываются электронные документы, криптография нужна как воздух. Нужна пользователям, чтобы защитить свою приватность. Нужна программистам, чтобы обеспечить безопасность проектируемых систем. Нужна хакерам, чтобы при аудите понимать уязвимые места в системах. Нужна админам, чтобы представлять, чем и как лучше защищать корпоративные данные. Мы не могли обойти стороной такую важную тему и начинаем цикл статей, посвященный введению в криптографию. Для новичков — самый простой путь познакомиться с криптой, для профи — хороший повод систематизировать свои знания. Шесть уроков, от самого простого к сложному. Вперед!

    Термины

    Для начала давай определимся с терминологией:

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

    В мире криптографии путаться в этих словах — ужасный моветон.

    Зачем мне знания о криптографии?

    Предположим, криптография очень нужна, но пусть ей займутся дядьки с усами математики. Зачем же мне знания по криптографии?

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

    Если ты программист или специалист по ИБ, то здесь вообще от криптографии никуда не скрыться. Любой крупный проект требует обеспечения безопасности информации. Неважно, что ты разрабатываешь: контентный сервис, почтовик, мессенджер, соцсеть или просто интернет-магазин, — везде есть критичные данные, которые надо защищать от перехвата или угона БД. Каждая операция должна быть защищена криптографическими протоколами. В этом случае криптография — подходящий инструмент. Если ты еще с ней не столкнулся, будь уверен — это на 100% лишь вопрос времени.

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

    Зачем изучать старые шифры?

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

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

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

    Исторические шифры и первые шифраторы

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

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

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

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

    Шифр сдвига

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

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