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

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

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

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

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

Что такое ключи?

Я имею в виду, ты наверняка использовал ключ раньше!? Мы все запираем двери, когда выходим из дома или машины, и уж точно не оставляем свой почтовый ящик открытым все время, так почему же мы должны обращаться с нашими данными по-другому?

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

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

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

Именно эти проблемы приводят к хорошо известному принципу Керкхоффа, который гласит:

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

Что такое криптографический ключ?

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

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

Это не так просто, верно?

Хорошо, я намеренно оставил это определение расплывчатым, в конце концов, как еще я собираюсь побудить вас прочитать следующий пост!? На данный момент есть много открытых вопросов, связанных с моим определением ключа, и некоторые из них могут возникнуть у вас:

  • Один и тот же ключ используется для шифрования и дешифрования сообщения?
  • Как мы изначально делимся ключами, которые используем для шифрования сообщений в канале, по тому же самому каналу? Это вообще возможно?
  • Используем ли мы одни и те же ключи для шифрования каналов с разными сторонами?

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