Интернет: шифрование и открытые ключи Здравствуйте! Меня зовут Миа Гил-Епнер, я закончила Университет Беркли по специальности "Информатика" и работаю в Министерстве обороны США над обеспечением безопасности данных. Интернет — это открытая и публичная система. Мы посылаем и получаем данные через общие системы связи. Несмотря на то, что мы знаем, что это открытая система, мы передаем большое количество личных данных. Это номера кредитных карт, банковские данные, пароли, эл. почта и т. д. Как же все эти личные данные хранятся в тайне? Любые данные можно хранить в безопасности благодаря процессу "шифрования", кодирования или подмены сообщения для сокрытия оригинального текста. Дешифрование — это процесс декодирования такого сообщения, чтобы его можно было прочитать. Люди делают это веками. Одним из первых известных методов шифрования был шифр Цезаря. Он назван в честь римского императора Юлия Цезаря, который шифровал свои военные команды, чтобы сообщения не перехватили враги и не смогли их прочитать. Шифр Цезаря — это алгоритм, в котором каждая буква исходного сообщения заменяется на букву, стоящую через несколько букв дальше по алфавиту. Если цифра известна лишь отправителю и получателю, она называется ключом. Это позволяет читателю раскрыть секретное сообщение. Например, если оригинальное сообщение — "HELLO", то, по алгоритму шифра Цезаря с ключом 5, зашифрованное слово было бы таким... Чтобы расшифровать сообщение, получатель просто воспользовался ключом, чтобы проделать процесс в обратную сторону. Но с шифром Цезаря есть большая проблема: любой может легко взломать код или расшифровать сообщение, попробовав все возможные ключи. В английском алфавите всего 26 букв, то есть чтобы расшифровать сообщение, нужно попробовать максимум 26 ключей. Попробовать 26 ключей не сложно. Это займет не более пары часов. Поэтому усложним задачу. Вместо переноса букв на одно и то же количество шагов, давайте перемещать их на разное количество шагов. В этом примере десятизначный ключ показывает, на сколько шагов будет изменена каждая последующая буква, чтобы зашифровать более длинные сообщения. Угадать этот ключ очень трудно. У десятизначного шифра может быть 10000000000 решений. Конечно, никто не мог бы это решить — это займет много веков. Но обычном компьютеру сегодня понадобится всего несколько секунд, чтобы попробовать все 10000000000 вариантов. А поскольку сегодня злоумышленники вооружены компьютерами, а не карандашами, то как можно зашифровать сообщение так надежно, чтобы его было очень сложно взломать? "Слишком сложно" означает слишком много вариантов для перебора за разумное время. Сегодня безопасная связь шифруется с помощью 256-битных ключей. Это означает, что компьютер злоумышленника, который перехватывает ваше сообщение, должен попробовать столько вариантов... пока не обнаружит ключ и не откроет сообщения. Даже если бы у вас было 100 000 суперкомпьютеров, и каждый из них пробовал бы миллион миллиардов ключей каждую секунду, то на каждый вариант понадобилось бы триллионы триллионов лет, просто чтобы сломать одно сообщение с 256-битным шифрованием. Конечно, каждый год компьютерные чипы становятся вдвое быстрее и вдвое меньше, и если это темп экспоненциального прогресса продолжится, задачи, невозможные сегодня, будут решаться всего за несколько сотен лет в будущем, и 256 бит станет недостаточно для безопасности. Нам уже пришлось увеличить стандартную длину ключей, чтобы не отставать от скорости компьютеров. Хорошая новость в том, что использование длинного ключа не слишком усложняет шифрование, но при этом экспоненциально увеличивает количество вариантов для взлома шифра. Если отправитель и получатель используют один и тот же ключ для кодирования и декодирования сообщения, это называется "симметричное шифрование". В этом случае, как с шифром Цезаря, секретный ключ должен быть заранее согласован двумя лицами. Это удобно для людей, но Интернет — это открытая и общедоступная среда, поэтому здесь невозможно организовать "тайную встречу" двух компьютеров, на которой они договорятся о секретном ключе. Вместо этого компьютеры используют асимметричные ключи: открытый ключ можно дать кому угодно, а вот частный ключ никому не раскрывается. Открытый ключ используется для шифрования данных, и любой может зашифровать им сообщение, но секрет может расшифровать только компьютер с доступом к частному ключа. Это делается математически, но сейчас мы не будем это обсуждать. Просто представьте, что у вас есть личный почтовый ящик, куда каждый может класть письма, но для этого им нужен ключ. Вы можете сделать несколько копий ключа и передать их своим друзьям или даже просто сделать ключ общедоступным. Ваш друг или даже незнакомец может воспользоваться открытым ключом, чтобы положить письмо в ваш ящик. Но только вы можете открыть ящик своим частным ключом и получить доступ к секретным сообщениям. Вы также можете отправить защищенное сообщение своему другу, воспользовавшись открытым ключом от его ящика. Так мы обмениваемся защищенными сообщениями, не договариваясь о частном ключе. Криптография публичным ключом является основой всех защищенных сообщений в открытом интернете, включая протоколы безопасности, известные как SSL и TLS, которые защищают нас при просмотре веб-страниц. Ваш компьютер использует их, когда вы видите замочек или буквы "https" в адресной строке браузера. Это означает, что ваш компьютер использует шифрование открытым ключом для безопасного обмена данными с сайтом. Все больше людей пользуется интернетом, поэтому через него передается все больше и больше личных данных, и необходимость в безопасности этих данных становится еще важнее. А поскольку компьютеры становятся все быстрее, нам придется разработать новые способы шифрования, которые будут слишком сложны для взлома компьютером. Это моя задача, и она постоянно меняется.