59
Что такое криптография Чем мы будем заниматься О криптографии Сергей Николенко Computer Science Club, 2015 Сергей Николенко О криптографии

Криптографические протоколы, весна 2015: Введение в криптографические примитивы

Embed Size (px)

Citation preview

Что такое криптографияЧем мы будем заниматься

О криптографии

Сергей Николенко

Computer Science Club, 2015

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Outline

1 Что такое криптографияОсновные задачи криптографииКраткая история криптографии

2 Чем мы будем заниматьсяМетодыРазные виды примитивов

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Криптология

Наука о шифрах — криптология.Она делится на две дисциплины:

криптография: как засекретить что-то;криптоанализ: как рассекретить то, что засекретилкриптограф.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Криптография

Криптография — κρυπτo + γραφη.

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

Но есть и другие задачи.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Основные задачи криптографии

Конфиденциальность: как сохранить информацию всекрете от всех, кроме имеющих доступ:

передача данных по незащищённому каналу;хранение данных на общедоступных носителях.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Основные задачи криптографии

Конфиденциальность: как сохранить информацию всекрете от всех, кроме имеющих доступ:

передача данных по незащищённому каналу;хранение данных на общедоступных носителях.

Целостность: как обеспечить передачу данных в целости исохранности. В частности, как заметить, менял ли кто-тоданные по дороге.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Основные задачи криптографии

Конфиденциальность: как сохранить информацию всекрете от всех, кроме имеющих доступ:

передача данных по незащищённому каналу;хранение данных на общедоступных носителях.

Целостность: как обеспечить передачу данных в целости исохранности. В частности, как заметить, менял ли кто-тоданные по дороге.Аутентификация: как доказать, что данные поступают изправильного источника. Две части:

entity authentication: как доказать, что я — это я;data origin authentication: как доказать, что моёсообщение — действительно от меня.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Основные задачи криптографии

Конфиденциальность: как сохранить информацию всекрете от всех, кроме имеющих доступ:

передача данных по незащищённому каналу;хранение данных на общедоступных носителях.

Целостность: как обеспечить передачу данных в целости исохранности. В частности, как заметить, менял ли кто-тоданные по дороге.Аутентификация: как доказать, что данные поступают изправильного источника. Две части:

entity authentication: как доказать, что я — это я;data origin authentication: как доказать, что моёсообщение — действительно от меня.

Non-repudiation (неотречение): как сделать так, чтобычеловек, что-то пообещавший, потом от обещаний неотказывался.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Древние цивилизации

Около 4000 лет назад египтяне заменяли некоторыеиероглифы в важных текстах на другие.

Их было нетрудно расшифровать; видимо, цель была не всокрытии информации.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Древние цивилизации

Китай: Ву Джинг Зонг Яо (1044) содержал не толькоформулу пороха, но и небольшой код для военных целей,но вообще не развито было шифрование.

Индия: «Камасутра» содержит искусство тайнописи какодно из 64 искусств (йог), рекомендованных для женщин.

Да и вообще во всех культурах: курды-езиды (противмусульман), жители Тибета, тайцы и т.д.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Греция

Лисандр: скиталы — кожаная полоска наматывается нацилиндр определённой толщины.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Греция

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

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

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

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Шифр Цезаря

Шифр Цезаря — простой вариант шифра подстановки.Буквы сдвигаются на фиксированное число позиций: A –D, B – E, C – F и т.д.

Талмуд — атбаш (алеф–таф, бет–шин): первая буквазаменяется на последнюю, вторая — на предпоследнюю ит.д. В Библии: «лев камай» (сердце моих противников) —«халдеи», «Шешах» — «Вавилон».

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Моноалфавитные шифры

Шифр Цезаря и атбаш — частные случаимоноалфавитных шифров.

В них каждой букве алфавита ставится в соответствиедругая буква или символ другого алфавита.

Т.е. моноалфавитный шифр — перестановка буквалфавита или биекция с другим алфавитом.

Как взломать моноалфавитный шифр?

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Пляшущие человечки

Пример моноалфавитного шифра:

Холмс разгадал его, применив частотный анализ.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Арабы

Частотный анализ появился в Аравии.

14-томная энциклопедия Ахмада аль-Калькашанди (1412)содержала раздел по криптологии.

Таблицы сочетаемости букв арабского языка, какая послекакой наиболее вероятна, какие буквы самые частые (алифи лам, конечно). Всё это — на основе Корана.

Частотным анализом можно взломать моноалфавитныешифры; с биграммами уже сложнее, но тоже можно.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Частотный анализ: моноалфавитный шифр

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Частотный анализ: биграммы

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Новое время

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

С XVI века появилась дипломатия, которой понадобилисьсекретные сообщения.

Франсуа Виет был в том числе и криптоаналитиком,помогал Генриху IV.

Английские криптоаналитики на службе Уолсингемарасшифровали письма Марии Стюарт и обвинили её визмене.

И так далее...

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Полиалфавитные шифры

Леон Батиста Альберти —архитектор, художник,композитор, писатель.

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

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Шифр Виженера

Иоганн Трисемус, 1508: «Полиграфия», первый труд покриптологии.Джованни Белласо, 1553: «La cifra del»; описал шифрВиженера:

записываем в квадрат (tabula recta) алфавит сосмещением;выбираем кодовое слово, записываем с повторением;потом кодируем тем шифром Цезаря, которыйсоответствует текущей букве кодового слова.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Шифр Виженера

Шифр Виженера долго считался невзламываемым, вплотьдо начала XX века считался очень надёжным.

Однако его взломал Фридрих Касиски (1863, скорее всегораньше) – его метод основан на поиске повторяющихсягрупп символов в шифре.

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

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

XIX век

Многое изменилось с изобретением телеграфа.

Теперь нужно было кодировать большие объёмысообщений.

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

Чарльз Уитстон — Playfair cipher (вариант порожденияперестановки биграмм).

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Цилиндр Джефферсона

Томас Джефферсон — «wheel cipher», «цилиндрДжефферсона», очень изящный метод построенияполиалфавитного шифра.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Цилиндр Джефферсона

Код — цилиндр; чтобы зашифровать, нужно повернутьцилиндры так, чтобы получилось сообщение, и записатькакую-нибудь другую строчку.

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

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Цилиндр Джефферсона

Значительно позже появились другие машины, основанныена роторах.

Самая известная — немецкая «Энигма».

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Криптоанализ

Август Керхкоф (1883) — «La Cryptographic militaire»;принципы шифрования:

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

Удивительно современные принципы.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Мировые войны

Во время мировых войн криптоанализ сыграл важнейшуюроль.

Ещё больше, чем телеграф, на криптографию повлиялорадио. Теперь можно было перехватывать большиеобъёмы вражеских сообщений.

WWI: Британия, Room 40. Из-за блокады перехватываливсе немецкие сообщения, и многие шифры успешнодекодировали.

В частности, декодировали и показали американцам планыГермании заключить союз с Мексикой, после чего СШАвошли в войну.

WWII: Bletchley Park. Работали многие математики икриптографы (Алан Тьюринг).

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Шифр Вернама

1910-е годы: Гильберт Вернам:улучшил шифр Виженера;разработал шифр, который невозможно взломать. Как это?

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Шифр Вернама

1910-е годы: Гильберт Вернам:улучшил шифр Виженера;разработал шифр, который невозможно взломать. Как это?

Одноразовый блокнот: используем одноразовый секретныйключ k , который просто складываем побитово ссообщением:

c = m ⊕ k .

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

Это, конечно, доказал уже Шеннон в конце 1940-х.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

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

Появление криптографии с публичным ключом

Whitfield Diffie, MartinHellman, 1976: «Newdirections in cryptography».Ralph Merkle. Протоколсогласования ключаДиффи-Хеллмана.

Ron Rivest, Adi Shamir,Leonard Adleman, 1978:RSA, перваякриптосистема с открытымключом.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Outline

1 Что такое криптографияОсновные задачи криптографииКраткая история криптографии

2 Чем мы будем заниматьсяМетодыРазные виды примитивов

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Основные задачи криптографии

Конфиденциальность: как сохранить информацию всекрете от всех, кроме имеющих доступ:

передача данных по незащищённому каналу;хранение данных на общедоступных носителях.

Целостность: как обеспечить передачу данных в целости исохранности. В частности, как заметить, менял ли кто-тоданные по дороге.Аутентификация: как доказать, что данные поступают изправильного источника. Две части:

entity authentication: как доказать, что я — это я;data origin authentication: как доказать, что моёсообщение — действительно от меня.

Non-repudiation (неотречение): как сделать так, чтобычеловек, что-то пообещавший, потом от обещаний неотказывался.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Некриптографические методы

Если «противник» — бездушный канал с ошибками, тоесть некриптографические методы.

Передача данных — коды, обнаруживающие ошибки икоды, исправляющие ошибки.Целостность данных — контрольные суммы. CRC (cyclicredundancy code, циклический избыточный код):

сообщению a0a1 . . . aN−1 сопоставляем многочленP(x) =

∑N−1i=0 aix i ;

значение CRC — остаток от деления P(x) на G (x),которым определяется CRC.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Основные термины

Для традиционной задачи: сообщение (plaintext)кодируется (is encrypted) в код/шифр (ciphertext). Затемкод декодируется (is decrypted) обратно в сообщение(plaintext):

plaintextencryption−−−−−−→ ciphertext

decryption−−−−−−→ plaintext

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Сложные задачи

Декодировать, не зная нужного секрета, должно бытьсложно. О том, что значит «сложно», мы ещё будемговорить.

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

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

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Атаки

Что может делать враг? Против чего мы должныготовиться?

1 Ciphertext only:враг увидел и скопировал некоторое количество шифров,которые он теперь может анализировать;у врага достаточно много таких шифров.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Атаки

Что может делать враг? Против чего мы должныготовиться?

1 Ciphertext only.2 Known plaintext:

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

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Атаки

Что может делать враг? Против чего мы должныготовиться?

1 Ciphertext only.

2 Known plaintext.3 Chosen plaintext:

враг может сам выбрать несколько сообщений изакодировать их при помощи этого алгоритма;например, кодирование — общедоступный сервис.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Криптография в целом

1 Криптография без ключа.1 Хеш-функции.2 Односторонние перестановки.3 Случайные и псевдослучайные последовательности.

2 Криптография с закрытым ключом.1 Блочные шифры.2 Поточные шифры.

3 Криптография с открытым ключом.1 Базовые задачи криптографии с открытым ключом.

1 Разложение на множители и дискретный логарифм в Zn.2 Дискретный логарифм на эллиптических кривых.3 Алгоритмы решения этих задач.

2 Криптографические примитивы.1 Протоколы согласования ключа.2 Криптосистемы.3 Доказательства с нулевым разглашением.4 Разделение секрета.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

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

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

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

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

Передача по незащищённому каналу: Алиса и Бобкодируют сообщения секретным ключом.

Хранение: Алиса кодирует своим секретным ключом.

Аутентификация: как?

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

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

Алиса просит Боба закодировать секретным ключом, аБоб — Алису. Правда, всё не так просто, но об этом позже.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

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

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

Например, Алиса вычисляет CRC, а затем кодирует егосвоим секретным ключом.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

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

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

Вот передача сообщений:

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

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

Хранение: так же, как с закрытым ключом. Алисакодирует своим секретным ключом.

Аутентификация: Алиса передаёт случайное число, Бобего расшифровывает и передаёт обратно.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

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

Электронная подпись: Алиса может подписать сообщениетак, что каждый может проверить подпись, но никто неможет подделать подпись. Полезно:

Можно проверить, что сообщение осталось прежним(проверка целостности).Алиса не может отказаться от того, что это её сообщение(non-repudiation).

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Хеш-функции

Хеш-функция (hash, message digest) — функция h, котораяпреобразует сообщение в хеш постоянной длины, причём:

h(m) легко вычислить;по h(m) трудно найти m, которое ему соответствует;трудно найти такие m1 и m2, что h(m1) = h(m2).

Хеширование паролей.

Проверка целостности.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

О стойкости хеш-функций

Рассмотрим хеш-функцию, производящую хеш длины n.

Сколько нужно операций врагу, чтобы скомпрометироватьхеш-функцию?

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

О стойкости хеш-функций

Рассмотрим хеш-функцию, производящую хеш длины n.

Сколько нужно операций врагу, чтобы скомпрометироватьхеш-функцию?

Чтобы грубой силой найти такие m1 и m2, чтоh(m1) = h(m2), нужно в среднем 2n/2 операций.

Birthday problem: пусть есть n входов и k возможныхвыходов (в birthday problem — 366); тогда есть n(n − 1)/2пар; вероятность совпадения одной пары — 1/k , значит,нужно около k/2 пар, чтобы приблизиться к 1/2;следовательно, n достаточно выбрать порядка

√k .

Поэтому хеш надо делать вдвое длиннее, чемсоответствующий ему по стойкости секретный ключ.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

От примитива к протоколу

Кроме того, хорошие криптографические примитивы невсегда дают надёжные протоколы.

Пример: криптосистема с закрытым ключом.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Беда с этим протоколом

Это не очень хороший протокол.

Пусть Боб — это компьютер, и наш противник Чарлиумеет инициировать несколько сессий.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Беда с этим протоколом

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Дизайн протоколов

Поэтому ещё одна важная задача криптографии — как отнадёжного криптографического примитива перейти кнадёжному протоколу.

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

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Пароли

Например, пароли. Предположим, что мы хотим достичьстойкости в 64 бита, т.е. заставить противника перебирать264 вариантов.

Случайно сгенерированная строка из [A-Za-z0-9] — 64варианта на символ (6 битов), итого нужно 11 символов.

Вы готовы запоминать строку из 11 случайных символов?

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Пароли

Например, пароли. Предположим, что мы хотим достичьстойкости в 64 бита, т.е. заставить противника перебирать264 вариантов.

Случайно сгенерированная строка из [A-Za-z0-9] — 64варианта на символ (6 битов), итого нужно 11 символов.

Случайно сгенерированная произносимая строка — только[a-z], примерно каждый третий символ — гласная.

Стойкость получается около 4 битов на символ, надо 16символов. Тоже многовато.

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Пароли

Например, пароли. Предположим, что мы хотим достичьстойкости в 64 бита, т.е. заставить противника перебирать264 вариантов.

Случайно сгенерированная строка из [A-Za-z0-9] — 64варианта на символ (6 битов), итого нужно 11 символов.

Случайно сгенерированная произносимая строка — только[a-z], примерно каждый третий символ — гласная.

Стойкость получается около 4 битов на символ, надо 16символов. Тоже многовато.

Если же позволять пользователю самому выбиратьпароль, стойкость будет около 2 битов на символ. То естьнадо бы 32 символа...

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

О паролях с xkcd

Сергей Николенко О криптографии

Что такое криптографияЧем мы будем заниматься

МетодыРазные виды примитивов

Thank you!

Спасибо за внимание!

Сергей Николенко О криптографии