Почему простые числа важны в криптографии?

одна вещь, которая всегда поражает меня как non-шифровальщиком: почему так важно использовать простые числа? Что делает их такими особенными в криптографии?

кто-нибудь простой короткое объяснение? (Я знаю, что есть много праймеров и что Прикладная криптография-это Библия, но, как сказано: я не ищу, чтобы реализовать свой собственный криптографический алгоритм, и материал, который я нашел, просто взорвал мой мозг - нет 10 страниц математических формул, пожалуйста :))

спасибо для всех ответы. Я принял тот, который сделал реальную концепцию наиболее ясной для меня.

14 ответов


самое основное и общее объяснение: криптография-это все о теория чисел, и все целые числа (кроме 0 и 1) состоят из простых чисел, поэтому вы много имеете дело с простыми числами в теории чисел.

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


простой? Ага.

Если вы умножите два больших простых числа, вы получите огромное не простое число только с двумя (большими) простыми факторами.

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

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


здесь очень простой и распространенный пример.

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


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


есть некоторые хорошие ресурсы для изучения крипто. Вот один:

страницы:

в наиболее часто используемом открытом ключе криптографическая система, изобретенная Роном Ривест, Ади Шамир и лен Адлеман в 1977, как государственные, так и частные ключи являются производными от пары больших простых чисел в соответствии с относительно простая математика формула. Теоретически, это может быть возможно получение закрытого ключа от открытого ключа работает формулу в обратном направлении. Но только произведение больших простых чисел public, и факторинг номеров этого размер в простые числа настолько трудно, что даже самых мощных суперкомпьютеров мир не может разрушить обычное. открытый ключ.

книга Брюса Шнайера Прикладная Криптография это другое. Я настоятельно рекомендую эту книгу; это забавное чтение.


важны не столько сами простые числа, сколько алгоритмы, которые работают с простыми числами. В частности, нахождение коэффициентов числа (любого числа).

Как вы знаете, любое число имеет по крайней мере два фактора. Простые числа обладают уникальным свойством в том, что они имеют ровно два фактора: 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 очень сложно.

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


Я бы предложил книги Математическое Путешествие В Коде. Книга имеет приятный приземленный вид, что удивительно, так как речь идет о криптографии. В книге резюмируется путешествие Сары Фланнери от изучения головоломок в детстве до создания алгоритма Кейли-казначея (CP) в возрасте 16 лет. Он дает удивительно подробное объяснение односторонних функций, теории чисел и простых чисел и того, как они связаны с криптографией.

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


еще один ресурс для вас. Безопасность Сейчас! эпизод 30(~30-минутный подкаст, ссылка на стенограмму) рассказывает о проблемах криптографии, и объясняет, почему простые числа важны.


Я не математик или криптик, так что вот внешнее наблюдение в терминах непрофессионала (никаких причудливых уравнений, извините).

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

только глядя на проблему извне, можно создать реакция вроде; но если они используют суммы двух простых чисел, почему бы не создать список всех возможных сумм, которые могут генерировать любые два простых числа?

на сайт список 455,042,511 простые числа, где высшие простые числа 9,987,500,000 (10 цифр).

Самый большой известный Прайм (по состоянию на февраль 2015 года) -2 к силе 257,885,161-1 что это 17,425,170 цифр.

этот это означает, что нет смысла вести список всех известных простых чисел и тем более всех их возможных сумм. Проще взять число и проверить, простое ли оно.

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


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


Я думаю, что в криптографии важны не сами простые числа, но это сложности of премьер-факторизации проблема

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

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


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


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