Почему простые числа важны в криптографии?
одна вещь, которая всегда поражает меня как non-шифровальщиком: почему так важно использовать простые числа? Что делает их такими особенными в криптографии?
кто-нибудь простой короткое объяснение? (Я знаю, что есть много праймеров и что Прикладная криптография-это Библия, но, как сказано: я не собираюсь реализовывать свой собственный криптографический алгоритм, и материал, который я нашел, просто заставил мой мозг взорваться - нет 10 страниц математических формул, пожалуйста :))
спасибо для всех ответы. Я принял тот, который сделал фактическую концепцию наиболее ясной для меня.
14 ответов:
самое основное и общее объяснение: криптография-это все о теория чисел, и все целые числа (кроме 0 и 1) состоят из простых чисел, так что вы имеете дело с простыми числами много в теории чисел.
более конкретно, некоторые важные криптографические алгоритмы, такие как RSA критически зависит от того, что премьер-факторизации больших чисел занимает много времени. В основном у вас есть "открытый ключ", состоящий из продукта двух больших простые числа, используемые для шифрования сообщения, и" секретный ключ", состоящий из этих двух простых чисел, используемых для расшифровки сообщения. Вы можете сделать открытый ключ открытым, и каждый может использовать его для шифрования сообщений для вас, но только вы знаете основные факторы и можете расшифровать сообщения. Все остальные должны были бы факторизовать число, что занимает слишком много времени, чтобы быть практичным, учитывая современное состояние теории чисел.
простой? Ага.
Если вы умножите два больших простых числа, вы получите огромное не простое число только с двумя (большими) простыми факторами.
Факторинг этого числа является нетривиальной операцией, и этот факт является источником многих криптографических алгоритмов. Смотрите односторонние функции для получения дополнительной информации.
добавление: Просто немного больше объяснений. Произведение двух простых чисел может быть использовано в качестве открытого ключа, в то время как сами простые числа являются закрытый ключ. Любая операция делается для сведения, что можно сделать только зная один из этих двух факторов будет нетривиальным для расшифрования.
здесь очень простой и распространенный пример.
The алгоритм шифрования RSA который обычно используется в защищенных коммерческих веб-сайтах, основан на том, что легко взять два (очень больших) простых числа и умножить их, в то время как чрезвычайно трудно сделать обратное - смысл: взять очень большое число, учитывая, что оно имеет только два простых фактора, и найти их.
потому что никто не знает быстрого алгоритма для факторизации целого числа в его простые множители. Тем не менее, очень легко проверить, умножается ли набор простых множителей на определенное целое число.
есть некоторые хорошие ресурсы для изучения крипто. Вот один из них:
страницы:
в наиболее часто используемом открытом ключе криптографическая система, изобретенная Роном Ривест, Ади Шамир и лен Адлеман в 1977 год, как публичный, так и частный ключи выводятся из пары больших простых чисел в соответствии с относительно простая математика формула. Теоретически, это может быть возможно получение закрытого ключа из открытого ключа, работая формулу в обратном направлении. Но только произведение больших простых чисел публичные, и факторинговые номера этого размер в простые числа настолько сложен, что даже самые мощные суперкомпьютеры в мире мир не может сломать обычный открытый ключ.
книга Брюса Шнайера Прикладная Криптография это другое. Я очень рекомендую эту книгу; это весело читать.
важны не столько сами простые числа, сколько алгоритмы, которые работают с простыми числами. В частности, нахождение множителей числа (любого числа).
Как вы знаете, любое число имеет по крайней мере два фактора. Простые числа обладают тем уникальным свойством, что у них есть ровно два фактора: 1 и сами по себе.
причина, по которой факторинг так важен, заключается в том, что математики и компьютерные ученые не знают, как факторизовать число, просто не пытаясь все возможные комбинации. То есть сначала попробуйте разделить на 2, затем на 3, затем на 4 и так далее. Если вы попытаетесь разложить простое число-особенно очень большое-вам придется попробовать (по существу) каждое возможное число между 2 и этим большим простым числом. Даже на самых быстрых компьютерах потребуются годы (даже столетия), чтобы разложить на множители виды простых чисел, используемых в криптографии.
Это тот факт, что мы не знаем, как эффективно факторизовать большое число, которое дает криптографические алгоритмы их сила. Если в один прекрасный день кто-то выяснит, как это сделать, все криптографические алгоритмы, которые мы сейчас используем, устареют. Это остается открытой областью исследований.
чтобы быть немного более конкретным о том, как RSA использует свойства простых чисел, алгоритм RSA критически зависит от Теорема Эйлера, в котором говорится, что для относительно простых чисел "a" и "N" A^e конгруэнтно 1 по модулю N, где e -totient Эйлера Н.
где простые числа входят в это? Для вычисления функции Эйлера totient Н эффективно, требуется знать премьер-факторизации N. В случае алгоритма RSA, где N = pq для некоторых простых чисел "p" и "q", то e = (p - 1)(q - 1) = N - p - q + 1. Но без знания p и q вычисление e очень сложно.
более абстрактно, многие криптографические протоколы используют различные функции люк функции, которые легко вычислить, но трудно обратить. Теория чисел является богатым источником таких односторонних функций (например, умножение больших чисел), и простых чисел для теория чисел.
Я бы предложил книги Математическое Путешествие В Коде. Книга обладает приятным приземленным чувством, что удивительно, поскольку речь идет о криптографии. Книга суммирует путешествие Сары Фланнери от изучения головоломок в детстве до создания алгоритма Кэли-казначея (CP) в возрасте 16 лет. Он дает удивительно подробное объяснение односторонних функций, теории чисел и простых чисел и того, как они относятся к криптографии.
Что делает эту книгу даже более конкретно к вашему вопросу Сара попыталась реализовать новый алгоритм открытого ключа с использованием матрицы. это было намного быстрее, чем использование простых чисел, но было найдено отверстие петли, которое могло бы использовать его. Оказывается, ее алгоритм лучше использовать в качестве частного механизма шифрования. Книга является отличным свидетельством использования простых чисел для шифрования, поскольку она выдержала испытание временем и проблемы очень умных людей.
еще один ресурс для вас. Безопасность Сейчас! эпизод 30(~30-минутный подкаст, ссылка на стенограмму) рассказывает о проблемах криптографии, и объясняет, почему простые числа важны.
Я не математик или криптик, поэтому вот внешнее наблюдение в терминах непрофессионала (никаких причудливых уравнений, извините).
вся эта тема заполнена объяснениями о как простые числа используются в криптографии, трудно найти кого-либо в этой теме, объясняющей простым способом почему используются простые числа ... скорее всего, потому что все принимают это знание как должное.
только глядя на проблему извне можно создать но если они используют суммы двух простых чисел, почему бы не создать список всех возможных сумм, которые могут генерировать любые два простых числа?
на сайт список 455,042,511 простые числа, где высшие простые числа 9,987,500,000 (10 цифр).
Самый большой известный Прайм (по состоянию на февраль 2015 года) -2 в силу 257,885,161-1 что это 17,425,170 цифр.
этот это означает, что нет смысла вести список всех известных простых чисел и тем более всех их возможных сумм. Проще взять число и проверить, является ли оно простым.вычисление больших простых чисел само по себе является монументальной задачей, поэтому обратный расчета два простых числа, которые были умножены друг с другом, как криптографы, так и математики сказали бы достаточно сложно ... сегодня.
криптографические алгоритмы обычно полагаются для своей безопасности на наличие "сложной проблемы". Большинство современных алгоритмов, похоже, используют факторинг очень больших чисел в качестве своей сложной задачи - если вы умножаете два больших числа вместе, вычисление их факторов "сложно" (т. е. требует много времени). Если эти два числа являются простыми числами, то есть только один ответ, который делает его еще более трудным, а также гарантирует, что когда вы найдете ответ, он правильный, а не какой другой ответ, который просто дает тот же результат.
Я думаю, что важны в криптографии не сами простые числа, но это сложности на главная проблема факторизации
предположим, что у вас есть очень большое целое число, которое, как известно, является произведением двух простых чисел m и n, нелегко найти, что такое m и n. алгоритм, такой как RSA, зависит от этого факта.
кстати, есть публикации на алгоритме, который может "решить" эту проблему простой факторизации в допустимое время использования квантового компьютера. Таким образом, новые алгоритмы в криптографии больше не могут полагаться на эту "трудность" простой факторизации, когда квантовый компьютер приходит в город:)
потому что алгоритмы факторизации значительно ускоряются с каждым найденным фактором. Создание обоих закрытых ключей prime гарантирует, что первый найденный фактор также будет последним. В идеале оба закрытых ключа также будут почти равны по стоимости, так как только сила более слабого ключа имеет значение.
простые числа в основном используются в криптографии, поскольку она занимает значительное время при определении того, является ли данное число простым числом или нет. Для хакера, если какой-либо алгоритм занимает много времени, чтобы сломать код, он становится бесполезным для них
Comments