Криптография: история шифровального дела

Совместно с Научно-производственной компанией «Криптонит» концерн «Автоматика» Госкорпорации Ростех принимает участие в создании первого в России Музея криптографии , который откроет свои двери для посетителей уже в следующем году.
Как отмечают создатели, основная задача музея – пробудить интерес посетителей к науке и современным технологиям, рассказывая о криптографии и смежных научно-технических областях. Для этого «Автоматика» обладает всеми данными. Концерн специализируется на вопросах криптографии с 1940-х годов. Все это время здесь трудились лучшие криптографы и шифровальщики страны.
Но криптография насчитывает не одно тысячелетие и нашла свое уверенное место в современных реалиях – сегодня без шифрования невозможно представить банковские операции, мессенджеры и приложения, мобильную связь. О прошлом и будущем шифровального дела – в нашем материале.
Тайнопись древних цивилизаций
За наукообразным словом «криптография» (с древнегреческого буквально − «тайнопись») скрывается древнее желание человека спрятать важную информацию от посторонних глаз. Можно сказать, что сама письменность в самом начале уже была криптографической системой, так как принадлежала узкому кругу людей, и с помощью нее они могли обмениваться знаниями, недоступными неграмотным. С распространением письма возникла потребность в более сложных системах шифрования. Со времен древних цивилизаций криптография верно служила военным, чиновникам, купцам и хранителям религиозных знаний.
Самым древним свидетельством применения шифра (около 4000 до н.э.) ученые считают древнеегипетский папирус с перечислением монументов времен фараона Аменемхета II. Безымянный автор видоизменил известные иероглифы, но, скорее всего, не для сокрытия информации, а для более сильного воздействия на читателя.
Фрагмент хирургического папируса, одного из наиболее важных медицинских текстов Древнего Египта
Еще один известный шифр – древнесемитский атбаш, приблизительно 600 г. до н.э. Здесь информацию запутывали самым простым способом − с помощью подмены букв алфавита. Криптограммы на атбаше встречаются в Библии.
А в Древней Спарте пользовались скиталой – шифром из цилиндра и обвивающей его полоски пергамента. Текст писали в строку на пергаменте. После разматывания ленты текст превращался в шифр, прочитать который было возможно, только имея цилиндр такого же диаметра. Можно сказать, что спартанская скитала стала одним из первых криптографических устройств.
В IV столетии до н.э. автор военных трактатов Эней Тактик придумал шифровальный диск, названный впоследствии его именем. Для записи сообщения в отверстия диска с подписанными рядом с ними буквами последовательно продевалась нить. Чтобы прочитать текст, нужно было всего лишь вытягивать нить в обратной последовательности. Это и составляло основной минус устройства – при наличии времени шифр мог быть разгадан любым грамотным человеком. Зато, чтобы быстро «стереть» информацию с диска Энея, нужно было всего лишь вытянуть нить или разбить устройство.
Шифр Цезаря со сдвигом на 3: A заменяется на D, B заменяется на E и так далее. Z заменяется на C
Одним из первых документально зафиксированных шифров является шифр Цезаря (около 100 г. до н.э.). Его принцип был очень прост: каждая буква исходного текста заменялась на другую, отстоящую от нее по алфавиту на определенное число позиций. Зная это число, можно был разгадать шифр и узнать, какие тайны Цезарь передавал своим генералам.
Шифрованием пользовались многие древние народы, но особенного успеха в криптографии уже в нашу эру достигли арабские ученые. Высокий уровень развития математики и лингвистики позволил арабам не только создавать свои шифры, но и заниматься расшифровкой чужих. Это привело к появлению первых научных работ по криптоанализу – дешифровке сообщений без знания ключа. Эпоха так называемой наивной криптографии, когда шифры были больше похожи на загадки, подошла к концу.
Тарабарщина, цифирь и другие шифры
Работы арабских ученых способствовали появлению полиалфавитных шифров, более стойких к расшифровке, в которых использовались сразу несколько алфавитов. Однако люди Средневековья продолжали пользоваться простыми шифрами, основанными на замене букв другими буквами или цифрами, неправильном написании букв и т.д. В Средние века в Европе считалось, что криптография была тесно связана с магией и каббалой.
Интересно, что в Древней Руси тоже были свои способы тайнописи, например литорея, которая делилась на простую и мудрую. В мудрой версии шифра некоторые буквы заменялись точками, палками или кругами. В простой литорее, которая еще называлась тарабарской грамотой, все согласные буквы кириллицы располагались в два ряда. Зашифровывали письмо, заменяя буквы одного ряда буквами другого.
Еще одним известным шифром Древней Руси была цифирь, когда буквы, слоги и слова заменялись цифрами. Иногда для усложнения в шифр добавлялись математические действия, и было непросто разгадать подобную загадку: «Десятерица сугубая и пятерица четверицею, единица четверицею сугубо и десятерица дващи».
Тайнопись XVI века, в основе которой числовые значения церковнославянских букв
В эпоху Возрождения криптография переживает подъем. Начинается период формальной криптографии, связанный с появлением формализованных, более надежных шифров. Над некоторыми загадками ученых Ренессанса криптографы последующих лет бились столетиями.
Около 1466 года итальянский ученый Леон Альберти изобретает шифровальный диск, состоящий из двух частей: внешней и внутренней. На неподвижном внешнем диске был написан алфавит и цифры. Внутренний подвижный диск также содержал буквы и цифры в другом порядке и являлся ключом к шифру. Для шифрования нужно было найти нужную букву текста на внешнем диске и заменить ее на букву на внутреннем, стоящую под ней. После этого внутренний диск сдвигался, и новая буква зашифровывалась уже с новой позиции. Таким образом, шифр Альберти стал одним из первых шифров многоалфавитной замены, основанных на принципе комбинаторики. Кроме того, Леон Альберти написал одну из первых научных работ по криптографии − «Трактат о шифрах».
Шифровальный диск Леона Альберти
Здесь стоит упомянуть такое явление, как стеганография, которому в работе Альберти также было уделено внимание. Если с помощью шифра пытаются утаить смысл информации, то стеганография позволяет скрыть сам факт передачи или хранения данных. То есть текст, спрятанный с помощью этого метода, вы примите за картинку, кулинарный рецепт, список покупок или, например, кроссворд. Или вообще не увидите его, если он будет написан молоком, лимонным соком или с помощью особых чернил. Часто методы стеганографии и криптографии объединялись в одном послании.
Прорывом в криптографии стала книга «Полиграфия» аббата Иоганеса Тритемия 1518 года, рассказывающая в том числе о шифрах с полиалфавитной заменой. Самым известным шифровальщиком XVI века считается дипломат и алхимик из Франции Блез де Виженер, придумавший абсолютно стойкий шифр, в котором использовалось 26 алфавитов, а порядок использования шифра определялся знанием пароля. Можно сказать, что шифр Виженера представлял собой комбинацию нескольких уже упоминавшихся шифров Цезаря.
Эпоха шифровальных машин
Промышленная революция не обошла вниманием и криптографию. Около 1790 года один из отцов – основателей США Томас Джефферсон создал дисковый шифр, прозванный позже цилиндром Джефферсона. Этот прибор, основанный на роторной системе, позволил автоматизировать процесс шифрования и стал первым криптоустройством Нового времени.
Шифровальный цилиндр Томаса Джефферсона
Большое влияние на шифровальное дело оказало изобретение телеграфа. Прежние шифры вмиг перестали работать, при этом потребность в качественном шифровании только возрастала в связи с чередой крупных военных конфликтов. В XIX-XX веках основные импульсы для развития криптографии давала именно военная сфера. С 1854 года британские военные применяют шифр Плейфера, в основе которого – шифрование биграмм, или пар символов. Этот шифр использовался до начала Второй мировой войны.
Во Второй мировой войне противники уже использовали мобильные электромеханические шифраторы, шифры которых считались нераскрываемыми. Устройства были роторными или на цевочных дисках. К первым относилась знаменитая машина «Энигма», которой пользовались нацисты, ко вторым – американская машина M-209.
Принцип работы «Энигмы» заключался в следующем: при каждом нажатии на клавишу с буквой алфавита в движение приходили один или несколько роторов. Буква изменялась несколько раз по принципу шифра Цезаря, и в окошке выдавался результат. Шифры «Энигмы» считались самыми стойкими для взлома, так как количество ее комбинаций достигало 15 квадриллионов. Однако код «Энигмы» все же был расшифрован, сперва польскими криптографами в 1932 году, а затем английским ученым Аланом Тьюрингом, создавшим машину для расшифровки сообщений «Энигмы» под названием «Бомба». Комплекс из 210 таких машин позволял англичанам расшифровывать до 3 тыс. военных сообщений нацистов в сутки и внес большой вклад в победу союзников.
Роторы «Энигмы» в собранном состоянии. Фото: wikimedia.org
О советских шифровальных машинах известно мало, так как до последнего времени информация о них была засекречена. Например, до 1990-х годов в СССР и союзных странах использовалась роторная шифровальная машина «Фиалка». В отличие от «Энигмы» и других устройств, в ней использовались 10 роторов, а информация выводилась на бумажную ленту.
Криптография для всех
В 1949 году Клод Шеннон пишет работу «Теория связи в секретных системах», и криптография окончательно переходит в сферу математики. К концу 1960-х роторные шифровальные системы заменяются более совершенными блочными, которые предполагали обязательное применение цифровых электронных устройств. В 1967 году ученый Дэвид Кан издал популярную книгу «Взломщики кодов», которая вызвала большой интерес к криптографии.
С распространением компьютеров криптография выходит на новый уровень. Мощности новых устройств позволяют создавать на порядки более сложные шифры. Шифр или код становится языком общения между компьютерами, а криптография становится полноценной гражданской отраслью. В 1978 году разрабатывается стандарт шифрования DES, который стал основой для многих современных криптографических алгоритмов.
Сфера использования криптографии расширяется, при этом власти различных стран пытаются удержать контроль над использованием шифров. Разработки криптографов засекречиваются, от производителей шифровальных машин требуют оставлять в продуктах «черные ходы» для доступа спецслужб.

Параллельно независимые криптоаналитики разрабатывают способы шифрования, которыми могли бы пользоваться все желающие – так называемую открытую криптографию. Особенно актуально это стало с развитием интернета, где вопрос конфиденциальности информации встал очень остро. Первой криптосистемой с открытым ключом считается созданный в 1977 году алгоритм RSA, название которого является акронимом имен создателей – Риверста, Шамира и Адельмана. А в 1991 году американский программист Филипп Циммерман разрабатывает популярнейший пакет PGP с открытым исходным кодом для шифрования электронной почты.
Распространение доступного интернета по всему миру невозможно представить без криптографии. С появлением мессенджеров, социальных сетей, онлайн-магазинов и сайтов государственных услуг передача персональной информации в сети происходит без остановки и в огромных количествах. Сегодня мы сталкиваемся с криптографией ежедневно, когда вводим пароль от почтового сервиса, узнаем статус покупки онлайн или делаем денежный перевод через приложение банка. Криптография прошла гигантский путь от простых шифров древности к сложнейшим криптосистемам. Будущее этой науки творится на наших глазах – очередная революция в шифровании произойдет с появлением квантовых суперкомпьютеров, разработка которых уже ведется.
События, связанные с этим
Геометрия замыслов Павла Сухого
Олимпийский огонь «Климова»
Шифр работы что это

Начнем с того, что эта статья окончательно разубедит тех, кто думает, что шифровать – это просто. Даже в том случае, когда в распоряжении имеются надежные криптографические инструменты, можно легко споткнуться о подводные камни при использовании их на практике. Одному из таких «камней» и посвящена настоящая статья. Речь пойдет об особенностях использования некоторых механизмов симметричной криптографии, а именно о недолговечности симметричного ключа.
Существование каких-либо особенностей на практике не означает, что используемые схемы не надежны. В теории надежность или стойкость криптографических схем определяется только в совокупности с условиями, в которых та или иная схема должна функционировать (они определяют возможности потенциального противника). Задача тех, кто данные схемы использует на практике, – сделать реальные условия максимально близкими к «безопасным» теоретическим условиям. Так, априорное существование общих методов и подходов, позволяющих компрометировать ключ или данные при наличии у противника большого объема информации, приводит к появлению таких важных понятий, как «нагрузка на ключ» и «срок жизни ключа». В настоящей статье мы рассмотрим проблему недолговечности симметричного ключа и расскажем о существующих подходах к ее решению.
Что скрывается за словосочетанием «шифрование данных»?
С тех пор, как криптография выделилась в самостоятельный раздел науки, ее терминологическая база активно расширяется (блочные шифры, режимы работы шифра, нагрузка на ключ, срок жизни ключа, механизм смены ключа), что может вносить путаницу и усложнять понимание. Ситуация в отечественной криптографии усугубляется еще и неточностью перевода, так как большинство терминов заимствуются из английского языка. В настоящей статье мы будем говорить только о криптографических конструкциях, основанных на блочных шифрах, и далее коротко введем необходимые для этого понятия и поясним связь между ними.
Примитивы — это математические объекты, которые сами по себе не позволяют решать какие-либо прикладные задачи криптографии. Примерами являются хэш-функция, группа точек эллиптической кривой, блочный шифр. Поговорим о последнем. Блочный шифр (или просто шифр) — семейство взаимно однозначных отображений множества двоичных строк некоторой фиксированной длины (блоков) в себя, индексируемое ключом, который тоже является двоичной строкой фиксированной длины. Блочный шифр оперирует исключительно с блоками, то есть абстрактной единицей его работы является блок. Примерами блочных шифров являются алгоритмы Магма и Кузнечик, определяемые в ГОСТ Р 34.12-2015.
Утверждение «данные зашифрованы с помощью блочного шифра» не в полной мере описывает состояние дел, потому что зашифровать с помощью любого шифра можно по-разному — стойко и не стойко. Например, шифровать каждый блок по отдельности — плохая идея. В этот момент возникает такое понятие, как режим работы шифра — порядок применения шифра для обработки сообщения, размер которого может не только превышать размер блока, но и не быть кратным ему. Режимы шифрования проектируются таким образом, чтобы минимально зависеть от принципов работы самого шифра (максимум, от размеров блока и ключа). Единицей работы режима является уже не блок, а целое сообщение. Все режимы разрабатываются для решения конкретных прикладных задач — обеспечения конфиденциальности или целостности, причем разные режимы могут решать разные задачи. Например, конфиденциальность информации обеспечивают такие режимы шифрования, как CTR, OFB, CFB, CBC. В свою очередь, для обеспечения целостности используются режимы выработки кода аутентификации OMAC, TMAC, CBC-MAC. Также существуют режимы, решающие одновременно обе задачи: GCM, CCM (так называемые режимы аутентифицированного шифрования (AEAD)). Описание некоторых из этих режимов можно найти в ГОСТ Р 34.13-2015.
Теперь о криптографических свойствах описанных объектов. Понятие стойкости определяется в рамках модели противника и не существует отдельно от понятия угрозы. Чтобы не нагружать читателя введением сложных определений, не нужных для понимания основной идеи статьи, под «стойкостью» будем подразумевать отсутствие у противника какой-либо возможности компрометировать ключ или данные.
Итак, фундамент заложен и можно переходить к обсуждению основной темы статьи.
Может ли ключ «жить» вечно?

Рассмотрим следующую прикладную задачу. Пусть нам необходимо на протяжении многих лет обмениваться с кем-то информацией, каждый фрагмент которой после передачи месяц хранится в секрете, после чего публикуется.
Для начала согласуем общий секретный ключ, например, при личной встрече в защищенном от прослушивания подземном бункере. Насколько длинным он должен быть? Всем известно, что ключ можно найти с помощью полного перебора, но перебрать, например, 2 256 возможных значений 256-битного ключа даже за 1000 лет невозможно. Таким образом, 256 бит должно хватить на очень долгое время. Далее выбираем стойкий блочный шифр с соответствующей длиной ключа, а также стойкий режим шифрования.
Можно начинать работу. Данные передаются, все идет хорошо.
По прошествии всего нескольких месяцев мы понимаем, что кто-то явно читает нашу переписку, при этом в совокупности нами было передано чуть больше 5 терабайт данных. В чем может быть причина? А причина в том, что мы не обратили внимания на размер блока используемого шифра, который оказался слишком мал — всего 40 битов (2 40 значений блоков • 5 байтов в блоке = 5 терабайтов). Противник терпеливо собирал передаваемые по каналу зашифрованные данные и соответствующие им открытые тексты, которые публиковались через месяц после передачи. С помощью собранных данных он в конце концов узнал результаты применения используемого блочного шифра ко всем возможным блокам и сохранил эти результаты в таблицу. Таким образом, с ее помощью он смог расшифровывать любые данные, не зная ключ.
Этот простой пример демонстрирует важность условий, в которых функционирует система защиты информации, а именно важность учета так называемой нагрузки на ключ. Нагрузка на ключ — это объем данных, обработанных на одном ключе. В рамках настоящей статьи будем считать, что нагрузка на ключ измеряется в блоках.
Практика показывает, что обработка большого количества сообщений на одном ключе может привести к потере стойкости (к компрометации ключа, дешифрованию конфиденциальных сообщений). В примере, описанном выше, противник использовал фундаментальное свойство блочного шифра — взаимную однозначность отображений, приводящую к тривиальному ограничению нагрузки на ключ порядка 2 n , где n – длина блока. Однако существуют другие не столь очевидные классы методов, необходимым условием работы которых также является наличие у противника большого объема данных:
- Методы анализа, основанные на свойствах используемого шифра
Наиболее распространёнными методами это типа являются линейный и дифференциальный методы. Для «хороших» блочных шифров данные методы требуют наличия материала, объем которого по порядку соответствует тривиальному ограничению 2 n . В данной статье мы исходим из того, что используемый шифр стойкий, и поэтому не будем далее учитывать эти ограничения. - Методы анализа, основанные на комбинаторных свойствах используемого режима работы шифра
Как уже было сказано ранее, комбинаторные свойства режимов минимально зависят от особенностей внутреннего строения используемого блочного шифра. Эти свойства начинают проявляться при обработке большого количества данных и могут привести к появлению реальных угроз. Ярким примером метода, осуществляющего такие угрозы, является атака Sweet32 на TLS, приводящая к частичному дешифрованию трафика. Ограничения, обусловленные методами этого типа, будем для краткости называть комбинаторными ограничениями (для большинства режимов по порядку они равны 2 n /2 ). - Методы, основанные на информации, полученной по побочным каналам
При функционировании криптографических систем на практике у противника появляются возможности, которых нет на бумаге, — он может получать информацию о секретных параметрах системы с помощью так называемых побочных каналов. К ним можно отнести энергопотребление, электромагнитное излучение, акустический шум, время работы алгоритма. При обработке большого количества сообщений «опасная» информация, полученная по побочным каналам, накапливается, что может привести к осуществлению реальных угроз, например, вскрытию ключа. Примером метода, осуществляющего такие угрозы, является атака TEMPEST, также теме атак по побочным каналам посвящена одна из предыдущих статей нашего блога. Ограничения, обусловленные методами такого рода, будем называть ограничениями по побочным каналам.
Примечание: ограничения, соответствующие методам анализа из пункта 1, близки к тривиальному 2 n (в силу стойкости блочного шифра) и далее не рассматриваются. Также в рамках данной статьи будем считать, что ограничения по побочным каналам гораздо более сильные, чем комбинаторные (что обычно соответствует реальному положению дел).
Итак, после рассмотрения такого обилия различных методов становится очевидно, что ограничивать нагрузку на ключ не только желательно, но и необходимо. Отсюда возникает такое понятие как допустимая нагрузка на ключ или срок жизни ключа (в английском языке используется термин key lifetime) — объем данных, который можно «безопасно» обработать на одном ключе. Здесь под словом «безопасно» также будем понимать отсутствие у противника возможности компрометировать любую конфиденциальную информацию.
Что если данных очень много?
Конкретное значение допустимой нагрузки на ключ определяется протоколом, в рамках которого используется тот или иной шифр и режим шифрования, с учетом описанных выше методов анализа и необходимого уровня стойкости.
Рассмотрим такой протокол. Исходя из необходимого уровня стойкости протокола фиксируется допустимая нагрузка на ключ L. Предположим, что на одном ключе обрабатывается q сообщений. Для упрощения понимания будем предполагать, что все сообщения имеют одинаковую длину m блоков. Параметры q и m должны выбираться так, чтобы суммарный размер этих сообщений не превосходил допустимую нагрузку на ключ, т.е. q•m ≤ L. Графически это можно изобразить следующим образом: допустимая нагрузка на ключ L ограничивает площадь прямоугольника высоты q и длины m:

Следовательно, если хочется обрабатывать сообщения большей длины, придется обрабатывать меньшее количество сообщений, и, напротив, при обработке большого числа сообщений, все они должны быть небольшого размера. На практике часто бывает, что допустимая нагрузка на ключ оказывается слишком мала и с помощью одного ключа удается обработать очень небольшое число сообщений ограниченной длины. Но что делать, если нужно обрабатывать больше данных, не теряя стойкости?
Естественным решением проблемы «безопасной» обработки большого объема данных, которое первым приходит в голову, является замена ключа на новый по истечении срока его жизни. Казалось бы, все просто: шифруем максимально возможный объем данных, заменяем старый ключ на новый, и продолжаем в том же духе. Такая «замена» в протоколах обычно называется пересогласованием ключа. Однако у такого подхода есть существенный недостаток: низкая эффективность. В большинстве протоколов пересогласование ключа приведет к прекращению передачи прикладных данных, пересылкам ряда служебных сообщений, работе датчика случайных чисел и вообще уйме дополнительных вычислений, а в некоторых случаях придется задействовать крайне ресурсоемкую асимметричную криптографию.
Неужели не существует эффективного способа решения данной проблемы? К счастью, такой способ есть, и известен он под названием re-keying (преобразование ключа). О нем, его особенностях и разновидностях будет рассказано в следующей части нашей статьи.
начальник отдела защиты информации
Шифрование
Концепт, на котором держится безопасность в Интернете.
Время чтения: 8 мин
Открыть/закрыть навигацию по статье
- Кратко
- Шифрование в вебе
- Симметричное шифрование
- Асимметричное шифрование
- Необратимое шифрование
- Применение шифрования
- Без ключа
- Один ключ
- Два ключа
Контрибьюторы:
Обновлено 17 мая 2023
Кратко
Скопировать ссылку «Кратко» Скопировано
Шифрование — это способ защитить данные от постороннего взгляда (несанкционированного доступа) с помощью шифра. Шифр — системы действий или операций над данными, которые позволяют скрыть исходные данные от злоумышленника. Шифрование можно сравнить с хранением секретных документов в сундуке под замком, и только обладатель ключа имеет доступ к этим документам. Сундук (контейнер), ключ и способ их хранения — это шифр, система сущностей и действий, которая позволяет скрыть информацию, хотя и довольно примитивная в этом примере.
Существует специальная наука криптография, в рамках которой исследуются существующие шифры и разрабатываются новые. Классификация шифров, исследование параметров шифров и криптосистем в целом (систем хранения и/или передачи данных с шифрованием) — сферы интересов этой науки.
Шифрование в вебе
Скопировать ссылку «Шифрование в вебе» Скопировано
Интернет (ARPANET) был создан как компьютерная сеть передачи данных военного назначения. Удивительно, но интернет сам по себе не содержит никаких специальных возможностей для шифрования данных. Вся ответственность и нагрузка по передаче конфиденциальных данных лежит на плечах пользователей сети. Так, письма, веб-страницы, данные пользователей, документы на протяжении большого времени передавались в открытом виде, чем активно пользовались злоумышленники. Только в последние годы ситуация начала меняться.
Браузеры требуют от сайтов использовать сертификаты безопасности, почтовые серверы используют защищённые протоколы для пересылки писем, программы используют защищённые API, некоторые операции с данными пользователей возможны только при наличии ключей доступа (токенов или электронной подписи).
Шифрование в вебе, за исключением отдельных специальных случаев, можно свести к нескольким вариантам:
- Защищённые протоколы передачи данных.
- Сертификаты безопасности.
- Электронная цифровая подпись.
- Хэш-функции.
Подробнее о сертификатах безопасности можно прочитать в статье «SSL-сертификаты». Протоколы TLS, HTTP, HTTPS описаны в статьях «Протокол HTTP» и «Работа с сетью».
Для того чтобы разобраться с шифрованием в интернете, необходимо рассмотреть, какие криптосистемы бывают и какие шифры используются в них. При рассмотрении алгоритмов, обращают внимание на его основные характеристики:
- Криптографическую стойкость — способность криптографического алгоритма противостоять взлому и криптоанализу.
- Скорость работы алгоритма шифрования, которая является критически важной при выборе железа и в зависимости от контекста может определяться:
- Вычислительной сложностью — функциональной зависимостью объёма работы алгоритма от размера входных данных).
- Количеством арифметических операций определённого типа, требуемых на выполнение необходимых действий.
- Другими специфическими характеристиками шифра.
Симметричное шифрование
Скопировать ссылку «Симметричное шифрование» Скопировано

Идея симметричного шифрования — использование одного и того же ключа для шифрования и дешифровки. Такое шифрование широко применялось в древних и средневековых государствах (Атбаш, шифр Цезаря, омофоническая замена и прочие) и применяется до сих пор (например, блочные шифры или поточные шифры).
Например, шифр Цезаря заключается в следующем:
- Шифрование: символы исходного сообщения преобразуются с помощью смещения на определённое количество по алфавиту.
- Расшифровка: символы смещаются на то же количество, но в обратную сторону.
Например, если зашифровать сообщение «Привет» со смещением на три символа, получится сообщение «Тулезх». С разными шифрами можно поиграть на сайте «Каталог онлайн калькуляторов» в разделе «Криптография».
Достоинства симметричного шифрования по сравнению с асимметричным:
- Скорость работы алгоритма.
- Простота программной реализации.
- Меньшая требуемая длина ключа для сопоставимой стойкости.
Недостатки симметричного шифрования по сравнению с асимметричным:
- Управление большим количеством ключей в реальных системах.
- Сложность реализации процедуры обмена ключами.
Асимметричное шифрование
Скопировать ссылку «Асимметричное шифрование» Скопировано

Асимметричное шифрование — это использование разных ключей для шифрования и дешифровки. Представьте такой замок, закрыть который можно одним ключом, а открыть — другим. Разновидностью асимметричного шифрования является шифрование с открытым ключом, использование которого очень распространено в интернете. Открытый ключ — это ключ, который распространяется свободно. С помощью открытого ключа данные шифруются. А вот расшифровать данные можно только с помощью закрытого ключа, то есть ключа, который должен хранится только у адресата.
Например, если вам необходимо переслать сообщение, вы просите адресата переслать вам открытый ключ. После шифрования, вы отправляете сообщение адресату, и только он сможет расшифровать сообщение, поскольку только он обладает закрытым ключом. По интернету передаётся открытый ключ, обладание которым не даёт злоумышленнику никакого преимущества. Даже если злоумышленник перехватит зашифрованный пакет, он не сможет расшифровать запись без закрытого ключа.
Достоинства асимметричного шифрования по сравнению с симметричным:
- Нет необходимости предварительно передавать секретный ключ.
- Только одной стороне известен ключ для дешифровки сообщения.
- В реальных системах число ключей в асимметричной криптосистеме существенно меньше.
Недостатки асимметричного шифрования по сравнению с симметричным:
- Сложность модификации алгоритма.
- Ключи большей длинны.
- Медленнее совокупность операций шифрования и дешифровки.
- Нужно больше вычислительных ресурсов.
В современном вебе используются схема передачи зашифрованных данных, в которой асимметричное шифрование используется только для того, чтобы создать ключ симметричного шифрования:
- Устанавливается соединение между клиентом и сервером (двумя клиентами).
- Стороны обмениваются открытыми ключами в рамках системы с асимметричным шифрованием.
- По зашифрованному каналу передаётся токен (ключ для симметричного шифрования).
- С помощью токена происходит обмен данными. Токен работает только в течение сеанса связи или пока одна из сторон не отзовёт его.
Разновидностью асимметричного шифрования является электронная цифровая подпись, которая используется для подтверждения авторства электронного документа или цифрового ресурса. Система подписи работает наоборот относительно той схемы, которая используется для асимметричного шифрования. Закрытый ключ используется для подписи документа, то есть для шифрования. Открытый ключ используется для дешифровки, поскольку каждый должен иметь возможность прочитать документ. Справедливости ради нужно сказать, что симметричные электронные цифровые подписи тоже существуют, но используются значительно реже.
Необратимое шифрование
Скопировать ссылку «Необратимое шифрование» Скопировано
Представьте, что вам нужно использовать пароли для аутентификации пользователей. Если хранить их как есть в открытом виде (в виде символов, которые вводит пользователь при заполнении поля пароля) в базе данных или в файлах на сервере, то это будет небезопасно. Злоумышленник, которому удастся получить доступ к базе данных или файлам, получит пароли всех пользователей. В этом случае на помощь приходит необратимое шифрование.
Необратимое шифрование — это такой способ шифрования, расшифровка при котором вообще невозможна или занимает очень большое время. Пароли пользователей можно хранить в зашифрованном виде. Чтобы проверить введённый пользователем пароль, нужно просто зашифровать его ещё раз и сравнить результат.
Для необратимого шифрования используются так называемые хэш-функции. Хэш-функция — специальный алгоритм, который позволяет генерировать хэш для шифруемых данных (в нашем случае паролей). Хэш или хэш-сумма — это просто последовательность символов.
Последовательность сгенерированных символов должна:
- Существенно отличаться для близких по значению данных (для паролей, которые отличаются, например, на один символ).
- Генерировать строку-результат одной и той же длины для разных входных данных (разные пароли по количеству и составу символов).
- Не повторяться для разных данных (только один пароль может аутентифицировать одного и того же пользователя).
- Быть максимально быстрой, насколько это возможно.
Другим вариантом применения хэш-функций является подсчёт хэш-сумм для файлов. Поскольку хэш-функция выдаёт существенно отличающуюся хэш-сумму для данных, которые отличаются незначительно, её можно использовать для регистрации изменений в файлах. Изменение даже одного символа можно будет обнаружить. Например, такой подход используется в системе контроля версий git.
Можно упомянуть об ассоциативных массивах, которые позволяют хранить данные в формате «ключ — значение». Для ключа формируется хэш-сумма, которая представляет собой порядковый номер элемента массива. То есть можно сопоставить ключу в виде текста элемент массива.
Применение шифрования
Скопировать ссылку «Применение шифрования» Скопировано
Чтобы выбрать тот или иной алгоритм шифрования для решения практической задачи защиты данных необходимо держать в голове несколько вещей:
- Необходимая криптографическая стойкость.
- Критически важные особенности железа.
- Путь распространения информации.
- Информацию о пользователях будущей системы.
Все эти особенности будут влиять на выбор алгоритма. Типизация алгоритмов позволяет ориентироваться во всём многообразии. Ниже приведена упрощённая схема основных типов шифров:
Без ключа
Скопировать ссылку «Без ключа» Скопировано
Необратимое шифрование: git, целостность данных, отслеживание транзакций, криптовалюты, шифрование паролей.
- Хэш-функции, известные алгоритмы: MD4/5, SHA-1/2/3.
- Блокчейн, известные алгоритмы: ECDSA.
На сегодняшний день не каждый алгоритм обладает достаточной криптостойкостью. Например, MD5 нельзя использовать для шифрования паролей. Подробнее об этом можно прочитать, например, в статье на Википедии.
Один ключ
Скопировать ссылку «Один ключ» Скопировано
Симметричное шифрование данных с наибольшей скоростью:
- Подстановочные шифры, известные алгоритмы: Атбаш, шифр Цезаря, шифр Виженера.
- Блочные шифры, известные алгоритмы: Blowfish, Twofish, RC2/5/6, DES, AES, FROG, ГОСТ 28147-89.
- Поточные шифры, известные алгоритмы: RC4, SEAL, A5, Mosquito.
Два ключа
Скопировать ссылку «Два ключа» Скопировано
Шифрование данных с наибольшим удобством для большого количества пользователей:
- Асимметричное шифрование, известные алгоритмы: RSA, Elgamal, ECC.
- Электронная цифровая подпись, известные алгоритмы: схема Диффи-Хелмана, ГОСТ Р 34.10-2012, ECDSA, ГОСТ Р 34.10-94, DSA.
Шифрование
Шифрование — метод защиты данных путем их преобразования таким образом, чтобы сообщение могли прочитать только авторизованные пользователи. Для обратного преобразования (дешифрования) и доступа к передаваемым сообщениям такие пользователи используют специальный ключ. Шифрование данных применяется для обеспечения конфиденциальной передачи информации в военном деле, банковских транзакциях, тайной коммерческой и дипломатической переписке, в работе некоторых интернет-сервисов, мессенджеров и т.д.

Освойте профессию «Белый хакер»
«Белый» хакер
Научитесь защищать информационные системы: проводить атаки, анализировать программы и искать в них уязвимости. Станьте востребованным специалистом и работайте из любой точки мира.

Профессия / 13 месяцев
«Белый» хакерВзламывайте ПО безнаказанно и за оплату

История шифрования
Надежно зашифровать информацию люди пытались в древнейших цивилизациях Ближнего востока (Древнем Египте, Месопотамии, Персии), государствах античной эпохи, в Китае и т.д. Древнейшим из найденных шифров является древнеегипетский папирус, в котором перечислялись монументы эпохи фараона Аменемхета II. В нем автор видоизменил некоторые иероглифы — правда, доподлинно неизвестно, для сокрытия ли информации или с целью просто произвести впечатление на читателя.
Другой пример древнего шифра — семитский атбаш. Написанные с его помощью криптограммы (шифрованные тексты) встречаются в древнееврейском Танахе (Библии). Это классический моноалфавитный шифр, в котором шифрование осуществляется путем подмены в словах букв еврейского алфавита по формуле n — i +1, где i — номер заменяемой буквы, а n — число букв в алфавите. По такому же принципу работал и «шифр Цезаря», используемый в Древнем Риме.
В Древней Греции и Спарте было изобретено одно из первых известных криптографических устройств — скитала. На граненый цилиндр определенного диаметра спиралью наматывалась полоска пергамента. На ней по одной из грани буквами наносилась зашифрованная информация, затем пергаментная лента разматывалась, и оставшиеся пробелы заполнялись случайными буквами. Прочесть шифр можно было только намотав пергамент с лентой на такой же по диаметру цилиндр.

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

Станьте специалистом
по кибербезопасности – научитесь отражать кибератаки и поддерживать безопасность любых IT-системВ 1466 году итальянский ученый-математик Леон Альберти изобрел шифровальное устройство в виде диска с двумя вращающимися частями — внешней и внутренней. На обеих были написаны буквы и цифры, но в разном порядке. Шифрование сообщений заключалось в том, что каждый символ шифруемого текста сначала нужно было найти на внешней части и заменить ее на знак внутренней. Затем внутренняя часть смещалась, и на ней подыскивалась замена уже для следующего символа шифруемого текста. Таким образом, это был один из первых сложных криптографических механизмов на основе полиалфавитного шифра. Также он написал один из первых фундаментальных трудов по криптографии — «Трактат о шифрах».

В эпоху промышленной революции появились первые шифровальные машины. В 1790 году Томас Джефферсон, в будущем американский президент, изобрел устройство, названное «цилиндром Джефферсона», которое позволяло автоматически шифровать текст. С изобретением в 19 веке телеграфа появились первые электромеханические шифровальные машины, а в военном деле стали использоваться шифры на основе биграмм (пар символов). Особый толчок военной криптографии дали Первая и Вторая мировые войны, во время которых всеми сторонами активно применялись мобильные шифровальные устройства. Самое известное из них, немецкая «Энигма», долго считалась абсолютно устойчивой ко взлому. Но в Великобритании в секретном Блетчли-парке команда дешифровщиков, в которой был известный математик и теоретик компьютерных систем Алан Тьюринг, изобрела специализированный компьютер «Бомба». Он позволил расшифровывать передачи немецкого военно-морского командования. Так началась новая компьютерная эпоха в истории криптографии.
Что такое шифрование
Во многих статьях понятия шифрование и кодирование используются как синонимы, однако это не так. Кодирование — это преобразование информации с помощью какой-либо системы знаков из формы, удобной для непосредственного использования, в форму, приспособленную для передачи, обработки и хранения. В самом общем смысле кодированием является запись данных с помощью обычного алфавита или чисел. В более узком смысле — например, преобразование текстового сообщения в телеграфное с помощью азбуки Морзе или компьютерной программы в машинный код (набор нулей и единиц).
Шифрование — это частный случай кодирования, цель которого заключается именно в сокрытии информации от посторонних лиц. Этот процесс состоит в том, что к исходным открытым данным применяются два алгоритма (процесса преобразования информации):
- шифрующий — он преобразует исходный открытый текст (набор данных) в секретный код;
- расшифровывающий — этот алгоритм, напротив, используется для обратного преобразования секретного кода в открытый набор данных.
Набор параметров алгоритма, с помощью которых он приводится в действие, называется ключом. В некоторых системах шифрования его роль может выполнять предмет или специальное устройство — например, в греческой скитале это цилиндр определенного диаметра и длины. Именно ключ является инструментом шифровки/дешифровки сообщения. В современной криптографии для повышения устойчивости системы шифрования ко взлому используется принцип, сформулированный голландским военным криптографом 19-го века Огюстом Керкгоффсом и заключающимся в следующих тезисах:
- сам алгоритм шифрования должен быть открытым — это исключает взлом системы несанкционированным лицом путем простого изучения;
- секретным должен быть именно ключ — то есть определенный набор параметров алгоритма.
Например, алгоритм шифрования, используемый в немецкой электромеханической шифровальной машине «Энигма», был в целом понятен криптографам союзников по антигитлеровской коалиции. Если упрощать, он заключался в замене букв исходного текста другими путем последовательных перемещений роторного механизма. Однако, сам ключ шифрования союзникам был неизвестен. Взломать «Энигму» смогли только за счет совокупности косвенных факторов:
- небрежности и ошибок, допущенных немцами при шифровании сообщений;
- попавших в руки образцов машины с сопроводительной документацией и изучения точной работы роторных механизмов;
- попавших в руки союзников зашифрованных сообщений, содержащих известную информацию (например, метеосводки) и т.д.
Решающую роль во взломе «Энигмы» сыграло изобретение дешифрующих устройств. Сначала это были польские «криптоаналитические бомбы», позволявшие дешифровывать ранние, менее защищенные коммерческие версии немецкой машины. Затем, уже в годы Второй Мировой войны, на их основе британскими криптоаналитиками из Блетчли-парка была изобретена машина «Бомба», которая вычисляла каждодневное положение роторных механизмов военных версий «Энигмы», которые и были основной частью ключа.
Однако, и простое кодирование информации может в некоторых ситуациях быть шифрованием. Например, для человека, не владеющего письмом, любой текст будет непонятным шифром, пока он не изучит ключ (алфавит). В частности, понять древнеегипетскую иероглифическую письменность французскому востоковеду Жану-Франсуа Шампольону помог Розеттский камень, на котором один и тот же текст был записан иероглифами, упрощенным (демотическим) египетским письмом и хорошо известным европейцам греческим языком. Сопоставляя эти надписи и используя лингвистический анализ, он смог сначала прочесть написанные иероглифами имена египетских фараонов, и, отталкиваясь от этого, дешифровать другие иероглифы.
Способы шифрования
В основе современной криптографии лежат те же принципы, что и раньше, но способы засекречивания информации стали более надежными и совершенными за счет широкого использования математических методов и компьютерных технологий. Сегодня используются два основных вида шифрования.
- Симметричное. В нем для шифровки и дешифровки сообщения используется один и тот же ключ. Чтобы симметричное шифрование обеспечивало нужную безопасность данных, этот ключ должен быть секретным, но известным как отправителю, так и получателю сообщения. Очевидно, такая система не будет полностью безопасной — постороннее лицо, узнав ключ, может как прочесть конфиденциальную информацию, так послать ложное сообщение. Однако, симметричный алгоритм шифрования позволяет ускорить процесс шифровки/дешифровки, поэтому активно применяется при передаче больших объемов информации.

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

Также на практике широко используется комбинированный тип шифрования. Например, для передачи самих данных применяется более быстрое симметричное, а для передачи нужного для их расшифровки ключа (который тоже является информацией) — асимметричное.
В современных компьютерных системах передачи данных (мессенджерах, электронной почте и т.д.) ключи представляют собой определенный набор символов, который генерируется генератором случайных символов или математическими алгоритмами. Это позволяет быстро создавать разные ключи для каждого сеанса связи или даже отдельных сообщений, что значительно повышает безопасность передаваемых данных.
Что такое дешифрование
Дешифрование — процесс, обратный шифрованию, то есть преобразование засекреченных данных в открытые для чтения (хранения, использования). Самым простым методом дешифровки зашифрованного сообщения является использование ключа. Однако, это не единственный способ. Существуют методы, позволяющие дешифровать сообщение без ключа — их изучением и разработкой занимается такая дисциплина, как криптоанализ.
Самый простой дешифровки без знания ключа — это его подбор, то есть проверка всех возможных вариантов до нахождения верного. По сути, таким способом можно взломать любую криптосистему за исключением абсолютно криптостойких. На практике эффективность дешифровки методом простого подбора связана с возможностью определения правильности расшифрованного сообщения, что обуславливает следующие проблемы:
- при ручном подборе криптоаналитик сравнительно легко может определить правильность дешифровки, но быстро подобрать нужный ключ в таком случае получится только для несложных криптографических систем;
- при автоматическом подборе с помощью компьютерной программы получается быстро перебирать большое количество возможных вариантов ключа, но есть сложности с определением программой правильности дешифрованного сообщения.
Другой часто используемый метод дешифрования — анализ перехваченных сообщений. Имея зашифрованную информацию и хотя бы приблизительное представление о ее содержании, можно установить алгоритм шифрования и подобрать ключ. А потом использовать их для дешифровки других сообщений. Особенность данного метода в том, что для перехвата данных используется менее сложное, дорогое и громоздкое оборудование, чем для перебора вариантов ключа. Например, пересланное по зашифрованному каналу электронное письмо можно считать с ЭЛТ-монитора с помощью простой телевизионной антенны, улавливающей электромагнитные сигналы, испускаемые электронно-лучевой трубкой (перехват Ван Эйка). Для чтения зашифрованного интернет-трафика существуют специальные программы-снафферы (в том числе бесплатные).
Помочь расшифровать сообщение может анализ самой криптографической системы — в частности, устройства или программы, с помощью которых составляется шифр. В сочетании с перехватом сообщения, методом обратной разработки это позволяет если не найти ключ, то хотя бы понять алгоритм шифрования.
Из нетехнических способов дешифровки сообщений широко используются различные методы социальной инженерии. В контексте информационной безопасности под ними подразумеваются различные методы психологического воздействия и манипулирования людьми с целью выведать у них те или иные сведения о содержании зашифрованных сообщений, принципах работы криптографических устройств, ключей, алгоритмов шифрования и т.д. Типичный пример социальной инженерии — фишинговая рассылка в виде официального письма со ссылкой, ведущей на поддельный сайт, имитирующий веб-страницу какой-либо организации. Попадая на этот сайт, неопытный пользователь вводит свои данные (логин и пароль, номер банковской карты и т.д.), который дает доступ к персональной информации, деньгам на банковском счете и т.д.
Сегодня шифрование (криптография) — основа информационной безопасности в самых различных отраслях. Она применяется обычными людьми в повседневной и рабочей переписке, денежных переводах, при хранении данных на домашних компьютерах и т.д. Особое значение секретность данных имеет в государственном управлении, дипломатической работе, банковском деле, военной сфере, коммерческой деятельности и т.д. Для ее обеспечения сегодня применяются сложнейшие криптографические алгоритмы и средства шифрования, многофакторные способы аутентификации пользователей, защищенное от взлома оборудование и другие меры, снижающие до минимума возможность несанкционированного доступа.