Рейтинг:1

RSA key generation: why use lcm(p-1, q-1) instead of the totient ϕ(n)?

флаг jm

As far as I can see, generating a private key from two prime numbers p and q, having calculated n = pq, starts with calculating λ(n) = lcm(p-1, q-1). This is the detailed explanation given in the wikipedia article for RSA, it's also the implementation I've found in most Python cryptography libraries, and, searching through the openssl source code, it's also how they seem to do it, so I'd say this looks like the standard.

So my question is, why do some implementations appear to use ϕ(n) instead, which is simply (p-1)(q-1)? I understand that you can calculate λ(n) = ϕ(n) / gcd(p-1, q-1), so I suppose these two can be equal if p-1 and q-1 are coprime, but what's with the two different implementations?

This way to generate the "private modulo" is used for example in the somewhat popular python program rsatool, it's also mentioned in this popular article detailing how RSA keys are generated, but my problem is, taking the two same prime numbers p and q, these two methods will not generate the same private key, so assuming the former is the proper, standard way, where did this other one come from?

kelalaka avatar
флаг in
У вас может быть [более одного закрытого ключа для RSA] (https://crypto.stackexchange.com/q/87583/18298), и $\lambda$ всегда предоставляет наименьший $d$, поскольку $\lambda(n)| \phi(n)$ по определению. Наименьший = меньше вычислений.
fgrieu avatar
флаг ng
@kelalaka: сомнительно, что «меньше вычислений» является истинной причиной. Когда важна производительность, $d$ вообще не используется. И когда используется $d$, средняя разница, я думаю,
kelalaka avatar
флаг in
Да, очень маленький, и все же может дать небольшое преимущество во времени. Ваша ставка хороша.
dave_thompson_085 avatar
флаг cn
Дуп https://crypto.stackexchange.com/questions/1789 https://crypto.stackexchange.com/questions/12710 https://crypto.stackexchange.com/questions/29591 https://crypto.stackexchange.com/ вопросы/33676/ https://crypto.stackexchange.com/questions/54280/ https://crypto.stackexchange.com/questions/68873/ https://crypto.stackexchange.com/questions/70624/ и побочный вопрос или комментарий во многих других. Примечание для RSA p и q должны быть нечетными, поэтому p-1,q-1 не могут быть взаимно простыми, а лямбда не может равняться phi.
Рейтинг:3
флаг jm

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

Я предполагаю, что 1-й метод является просто стандартным, поскольку. Как указано в комментарии $\лямбда(п)$ всегда будет меньше или равно $\фи(п)$. В ЮАР, как указывает Дэйв Томпсонс, $\лямбда(n)\neq\phi(n)$. $\лямбда(п)$ возможно, приводит к более быстрым вычислениям (?), но что меня интересовало, так это то, откуда взялась эта 2-я версия, и оказывается, она взята из оригинальной статьи RSA.

fgrieu avatar
флаг ng
Да, ваша вторая версия (с $\varphi$ или $\Phi$ или $\phi$) является хронологически первой опубликованной. Обратите внимание, что другие (с $\lambda$) подразделяются на $e\,d\equiv1\pmod{\lambda(n)}$ с $0

Ответить или комментировать

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