Rsa ключ для чего нужен
Иллюстрация работы RSA на примере
Вокруг алгоритмов шифрования с отрытым и закрытым ключом существует множество недопониманий и мистификаций. Здесь я хотел бы предельно коротко и наглядно, с конкретными числами и минимумом формул, показать, как это работает.
Я не вдаюсь в теорию (не очень понятно, на какой уровень подготовки читателя следует рассчитывать), но я уверен, что прочитав эту короткую иллюстрацию, любому человеку будет проще разобраться в формулах и строгих доказательствах.
Итак. Допустим, я хочу получить от вас некие данные. Мы с вам не хотим, чтобы эти данные узнал кто-то, кроме нас. И у нас нет никакой уверенности в надёжности канала передачи данных. Приступим.
Шаг первый. Подготовка ключей
Я должен проделать предварительные действия: сгенерировать публичный и приватный ключ.
Теперь пара чисел
Шаг второй. Шифрование
Строго говоря, вам вовсе незачем вычислять огромное число «19 в степени 5». При каждом умножении достаточно вычислять не полное произведение, а только остаток от деления на 21. Но это уже детали реализации вычислений, давайте не будем в них углубляться.
Шаг третий. Расшифровка
Я получил ваши данные ( E=10 ), и у меня имеется закрытый ключ
Обратите внимание на то, что открытый ключ не может расшифровать сообщение. А закрытый ключ я никому не говорил. В этом вся прелесть асимметричного шифрования.
Заметьте, никто, кроме меня (даже вы!) не может расшифровать ваше сообщение ( E=10 ), так как ни у кого нет закрытого ключа.
В чём гарантия надёжности шифрования
Постараюсь это показать на примере. Давайте разложим на множители число 360:
Мы на каждом шагу, практически без перебора, получали всё новые и новые множители, легко получив полное разложение 360=2×2×2×3×3×5
Давайте теперь возьмём число 361. Тут нам придётся помучиться.
При использовании больших чисел, задача становится очень сложной. Это позволяет надеяться, что у взломщика просто не хватит вычислительных ресурсов, чтобы сломать ваши шифр за обозримое время.
А как это всё работает на практике?
Многие читатели спрашивают, как всё это применяется на практике. Давайте рассмотрим чуть более приближенный к жизни пример. Зашифруем и расшифруем слово «КРОТ», предложенное одним из читателей. А заодно, бегло рассмотрим, какие проблемы при этом встречаются и как они решаются.
Сперва сгенерируем ключи с чуть бо́льшими числами. Они не так наглядны, но позволят нам шифровать не только числа от нуля до 20.
Оттолкнёмся от пары простых чисел
= <17, 19>. Пусть наш открытый ключ будет
Мы готовы к шифрованию. Переведём наше слово в цифровое представление. Мы можем взять просто номера букв в алфавите. У нас получится последовательность чисел: 11, 17, 15, 19.
Мы можем зашифровать каждое из этих чисел открытым ключом
Немного о сложностях
На самом деле, изложенный способ шифрования очень слаб и никогда не используется. Причина проста — шифрование по буквам. Одна и та же буква будет шифроваться одним и тем же числом. Если злоумышленник перехватит достаточно большое сообщение, он сможет догадаться о его содержимом. Сперва он обратит внимание на частые коды пробелов и разделит шифровку на слова. Потом он заметит однобуквенные слова и догадается, как кодируются буквы «a», «и», «o», «в», «к»… Путём недолгого перебора, он вычислит дополнительные буквы по коротким словам, типа «но», «не», «по». И по более длинным словам без труда восстановит все оставшиеся буквы.
Таким образом, злоумышленнику не придётся отгадывать ваши секретные ключи. Он взломает ваше сообщение, не зная их.
Чтобы этого не происходило, используются специальные дополнительные алгоритмы, суть которых в том, что каждая предыдущая часть сообщения начинает влиять на следующую.
Последовательность (11, 28, 43, 62) получается «запутанной». Все буквы в ней как бы перемешаны, в том смысле, что на каждый код влияет не одна буква, а все предыдущие.
На практике, в исходное сообщение специально добавляются случайные и бессмысленные буквы в начало. Чтобы даже по первому коду было невозможно ничего понять. Получатель просто отбрасывает начало сообщения.
То есть мы можем добавить случайное число в начало и получить (299, 11, 17, 15, 19). После перемешивания получится: 299, 310, 4, 19, 38. После шифрования уже невозможно будет догадаться где была какая буква.
В реальной жизни всё ещё немного сложнее. Блоки, на которые бьётся сообщение длиннее одной буквы. Поэтому, сперва применяются алгоритмы выравнивания, потом алгоритмы разбиения на блоки с перепутыванием, и только потом применяется само RSA-шифрование.
Получатель делает всё в обратном порядке: расшифровывает, «распутывает» блоки и отбрасывает ненужную информацию, добавленную просто для выравнивания (чтобы сообщение можно было разбить на целое число блоков).
Детали и принципы формирования блоков можно почитать тут. Я же в этой заметке хотел рассказать только про RSA. Надесь, удалось.
Что такое RSA-ключ ЕГАИС?
Регулятор закона в целях контроля передвижения каждой бутылки алкоголя от производства до покупателя внедрил всероссийскую базу данных. Это обеспечивает прозрачность движения каждой единицы товара, а также помогает бороться с недоимками по фискальным платежам. Для работы в системе ЕГАИС требуется иметь крипто-ключ и сформированный ключ RSA, а также транспортный модуль. Все это необходимо для защищенной работы в системе, чтобы третьи лица не смогли воспользоваться информацией в своих интересах.
Ключ RSA ЕГАИС – что это?
Представляет собой сертификат для защищенного соединения с единой платформой. Система необходима для передачи данных в безопасном режиме. Криптосистема позволяет пользоваться ключом шифрования только соответствующим зарегистрированным субъектам. Все данные зашифрованы от посторонних третьих лиц. РСА-ключ для ЕГАИС записывается на крипто-ключ на веб-ресурсе официального портала. Операция по записи зашифрованных данных предоставляется бесплатно.
В процессе осуществления профессиональной деятельности для каждого юридического подразделения необходимо получить собственный RSA-ключ для работы с использованием Рутокен в ЕГАИС. Перед тем как зарегистрировать соответствующие данные требуется удостовериться, что запущен аппаратный крипто-ключ той компании, для которой формируется сертификат РСА.
Что нужно для формирования ключа RSA ЕГАИС Рутокен
На начальной стадии пользователю потребуется зарегистрироваться на официальном ресурсе. После этого понадобится зайти в Личный кабинет с помощью уже имеющейся электронной подписи. В панели управления необходимо будет выбрать графу «Показать сертификат». После чего вы сможете увидеть все сертификационные материалы со сведениями о ваших точках с указанием всех идентификационных данных. Представленная информация необходима для записи специального RSA-ключа.
На следующем этапе нужно будет перейти в раздел «Получить ключ». На табло вы сможете увидеть перечень пунктов сбыта АП, которые были указаны вами при прохождении процедуры регистрации. Затем вы можете выбрать соответствующий пункт, для которого предназначен специализированный крипто-ключ и выбрать поле «Сформировать ключ». Электронная платформа запросит ввести пароль. В случае какого-либо затруднения вы можете обратиться в службу поддержки на официальном веб-ресурсе.
После того как вы установили или перезаписали РСА сертификат ЕГАИС на Рутокен можно приступать к установке УТМ. Запустив универсальный транспортный модуль, вы сможете приступить к производству и продаже алкоголя в рамках новых положений законодателя. Дополнительно нужно будет позаботиться о приобретении сканеров с целью считывания данных и стабильного осуществления всех процессов на электронной платформе.
Как обновить сертификат РСА ЕГАИС Рутокен
В связи с обновлением сертификата все субъекты алкорынка обязаны произвести обновление ключа RSA. В самом начале необходимо будет удалить старый сертификат и уже затем установить новый.
После удаления необходимо произвести обновление ключа RSA ЕГАИС Рутокен. Все манипуляции нужно будет выполнить на официальном веб-портале. При формировании ключа вам нужно будет ввести пин-код. Если все идентификационные данные будут введены правильно, сертификат будет зарегистрирован. В случае возникновения каких-либо сложностей при продлении ключа РСА ЕГАИС обратитесь в техподдержку. Специалисты могут подключиться удаленно к вашему компьютерному устройству в целях наиболее оперативного решения вопроса.
Ошибки с RSA-ключом ЕГАИС
В процессе генерации РСА сертификата могут возникать определенные сложности. В большинстве случаев существуют две причины. Первая – это неполадки на веб-ресурсе. Вторая – некорректные настройки компьютерного оборудования. Для устранения проблем с RSA-ключом ЕГАИС потребуется выполнить следующие действия:
Если же при обновлении ключа RSA ЕГАИС возникнут какие-либо сложности и не будет появляться графа «Запрос пин-кода», то необходимо в компьютерном оборудовании произвести соответствующие корректировки в настройках. В большинстве случаев неправильные настройки являются следствием невыполнения операций по формированию ключа.
При работе с использованием системы RuToken вам потребуется зайти в Панель управления, где потребуется выбрать Настройки, напротив строки Рутокен вам необходимо выбрать значение Microsoft Base Smart Card Crypto Provider. После этого нужно попробовать еще раз сформировать ключ. Если возникнут сложности, необходимо произвести обновление драйверов.
Помимо этого, проблема возникает при неправильном введении пин-кода. Если вы несколько раз неправильно ввели данные, то носитель может заблокироваться. Тогда вам придется обратиться в удостоверяющий центр. Дополнительно причиной ошибки может стать несоответствие адреса РСА ключа, указанного в лицензии. Если же будет выявление несоответствие данных, нужно будет обратиться в техподдержку Росалкогольрегулирования. С соответствующим запросом можно обратиться как лично, так и через Личный кабинет. Стоит отметить, что в некоторых случаях после внесения корректировок может потребоваться повторное формирование РСА-ключа.
Итак, для успешной работы во всероссийской системе вам помимо крипто-ключа и установки УТМ необходимо позаботиться о формировании RSA-ключа.
Что такое шифрование RSA и как оно работает?
Эта статья научит вас всему, что вам нужно знать о как было разработано шифрование RSA, как это устроено, математика за этим, для чего он используется а также некоторые из самые большие проблемы безопасности, с которыми он сталкивается. Изучение RSA даст вам некоторые базовые знания, которые помогут вам понять, сколько частей нашей онлайн-жизни защищены.
Что такое шифрование RSA?
Допустим, вы хотите рассказать своему другу секрет. Если вы рядом с ними, вы можете просто прошептать это. Если вы находитесь на противоположных сторонах страны, это явно не сработает. Вы можете записать это и отправить по почте им или использовать телефон, но каждый из этих каналов связи небезопасен и любой с достаточно сильной мотивацией может легко перехватить сообщение.
Одним из способов предотвращения доступа перехватчиков к содержимому сообщения является зашифровать его. Это в основном означает добавление кода к сообщению, которое превращает его в беспорядочный беспорядок. Если ваш код достаточно сложен, то единственные люди, которые смогут получить доступ к исходному сообщению, это те, кто имеет доступ к коду.
Это одна из фундаментальных проблем криптографии, которая решается схемы шифрования с открытым ключом (также известные как асимметричное шифрование), такие как RSA.
При шифровании RSA сообщения шифруются с помощью кода, называемого открытый ключ, которыми можно поделиться открыто. Из-за некоторых четких математических свойств алгоритма RSA, если сообщение было зашифровано открытым ключом, оно может быть расшифровано только другим ключом, известным как закрытый ключ. У каждого пользователя RSA есть пара ключей, состоящая из их открытого и закрытого ключей. Как следует из названия, закрытый ключ должен храниться в секрете.
Схемы шифрования с открытым ключом отличаются от шифрование с симметричным ключом, где и в процессе шифрования, и в дешифровании используется один и тот же закрытый ключ. Эти различия делают шифрование с открытым ключом, такое как RSA, полезным для связи в ситуациях, когда не было возможности безопасно распространять ключи заранее..
Алгоритмы с симметричным ключом имеют свои собственные приложения, такие как шифрование данных для личного использования или для случаев, когда существуют защищенные каналы, по которым закрытые ключи могут совместно использоваться..
Смотрите также: Криптография с открытым ключом
Где используется шифрование RSA?
RSA-шифрование часто используется в комбинация с другими схемами шифрования, или для цифровые подписи который может доказать подлинность и целостность сообщения. Обычно он не используется для шифрования целых сообщений или файлов, потому что он менее эффективен и требует больше ресурсов, чем шифрование с симметричным ключом..
Чтобы сделать вещи более эффективными, файл обычно шифруется с помощью алгоритма симметричного ключа, а затем симметричный ключ шифруется с помощью шифрования RSA.. В рамках этого процесса только объект, имеющий доступ к закрытому ключу RSA, сможет расшифровать симметричный ключ..
Не имея доступа к симметричному ключу, исходный файл не может быть расшифрован. Этот метод можно использовать для обеспечения безопасности сообщений и файлов, не занимая слишком много времени и не занимая слишком много вычислительных ресурсов..
Шифрование RSA может использоваться в ряде различных систем. Это может быть реализовано в OpenSSL, wolfCrypt, cryptlib и ряде других криптографических библиотек..
Являясь одной из первых широко используемых схем шифрования с открытым ключом, RSA заложила основы для большей части наших безопасных коммуникаций. это было традиционно используется в TLS и был также оригинальный алгоритм, используемый в шифровании PGP. RSA по-прежнему используется в различных веб-браузерах, электронной почте, VPN, чатах и других каналах связи..
RSA также часто используется для создания безопасных соединений между VPN-клиентами и VPN-серверами. В таких протоколах, как OpenVPN, рукопожатия TLS могут использовать алгоритм RSA для обмена ключами и установления безопасного канала..
Фон шифрования RSA
Как мы упоминали в начале этой статьи, до шифрования с открытым ключом было сложно обеспечить безопасную связь, если не было возможности безопасно обменяться ключами заранее. Если бы не было возможности поделиться кодом заранее или создать безопасный канал, по которому можно было бы распространять ключи, не было бы возможности общаться без угрозы, что враги смогут перехватить и получить доступ к содержимому сообщения..
Лишь в 1970-х годах ситуация начала меняться. Первое крупное развитие в направлении того, что мы сейчас называем криптографией с открытым ключом, было опубликовано в начале десятилетия Джеймсом Эллисом. Эллис не мог найти способ реализовать свою работу, но его коллега Клиффорд Кокс расширил его, чтобы стать тем, что мы теперь знаем как RSA-шифрование.
Вся эта работа была предпринята в разведывательном агентстве Великобритании, правительственном штабе связи (GCHQ), который держал открытие в секрете. Частично из-за технологических ограничений GCHQ не мог видеть использование криптографии с открытым ключом в то время, поэтому разработка стояла на полке, пылясь. Лишь в 1997 году работа была рассекречена, и первоначальные изобретатели RSA были признаны.
Спустя несколько лет подобные концепции начали развиваться в публичной сфере. Ральф Меркл создал раннюю форму криптография с открытым ключом, который повлиял на Уитфилда Диффи и Мартина Хеллмана в дизайне обмена ключами Диффи-Хеллмана.
В идеях Диффи и Хеллмана отсутствовал один важный аспект, который сделал бы их работу основой криптографии с открытым ключом. Это был односторонняя функция, которую было бы трудно инвертировать. В 1977 году, Рон Ривест, Ади Шамир и Леонард Адлеман, чьи фамилии образуют аббревиатуру RSA, после года работы над решением этой проблемы было найдено решение.
Ученые из Массачусетского технологического института совершили прорыв после Пасхальной вечеринки в 1977 году. После ночи питья Ривест отправился домой, но вместо сна он лихорадочно провел вечер, сочиняя статью, в которой его идея была оформлена для необходимой односторонней функции..
Идея была запатентована в 1983 году MIT, но только в первые дни Интернета, алгоритм RSA начал рассматривать широкое распространение как важный инструмент безопасности.
Как работает шифрование RSA?
Следующее будет немного упрощением, потому что слишком много читателей, вероятно, получили шрамы от своего учителя математики в средней школе. Чтобы математика не вышла из-под контроля, мы будем упрощение некоторых концепций и использование гораздо меньших чисел. В действительности, шифрование RSA использует простые числа, которые намного больше по величине, и есть несколько других сложностей.
Есть несколько различных концепций, которые вы должны обдумать, прежде чем мы сможем объяснить, как все это сочетается. Это включает функции люка, порождающие простые числа, общая функция Кармайкла и отдельные процессы, участвующие в вычисление открытых и закрытых ключей используется в процессах шифрования и дешифрования.
Функции люка
Даже с калькулятором или компьютером, большинство из нас не будет знать, с чего начать, не говоря уже о том, чтобы найти ответ. Но если мы перевернем вещи, это станет намного проще. Каков результат:
Еще один интересный аспект этого уравнения заключается в том, что легко вычислить одно из простых чисел, если у вас уже есть другое, а также продукт. Если вам говорят, что 701111 является результатом 907, умноженного на другое простое число, вы можете выяснить это другое простое число с помощью следующего уравнения:
Поскольку связь между этими числами проста для вычисления в одном направлении, но невероятно сложна в обратном, уравнение известно как функция люка. Имейте в виду, что, хотя вышеприведенный пример трудно понять людям, компьютеры могут выполнить операцию за тривиальное время.
Из-за этого RSA использует гораздо большие числа. Размер простых чисел в реальной реализации RSA варьируется, но в 2048-битном RSA они собираются вместе для создания ключей длиной 617 цифр. Чтобы помочь вам визуализировать это, ключом будет число такого размера:
Генерация простых чисел
Упомянутые выше функции «ловушки» образуют основу для работы схем шифрования с открытым и закрытым ключами.. Их свойства позволяют открывать открытые ключи, не подвергая опасности сообщение и не раскрывая закрытый ключ.. Они также позволяют шифровать данные одним ключом таким способом, который может быть расшифрован только другим ключом из пары..
Простые числа в RSA должны быть очень большими, а также относительно далеко друг от друга. Числа, которые являются маленькими или ближе друг к другу, намного легче взломать. Несмотря на это, в нашем примере будут использоваться меньшие числа, чтобы было легче следить и вычислять.
Допустим, тест на простоту дает нам простые числа, которые мы использовали выше, 907 и 773. Следующим шагом является обнаружение модуля (N), используя следующую формулу:
где п = 907 и Q = 773
Тотальная функция Кармайкла
Как только мы N, мы используем Общая функция Кармайкла:
Если прошло некоторое время с тех пор, как вы прочитали учебники по математике, вышеприведенное может показаться немного пугающим. Вы можете пропустить эту часть и просто поверить, что математика работает, в противном случае оставайтесь с нами для нескольких дополнительных вычислений. Все будет объяснено как можно более подробно, чтобы помочь вам разобраться в основах.
Используя калькулятор, связанный выше, это дает нам:
Генерация открытого ключа
Теперь, когда у нас есть число Кармайкла наших простых чисел, это время, чтобы выяснить наш открытый ключ. Под RSA, открытые ключи состоят из простого числа е, также как и N. Число е может быть что угодно между 1 и значением для λ(N), что в нашем примере составляет 349,716.
Поскольку открытый ключ передается открыто, это не так важно для е быть случайным числом. На практике, е обычно устанавливается на 65537, потому что, когда случайным образом выбираются гораздо большие числа, шифрование становится намного менее эффективным. Для сегодняшнего примера, мы будем делать небольшие цифры, чтобы сделать вычисления эффективными. Давайте скажем:
Наши последние зашифрованные данные называются зашифрованным текстом (с). Мы выводим это из нашего открытого текста сообщения (м), применяя открытый ключ по следующей формуле:
Мы уже придумали е и мы знаем N также. Единственное, что нам нужно объяснить, это модификация. Это немного из глубины этой статьи, но это относится к по модулю операции, что по существу означает остаток, оставшийся, когда вы делите одну сторону на другую. Например:
10 модификация 3 = 1
Это потому, что 3 входит в 10 три раза с остатком 1.
Вернемся к нашему уравнению. Для простоты, давайте скажем, что сообщение (м) что мы хотим зашифровать и сохранить в тайне это просто одно число, 4. Давайте подключим все:
с = 4 194 304 модификация 701111
Опять же, чтобы сделать по модулю операции Легко, мы будем использовать онлайн калькулятор, но вы можете сами в этом разобраться. Ввод 4 194 304 в онлайн-калькулятор, он дает нам:
с = 688 749
Поэтому, когда мы используем RSA для шифрования нашего сообщения, 4, с нашим открытым ключом, это дает нам зашифрованный текст 688,749. Предыдущие шаги могли показаться слишком сложными, но важно повторить то, что на самом деле произошло.
У нас был сообщение 4, который мы хотели сохранить в секрете. Мы применили к нему открытый ключ, который дал нам зашифрованный результат 688 749. Теперь, когда он зашифрован, мы можем безопасно отправить номер 688,749 владельцу пары ключей. Они являются единственным человеком, который сможет расшифровать его с помощью своего закрытого ключа. Когда они расшифруют его, они увидят сообщение, которое мы действительно отправляли., 4.
Генерация закрытого ключа
В RSA-шифровании после преобразования данных или сообщений в зашифрованный текст с открытым ключом их можно расшифровать только с помощью закрытого ключа из той же пары ключей.. Закрытые ключи состоят из d и N. Мы уже знаем N, и следующее уравнение используется, чтобы найти d:
в Генерация открытого ключа раздел выше, мы уже решили, что в нашем примере, е будет равно 11. Точно так же мы знаем, что λ(N) равняется 349 716 от нашей предыдущей работы под Тотальная функция Кармайкла. Все становится немного сложнее, когда мы сталкиваемся с этим разделом формулы:
Это уравнение может выглядеть так, будто оно просит вас разделить 1 на 11, но это не так. Вместо этого это просто символизирует, что нам нужно рассчитать модульная обратная из е (который в данном случае равен 11) и λ(N) (что в данном случае составляет 349 716).
По сути это означает, что вместо выполнения стандартной операции по модулю, мы будем использовать вместо. Обычно это встречается в расширенном евклидовом алгоритме, но это немного выходит за рамки этой статьи, поэтому мы будем просто обманывать и использовать вместо этого онлайн-калькулятор. Теперь, когда мы понимаем все, что происходит, давайте включим нашу информацию в формулу:
d = 1 /11 модификация 349716
Чтобы выполнить эту операцию, просто введите 11 (или любое значение, которое вы можете иметь для е если вы пытаетесь это на собственном примере), где это говорит целое число и 349 716 (или любое значение, которое вы можете иметь для λ(N) если вы пытаетесь это на собственном примере), где говорится Модульное в онлайн калькуляторе, который был связан выше. Если вы сделали это правильно, вы должны получить результат, где:
Теперь, когда у нас есть значение для d, мы можем расшифровать сообщения, которые были зашифрованы с помощью нашего открытого ключа, используя следующую формулу:
Теперь мы можем вернуться к зашифрованному тексту, который мы зашифровали под Генерация закрытого ключа раздел. Когда мы зашифровали сообщение открытым ключом, это дало нам значение для с 688 749. Сверху мы знаем, что d равняется 254 339. Мы также знаем, что N равно 701111. Это дает нам:
м = 688 749254339 модификация 701111.
Как вы, возможно, заметили, попытка привести число к 254 339-й степени может быть немного больше для большинства обычных калькуляторов. Вместо этого мы будем использовать онлайн-калькулятор расшифровки RSA. Если вы хотите использовать другой метод, вы бы применили полномочия, как обычно, и выполняли бы операцию модуля так же, как мы это делали в Генерация открытого ключа раздел.
В калькуляторе, указанном выше, введите 701111, где написано Модуль питания: N, 254,399, где говорится Ключ расшифровки: D, и 688 749, где говорится Зашифрованное сообщение в числовой форме, как показано ниже:
После ввода данных нажмите Расшифровать, который поместит числа через формулу расшифровки, которая была перечислена выше. Это даст вам оригинальное сообщение в поле ниже. Если вы все сделали правильно, вы должны получить ответ 4, который был исходным сообщением, которое мы зашифровали с нашим открытым ключом.
Как работает шифрование RSA на практике
Приведенные выше разделы должны дать вам разумное представление о том, как работает математика шифрования с открытым ключом. Это может немного сбивать с толку, но даже те, кто не разбирается в тонкостях уравнений, могут надеяться забрать некоторую важную информацию о процессе.
На шагах, перечисленных выше, мы показали, как два объекта могут безопасно общаться без предварительного совместного использования кода. Во-первых, каждый из них должен создать свои собственные пары ключей и поделиться открытым ключом друг с другом. Эти два объекта должны держать свои секретные ключи в секрете, чтобы их связь оставалась безопасной.
Когда у отправителя есть открытый ключ получателя, он может использовать его для шифрования данных, которые он хочет сохранить в безопасности.. Как только он был зашифрован с открытым ключом, он может быть расшифрован только с помощью закрытого ключа из той же пары ключей. Даже один и тот же открытый ключ не может быть использован для расшифровки данных. Это связано со свойствами функции люка что мы упоминали выше.
Таким образом, шифрование RSA может использоваться ранее неизвестными сторонами для безопасной передачи данных между собой. Значительные части каналов связи, которые мы используем в нашей онлайн-жизни, были созданы из этого фонда.
Как более сложные сообщения шифруются с помощью RSA?
В нашем примере мы сильно упростили вещи, чтобы их было легче понять, поэтому мы зашифровали только сообщение «4». Возможность шифрования числа 4 не кажется особенно полезной, так что вы можете удивиться как вы можете зашифровать более сложный набор данных, такой как симметричный ключ (который является наиболее распространенным использованием RSA), или даже сообщение.
Некоторые люди могут быть озадачены тем, как ключ типа «n38cb29fkbjh138g7fqijnf3kaj84f8b9f…» или сообщение типа «купи мне сэндвич» можно зашифровать с помощью алгоритма, такого как RSA, который работает с числами, а не буквами. Реальность такова, что вся информация, которую обрабатывают наши компьютеры, хранится в двоичном формате (1 и 0), и мы используем такие стандарты кодирования, как ASCII или Unicode представлять их так, чтобы люди могли их понять (буквы).
Это означает, что ключи типа «n38cb29fkbjh138g7fqijnf3kaj84f8b9f…» и сообщения типа «купи мне сэндвич» уже существуют в виде чисел, который может быть легко вычислен в алгоритме RSA. Числа, которыми они представлены, намного больше и сложнее для нас, поэтому мы предпочитаем иметь дело с буквенно-цифровыми символами, а не с беспорядочными двоичными числами..
Если бы вы хотели зашифруйте более длинный сеансовый ключ или более сложное сообщение с помощью RSA, для этого потребуется гораздо большее число.
набивка
Когда RSA реализован, он использует то, что называется прокладка, чтобы помочь предотвратить ряд атак. Чтобы объяснить, как это работает, мы начнем с примера. Допустим, вы отправляли закодированное сообщение другу:
Я надеюсь, что с тобой все в порядке. Мы еще обедаем завтра?
Допустим, вы закодировали сообщение простым способом: меняя каждую букву на ту, которая следует за ней в алфавите. Это изменит сообщение на:
J ipqf zpv bsf xfmm. Bsf xf tujmm ibwjoh ejoofs upnpsspx?
Если ваши враги перехватили это письмо, есть хитрость, которую они могут использовать, чтобы попытаться взломать код. Они могли посмотрите на формат вашего письма и попытайтесь угадать, что может быть сказано в сообщении. Они знают, что люди обычно начинают свои письма с «Привет», «Привет», «Дорогой» или ряда других соглашений..
Если они попытаются применить «Привет» или «Привет» в качестве первого слова, они увидят, что оно не будет соответствовать количеству символов. Затем они могут попробовать «Дорогой». Это подходит, но это не обязательно что-то значит. Злоумышленники просто попробуют и увидят, куда они их привели. Таким образом, они будут менять буквы «е», «f», «b» и «s» на «d», «e», «a» и «r» соответственно. Это дало бы им:
J ipqe zpv являются xemm. Являются ли xe tujmm iawjoh djooes upnpsspx?
Это все еще выглядит довольно запутанно, поэтому злоумышленники могут попытаться взглянуть на некоторые другие соглашения, например, как мы заканчиваем наши письма. Люди часто добавляют «От» или «С наилучшими пожеланиями» в конце, но ни один из них не соответствует формату. Вместо этого злоумышленники могут попробовать «Искренне ваш» и заменить другие буквы, чтобы увидеть, где он их получает. Путем замены «z», «p», «v», «t», «j», «o», «d» и «m» на «y», «o», «u», «s», « i »,« n »,« c »и« l »соответственно, они получат:
Я думаю, ты xell. Есть ли у меня дела??
После этой модификации похоже, что злоумышленники начинают куда-то добираться. Они нашли слова «я», «ты» и «есть», в дополнение к словам, которые составляли их первоначальные догадки.
Видя, как слова расположены в правильном грамматическом порядке, злоумышленники могут быть уверены, что они движутся в правильном направлении. К настоящему времени они, вероятно, также поняли, что код включает в себя замену каждой буквы на букву, следующую за ней в алфавите.. Как только они осознают это, это позволяет легко перевести остальное и прочитать оригинальное сообщение..
Приведенный выше пример был простым кодом, но, как вы можете видеть,, структура сообщения может дать злоумышленникам подсказки о его содержании. Конечно, было трудно понять сообщение только из его структуры, и потребовались некоторые образованные догадки, но вы должны помнить, что компьютеры гораздо лучше справляются с этим, чем мы.. Это означает, что они могут быть использованы для определения более сложных кодов за гораздо более короткое время, основанный на подсказках, которые прибывают из структуры и других элементов.
Если структура может привести к взлому кода и раскрытию содержимого сообщения, то нам нужен какой-то способ скрыть структуру, чтобы обеспечить безопасность сообщения. Это подводит нас к набивка.
Когда сообщение дополняется, добавлены рандомизированные данные, чтобы скрыть исходные ключи форматирования, которые могут привести к повреждению зашифрованного сообщения. С RSA все немного сложнее, потому что зашифрованный ключ не имеет очевидного форматирования письма, что помогло нам понять в нашем примере выше.
Несмотря на это, злоумышленники могут использовать ряд атак для использования математических свойств кода и взлома зашифрованных данных. Из-за этой угрозы, реализации RSA используют схемы заполнения, такие как OAEP, для встраивания дополнительных данных в сообщение. Добавление этого отступа перед шифрованием сообщения делает RSA намного более безопасным.
Подписание сообщений
RSA может использоваться не только для шифрования данных. Его свойства также делают его полезной системой для подтверждение того, что сообщение было отправлено объектом, который утверждает, что отправило его, а также доказательство того, что сообщение не было изменено или подделано.
Когда кто-то хочет доказать подлинность своего сообщения, он может вычислить гашиш (функция, которая берет данные произвольного размера и превращает их в значение фиксированной длины) открытого текста, а затем подписывает их своим закрытым ключом. Oни подписать хеш, применяя ту же формулу, которая используется при расшифровке (м = сd мод n). Как только сообщение подписано, они отправляют эту цифровую подпись получателю вместе с сообщением.
Если получатель получает сообщение с цифровой подписью, он может использовать подпись для проверки подлинности подписи сообщения личным ключом лица, которое утверждает, что оно отправлено. Они также могут увидеть, было ли сообщение изменено злоумышленниками после его отправки..
Чтобы проверить цифровую подпись, получатель сначала использует ту же хеш-функцию, чтобы найти значение хеш-функции полученного сообщения. Получатель затем применяет открытый ключ отправителя к цифровой подписи, используя формулу шифрования (с = ме мод н), дать им хэш цифровой подписи.
По сравнение хеша сообщения, полученного вместе с хешем из зашифрованной цифровой подписи, получатель может сказать, является ли сообщение подлинным. Если два значения одинаковы, сообщение не было изменено с момента его подписания оригинальным отправителем. Если бы сообщение было изменено хотя бы одним символом, значение хеша было бы совершенно другим.
RSA безопасность & нападки
Как и большинство криптосистем, безопасность RSA зависит от того, как он реализован и используется. Одним из важных факторов является размер ключа. Чем больше битов в ключе (по сути, каков длина ключа), тем сложнее его взломать с помощью атак. такие как перебор и факторинг.
Поскольку алгоритмы асимметричного ключа, такие как RSA, могут быть нарушены целочисленной факторизацией, а алгоритмы симметричного ключа, такие как AES, не могут, ключи RSA должны быть намного длиннее, чтобы достичь того же уровня безопасности.
В настоящее время самый большой размер ключа, который был учтен, составляет 768 бит. Это было сделано командой ученых за два года, используя сотни машин.
Поскольку факторинг был завершен к концу 2009 года и вычислительная мощность значительно возросла с того времени, можно предположить, что попытка аналогичной интенсивности теперь может учитывать гораздо больший ключ RSA.
Несмотря на это, время и ресурсы, необходимые для такого рода атак, делают его недоступным для большинства хакеров и попадают в область национальных государств. Наилучшая длина ключа зависит от вашей индивидуальной модели угроз. Национальный институт стандартов и технологий рекомендует минимальный размер ключа 2048-бит, но 4096-битные ключи также используются в некоторых ситуациях, когда уровень угрозы выше.
Действительно ли простые числа случайны??
Некоторые реализации RSA используют слабые генераторы случайных чисел, чтобы придумать простые числа. Если эти числа не являются достаточно случайными, злоумышленникам будет намного проще их разложить и взломать шифрование. Эта проблема можно избежать с помощью криптографически безопасного генератора псевдослучайных чисел.
Плохая генерация ключей
Ключи RSA должны соответствовать определенным параметрам, чтобы обеспечить их безопасность. Если простые числа п и Q слишком близко друг к другу, ключ может быть легко обнаружен. Аналогично, число d который составляет часть закрытого ключа не может быть слишком маленьким. Низкое значение облегчает решение. Важно, чтобы эти цифры имели достаточную длину, чтобы сохранить ваш ключ в безопасности..
Атаки по побочным каналам
Это тип атаки, который не нарушает RSA напрямую, а использует информацию из своей реализации, чтобы дать злоумышленникам подсказки о процессе шифрования. Эти атаки могут включать в себя такие вещи, как анализируя количество энергии, которая используется, или анализ отраслевого прогноза, который использует измерения времени выполнения, чтобы обнаружить закрытый ключ.
Другой тип атаки по побочному каналу известен как временная атака. Если у злоумышленника есть возможность измерить время расшифровки на компьютере его цели для ряда различных зашифрованных сообщений, эта информация может позволить злоумышленнику определить личный ключ цели.
Большинство реализаций RSA избегают этой атаки, добавляя одноразовое значение во время процесса шифрования, что устраняет эту корреляцию. Этот процесс называется криптографическое ослепление.
Безопасно ли шифрование RSA на будущее??
Хорошей новостью является то, что RSA считается безопасным для использования, несмотря на эти возможные атаки. Предостережение в том, что это должно быть реализовано правильно и использовать ключ, который попадает в правильные параметры. Как мы только что обсудили, реализации, которые не используют заполнение, используют простые числа неадекватного размера или имеют другие уязвимости, нельзя считать безопасными.
Если вы хотите использовать шифрование RSA, убедитесь, что вы используете ключ не менее 1024 бит. Те, у кого более высокие модели угроз, должны придерживаться ключей длиной 2048 или 4096 бит, если они хотят использовать RSA с уверенностью. Если вы знаете о слабых сторонах RSA и используете его правильно, вы должны чувствовать себя в безопасности при использовании RSA для обмена ключами и других подобных задач, которые требуют шифрования с открытым ключом.
Смотрите также: Общие типы шифрования объяснены