7 сезон · выпуск 13 · 4 августа 2022 · 50 мин
«Ваше подключение не защищено». Разбираемся в шифровании
Слушать · 50:24
Если мы будем передавать наши переписки, пароли и номера банковских карт в исходном виде, их обязательно перехватят злоумышленники, поэтому данные в интернете шифруются. Но и с передачей зашифрованных сообщений есть проблема — нам нужно быть уверенными в том, что получатель тот, за кого себя выдаёт. Для этого используется развесистая инфраструктура с сертификатами и удостоверяющими центрами. В этом эпизоде Евгений Алексеев, начальник отдела криптографических исследований из компании КриптоПро, рассказывает, как работает шифрование, почему каждая страна стремится создать собственный криптографический алгоритм и почему до сих пор нет гарантированного способа защитить свою информацию.
Курсы с интенсивным обучением (буткемпы) от Яндекс Практикума: https://clck.ru/sSRCb
Побольше узнать про криптографию:
Блог компании КриптоПро: https://www.cryptopro.ru/blog
Про закладки в алгоритмах: https://www.cryptopro.ru/en/blog/2015/11/10/koe-chto-o-zakladkakh-ili-kak-anb-sledit-za-polzovatelyami
Про атаки по побочным каналам: https://www.cryptopro.ru/blog/2014/08/25/nemnogo-ob-atakakh-po-pobochnym-kanalam
Книга «Криптография. Официальное руководство по RSA». Авторы С. Бернет и С. Пейн
Книга «Практическая криптография». Авторы Б. Шнейер и Н. Фергюсон
Подписаться на «Запуск++» в Телеграме: https://t.me/+N_AopnXC0dBkMGQy
Подписаться на Либо/Либо+ в Телеграме, куда включены эпизоды «Запуск++»: https://t.me/+LXZx5JRqO4o0MjJi
Над выпуском работали
- Редакторка
- Маша Агличева
- Продюсерка
- Настя Медведева
- Звукорежиссерка
- Нина Мамотина
- Дизайнер обложки
- Петр Сутупов
Транскрипт
Самат Галимов, Евгений Алексеев · расшифровано автоматически, ошибки возможны
-
Всем привет, меня зовут Самат Галимов, и это подкаст «Запуск завтра». Как технический директор я пытаюсь разобраться, как устроены сложные и интересные штуки. Я зову профессионалов, с которым можно поговорить простым человеческим языком.
-
Сегодня
-
мы будем разбираться в криптографии. сложных и интересных областей IT и математики. Дело в том, что в программировании часто есть правильный ответ. Если ты сделаешь правильную программу, то она будет работать. В криптографии, то есть умение зашифровывать секреты, такого не бывает, потому что в ней всегда есть конкурент. Другая сторона, которая пытается взломать твои сообщения. При этом цена этой игры, этого соревнования часто очень высокая.
-
Вы, наверное, помните, как Алан Тьюринг взломал
-
шифровальную машину Enigma немецкую и если не предопределил исход Второй мировой, то сильно ее сократил. Мы применяем алгоритмы шифрования каждый день, даже если этого сами не замечаем. Вот какие алгоритмы существуют и можно ли придумать такой способ шифрования, который невозможно взломать? Мы сегодня разберемся. Это подкаст «Студия Либо-Либо». Мы его сделали вместе с сервисом онлайн-образования «Яндекс Практикум». У «Практикума» есть курсы по разработке, по анализу данных и по английскому языку. Обычно курсы «Практикума» сделаны так, что можно совмещать их с основной работой. Например, редакторка нашего подкаста Юлия Яковлева стала фронтендеркой за год, при этом продолжая работу над подкастом. А сейчас Яндекс.Практикум запускает буткемпы. Это гораздо более интенсивные курсы. Они в два раза короче, но требуют прямо полного погружения. Сейчас в таком режиме можно пройти четыре курса. По тестированию, по фронтенду, по аналитике и по Data Science. Если вы хотите освоить цифровую профессию быстро и качественно, переходите на сайт Яндекс.Практикум и учитесь.
-
Меня зовут Евгений Алексеев, я начальник отдела криптографических исследований компании КриптоПро, занимаюсь криптоанализом.
-
Хочу начать свой очень-очень базовых вопросов. Что вообще шифруется в интернете?
-
В интернете на сегодняшний день, по сути, шифруется вообще все. То есть весь трафик, который передается между браузерами и сайтами, у нас идет в защищенном виде.
-
Окей, хорошее начало. Скажи, а как понять, что наша коммуникация, она зашифрована вообще? Можно ли это как-то определить?
-
В современных браузерах есть такая вверху в адресной строке специальный значок, замочек. Вот если этот замочек есть, то, значит, все зашифровано. Если вы смотрите на адрес, электронный URL, то если в начале написано HTTP S, вот эта буковка S означает, что трафик, который идет, передается между браузером и ресурсом, вообще говоря, по протоколу HTTP, он еще дополнительно защищается, вот, собственно, шифруется и по протоколу TLS.
-
Вот в браузере можно увидеть, что у тебя замочек стоит, а в других программах можно как-то понять, шифруется или нет?
-
В некоторых программах, конечно, можно попробовать влезть в какие-нибудь опции, и там, возможно, будет какая-нибудь галочка, что шифрование, отключить шифрование. Но кажется, что сейчас, по сути, я вот не помню, не могу привести примеры таких программ, потому что сейчас это как бы... Включение защиты— это уже must-have. Очень модная тема, типа персональные данные, личная приватность там и так далее, и так далее.
-
Жень, вот мы сейчас с тобой говорим по Zoom. Наш разговор зашифрован?
-
Да, зашифрован.
-
Окей. А вот я переписываюсь, например, в WhatsApp или в Telegram. Это зашифровано?
-
Да, это тоже все зашифровано, конечно, да. Telegram изначально позиционировался как защищенный мессенджер, правда, в ранних версиях. Ну, то есть протокол защиты данных, который передается в Телеграме, он менялся. Как известно, они там устраивали даже некие bug hunting / bug bounty. Предлагали специалистам по информационной безопасности найти какие-то дыры, ну и по результатам вот этих конкурсов протокол претерпевал изменения и улучшался.
-
Хорошо. Общая идея про то, что типа шифруется вообще все подряд, понятна. Можешь привести какой-то самый простой алгоритм шифрования? Может быть, даже самый первый исторический. И потом мы на этой базе дальше объясним какой-то совсем сложный алгоритм.
-
Это всякие шифры Цезаря, шифры перестановки. Самый простой пример. Берем алфавит А, Б, В, Г, Д. И переставляем буквы. Например, если говорить про шифр Цезаря, эта перестановка идёт с помощью сдвига. То есть если на один сдвинуть, то А будет переводиться в Б. Б в В, В в Г и так далее.
-
То есть слово привет превратится в Р, и превратится в К, РК и так далее.
-
Да-да-да, вот это вот всё. Ну, вот это вот шифр Цезаря.
-
Насколько такое шифрование защищенное?
-
Шифр Цезаря, ну, не защищенный вообще. Ну, это исключительно исторический шифр, игрушечный.
-
А как его взломать-то?
-
Там статистический анализ. Вот, например, у естественных языков есть устойчивые статистические характеристики. Если мы говорим о том, что передается, ну, гипотетически, да, если защищать с помощью шифра Цезаря не одно слово, а длинную переписку, то в ней будут Встречаться буквы, которые чаще всего употребляются, они в зашифрованном виде тоже будут появляться чаще всего. Соответственно, как только одну вот эту самую частую букву вы находите, вы сразу понимаете, куда переместилась буква, например, E английского алфавита. И тут же получаете вот величину вот этого сдвига. Дальше все, вы все вскрыли.
-
Понятно. Мне кажется, конкретно шифр Цезаря вроде еще проще, ты можешь просто перебрать все варианты с двигой, всего там типа 26 в английском языке.
-
Да, либо так, да.
-
Я вспоминаю еще такую штуку, называется one-time pad. Что это такое?
-
Одноразовый блокнот так называемый. И вот здесь, при том, что этот шифр очень простой, тривиальный, он является в криптографии, даже в современной криптографии, занимает отдельное место, потому что он, так называемый, совершенный шифр. Так вот, что это за шифр? Тоже очень просто объясняется. Значит, берем, ну, если на русский алфавит, вот мы по-русски пишем, И ключом, вот если в шифре Цезаря мы переводили фиксированную букву, то здесь мы делаем ключ, вот этот вот секрет, размером с предполагаемое сообщение, которое мы хотим передавать. И ключом является какое-то число натуральное. И мы как бы вот пишем сообщение, и под него мысленно подставляем вот этот ключ вниз, и каждую букву передвигаем настолько, какое число под ним стоит, под этой буквой стоит. Привет, да? То есть если под буквой P будет стоять двойка, то мы увеличим P на 2.
-
То есть у каждой буквы свое значение с двига. Даже не у каждой буквы, а у каждой буквы в тексте.
-
Да.
-
Типа у первой A будет одно значение, у второй A третий, там, другое и так далее.
-
Да-да-да. Если там три длина шеи Е животные, то все эти три буквы Е, стоящие в ряд, они перейдут в разные буквы.
-
Так. И получается, тут у нас секретом, ключом является длинная последовательность чисел.
-
Да. То есть если сделать ключ для этого шифра абсолютно случайно, сделать его настолько же длинным, насколько то сообщение, которое вы хотите передавать, и зашифровывать с помощью этого ключа, то по результату зашифрования злоумышленник не сможет узнать никакой информации о передаваемом сообщении.
-
Я слышал, что именно этим же способом шифруется канал связи между Кремлем и Белым домом. Понятно почему, потому что как бы ты не хотел это взломать, взломать будет невозможно.
-
Ну да. Даже противник, нарушитель, который обладает бесконечно мощным компьютером, не сможет его взломать. Просто потому что у него, по сути, нет критерия для того, чтобы понять, правильно он расшифровал или неправильно.
-
Он может расшифровать бесконечным количеством способов, хоть войну и мир расшифровать, только правда это люди обменивались в войну и мир или нет.
-
Да, вот это прям то же самое, что я загадал число от единицы до тысячи, вот угадайте, какое оно. И вот можно гадать, но никогда не будешь уверен в том, что действительно отгадал то.
-
Хорошо. Есть шифр Цезаря. У него супермаленький ключ, но его очень просто взломать. Есть одноразовые блокноты, в которых ключ такой же длины, как и в твоем сообщении, то есть очень большой, если мы долго разговариваем, но взломать его невозможно. А есть что-то среднее, когда ключ, типа, уже не такой большой, типа, обмениваться им попроще, но и при этом взломать. Все равно не так просто, как шифр Цезаря.
-
Собственно, мы приходим к тому, что с одной стороны мы имеем абсолютный стойкий шифр, но он практически неприменим. Если вам надо передать 8 гигабайтов информации, то это значит, что вам заранее надо защищенным образом передать 8 гигабайтов ключа. Но если вы можете защищенным образом передать 8 гигабайтов ключа, то почему бы саму информацию таким же защищенным образом не передать? Логично. И поэтому мы платим тем, что отказываемся от такой высокой стойкости, но зато мы попадаем в область практической применимости. И мы приходим к тем шифрам, у которых ключ— это 32 байта, 256 битов.
-
То есть это всего там условно 32 буквы, но при этом с помощью этого ключа, который есть у тебя и есть у твоего собеседника, ты можешь зашифровать так, чтобы никто расшифровать не смог. Ну, внешние люди, типа, им было очень сложно.
-
Да. Да-да-да.
-
А что это за способы-то? Их можно объяснить на пальцах?
-
Основным механизмом современной криптографии является, для шифрования является блочный шифр, так называемый, который уже, ну вот, если мы про шифр Цезаря говорили, как про табличку, которая переводит буковку в буковку, а букв всего не больше 30-35, то блочные шифры— это такие же, по сути, перестановки, такие же вот таблицы, но только букв там два в 128 степени.
-
Я запутался. У нас же в алфавите мало букв.
-
Да, в алфавите мало букв, но эти, так называемые, блочные шифры, они работают не на каждой конкретной букве, они преобразуют целый набор букв сразу, за раз. Ну, то есть, например, 16.
-
То есть, там для слова «привет» сразу, типа, уже будет какой-то... Да. Или там для двух букв ПР, типа ПР превразуется там в ОВ.
-
Ну там типа 16 букв объединяются, 16 байтов объединяются вот в блок, да, и он преобразуется по такой вот огромной, гигантской, совершенно необозримой таблице.
-
Офигеть. Но при этом эта таблица, видимо, не хранится вся целиком в памяти, а каким-то образом генерируется, типа на лету, да?
-
Да. Собственно, блочный шифр конструируется, он синтезируется, создается не как таблица, а как алгоритм. Алгоритм преобразования конкретного блока в зависимости от конкретного ключа в какой-то другой блок. То есть мы задаем алгоритм, который позволяет, не зная всю таблицу, по конкретной ячейке вычислить то, что стоит под ней.
-
Вау. Для того, чтобы шифровать всеми этими шифрами, нужно иметь ключ секретный, который есть у тебя и у меня.
-
Да.
-
И шифрование симметричное, потому что, зная этот ключ, можно и зашифровать, и расшифровать сообщение.
-
Да, абсолютно верно, да.
-
Вот мы сейчас с тобой в Zoom разговариваем, мы с тобой ни о каком ключе точно не договаривались.
-
Не договаривались, да.
-
Каким образом тогда зашифрован наш разговор?
-
Для того, чтобы это рассказать, нужно рассказать о том, что такое криптография с открытым ключом. Это относительно недавняя область, ну так, в 70-х годах прошлого века она зародилась. Началась она с работы Диффи и Хеллмана, которая называлась «Новые направления в криптографии». Если в классической криптографии, которая шла от Цезаря до 70-х годов, там нужен был общий одинаковый секрет, то здесь Вот этот ключ, он разделился на два ключа.
-
На две части, окей.
-
Причем эти части стали обладать принципиально разными свойствами. Одна часть называется открытый ключ, а вторая стала называться закрытый ключ. Открытый ключ – это то, что можно не держать в секрете.
-
То есть я всем говорю, у меня вот такой открытый ключ. Я тебе говорю.
-
Да-да-да.
-
Хорошо.
-
А вот закрытый ключ – это то, что нужно обязательно держать в секрете. Если раньше мы в классической криптографии одним и тем же ключом и шифруем, и расшифровываем, то здесь мы с помощью открытого ключа шифруем, а с помощью закрытого расшифровываем.
-
Вау, прикольно. А на основе чего это строится? Потому что сейчас вот ты, наверное, сказал, что прошлые алгоритмы строились на основе того, что мы просто переставляем буквы местами. А здесь на основе чего это работает?
-
В отличие от симметричной криптографии, где используются более-менее простые, например, некоторые блочные шифры можно реализовать просто побитового сложения и обращения к таблице. Вот и все. То есть операции, которые поймет любой ребенок. то асимметричная криптография или криптография с открытым ключом, она почти вся основана на очень жесткой, очень сложной алгебре.
-
Так, по-моему, основа в том, что любое число можно представить как перемножение двух простых чисел. или какого-то количества. Короче, можно разложить на простые множители любое число. И мы берем какое-то количество очень больших простых чисел, умножаем их друг на друга, получаем очень большое число, которое является перемножением. И вот большое число, которое получилось в результате перемножения— это наш открытый ключ, а самые простые числа— это закрытый ключ. И теоретически, конечно, можно угадать, перебрать все возможные варианты и найти мой закрытый ключ из открытого ключа. Но в реальности это слишком сложно. Никто этого не делает. И вот дальше какая-то суперхитрая математика, чтобы с помощью этого можно было что-то шифровать. Но идея как раз в том, что эта задача не решается обычно. Люди не умеют быстро раскладывать числа на простые множители.
-
Частично это то. Но это одна из огромного, на самом деле, количества сложных задач, алгебраических, комбинаторных, на которых основаны сейчас протоколы, механизмы, алгоритмы, которые относятся к криптографии с открытым ключом. То есть то, что ты сейчас рассказал, это основа одной из первых криптосистем с открытым ключом, которая называется RSA по первым буквам ее авторов. Там помимо вот этих вот двух простых чисел, которые перемножались, нужны были еще два числа, которые связаны очень хитрым соотношением, для объяснения которого необходимо будет сказать такие слова, как функцию Мёбиуса, сравнение по модулю и так далее.
-
Нет, сейчас мы этого делать не будем. Так, подожди. Получается, что есть какие-то сложные математические задачи, на которые, типа, если ты знаешь ответ, то ты его знаешь, а если не знаешь, то ты его хрен найдешь. И на основе этого придумано много разных алгоритмов шифрования?
-
Да. Если так упрощать, то да.
-
Окей. Применяется ли это в реальности, на практике?
-
Да.
-
А для чего?
-
Вот ровно на этом, на всем на этом основан весь интернет, весь электронная коммерция, весь банкинг, вообще все, весь электронный документооборот. Основан везде, каждый раз. Вот при установлении нашего с тобой соединения по Зуму применялась вот эта вот штука. И намного более сложная.
-
Слушай, ты сказал, что при установлении соединения.
-
Да.
-
Это значит, что типа с помощью этого алгоритма мы просто обмениваемся вот этим ключом шифрования и дальше шифруемся, как обычно?
-
Ну, по сути, да.
-
А почему нельзя все как бы шифровать вот этим суперкрутым алгоритмом, который... Потому что,
-
я уже говорил, что для симметричной классической криптографии используются простые преобразования. И они не просто простые по объяснению, но они еще и очень простые для реализации на компьютере. Из-за этого симметричная криптография работает в разы быстрее, чем асимметричная. И поэтому для того, чтобы шифровать больший объем данных, лучше использовать симметричную криптографию. старую добрую, а асимметричная криптография, она применяется для того, чтобы обменяться вот этим вот ключом.
-
Офигенно.
-
То есть мы используем суперкрутой алгоритм для того, чтобы обменяться ключом, а дальше зашифруемся простым алгоритмом. То есть простым не в смысле его просто реализовать, а в смысле простым, что его компьютеру легко считать.
-
Да, компьютер быстро его считает, да.
-
Очень круто. Ещё такой момент, когда я нажимаю на значочек вот этого шифрования в браузере, он мне показывает такое окошко, в котором написано, типа, это соединение зашифровано, и там есть кнопка «показать сертификат», и тут какие-то сертификаты возникают. Что это такое?
-
Вот смотри, всё идёт от того, что нам необходимо, да, обменяться ключом с тобой, ну, то есть выработать общий вот этот симметричный классический ключ, И ты мне говоришь свой открытый ключ. Но если мы вспоминаем о реалиях современного интернета, где вообще-то канал не просто может быть прослушан, да, злоумышленником, но злоумышленник может в этом канале что-то подменять. То есть он может быть прокси-сервером, через который все это дело проходит.
-
То, что называется man in the middle, человек посередине, когда ты делаешь вид, что ты кто-то, а на самом деле просто передаешь ему сообщение и становишься таким посредником.
-
Да-да-да. и ты мне говоришь свой открытый ключ, ну, предположим, без видео, а вот направляешь просто сообщение, этот злоумышленник, который стоит посередине, он принимает этот твой открытый ключ, но мне пересылает свой открытый ключ.
-
Ты шифруешь сообщение не для получателя, я шифрую сообщение не для тебя, не для Жени, а для посредника этого, которого я вообще не знаю и видеть не хочу. А он уже расшифровывает.
-
Он расшифрует, читает и перешифровывает на твоём открытом ключе. Так. И таким образом он может весь трафик прослушивать.
-
То есть система с открытым ключом меня здесь не спасла.
-
Да. И вроде бы это как бы кажется, что вау, как круто, и все, мы здесь все решили, но действительно необходимо, возникает проблема, и корень проблемы здесь в том, что когда ты мне присылаешь свой открытый ключ, я не могу быть уверенным в том, что это твой открытый ключ.
-
А как стать уверенным?
-
По-хорошему можно доверенным образом встретиться и обменяться своими открытыми ключами. Но тогда мы, в принципе, Проблему-то не решаем, потому что... С таким же успехом
-
можно обменяться секретом, как бы.
-
Да, ровно так. И вот здесь вот эту проблему того, что куда-то придется идти ножками и получать что-то там делать доверенным образом... Открытый ключ. Да. Ее полностью решить на самом деле все равно не удастся. Но ее можно минимизировать, вот эту проблему. И вот в этот момент возникает такое понятие, как удостоверяющий центр, который вот эти сертификаты и выдает. И перед тем, как об этом говорить, нужно сказать, что такое электронная подпись.
-
Давай.
-
Вот электронная подпись, если шифрование нужно для того, чтобы обеспечить так называемую конфиденциальность, да, то есть чтобы никто не узнал.
-
Чтобы никто не мог понять, что ты говоришь.
-
Да-да-да. Вот. То подпись электронная – это аналог собственноручные подписи, но она, поскольку электронная, она ставится на документ какой-то. Это не шифрование вообще, хотя многие почему-то называют электронную подпись шифрованием. Это не шифрование, это другой совершенно механизм, который призван обеспечить целостность, то есть невозможность изменить тот документ, для которого эта подпись была создана.
-
То есть ты говоришь, да, на самом деле я это сказал, и никто не может поменять. Как у нотариусов, они прошивают бумажку. Типа у тебя есть какая-то толстая стопка бумаг, они ее прошивают как раз, чтобы ты не мог подменить бумажку.
-
Да-да-да, вот аналог такой, да. И вот, собственно, с помощью электронной подписи можно, например, подписывать какие-нибудь контракты.
-
Так, подожди, но при чем тут открытый ключ? я все это не могу понять. Вот нам нужно как бы обменяться открытыми ключами.
-
Вот. И теперь мы выделяем, возникает вот этот удостоверяющий центр, это центральное понятие так называемой инфраструктуры открытых ключей, PKI. Это некий центр, которому все доверяют.
-
А, то есть есть какое-то лицо, которому я точно знаю, что это, типа, хороший чувак, ему можно доверять. У нас есть, скорее всего, его подпись, типа, мы можем проверить, что это он подписал что-то.
-
Да, его открытый ключ. И вот в удостоверяющий центр, показываем паспорт. Этот товарищ, поскольку на нем лежит административная ответственность, юридическая, чуть ли не доуголовная, он смотрит, действительно проверяет, что я это я, и дальше мы с ним взаимодействуем. То есть я порождаю на своем ноутбуке, например, подключенном к его специальному ноутбуку, грубо говоря, свой открытый и закрытый ключ, и отдаю ему свой открытый ключ. И говорю, пожалуйста, удостоверь для других людей, что это открытый ключ, который я тебе дал. То есть это мой открытый ключ.
-
А, то есть этот посредник, удостоверяющий центр, он просто подписывает твой открытый ключ, своей подписью, и таким образом все могут узнать, что это на самом деле твой ключ.
-
Да, но не только мой открытый ключ, это очень важно, но и в сертификате... сертификат, на самом деле, вот открытого ключа, это просто файл. В нем написано, ну, если, опять же, немного упрощать, моя фамилия, ну, то есть те данные, которые позволяют меня идентифицировать, то есть сертификат, он призван связать меня, ну, как личность, да, как человека, и этот вот самый открытый ключ.
-
Окей. Скажи, пожалуйста, таких удостоверяющих центров он типа один, только доверенный чувак, или их много?
-
Их может быть много. То есть, ну, например, если мы разворачиваем, хотим предоставить своим сотрудникам своей большой организации VPN-доступ к своей сети. то мы разворачиваем, по сути, создаем у себя этот удостоверяющий центр, такой мини-удостоверяющий центр, и тем, кому надо выдать доступ, мы выдаем вот эти сертификаты. И дальше к сети подсоединяются, к серверу подсоединяются только те, у кого есть вот этот сертификат от нашего сервера.
-
важную штуку не обсудили, а ведь как? Ты сказал, я иду ножками в удостоверяющий центр и мне его подписывают, да? Но для того, чтобы я мог проверить, что удостоверяющий центр реально подписал, мне нужен открытый ключ удостоверяющего центра, но я точно никуда не ходил, мы с тобой созвонились, как бы просто так. Откуда все это начинается?
-
Ну, начинается это с того, что операционной системе, которая стоит у нас на ноутбуках, там вшит удостоверяющего центра, ну, грубо говоря, производителя этой операционки. И дальше на этом ключе, вот ты спрашивал, может ли быть несколько удовлетворяющих центров. Да, потому что приходится много разных задач решать, и тут появляется не только этот список удовлетворяющих центров растет, скажем горизонтально, но и вертикально тоже. Появляется так называемая цепочка сертификатов.
-
То есть цепочка доверенности?
-
Да-да-да.
-
Откуда она начинается? Где, как бы, корень?
-
Это, опять же, зависит от системы. Например, у нас в какой-то стране может быть головной удостоверяющий центр. У него может быть, поскольку нельзя через него все пропускать, то создаются там региональные, например, какие-нибудь удостоверяющие центры, сертификат для которых выпускает вот этот вот головной удостоверяющий центр. Подписывает. Да-да-да. Ну, создает сертификат или выпускает сертификат. Это вот соединение как бы данных, которые позволяют идентифицировать объект, обладающий ключевой парой так называемой, и его открытый ключ. Вот подписанный, собственно, тем, кем нужно.
-
У меня на макбуке, я видел, есть типа ключница, и там есть такая штука, называется Root Certificates, корневые сертификаты. И там их штук, не знаю, 30 или 40, может, даже 100. И там разные компании, типа Amazon, Apple, Bypass, Certum, DigiCert, Entrust, конечно, много компаний, VeriSign. И это, видимо, сертификаты, которые загружены на мой компьютер, и мой компьютер им доверяет. При этом, по-моему, не они подписывают сертификаты, с которыми я захожу в интернет, да? В смысле, сертификаты сайтов, на которые я захожу.
-
Ну там выстраивается некая цепочка доверия от вот этих рутовых. Но самое главное, что для того, чтобы эту всю цепочку проверить, можно доверять только руту.
-
Достаточно доверять только руту.
-
Да, потому что дальше проверяется вот эта цепочка, то есть самый нижний сертификат, подпись под ним проверяется на открытом ключе, который сверху. того, который сверху проверяется на еще более верхнем сертификате, на открытом ключе верхнем сертификате, и так далее, и так далее. И вот мы доходим до корня, а корень, он у нас уже вшит изначально. И как бы мы здесь опираемся на то, что root не выдал бы сертификат какому-то плохому подчиненному UC, а тот не выдал бы сертификат своему подчиненному, там, плохому, и так далее. И вот так вот доверие от root вниз распространяется.
-
То есть каждый раз, когда я открываю какой-нибудь сайт, мой компьютер запрашивает открытый ключ сайта, на который я хочу зайти. Тот мне его присылает вместе с подписью удостоверяющего центра.
-
С цепочкой, да, сертификата.
-
А, со всей цепочкой. И там есть не только подпись этого удостоверяющего центра, который подписал ему его открытый ключ, но эта подпись подтверждается подписью какого-то другого удостоверяющего центра. И так, пока не найдется какая-то подпись, которая хранится у меня на компьютере, я таким образом могу понять, что да, этим можно доверять.
-
Да.
-
И вот вся эта цепочка происходит за эти сотни миллисекунд, пока я захожу на сайт.
-
Да, пока устанавливаются соединения, да.
-
Если какой-то из удостоверяющих центров вдруг выдаст плохой сертификат, ну типа плохо проверил паспортные данные, что дальше?
-
Такое может быть. Недавно был случай, когда какой-то, если не ошибаюсь, турецкий удостоверяющий центр был как-то каким-то образом скомпрометирован, то есть то ли взломан, то ли он как-то не очень хорошо работал. Ну, собственно, это приводило к каким-то уязвимостям, то есть к каким-то проблемам, то есть где-то удавалось перехватить данные пользователей. Ну, это, правда, не подтверждено было, но вполне возможно, что были проведены какие-то атаки на ресурсы, которые вот так или иначе были завязаны на вот этот вот удостоверяющий центр. Довольно страшно.
-
Я пытаюсь зайти на сайт Google.com, он перехватывает мой пароль, я ему ввожу пароль, а на самом деле, получается, злоумышление. Жутко вообще звучит. Ему за это что-то было. Вообще можно ли в такой ситуации как-то зайти?
-
Да, конечно. Там, во-первых, принимались меры. Я уж точно не знаю насчет вот этого турецкого удостоверяющего центра, что с ним потом стало, но я не думаю, что ему было хорошо. То есть это очень сильные репутационные потери были. Вот, я не знаю, даже работает он до сих пор или нет.
-
А эти фейковые сертификаты, они теперь вечно будут в интернете крутиться?
-
Да, то есть вот эта вот вся тема с сертификатами, удостоверяющими центрами и прочим, она не зря называется инфраструктурой открытых ключей. То есть это не просто один алгоритм, там наворочено, на самом деле, огромное количество протоколов. и механизмов для того, чтобы максимально оперативно реагировать вот на такие вот инциденты, связанные с нарушением безопасности. В данном случае, скорее всего, эта проблема решалась бы с помощью так называемых CRL или списков отозванных сертификатов. То есть как только появляются первые признаки, там, какое-то подозрение на то, что вот здесь появились проблемы, вот здесь вот цепочки то, более высокий удостоверяющий центр добавляет вот этот ключ и вот этот сертификат в так называемый список отозванных сертификатов, который либо распространяется по узлам, которые в этом заинтересованы, то есть узел может запросить этот список, либо существуют еще специальные разработанные протоколы, так называемые OCSP-протоколы, Online Certificate Status Protocol. которые позволяют онлайн, вот прям вот в режиме реального времени, запросить статус этого сертификата узнать. То есть для того, чтобы максимально оперативно отреагировать на то, что вот что-то случилось. То есть если удалось узнать, появилось понимание того, что появились какие-то проблемы с этим сертификатом, и, возможно, там закрытый ключ стал известен противнику, нарушителю, то на этот инцидент можно отреагировать гипотетически в течение буквально нескольких часов.
-
А что происходит с сайтами, у которых отозвали сертификаты? Если пытаешься зайти на этот сайт, то что произойдет с таким отозванным сертификатом?
-
Вам браузер выдаст предупреждение о том, что данный сертификат был либо отозван, либо он в данном случае недействительный.
-
Ага, то есть будет это красное окно, типа, у сайта плохой сертификат.
-
Да, и там надо будет очень сильно потрудиться для того, чтобы, ну, если прям вот очень есть сильное желание все-таки зайти почему-то на этот сайт, то нужно будет сильно потрудиться для того, чтобы потыкать много кнопок, чтобы тебя все-таки пустили.
-
Офигеть, то есть мой компьютер не только вот за эти миллисекунды, пока он подключается к сайту, он не только проверяет всю цепочку подписи, но еще и проверяет, не был ли этот сертификат отозван, типа, каким-то способом.
-
Да. Не знаю насчет всех браузеров, но вот я читал, что в Firefox, по-моему, или в Chrome с какой-то версией этот протокол поддерживается по дефолту.
-
Вот мы с тобой обсуждали, что есть корневые сертификаты, которые хранятся на компьютере, ну или в браузере, прям вшиты в него, да? И с помощью них начинается вот эта цепочка доверенности. А сколько таких корневых сертификатов? Их типа, не знаю, один, десять, бесконечно?
-
Их, наверное, десятки примерно, но вот можно, на самом деле, в Винде, например, есть такая команда CertMgr, по которой можно открыть специальную службу, связанную с сертификатами, и вот прям там посмотреть.
-
А сколько у тебя сейчас их?
-
Их тут штук 40.
-
Кому они принадлежат? Кто ими управляет? Это, мне кажется, супербольшое доверие. Наверное, непросто стать таким чуваком.
-
Ну, от разных компаний. Тут довольно много сертификатов, связанных с Майкрософтом. Есть вот у меня от Минкомсвязи.
-
Есть ли в корневых сертификатах, вот таких, которые обычно с компьютером поставляются, сертификаты от российских компаний?
-
Конкретно на сегодняшний день не знаю, не могу сказать, что есть ли обязательно, но точно было желание... Знаете, вот были вот эти новости, что обязательно производители, например, смартфонов предустанавливают российский софт. Соответственно, с предустановкой российского софта будут предустанавливаться и корневые сертификаты.
-
Ну, получается, что сейчас, на текущий день, Все российские сертификаты, все сайты российские, которые хотят получить сертификат, они в том или ином виде зависят от западных центров сертификации, ну или там иностранных центров сертификации, удостоверяющих центров.
-
Да, скажем так. Сейчас их, конечно, мало. Есть российские сайты, которые позволяют устанавливать соединение с помощью сертификатов ГОСТовых, так называемых, основанных на российских криптографических алгоритмах.
-
Офига себе. Подожди, то есть можно не только сертификаты свои сделать, но еще и алгоритм работы сертификатов?
-
Не работы сертификатов, а алгоритмы криптографические, которые в основе этого лежат.
-
А, вот этих открытых ключей и вот этого всего?
-
Да-да-да, то есть алгоритмы подписи, их же много, то есть есть... белорусские алгоритмы подписи, американские, китайские, в том числе есть и российские. И, например, на сайт Академии криптографии, например, можно зайти по российскому сертификату и установить соединение на российских криптографических алгоритмах.
-
Скажи, пожалуйста, зачем придумывают, вот ты сказал, есть американские, есть белорусские, есть китайские, есть русские. Зачем нужны разные алгоритмы шифрования? Почему не все пользуются? Вот, например, протокол HTTP, он типа у всех один и тот же, всем удобно, все пользуются. Зачем разные алгоритмы шифрования?
-
Да, есть такая книжка «Взломщики кодов». Там был такой тезис, что великая держава должна обладать тремя технологиями. Это ядерные технологии, космические технологии, технологии и криптографически.
-
Вау, сравнение нормальное.
-
Ну да. И здесь на самом деле это действительно крайне важно, потому что если нормально и глобально, прям фундаментально не поддерживать свою национальную школу криптографическую, то очень недолго нужно для того, чтобы это все развалилось, и после этого вся страна сядет на те криптосредства, ту криптографию, которая будет поставляться из-за рубежа теми странами, у которых эта школа есть. И известно очень много примеров, как, например, в 70-е, по-моему, или 60-е годы в разные страны, ну, африканские, слабо развитые американцы поставляли технику и программы, которые содержали американцы, там, европейцы, швейцарцы, технику, которая содержала, так называемые, закладки. Закладкой в криптографии называется уязвимость, намеренно заложенная в алгоритм, который нельзя обнаружить невооруженным глазом. Ну, то есть без какого-то дополнительного анализа, или без глубокого анализа, или без каких-то специальных знаний.
-
То есть ты пользуешься алгоритмом шифрования, думаешь, что все окей, а те люди могут его взломать. И просто подслушать, что ты делаешь.
-
Да.
-
Ну, я понимаю про то, что можно сделать закладку в программу, которую написали, да? Но мы же тут говорим на еще более глубоком уровне об алгоритме, то есть о принципах работы этой программы. Эти-то почему нужны свои собственные?
-
Потому что закладка может быть заложена не только на уровне программного кода, но в саму архитектуру алгоритма.
-
Вау! Расскажи!
-
Есть прям очень яркий кейс, он называется Dual EC DRBG.
-
Так, что это такое?
-
Ну, это такой алгоритм, да. Причем этот алгоритм— это не шифрование, это не электронная подпись, это еще один тип криптографических алгоритмов, так называемый датчик псевдослучайных чисел. Почему этот кейс очень мощный и почему то, что удалось с ним сделать, это на самом деле большая была победа американских спецслужб, грубо говоря. Все это объясняется тем, что датчики псевдослучайных чисел лежат в самой основе любых криптографических программ. То есть для работы криптографии нужно много случайностей. А вот эти датчики, они позволяют ее порождать. И этот датчик был выработан, спроектирован людьми из АНБ.
-
Агентство национальной безопасности США.
-
Да. И что самое интересное, он был протащен даже в ИСО.
-
То есть в международный стандарт.
-
Да.
-
Он был сделан международным стандартом. И в него уже не на уровне программы, на уровне прямо самого математики. была заложена такая особенность, которая при знании некоторого параметра позволяла по маленькому куску случайности восстановить всю случайность, которую вырабатывал этот датчик. А соответственно, восстановить сразу все ключи, которые этот датчик когда-либо вырабатывал.
-
Обалдеть! Жесть какая-то! Причем даже, типа, ты должен знать какой-то секретик, и тогда ты можешь все расшифровать.
-
Да. И вот про то, что такая операция именно была целенаправленно сделана, Это, как я помню, Сноуден рассказывал. После этого ИСО этот датчик спешно убрали, и к многим американским инициативам относятся в штыки. То есть, говорят, если вы нам не расскажете, как вы вот все вот эти параметры прям не объясните, почему вот здесь вот это, почему вот здесь вот это, то мы как бы ваши алгоритмы рассматривать дальше не будем.
-
Так, стало понятнее, зачем нужна своя собственная криптография и свои собственные алгоритмы. Скажи, а сейчас, когда мы открываем сайты, какие алгоритмы обычно используются?
-
Ну, вот если говорить о российских сайтах, то, конечно, в основном все еще в большинстве случаев используются зарубежные. алгоритмы, но при этом сейчас стараются, например, какие-нибудь госуслуги или мобильные приложения, связанные с проведением важных с точки зрения страны, скажем так, действий, там ставить российскую криптографию, российские криптопровайдеры, которые работают именно на российских алгоритмах. Но в массовом интернете сейчас, конечно, более распространены именно зарубежные криптографии. Я еще добавлю, чтобы не было такого, ну, после всего того, что я рассказал, чтобы не было ощущения, что, о боже мой, как же так, мы, наверное, все нас прослушивают и так далее. В основном протоколы, которые работают в интернете, они создаются в такой организации, как IETF. Это некоммерческая организация, которая развивает интернет. Основная ее цель – это развивать интернет.
-
Инженерный совет интернета (IETF).
-
Да-да-да. Вот. И они тоже, особенно после вот этого случая с вот этим датчиком, очень критично к этому относятся и усилили контроль со своей стороны за тем, чтобы проверять все предлагаемые механизмы безопасности на наличие закладок, чтобы дизайнеры, которые делают эти алгоритмы, они предоставляли еще некие доказательства, некие аргументы в пользу того, что действительно там закладок нет и все нормально.
-
Окей. Если какой-то сайт хочет начать пользоваться национальными криптографическими алгоритмами, он, типа, это вот может просто сайт сделать или это еще что-то нужно? Просто я так понимаю, что раз новый алгоритм, то и мне в мою программу в браузер, в интернет-браузер, например, мой компьютер, тоже нужно установить поддержку этого криптографического алгоритма.
-
Да. Ну, во-первых, сейчас не все браузеры просто умеют работать на российских криптографических алгоритмах, и поэтому Сайт может там как угодно любить российскую криптографию, но если браузер не знает, как с ней работать, то никакого контакта не получится. Для того, чтобы у сайта, у ресурса устанавливать соединение на российских криптографических алгоритмах, ему, во-первых, нужно на своей стороне, на сервере установить, ну, или разработать, установить соответствующие ПО, которые так называемые TLS-серверы.
-
Сервер шифрования.
-
которые позволяют вот устанавливать соединение и дальше защищать трафик именно по данным вот набору алгоритмов. Получить, соответственно, сертификат в удостоверяющем центре, вот, а браузеру нужно научиться работать с российской криптографией.
-
Я говорил с одним из руководителей Яндекс.Браузера, и он говорил, что единственный, кажется, браузер такой популярный, который имеет российскую криптографию, это как раз Яндекс.Браузер. А Safari и Chrome этого не умеют.
-
Да.
-
Кайф.
-
Знаешь, мы с тобой обсудили, что типа такое вот весь крутое шифрование, все нафиг шифруется. Почему тогда письма, переписку известных людей регулярно сливают? Как это бьется?
-
Здесь может быть много причин, но одна из таких... которое прям лежит на поверхности, состоит в том, что вот это вот все шифрование, да, надо понимать, что оно закрывает нам канал связи, канал передачи данных. Перехватывая вот этот вот трафик, противник ничего сделать там действительно, скорее всего, не сможет.
-
Перехватывать трафик в смысле, вот я соединился с сервером, и с ним, типа, общаюсь. Если кто-то даже послушает, как мы общаемся, типа, ничего не поймет.
-
Да, он ничего не поймет, да. Ничего не поймет, ничего изменить нам не сможет целенаправленно там и так далее. Но при этом вся вот эта переписка, когда она попадает на компьютер, она расшифровывается, ну, просто для того, чтобы ты мог ее прочитать, да? И дальше она на этом компьютере хранится, вот. А люди склонны там заходить на разные странные сайты, несмотря на предупреждение, там, скачивать какие-то странные программы, устанавливать их у себя, открывать какие-нибудь письма, что из серии... Я там король Нигерии, и мне тут есть миллион долларов, не хочешь ли ты присоединиться к инвестициям? Соответственно, к ним на компьютер могут попадать всякие разные вредоносные программы, вирусы, трояны и так далее. И они уже находятся в других условиях, то есть они уже имеют доступ к информации, которая локально на компьютере хранится. И здесь уже никакой ТЛС не спасет просто потому, что его нет, просто потому, что он для другого.
-
То есть все, что мы сейчас обсуждали про шифрование, про защиту, это защита канала связи от нас до сервера при передаче. А уже на сервере вся эта информация есть в чистом виде. А есть ли такой способ, чтобы сервер тоже ничего не мог подсмотреть? Вот я сейчас общаюсь, например, с тобой. у меня трафик зашифрован до зума, и у тебя трафик зашифрован до зума, но сам зум точно все видит, потому что, как минимум, я включил запись, и он на своих серверах сохраняет запись звонка.
-
Вот если говорить про установление соединений между сервером и человеком, ну, например, электронная почта, Mail.ru, какой-нибудь, то понятное дело, что почту, само содержание писем серверу необходимо у себя хранить так, чтобы он мог ее в расшифрованном виде тебе отдать. Учитывая то, что можно было бы попробовать зашифровать ее на неком ключе, который привязан к твоему устройству, но с учетом того, что... Телефоны мы регулярно теряем. Да, мы либо теряем, либо там заходим с других устройств, то заходя с нового устройства, у нас этого секрета не будет, мы, соответственно, никакой почты, никакого доступа получить не сможем. Есть там способы, например, когда сервер хранит в зашифрованных разделах и не давать, например, программам, не авторизованным для доступа к этим разделам, не просто доступ, не просто на уровне политик безопасности это решать, но и, например, эти разделы диска шифровать. Это здесь возникает вот это полнодисковое шифрование, например, шифрование файловых систем и так далее.
-
Я на самом деле просто вспомнил, что в WhatsApp, например, есть функция, там написано «все ваши переписки зашифрованы end-to-end». Что это такое?
-
Вот я не зря начал с того, что сначала мы поговорили о случае, когда клиент, то есть человек, соединяется именно только с сервером. Но когда дело касается соединения человека с человеком через сервер, то сервер, по сути, вот это вот end-to-end шифрование означает, сервер выступает в роли всего лишь посредника, и он как бы вот тот самый человек посередине, через которого мы как бы с тобой данные друг друга передаем, ну, если совсем прощать вот эти вот открытые ключи, сертификаты наши мы между собой передали, сервер, да, он нес в руках твой сертификат, грубо говоря, от тебя до меня, да, он перенес. Но потом мы с помощью этих сертификатов зашифровали там друг для друга вот эти вот ключи секретные, и дальше мы уже, да, мы через сервер этот передаем, но мы передаем это в зашифрованном виде. То есть сервер выступает как часть канала связи.
-
То есть мои сообщения в WhatsApp... Цукерберг прочитать не может.
-
Да.
-
Потому что я шифрую все свои сообщения или, короче, использую для шифрования открытый ключ собеседника, а не открытый ключ сервера.
-
Да, если вот так. Окей.
-
Насколько оно вообще популярно? Насколько часто используется интернет-шифрование? И почему его не используют вообще везде?
-
Ну, во-первых, сейчас это довольно модная тема, поэтому сейчас вроде бы много где это все используется, но иногда, не знаю, там, При создании, возможно, каких-то корпоративных систем или при создании, например, систем в каких-нибудь государствах с особо таким трепетным отношением, скажем так, к приватности, там могут просто требовать от компаний Такое не реализовывать. Ну и в части применения средств шифрования внутри страны, да, тоже там могут требовать внедрения каких-нибудь механизмов, которые позволяют при запросе компетентных органов там какие-то такие вот вещи предоставлять.
-
Я, например, работал в сервисе анонимных знакомств, ну типа секс-знакомств, и там, очевидно, хочется сделать мессенджер, в котором типа end-to-end шифрование. И я столкнулся с ужасной проблемой, потому что, с одной стороны, да, ты хочешь делать end-to-end шифрование, с другой стороны, нам нужно бороться со спамом. И если сообщения между пользователями будут зашифрованы так, что сервер их не видит, то
-
как я буду бороться со спамом?
-
Дальше, конечно, можно придумать довольно прикольные алгоритмы, которые решают эту проблему, и можно бороться со спамом, даже если у тебя end-to-end шифрование. Но тем не менее, я просто помню, что чем больше ты закрываешь от сервера переписку пользователей, вообще приватность, тем сложнее тебе становится защищать пользователя от каких-то опасных штук. Нужен какой-то баланс.
-
Да, при обеспечении безопасности всегда так. Просто шифрование от клиента до сервера – это просто как бы одна область задач, да, возникающих, ну, например, доступ к каким-то там ресурсам. Вот. И здесь это нормально то, что сервер, ну, естественно, сервер является стороной взаимодействия, поэтому, конечно, ему нужно как бы видеть, какие команды к нему приходят, какие запросы к нему. А end-to-end – это просто другой некий пласт, другая область задач. Вот мессенджеры – это классический точка применения вот этого end-to-end шифрования.
-
Мы с тобой обсудили, что все наши браузеры, все программы, они уже все шифруют. КриптоПро? Можешь рассказать какие-то примеры, привести продуктов?
-
В основном, наша компания производит программы, которые покупают организации, к которым предъявляются высокие требования по безопасности и которым нужен софт, не просто какой-то там софт, а софт с наличием сертификата ФСБ, сертификата соответствия определенным требованиям по безопасности. Есть такой приказ ПКЗ-2005, в котором подробно рассмотрены, разложены по полочкам, что это значит, как вот этот процесс сертификации происходит и так далее, когда он нужен, когда он не нужен, кто что делает и прочее. В основном главным, первым, по сути, прям вот на входе требованием здесь является полностью работа только на российских криптографических алгоритмах. Ровно потому что, ну, так, если немного утрировать, весь этот софт будет работать, ну, например, в казначействе → в Казначействе. А в казначействе → в Казначействе, как бы, это очень важный инфраструктурный для страны объект, и там, естественно, нельзя применять зарубежную криптографию, ибо бог его знает, что там внутри зашито. Соответственно, здесь нужно туда поставлять и там развертывать системы, основанные именно на
-
И мне кажется, мы сделали очень хороший такой обзор, типа, что это такое. Но при этом осталось огромное количество вещей, которые на слуху. Что почитать, что посмотреть, может быть, и что послушать на тему криптографии, если заинтересовался и хочешь узнать подробнее.
-
По поводу почитать, есть блог, собственно, нашей компании, компании CryptoPro, и там есть несколько довольно забавных статей, которые касались тех тем, о которых мы сегодня говорили. Это, во-первых, закладки в криптографических алгоритмах. Там научно-популярная статья как раз рассказывает о том, что такое закладки, как их там. Есть такая тема про атаки по побочным каналам. Это когда с сильным микрофоном подходишь к компьютеру и узнаешь ключ шифрования, который в нем, по звуку вентилятора, работы вентилятора процессора. Тоже забавная тема. Там вот у нас есть статья. Ну, в общем, вот в блоге можно посмотреть популярные статьи. Есть еще, если хочется, вот, криптография прям совсем на пальцах. Ну, иногда вот есть такие книги, где на пальцах объясняется, но... Теряется смысл. Неправильно объясняется. Да, вот теряет смысл. То есть настолько просто, что уже неправильно. Вот. А вот книга, которая сохраняет вот этот вот баланс правильности и простоты, и позволяет вот про удостоверение центра там почитать, RSA Security — официальное руководство, Бёрнетт и Пейн.
-
Офигеть! Официальное руководство при этом можно типа читать как книжку?
-
Ну да, они выпустили ее как книжку.
-
Обалдеть!
-
Есть еще книжка Брюса Шнайера и с каким-то автором, я забыл. Практическая криптография такая черненькая. Тоже там, например, про PKI очень хорошо написано. И написано, что это такое, и потом озвучиваются, описаны те проблемы, которыми эта технология реально на практике сталкивается.
-
Обязательно ссылку на эти две книжки и на блог мы положим в описании к этому эпизоду. Брюс Шнайер— это идеальный, очень крутой популяризатор криптографии, очень крутой дядька.
-
Согласен.
-
Кайф.
-
Спасибо тебе огромное, что пришел.
-
Это подкаст «Студии либо-либо», и мы его сделали вместе с сервисом онлайн-образования «Яндекс Практикум». Над подкастом работали редакторка Маша Агличева, продюсерка Настя Медведева, звукорежиссерка Нина Мамотина. За джингл спасибо Алексею Зеленскому.
-
Редактор субтитров А.Синецкая Корректор А.Егорова