Рубрики
Без рубрики

Открытый ключ криптография просто объяснил

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

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

Статья слишком длинная? Слишком занят, чтобы прочитать прямо сейчас? Не волнуйтесь! Зарегистрируйтесь на мой Список электронной почты И вы получите эту статью в модных PDF. Вы также получите дополнительный контент, который не в этом блоге Post ✨

Симметричная криптография

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

Только люди с ключом или копией ключа могут разблокировать дверь. Теперь представьте, что вы находитесь в отпуске на Бали. Вы хотите пригласить своего друга, чтобы присматривать за вашей кошкой 😺, пока вы на красивых пляжах 🏖 ️.

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

Давайте возьмем это из аналогии к реальному примеру симметричной криптографии.

Caesars шифр

Julius Caeser использовал шифр для отправки сообщений, которые никто другой не мог прочитать, кроме предполагаемого получателя. В основном потому, что никто не мог прочитать в 100 до н.э., а те, которые могли бы не понять случайную строку букв. Это весь точка криптографии. Создавать способы общения без третьих сторон, слушающих. Этот шифр Caeser’s Chipher Отказ Учитывая алфавит и ключ (ключ – это целое число от 1 до 25), сдвигайте все буквы алфавита по ключу.

С сдвигом 3, как видно на изображении выше, становится D, B становится е и так далее, пока он не обворачивает. Исходное сообщение называется открытый текст И зашифрованное сообщение называется зашифрованный текст Отказ

Самый простой способ выполнить шифр Цезаря, состоит в том, чтобы превратить все буквы в цифры ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, »

Чтобы зашифровать, e, вы рассчитываете это для каждой буквы (где S – Shift):

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

мод это оператор модуля. Это остаток деления. Мы делаем модуль, потому что в алфавите нет 27-й буквы, вы просто обернулись от «Z» обратно на «А». Мы поговорим больше о модульной на этой статье. Посмотрите на этот небольшой пример ниже:

Потому что 4, разделенные на 3, имеют оставшуюся часть 1.

Чтобы расшифровать шифр Caesar, D, вы рассчитываете это для каждого письма:

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

Как вы говорите своему другу, например, сдвиг 9, например? Вы должны пообщаться с ними как-то. Любые и все формы связи можно слушать в дальнем – будь то написание письма или собирается в скрытый лес в Швейцарии в 30 милях от ближайшего города и рассказывает своему другу.

Последнее не очень возможно, но это гораздо более безопасно, чем рассказывать своему другу в Таймс-сквер, Нью-Йорк 🗽 Какая смена.

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

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

К сожалению, ключевые ключи также разблокирует коробку, а также блокируют его. Это означает, что кто-то может разблокировать коробку и повторно украсть ваш завтрак.

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

Асимметричная криптография

Вы устанавливаете необычайную блокировку на этом поле, один из двух отдельных клавиш. Первый ключ 🔑 может только повернуть по часовой стрелке, от А (заблокирован) до B (разблокирован) до C (заблокирован).

Второй ключ 🗝️ может включать только против по часовой стрелке, от C к B к A . Вы выбираете первый ключ и держите его для себя. Это называется закрытым ключом. Второй ключ называется открытым ключом. Этот ключ выдается всем в офисе. Вы хотите, чтобы у всех были этот ключ.

Когда кто-то возвращает ваш ценный ланнчик, они могут оставить его в этой коробке. Все открытые ключи могут сделать, это заблокировать коробку. Ваш закрытый ключ – единственный, кто может открыть его.

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

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

Криптография открытых ключей была впервые разработана Whitfield-Diffie или Джеймс Эллис (Эллис открыл первым, но он не опубликовал его. Whitfield-Diffie опубликована первым). И Эллис, и Уитфилд-Диффи понравились, что криптография открытого ключа может работать в теории, но никогда не удалось выяснить, как это будет работать на практике.

Производство рабочей системы шифрования открытых ключей связано с Rivest-Shamir-Adleman (RSA) или Клиффордские члены . Как и выше, петупы обнаружены первыми, но он не опубликовал его. Rivest-Shamir-Adleman опубликовал первый.

Давайте посмотрим, как это работает математически.

Математика за криптографией

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

Когда вы применяете открытый ключ (K +) в зашифрованное сообщение, а затем закрытый ключ (K-) в зашифрованное сообщение, которое вы получаете открытое текстовое сообщение. Мы также ищем эти атрибуты:

Это вычислительно легко:

  • Генерировать набор клавиш
  • Шифровать/дешифровать с помощью этих клавиш

Но это также вычислительно неисправен для:

Переключение сообщений в цифры

Мы хотим превратить сообщение в цифры. Ранее мы присваивали номер к каждой букве и так далее. Американский стандартный код для информационного обмена (ASCII) – это таблица всех английских букв и большинства символов вместе с их связанным с ним код ASCII и двоичным выходом.

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

Давайте шифровать слово «кошки». В двоичном, согласно ASCII, это:

Если вы добавите их все вместе и преобразоруетесь в базу 10, вы получаете 4430123. Для нашего примера мы собираемся посмотреть, как Rivest-Shamir-Adleman (RSA), шифр открытых ключей, рассчитывает публичные и частные ключи. Мы также собираемся использовать гораздо меньшие числа, поэтому математика не такая сложная для чтения.

Ниже приведен калькулятор, который я создал для поворота ASCII в двоичный. Посмотрите это лучше на моем Сайт , где вы можете взаимодействовать и запустить код.

# https://stackoverflow.com/a/40949538
def string2bits(s=''):
    return [bin(ord(x))[2:].zfill(8) for x in s]

# edit the text below to see how this works
text = 'cats'
bits = string2bits(text)

for x in bits:
    print x

# output
# 01100011
# 01100001
# 01110100
# 01110011

RSA

  • Выберите 2 больших простых номера, P & Q.

Простые номера – это цифры, которые имеют только 2 Факторы , 1 и сам. Мы собираемся выбрать 5 и 7, не большие простые номера, а маленькие для краткости.

  • Compute, Z = (P-1) (Q-1)
  • Выберите e (с e

e

5 не имеет общего факторов с 24, и он меньше 24.

** Выберите D такие, что ED – 1 точно делится Z.

Самый простой способ сделать это, чтобы закрутить все возможные значения d в коде. Этот код написан в Функциональный Python Но язык и парадигма не имеют значения.

>>> list(filter(lambda x: ((x * 5) - 1) % 24 == 0, range(1, 200)))
[5, 29, 53, 77, 101, 125, 149, 173, 197]

Поскольку мы используем такие небольшие числа, у нас есть перекрытие. Как e, и d 5. Давайте установим D до 29, так что у нас нет этого совпадения.

d

  • Открытый ключ (N, E). Частный ключ (N, D)

Ниже приведен код для генерации клавиш RSA. Обратите внимание, что у нас перекрываются на d с и, как обсуждалось выше.

def rsa(p, q):
  n = p * q
  z = (p - 1) * (q - 1)

  # calculate e such that e is less than z
  # and e has no common factors with z
  for i in range(1, z - 1):
    if z % i != 0:
      e = i
      break

  d = (filter(lambda x: ((x * 5) - 1) % 24 == 0, range(1, 200)))[0]
  return{"Public key": [n, d], "Private Key": [n, e]}

# change p and q here to any prime numbers of your choice
p = 5
q = 7

print(rsa(p, q))    

Чтобы отправить зашифрованное сообщение, BOB вычисляет ^ e mod n для сообщения m и ключей e. Расшифровать сообщение, Alice вычисляет ^ d mod n.

Шифрование «кошек» дает нам 42 ⁷⁵ мод.

Расшифровка «кошек» дает нам 4430123.

Затем отправить сообщение M, BOB Comples ^ E (MOD N) и отправляет его в Алису и Алиса дешифровал сообщение, используя ее закрытый ключ D с ^ d (мод n)

Почему это работает?

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

Но если бы я дал вам 992 474,117, и сказал вам найти простые номера, которые использовались для создания этого номера, это не возможно вычислительно. Более того, когда вы понимаете, что основные числа используются очень, очень большие.

Это известно как функция Tryp-дверцы или односторонняя функция. Хотя легко пройти через один путь, вычисляют неисправно, чтобы пойти другим путем. Кипятить яйцо – односторонняя функция, потому что легко кипятить яйцеклетку, но не возможно, не выварить яйцо. Давайте глубже пойдем в математику и исследуйте модульную арифметику.

Вернуться к модульной арифметика

Представьте себе конечный диапазон чисел, например, от 1 до 12. Эти номера расположены по кругу, как часы (модульная арифметика иногда называют арифметикой часов из-за этого)

Счет 13 вокруг этих часов. Вы добираетесь до 12, а затем вам нужно сосчитать еще 1 – так что вы вернетесь к 1. Модульная арифметика по-прежнему определяется как остаток отдела, однако он также может быть определен (и чаще определен) как часы.

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

3 ^ X.

Когда мы вставляем 2 в эту функцию, мы получаем. Вставить 3 а также мы получили

Эта функция легко отменить. Если нам дают 9, мы можем сказать, что функция имела вход 3, из-за.

Однако с добавлением модульной арифметики он не ведет себя разумно.

Изображение у нас была эта формула:

3 ^ X. мод

Как бы вы узнали, что Х? Вы не можете поставить мод на другой стороне, потому что не совсем не обратная модульная арифметика. Как насчет угадывания? Давайте введем 5:

³⁵ мод

Хорошо, это было слишком большим. Возможно, вы захотите пойти ниже, возможно, 4 или 3 Но на самом деле это неправильное направление. Когда X равно 6, он равен 1.

В нормальной арифметике мы можем испытать номера и ощутить, становимся ли мы теплее или холоднее, но это не так с модульной арифметикой.

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

Если я дал вам ряд, такой как 5787, и сказал вам найти функцию для него, это было бы нездорово. На самом деле, если я дал вам возможность вводить любое число в функцию, это все равно будет сложно. Мне потребовалось всего несколько секунд, чтобы сделать эту функцию, но это займет у вас часы или, может быть, даже дни, чтобы поработать, что Х.

RSA – односторонняя функция. Хотя эта функция относительно проста, это вычислительно неисправен для выполнения обратной функции и выяснить, что клавиши. Хотя, можно изменить шифрование RSA, если вы знаете некоторые числа, такие как N.

Давайте поговорим о N

Напомним ранее, где я подробно рассказал, как работал rsa алгоритм. Был один номер, $ n $. Этот N особенный, потому что при некоторых обстоятельствах н может сделать этот односторонний обратимый функция

N – это продукт из 2 простых чисел. Как мы видели ранее, если мы возьмем 5 $ и 7 $ и умножьте их вместе, мы получаем:

n

Для того, чтобы Боб отправить Alice сообщение, он зашифрует сообщение, используя открытый ключ Alice. Теперь, когда сообщение зашифровано, для Алисы должно быть каким-то образом расшифровать его. Должен быть какой-то способ для Алисы, чтобы изменить это, но только для Алисы, чтобы изменить его. У вас не может быть Евы или Ниаме или Ханны, обращаясь к этому – потому что это бьет точку шифрования.

RSA разработан так, чтобы человек, который знает P и Q (два простых числа, которые умножаются вместе, чтобы дать N), может расшифровать сообщение.

Хотя Алиса рассказала миру ее открытый ключ, никто, кроме Алисы, знает, что. Обратите внимание, что простые числа намеренно малы для краткости.

Вы можете думать: «Легко догадаться, что основные факторы 35 – 5 и 7», и вы были бы правы. Но с большим достаточном номером практически невозможно найти P и Q.

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

Давайте посмотрим больше в математику

Хорошо, давайте посмотрим на то, как работает модуль во всем этом. Вы понимаете, почему умножение работает, и как работает модуль. Но как насчет других уравнений? Для чего они?

Давайте продемонстрируем алгоритм расшифровки с использованием личности из-за Эйлера и Фермата:

Для любого целого числа (м) м относительно простятся n:

Это элементная функция EULER, дающая количество положительных целых чисел меньше, чем N, которые являются относительно простыми на n. Относительно Prime – это то, где 2 номера имеют только фактор 1 друг с другом. В современном дне мы используем Функция Carmichael За функцию Эйлера, поскольку функция Эйлера иногда может производить числа слишком большими для использования. Тем не менее, мы используем точечную функцию Эйлера, так как это используемая оригинальная бумага RSA.

Это звучит с толку, но давайте сломаемся. По элементарным свойствам токарной функции:

Поскольку D относительно простые до φ i (n), у него есть мультипликативный обратный e в кольце целых чисел модуля $ φ (n). Это означает, что формула, которую мы использовали для RSA, могут быть изменены (дверь ловушки может быть изменена), учитывая некоторые знания о используемых числах.

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

Модульный мультипликативный обратный алгоритма шифрования ^ e mod n – это мод n. Все это математика построила до этого. Модульные арифметические и односторонние функции здесь сильно вовлечены здесь. Для того, чтобы зашифровать, вы рассчитываете c. Для того, чтобы расшифровать, вы рассчитываете м. Оба из них требуют знания N, что является специальным числом, о котором мы говорили ранее.

Если вы хотите узнать больше о математике RSA, я настоятельно рекомендую читабельно, Оригинальная бумага RSA Отказ

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

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

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

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

Допустим, Боб хочет доказать Алису, что Боб писал сообщение, которое он послал ее. Боб отправляет свое первоначальное сообщение с зашифрованной версией сообщения со своим закрытым ключом (K-). Алиса использует открытый ключ BOB (K +), который, используя формулу выше, превращает зашифрованное сообщение обратно в обычное сообщение. Затем Alice проверяет сообщение BOB, отправленное сообщение, она получила от зашифрованного сообщения. Если они совпадают, она может быть уверена, что кто-то с закрытым ключом Боба (вероятно, Боб) отправил его.

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

Чтобы узнать больше о хэш-функциях, я написал сестру, которая объясняет их здесь Отказ

Вернуться к криптографии

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

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

Магазин пиццы проверяет подпись и отправляет 4 Pepperoni Pizzasas 🍕 в Боб. Худшая часть есть, Боб даже не нравится Pepperoni. Это где Сертификационный орган вступает в игру.

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

Сертификат, содержащий Public ключей объектов, является цифровым подписанием CA. Эта подписание – это то, что CA поговорка: «Это президентства открытых ключей».

Когда Алиса хочет открытый ключ Боба, она получает сертификат Боба. Затем она применяет открытый ключ CA для сертификата Боба, чтобы получить открытый ключ Боб.

CloudFlare имеет удивительную статью о властях сертификатов здесь Отказ

Безопасное письмо с довольно хорошей конфиденциальностью

Фил Циммерман изобретен Довольно хорошая конфиденциальность (PGP), стандарт де-факто для электронного шифрования. Zimmerman использовал RSA в PGP. RSA запатентована, и у него не было разрешения от RSA Inc (компания, которая проводит патент) для публикации другого шифра с использованием RSA.

Циммерман также был целью 3-летнего федерального расследования U.S, поскольку в момент криптографических программ считались боеприпасами по закону США. Когда спрашивают, стоили ли у всех неприятностей, чтобы опубликовать PGP, он сказал У него было «без сожалений». Давайте посмотрим, как это раньше было незаконным алгоритмом.

Когда Алиса хочет отправить конфиденциальную электронную почту Боб, она:

  1. Генерирует случайное симметричное закрытое ключ, к-.
  2. Шифрует ее электронную почту с K- (для эффективности)
  3. Также шифрует K – с открытым ключом Боба.
  4. Alice Digitaly подписывает зашифрованное сообщение.
  5. Алиса посылает Бобу оба

и ее цифровая подпись.

Всего Алиса использует три ключей. Ее закрытый ключ, открытый ключ Боб и недавно созданный симметричный ключ.

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

Используйте симметричную ключевую систему, такую как AES , что невероятно трудно сломать (но не так сильно, как RSA). Зашифруйте ключ AES (и только ключ, не весь адрес электронной почты) с открытым ключом. Таким образом, приемник может применить свой закрытый ключ и узнать симметричный ключ AES для расшифровки электронной почты.

Не многие люди используют PGP, из-за того, насколько сложно настроить. Несомнемся, вам нужно скачать программу, которую вы доверяете, чтобы правильно внедрить PGP. В 2018 году это было Показан Это электронные почтовые клиенты, такие как Apple Mail, Thunderbird и Outlook – у которых есть настройки для включения PGP, могут быть вынуждены показать не зашифрованные версии.

Не говоря уже о том, как подозрительно это ищет одного человека для отправки зашифрованных электронных писем в сети не зашифрованных электронных писем. Единственный почтовый клиент (и адрес адресов), который позволяет PGP по умолчанию – это Protonmail, но даже тогда это только для электронной почты протонов-протонов, и вы должны доверять компании для правильной реализации.

Заключение

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

Эй, 👋 Хотите подписаться на мой блог и оставаться в курсе с постами, похожими на этот? Подписаться на мой список электронных напитков ниже. Я не буду спамить тебя. Я отправлю вам только посты, похожие на этот 😊✨

Подпишите здесь!

Оригинал: “https://dev.to/brandonskerritt/public-key-cryptography-simply-explained-2ng1”