Криптография RSA в c # - PullRequest
4 голосов
/ 14 июня 2010

Предположим, алгоритм RSA создал закрытый ключ на двух машинах.Есть ли вероятность того, что оба ключа одинаковы?

Ответы [ 5 ]

3 голосов
/ 14 июня 2010

Короткий ответ: Нет. Теоретически это возможно, но даже если вы создаете ключ каждую секунду, вы вряд ли получите его дважды до того, как взорвется солнце.

2 голосов
/ 14 июня 2010

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

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

Это была именно та проблема, которая привела к перерыву в системе SSL в Netscape (~ 4.0, если память работает). В данном конкретном случае проблема заключалась в генерации сеансового ключа, но основная идея была та же - достаточное количество «случайных» битов, которые использовались, были на самом деле довольно предсказуемыми, поэтому злоумышленник, который знал источники битов может довольно быстро сгенерировать то же «случайное» число и, следовательно, тот же сеансовый ключ.

2 голосов
/ 14 июня 2010

Да. Вы слышали о принципе голубиного отверстия ?

1 голос
/ 14 июня 2010

да. но вероятность очень низкая

0 голосов
/ 10 июля 2010

В криптосистеме RSA с открытым ключом (n, e) закрытый ключ (n, d) создается так, что n = p * q, где p, q - большие N-битные простые числа, а ed - 1 может быть равномерно делится на общее (p - 1) (q - 1).

Чтобы сгенерировать один и тот же закрытый ключ, вам, по сути, нужно сгенерировать одинаковые p, q, e, так что это крайне малая вероятность.

...