RU2279766C2 - Способ и устройство для хранения и восстановления криптографического секретного ключа - Google Patents
Способ и устройство для хранения и восстановления криптографического секретного ключа Download PDFInfo
- Publication number
- RU2279766C2 RU2279766C2 RU2003105700/09A RU2003105700A RU2279766C2 RU 2279766 C2 RU2279766 C2 RU 2279766C2 RU 2003105700/09 A RU2003105700/09 A RU 2003105700/09A RU 2003105700 A RU2003105700 A RU 2003105700A RU 2279766 C2 RU2279766 C2 RU 2279766C2
- Authority
- RU
- Russia
- Prior art keywords
- mod
- secret key
- processor
- calculate
- interacting
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S40/00—Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
- Y04S40/20—Information technology specific aspects, e.g. CAD, simulation, modelling, system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
- Mobile Radio Communication Systems (AREA)
- Refuse Collection And Transfer (AREA)
- Vending Machines For Individual Products (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Medical Preparation Storing Or Oral Administration Devices (AREA)
- Exchange Systems With Centralized Control (AREA)
- Lock And Its Accessories (AREA)
- Stored Programmes (AREA)
Abstract
Изобретение относится к криптографическим системам. Техническим результатом является создание способа и устройства для хранения и восстановления секретного ключа в криптографической системе посредством параметризации секретного ключа, при которой используется меньший объем памяти и обеспечивается более высокая эффективность вычислений. Технический результат достигается тем, что устройство для восстановления секретного ключа криптосистемы содержит процессор, объем энергонезависимой памяти, оперативно связанной с упомянутым процессором, и набор параметров секретного ключа, хранимый в упомянутом объеме энергонезависимой памяти с использованием меньшего объема памяти, чем для полного набора параметров, используя китайскую теорему об остатках (КТО) {p,q,dp,dq,v}, и обеспечивающий более высокую эффективность вычислений, чем минимальный набор параметров {p,q}, причем секретный ключ может быть восстановлен из упомянутого хранимого набора параметров секретного ключа. 5 н. и 64 з.п. ф-лы, 8 ил.
Description
1. Область техники
Настоящее изобретение в общем относится к криптографическим системам. В частности, изобретение относится к устройству и способу для хранения и восстановления секретного ключа в криптографической системе с открытым и секретным ключами.
2. Описание известного уровня техники
Одной из распространенных форм шифрования открытым ключом является алгоритм шифрования Ривеста-Шамира-Эдельмана (Rivest, Shamir, Adelman), сокращенно именуемый как RSA-кодирование. В RSA-кодировании используется открытый ключ, состоящий из открытого модуля n и открытого показателя степени е, и секретный ключ, состоящий из модуля n и секретного показателя степени d. Открытый модуль n представляет собой целое число, являющееся произведением двух различных простых множителей р и q, т.е. n=pq. Эти множители являются секретной информацией и не раскрываются владельцем секретного ключа. Открытый показатель степени е представляет собой целое число, которое является простым числом относительно значений (р-1) и (q-1). Секретный показатель степени d является целым числом, так что ed mod(p-1)=ed mod(q-1)=1.
Одним из применений RSA-кодирования является шифрование сообщений. Любое лицо может использовать открытый ключ для шифрования сообщения, которое сможет дешифровать только владелец данного секретного ключа. Пусть m будет сообщением, которое необходимо зашифровать, где m - целое число в интервале 0<m<n. Зашифрованное сообщение с вычисляется как с=mе mod n. Для декодирования зашифрованного сообщения владелец секретного ключа вычисляет m=cd mod n. Например, лицо А, желающее послать зашифрованное сообщение лицу В, зашифрует сообщение, получив открытый ключ лица В. Так как данное сообщение можно дешифровать только правильным секретным ключом лица В, который будет связан с его открытым ключом, данное сообщение может быть дешифровано только лицом В.
Другим применением RSA-кодирования является приложение подписи к сообщениям. Владелец секретного ключа может приложить к сообщению подпись, подлинность которой сможет проверить любое лицо, использующее данный открытый ключ. Пусть m будет сообщением, к которому следует приложить подпись, где m - целое число в интервале 0<m<n. Подпись s вычисляется как s=md mod n. Для проверки подлинности подписи любое лицо использует открытый ключ для вычисления m'=sе mod n. Если значение m' совпадает со значением m, значит данная подпись является действительной.
В основе защиты RSA-кодирования лежит предполагаемая сложность определения множителей открытого модуля. Т.е. считается очень трудным определить множители p и q для данного n, чтобы получить n=pq. Сложность проблемы разложения на множители возрастает с увеличением размера р и q. На практике каждый из множителей р и q состоит из сотен или тысяч двоичных чисел (бит), и поскольку n - произведение р и q, оно также состоит из сотен или тысяч бит. Операция модульного возведения в степень, используемая в RSA, является дорогостоящей операцией с точки зрения вычислительных ресурсов. Сложность данной операции возрастает почти линейно с увеличением количества бит в показателе степени и квадратично с увеличением количества бит в модуле. К счастью, существуют некоторые известные методы, позволяющие снизить затраты вычислительных ресурсов.
Чтобы снизить затраты на операцию открытого ключа, принято выбирать малое число для открытого показателя степени. Это приемлемо, поскольку защита RSA-кодирования в основном не зависит от размера открытого показателя степени. Широко распространенным выбором открытого показателя степени является е=216+1; это значение, по-видимому, фактически становится стандартом для новых применений. Другими обычными вариантами выбора являются е=3 и е=17. При малом открытом показателе степени затраты вычислительных ресурсов на RSA-операцию открытого ключа относительно невелики. Иными словами, кодирование сообщения или проверка достоверности подписи относительно недороги.
К сожалению, секретный показатель степени d нельзя брать малым. Его значение нельзя выбирать свободно, оно должно удовлетворять условию ed mod(p-1)=ed mod(q-1)=1. Защита RSA-кодирования основана на больших, произвольно выбранных p и q. В результате d представляет собой целое число, размер которого сопоставим с размером открытого модуля n. Это требует относительно больших затрат вычислительных ресурсов на операцию секретного ключа. Иными словами, декодирование сообщения или создание подписи обходятся относительно дорого.
Затраты на операцию секретного ключа можно уменьшить, использовав китайскую теорему об остатках (КТО). Для КТО требуется вычислить несколько величин, а именно:
dp=d mod(p-1);
dq=d mod(q-1);
v, чтобы pv mod q=1.
Тогда операция секретного ключа y=gd mod n вычисляется следующим образом:
a=(g mod p)dp mod p;
b=(g mod q)dp mod q;
y=a+[(b-a)v mod q]p.
Если затраты на вычисление dp, dq и v незначительные, то затраты вычислительных ресурсов на вычисление операции секретного ключа с использованием КТО составят около четверти затрат на операцию секретного ключа без использования КТО. Это значительно уменьшает вычислительные затраты и делает операцию с использованием КТО желательной для многих применений.
К сожалению, затраты на вычисление dp, dq и v не всегда незначительные. Поэтому во многих приложениях значения dp, dq и v просто предварительно вычисляются и сохраняются вместе с множителями p и q как часть секретного ключа. Приложение, в котором сохраняется набор параметров {p,q,dp,dq,v}, может выполнять операцию секретного ключа с использованием КТО с наименьшими возможными затратами вычислительных ресурсов. Каждый из этих пяти параметров требует b бит памяти, где b - число бит в простом множителе модуля. Следовательно, общий объем памяти для секретного ключа составит 5b бит.
Однако в некоторых приложениях сохранение секретного ключа как {p,q,dp,dq,v} нежелательно из-за требующегося для этого объема памяти. Если вместо этого в данном приложении сохранить секретный ключ как {p,q}, то объем памяти для секретного ключа уменьшится от 5b бит до 2b бит, т.е. в 2,5 раза. Однако в данном приложении впоследствии потребуется вычислять dp, dq и v каждый раз при выполнении операции секретного ключа. Такие затраты вычислительных ресурсов могут быть нежелательными.
Примером приложения, для которого данные вопросы составляют проблему, является дешевая микропроцессорная карточка (смарт-карта), используемая для создания цифровых подписей. На этой карточке хранится набор секретных ключей RSA, каждый из которых используется для создания подписей для различных целей. Например, один ключ может использоваться для подписи покупок, совершенных по конкретной кредитной карточке; другой ключ можно использовать для подписи сообщений электронной почты; третий ключ можно использовать для подписи банковских сделок и т.д. В силу своей дешевизны микропроцессорная карточка имеет ограниченный объем памяти. Желательно, чтобы карточка могла хранить как можно больше секретных ключей в ограниченном объеме памяти. Более того, из-за своей дешевизны, микропроцессорная карточка имеет простой процессор с ограниченными вычислительными возможностями. Поскольку нежелательно, чтобы вычисление подписи занимало чрезмерное время, важно минимизировать вычислительные затраты на операцию секретного ключа RSA.
Другой проблемой, связанной с вычислением dp, dq и v, является защита. Обычным путем вычисления dp, dq и v из p и q является использование алгоритма Евклида или его известных вариантов. Алгоритм Евклида - это последовательность арифметических операций, которые можно использовать для решения проблемы "При данных х и z найти y, чтобы xy mod z=1''. Последовательность операций зависит от числовых значений операндов, т.е. изменение числовых значений y или z может вызвать изменение порядка арифметических операций, таких как умножение, вычитание и т.п. Эта зависимость может привести к тому, что хранение секретного ключа в приложении станет уязвимым для раскрытия злоумышленником, способным подобрать вводы данных в приложение, измеряя при этом доступные извне отклики, такие как потребление электрического тока, электромагнитные излучения и т.п. Такие попытки взлома могут успешно выполняться на реальных устройствах защиты как коммерческих, так и государственных. Для снижения уязвимости по отношению к таким попыткам взлома желательно, чтобы последовательность операций, используемых для вычисления dp, dq и v, не изменялась с изменением значений p и q.
В рассматриваемом примере дешевой микропроцессорной карточки эта карточка содержит арифметический сопроцессор, который ускоряет операции модульного возведения в степень, используемые в RSA. Во время операций с использованием секретного ключа модульное возведение в степень уязвимо для попыток взлома описанного выше типа. Для снижения уязвимости к таким попыткам взлома сопроцессор тщательно проектируют, чтобы гарантировать, что его последовательность операций не зависит от значений операндов. Однако, если микропроцессорная карточка также должна вычислять dp, dq и v во время RSA-операции с использованием секретного ключа, то вычисление dp, dq и v является дополнительным источником потенциальной уязвимости. Для уменьшения этой дополнительной уязвимости в вычислении dp, dq и v должна использоваться последовательность операций, которая не зависит от значений p и q. Так как p и q являются простыми числами, v можно вычислить с помощью модульного возведения в степень через операцию v=pq-2 mod q. Таким образом, микропроцессорная карточка может использовать сопроцессор для вычисления v, не вызывая уязвимости, связанной с вычислением v. Однако dp и dq невозможно вычислить с помощью модульного возведения в степень. Следовательно, необходима какая-то схема для вычисления dp и dq без повышения уязвимости.
Хотя предыдущее обсуждение было сконцентрировано на приложениях с использованием КТО, оно не охватывает все приложения. В некоторых приложениях операция с использованием секретного ключа выполняется без использования КТО, так как это более простая операция (хотя и более дорогая). В некоторых таких приложениях сохраняют свою важность проблемы, связанные с объемом памяти и защитой.
Самый прямой путь сохранения секретного ключа в приложении без использования КТО - это сохранить параметры {n,d}, где n - открытый модуль, а d - секретный показатель степени. При этом хранение секретного ключа может потребовать 4b бит.
Альтернативно, в приложении без использования КТО секретный ключ можно хранить просто как {p, q}, где p и q - простые множители n. При каждом выполнении операции секретного ключа n и d вычисляются из упомянутых хранимых значений p и q. При таком способе хранения секретный ключ требует 2b бита. В результате обеспечивается экономия в два раза по сравнению с хранением ключа как {n,d}. Вычисление n из p и q выполняется как одна операция умножения, поскольку n=pq. Это операция дешевле, чем модульное возведение в степень, и поскольку это одна операция, она не прибавляет уязвимости раскрытию p и q. Однако, как и для dp и dq в случае с использованием КТО, вычисление d из p и q может потребовать существенных затрат вычислительных ресурсов и повысить уязвимость защиты из-за вычислительной последовательности, которая изменяется в зависимости от значений p и q.
Таким образом, в основу настоящего изобретения положена задача обеспечения параметризации секретного ключа RSA для применений с использованием КТО, при которой используется меньший объем памяти, чем для полного набора параметров {p,q,dp,dq,v}, и обеспечивается более высокая эффективность вычислений, чем с минимальным набором параметров {p,q}.
Задачей настоящего изобретения также является обеспечить параметризацию секретного ключа RSA для приложений без использования КТО, при которой используется меньший объем памяти, чем для полного набора параметров {n,d}, и обеспечивается более высокая эффективность вычислений, чем с минимальным набором параметров {p,q}.
Задачей настоящего изобретения также является обеспечение такого средства для вычисления параметров dp и dq с использованием КТО и параметра d без использования КТО, при котором последовательность вычислений не зависит от значений простых множителей p и q, в целях снижения уязвимости к попыткам взлома защиты, использующих такую зависимость.
Краткое изложение сущности изобретения
Для решения этих и других задач известного уровня техники предложены устройство и способ, обеспечивающие схему хранения и восстановления криптографического секретного ключа, которая позволяет одновременно уменьшить необходимый объем памяти и повысить защиту. В частности, предложенная система обеспечивает средство для извлечения секретного ключа из упомянутых хранимых параметров, не использованное ранее, а также средство для вычисления определенных параметров с одновременным уменьшением уязвимости защиты.
Одним аспектом настоящего изобретения является замена параметров dp и dq с использованием КТО и параметра d без использования КТО на меньшие параметры kp, kq и k, соответственно. Значения kp, kq и k - это значения, которые удовлетворяют следующим зависимостям:
kp(p-1)mod e=1;
kq(q-1)mod e=1;
k(p-1)(q-1)mod e=1.
Каждое из значений kp, kq и k находится в интервале от 1 до (е-1), включительно. Т.е. каждое значение требует не больше бит, чем число бит, необходимое для хранения открытого показателя степени е. В широко распространенном случае е=216+1 каждое из значений kp, kq и k может храниться как 16-битное число (kp-1), (kq-1) или (k-1), соответственно.
В отличие от этого, каждое из значений dp и dq требует b бит памяти, а d требует 2b памяти, где b - число бит в простом множителе p или q. Типичное значение b равно 512, что соответствует открытому модулю, имеющему 1024 бит. В этом типичном случае каждое из значений dp и dq требует в 32 раза больший объем памяти, чем kp и kq, а d требует в 64 раза больший объем памяти, чем k.
В приложении с использованием КТО, в котором сохраняют kp и kq, можно восстанавливать dp и d посредством следующих вычислений:
dp=[1+(p-1)(e-kp)]/e;
dq=[1+(q-1)(e-kq)]/e.
В приложении без использования КТО, в котором сохраняют k, можно восстанавливать d посредством следующего вычисления:
d=[1+(p-1)(q-1)(e-k)]/e.
В каждом из этих вычислений "/" представляет деление на целое число; в каждом случае делимое является величиной, кратной делителю, поэтому остатка нет. Доказательство, что эти вычисления дают правильные результаты, будет приведено в конце данного описания.
Вычисления для dp, dq и d требуют от приложения выполнения деления на открытый показатель степени е. В некоторых приложениях это деление может представлять собой громоздкую или нежелательную операцию. Кроме того, если приложение применяет деление с использованием обычной длинной последовательности операций деления, то последовательность операций может зависеть от значений p и q, что делает секретный ключ уязвимым для попыток взлома защиты, использующих данную зависимость.
Чтобы исключить необходимость в этом делении, приложение с использованием КТО может восстановить dp и dq посредством следующих вычислений:
вычислить u, чтобы ue 2b=1;
dp=[1+(p-1)(e-kp)]u mod 2b;
dq=[1+(q-1)(e-kq)]u mod 2b.
Приложение без использования КТО может восстанавливать d без использования деления посредством следующего вычисления:
вычислить t, чтобы te mod 22b=1;
d=[1+(p-1)(q-1)(e-k)]t mod 22b.
Доказательство, что эти вычисления дают правильные результаты, будет приведено в конце настоящего описания.
Если временно проигнорировать вычисление u и t, то станет ясно, что вычисления для восстановления dp dq или d не требуют больших вычислительных затрат и не обуславливают уязвимость защиты. Каждое вычисление состоит из двух или трех умножений целых чисел, трех или четырех сложений/вычитаний целых чисел и операции "mod 2b" или "mod 22b". Операции умножения, сложения и вычитания подобны операциям, используемым для реализации модульного возведения в степень. В одном модульном возведении в степень используются тысячи таких операций, так что дополнительные затраты всего на несколько операций можно не принимать в расчет. Операция "mod 2b" является просто усечением до b бит, а операция "mod 22b" является усечением до 2b бит; их можно также не принимать в расчет. Эта последовательность операций не зависит от значений p или q, так что вычисления можно осуществлять без повышения уязвимости к попыткам взлома защиты, основанным на такой зависимости.
Обратившись теперь к вычислению u и t, можно легко заметить, что здесь нет проблемы защиты, поскольку в данном вычислении не используется секретный ключ, и оно не создает возможности для попытки получить секретный ключ, независимо от способа его реализации. Кроме того, данное вычисление не требует больших затрат по следующим причинам.
Во-первых, рассмотрим случай, когда открытый показатель степени е одинаков для всех секретных ключей. В этом случае u или t является фиксированной величиной, поэтому ее можно просто сохранить один раз для всех секретных ключей и извлекать при необходимости. Даже если представляющие интерес секретные ключи имеют разную длину, т.е. значение b изменяется в соответствии с данным секретным ключом, необходимо сохранить всего одно значение для u или t, которое соответствует самому большому значению b. Для значений b, отличных от максимального значения, сохраненное значение можно просто усечь, используя "mod 2b" для u или "mod 22b" для t. В распространенном случае e=216+1 даже не требуется сохранять u или t, любое из них можно получить посредством экономичных вычислений:
u=[1+(232-216)+(264-248)+(296-280)+(2128-2112)+...]mod 2b;
t=[1+(232-216)+(264-248)+(296-280)+(2128-2112)+...]mod 22b.
Подобные вычисления можно произвести и для других обычных выборов е, например е=3 или е=17.
Во-вторых, рассмотрим общий случай, когда для каждого открытого ключа используется различный произвольный открытый показатель степени е. В этом случае приложение должно вычислить u или t, используя универсальный алгоритм, который вычисляет мультипликативную инверсию числа относительно какого-то модуля, т.е. степень числа 2 (такую как 2b или 22b). Такие алгоритмы хорошо известны и просты в вычислениях. Во многих приложениях такой алгоритм уже применяется как часть операции модульного возведения в степень; в частности, многие приложения, которые используют умножение Монтгомери, являющееся популярным средством для реализации модульного возведения в степень, включают такой алгоритм. По сравнению с затратами на операцию модульного возведения в степень затраты вычислительных ресурсов на выполнение такого алгоритма обычно незначительны.
До сих пор обсуждение было сконцентрировано на том случае, когда открытый модуль n является произведением двух простых чисел p и q. Эта ситуация - обычная для RSA-кодирования. Однако RSA-кодирование можно обобщить до модуля, который является произведением j простых чисел, где j - целое число, j≥2. Такое обобщение описано в патенте США №5848159. Данное изобретение относится к обобщенной схеме. Например, рассмотрим приложение с использованием КТО с простыми множителями p1, p2...pj. Существует j случаев секретного показателя степени d, определенных как dj=d mod (pi-1) для i=1, 2,...,j. Чтобы применить данное изобретение, каждый dj заменяют на kj, когда сохраняется ключ, где kj - такое значение, при котором kj(pi-1)mod e=1. Чтобы восстановить di из ki, вычисляют di=1[1+(pi-1)(e-ki)]/e или di=[1+(1+(pi-1)(e-ki)]ui mod 2bi, где bi - целое число, при котором pi<2bi, и ui - значение, которое удовлетворяет eui mod 2bi=1.
Доказательство формул для dp, dq и d. Сначала докажем, что формула
дает правильное значение для dp, показав, что edp mod(p-1)=1.
Пусть a=1+(p-1)(e-kp). Прежде всего надо показать, что a является кратным e, чтобы операция деления в формуле (1) давала целую величину. По определению, kp(p-1) mod e=1. Следовательно, kp(p-1)-1 является кратным e. Так как a=e(p-1)-[kp(p-1)-1], следовательно, а является кратным e.
Теперь пусть dp будет, как в (1). Тогда edp mod(p-1)=a mod (p-1)=1. Это доказывает формулу (1).
Теперь докажем, что формула
дает правильное значение для dp, показав, что edp mod(p-1)=1.
Снова пусть a=1+(p-1)(e-kp). Ранее было показано, что a является кратным e, поэтому мы можем записать a=ce, где с - целое число. Так как 0≤(p-1)<2b и 0≤(e-kp)≤e, следовательно, 0<a<e2b, значит, 0<c<2b. Теперь пусть dp будет, как в формуле (2). Тогда
edp mod(p-1)
=e[au mod 2b]mod(p-1)
=e[cue mod 2b]mod(p-1)
=e[c mod 2b]mod(p-1)
=ec mod(p-1)
=a mod(p-1)
=1.
Это доказывает формулу (2).
Доказательства формул
идентичны доказательствам формул (1) и (2), при этом dq заменяет dp, kq заменяет kp, и q заменяет p.
Доказательства формул
подобны доказательствам формул (1) и (2). Аргументы для формул (5) и (6) идентичны аргументам для формул (1) и (2), соответственно, при этом d заменяет dp, k заменяет kp, (p-1)(q-1) заменяет (p-1) и 22b заменяет 2b. Вывод аргумента в каждом случае состоит в том, что ed mod(p-1)(q-1)=1. Из этого следует, что ed mod(p-1)=ed mod(q-1)=1.
Согласно первому аспекту изобретения предложено устройство для восстановления секретного ключа криптосистемы, содержащее процессор, объем энергонезависимой памяти, оперативно подключенной к процессору, и набор параметров секретного ключа, хранимый в объеме энергонезависимой памяти с использованием меньшего объема памяти, чем для полного набора параметров {p,q,dp,dq,v}, и обеспечивающий более высокую эффективность вычислений, чем с минимальным набором параметров {p,q}, причем секретный ключ может быть восстановлен из набора хранимых параметров секретного ключа.
Согласно другому аспекту изобретения предложен способ восстановления секретного ключа, заключающийся в том, что сохраняют параметры секретного ключа в объеме памяти, используют меньший объем памяти для параметров секретного ключа, чем для полного набора параметров {n,d}, и обеспечивают более высокую эффективность вычислений, чем с минимальным набором параметров {p,q}.
Краткое описание чертежей
Фиг.1 схематически изображает вариант выполнения криптосистемы согласно настоящему изобретению;
фиг.2 изображает алгоритм первого примерного варианта осуществления настоящего изобретения;
фиг.3 изображает алгоритм второго примерного варианта осуществления настоящего изобретения;
фиг.4 изображает алгоритм третьего примерного варианта осуществления настоящего изобретения;
фиг.5 изображает алгоритм четвертого примерного варианта осуществления настоящего изобретения;
фиг.6 изображает алгоритм пятого примерного варианта осуществления настоящего изобретения;
фиг.7 изображает алгоритм шестого примерного варианта воплощения настоящего изобретения;
фиг.8 изображает алгоритм седьмого примерного варианта воплощения настоящего изобретения.
Подробное описание изобретения
Специалистам будет понятно, что представленное ниже описание имеет только иллюстративный и ни в коем случае не ограничительный характер. На основании представленного описания специалисты легко смогут сами предложить другие варианты осуществления изобретения.
На фиг.1 изображена криптосистема 10, в которой могут быть реализованы преимущества настоящего изобретения. Криптосистема 10 осуществляет приложение подписи и декодирование сообщений, поступающих в нее через порт 12 ввода/вывода. Криптосистема 10 использует RSA-кодирование для приложения подписи и декодирования. Криптосистема 10 содержит процессор 14, который управляет всеми ее операциями. Криптосистема 10 содержит арифметический сопроцессор (АСП) 16, который облегчает вычисления, используемые в RSA-кодировании при приложении подписи и декодировании. Секретный ключ, используемый для приложения подписи и декодирования, хранится в энергонезависимом запоминающем устройстве 18 в криптосистеме 10.
Криптосистема 10 выполнена с возможностью хранения набора секретных ключей в энергонезависимом запоминающем устройстве 18 и выбора секретного ключа для использования в целях конкретного приложения подписи или декодирования в соответствии с командами, введенными в нее через порт 12 ввода/вывода. Криптосистема 10 способна вычислять открытый ключ, который соответствует любому секретному ключу, хранимому в энергонезависимом запоминающем устройстве 18, и передавать открытый ключ во внешнее устройство 20 через порт 12 ввода/вывода.
Криптосистема 10 выполнена с возможностью формирования секретных ключей и их сохранения в энергонезависимом запоминающем устройстве 18. При формировании секретного ключа криптосистема использует генератор случайных чисел (ГСЧ) 22, чтобы обеспечить произвольный выбор простых множителей p и q секретного ключа. ГСЧ 22 обеспечивает произвольное начальное число, которое подается в алгоритм, формирующий p и q. При сохранении секретного ключа криптосистема 10 может вместо сохранения p и q сохранить начальное число и восстанавливать значения p и q посредством применения алгоритма к начальному числу каждый раз, когда данный секретный ключ используется для приложения подписи или декодирования.
Криптосистема 10 также способна принимать секретные ключи, передаваемые в нее внешними устройствами 20, через порт 12 ввода/вывода и сохранять секретные ключи в энергонезависимом запоминающем устройстве 18. Переданный извне секретный ключ может быть сам по себе зашифрован внешним устройством с использованием открытого ключа, который соответствует одному из секретных ключей, уже присутствующих в энергонезависимом запоминающем устройстве 18 криптосистемы 10. В таком случае криптосистема 10 дешифрует зашифрованный секретный ключ, используя секретный ключ, уже имеющийся в энергонезависимом запоминающем устройстве 18, а затем сохраняет дешифрованный секретный ключ в энергонезависимом запоминающем устройстве 18.
Независимо от того, формируется ли секретный ключ криптосистемой 10 или подается внешним устройством 20, криптосистема 10 способна использовать настоящее изобретение для уменьшения объема энергонезависимого запоминающего устройства 18, необходимого для хранения секретного ключа, и быстрого восстановления секретного ключа без увеличения уязвимости защиты. Криптосистема 10 имеет множество соответствующих вариантов применения изобретения, обеспечивающего компромисс между объемом памяти и скоростью восстановления.
В первом примере, проиллюстрированном на фиг.2, сначала сохраняют параметры секретного ключа как {p,q,kp,kq,v}, где p и q - простые множители открытого модуля; v - значение, удовлетворяющее pv mod q=1; kp - значение, удовлетворяющее kp(p-1)mod e=1, где e - открытый показатель степени и kq - значение, удовлетворяющее kq(q-1)mod e=1. Для восстановления секретного ключа в обычной форме с использованием КТО {p,q,dp,dq,v}, где dp=d mod(p-1), dq=d mod(q-1) и d - секретный показатель степени, вычисляют dp=[1+(p-1)(e-kp)]u mod 2b, dq=[1+(q-1)(e-kq)]u mod 2b, где b - целое число, так что p<2b и q<2b, и u - значение, удовлетворяющее ue mod 2b=1.
Во втором примере, проиллюстрированном на фиг.3, сначала сохраняют набор параметров секретного ключа как {p,q,kp,kq,v}, где p,q,kp и kq - как в первом примере. Для восстановления секретного ключа сначала вычисляют значение v, удовлетворяющее pv mod q=1. Затем переходят к использованию {p,q,kp,kq,v}, как в первом примере.
В третьем примере, проиллюстрированном на фиг.4, сначала сохраняют параметры секретного ключа как {начальное число, kp,kq,v}, где начальное число - ввод в алгоритм, который формирует простые множители p и q открытого модуля; и kp kq и v - как в первом примере. Для восстановления секретного ключа сначала применяют алгоритм к начальному числу для восстановления значений p и q. Затем переходят к использованию {p,q,kp,kq,v} как в первом примере. Известно множество алгоритмов для начального числа. См., например, алгоритмы, которые формируют простые числа произвольного начального числа, в Приложении 2 документа [FIPS186] Департамента торговли США /Национального института стандартов и технологии "Стандарт цифровой подписи", FIPS PUB 186-2, 27 января 2000 г.
В четвертом примере, проиллюстрированном на фиг.5, сначала сохраняют параметры секретного ключа как {начальное число, kp,kq}, где начальное число, kp,kq - как в третьем примере. Для восстановления секретного ключа сначала применяют алгоритм к начальному числу для восстановления значений p и q. Затем переходят к использованию {p,q,kp,kq}, как во втором примере.
В альтернативном варианте сначала сохраняют параметры секретного ключа, используя любые форматы, описанные в приведенных выше четырех примерах. При восстановлении секретного ключа вместо использования вычислений для dp и dq, описанных в предыдущих примерах, вычисляют dp=[1+(p-1)(e-kp)]/e и dq=[1+(q-1)(e-kq)]/e. Также, в другой альтернативе предыдущих примеров вместо сохранения kp и kq, их можно вычислить из p, q и e. Каждое из них можно вычислить с помощью алгоритма Евклида или его известного варианта, хотя это может обусловить уязвимость защиты, так как последовательность операций зависит от p и q. Альтернативно, в случае, когда е - простое число, как в распространенном значении e=216+1, каждый параметр можно вычислить с использованием модульного возведения в степень, используя формулы kp=(p-1)e-2mod e и kq=(q-1)e-2mod e; что не приводит к увеличению уязвимости защиты, потому что последовательность операций можно сделать независимой от p и q. Так как е - малое число, затраты вычислительных ресурсов на kp и kq часто пренебрежимо малы по сравнению с затратами на RSA-операцию секретного ключа.
В пятом примере, проиллюстрированном на фиг.6, сначала сохраняют параметры секретного ключа как {p,q,k}, где p и q - простые множители открытого модуля, а k - значение, удовлетворяющее k(p-1)(q-1)mod e=1, где e - открытый показатель степени. Для восстановления секретного ключа в обычной форме {n,d} без использования КТО, где n - открытый модуль, а d - секретный показатель степени, вычисляют n=pq и d=[1+(p-1)(q-1)]t mod 22b, где b - целое число, так что p<2b и q<2b, и t - значение, удовлетворяющее te mod 22b=1.
В шестом примере, проиллюстрированном на фиг.7, сначала сохраняют параметры секретного ключа, используя формат пятого примера. При восстановлении секретного ключа вместо использования вычисления d, описанного в пятом примере, вычисляют d=[1+(p-1)(q-1)]/e.
В седьмом примере, проиллюстрированном на фиг.8, сначала сохраняют параметры секретного ключа, используя формат пятого примера. При восстановлении секретного ключа сначала вычисляют секретный показатель степени d, используя вычисление по любому из предыдущих двух (пятого или шестого) примеров. Затем для восстановления секретного ключа в обычном формате с использованием КТО {p,q,dp,dq,v} вычисляют dp=d mod(p-1) и dq=d mod(q-1) и вычисляют значение v, удовлетворяющее pv mod q=1.
Несмотря на то, что выше были описаны и проиллюстрированы варианты осуществления и применения изобретения, специалистам будет понятно, что возможны и другие модификации, не выходящие за пределы раскрытого изобретательского замысла. Поэтому настоящее изобретение ограничено только прилагаемой формулой изобретения.
Claims (69)
1. Устройство для восстановления секретного ключа криптосистемы, содержащее процессор, энергонезависимую память, оперативно связанную с упомянутым процессором, и набор параметров секретного ключа, хранимый в упомянутой энергонезависимой памяти, причем секретный ключ может быть восстановлен из упомянутого хранимого набора параметров секретного ключа, при этом упомянутый набор параметров секретного ключа содержит параметр kp, причем упомянутый параметр kp получен из kp(p-1)mod e=1, где р - простой множитель открытого модуля, е - заданный открытый показатель степени.
2. Устройство по п.1, отличающееся тем, что упомянутый набор параметров секретного ключа определен параметрами {р, q, kp, kq, v}, где q - заданный простой множитель открытого модуля, kq получен из kq(q-1)mod e=1 и v получен из pv mod q=1.
3. Устройство по п.2, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]u mod 2b, вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]u mod 2b, и где b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и ue mod 2b=1.
4. Устройство по п.3, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров {р, q, dp, dq, v} секретного ключа из упомянутых хранимых и вычисленных значений.
5. Устройство по п.2, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]/e, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]/e.
6. Устройство по п.5, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
7. Устройство по п.1, отличающееся тем, что упомянутый набор параметров секретного ключа определен параметрами {р, q, kp, kq}, где q - заданный простой множитель открытого модуля и kq получен из kq(q-1)mod е=1.
8. Устройство по п.7, отличающееся тем, что дополнительно содержит вычислитель v, взаимодействующий с процессором и выполненный с возможностью вычисления v из pv mod q=1.
9. Устройство по п.8, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]u mod 2b, вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)u mod 2b, и где b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и ue mod 2b=1.
10. Устройство по п.9, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа (р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
11. Устройство по п.8, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]/e, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]/e.
12. Устройство по п.11, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
13. Устройство по п.1, отличающееся тем, что упомянутый набор параметров секретного ключа определен параметрами {начальное число, kp, kq, v}, где kq получен из kq(q-1)mod е=1 и v получен из pv mod q=1, a начальное число является значением, полученным из генератора случайных чисел.
14. Устройство по п.13, отличающееся тем, что дополнительно содержит вычислитель р, взаимодействующий с процессором и выполненный с возможностью вычисления р из упомянутого начального числа, и вычислитель q, взаимодействующий с процессором и выполненный с возможностью вычисления q из упомянутого начального числа.
15. Устройство по п.14, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)u mod 2b, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)u mod 2b, и где b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и ue mod 2b=1.
16. Устройство по п.15, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
17. Устройство по п.14, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]/e, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]/e.
18. Устройство по п.17, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
19. Устройство по п.1, отличающееся тем, что упомянутый набор параметров секретного ключа определен параметрами {начальное число, kp, kq}, где kq получен из kq(q-1)mod e=1, а начальное число является значением, полученным из генератора случайных чисел.
20. Устройство по п.19, отличающееся тем, что дополнительно содержит вычислитель р, взаимодействующий с процессором и выполненный с возможностью вычисления р из упомянутого начального числа, и вычислитель q, взаимодействующий с процессором и выполненный с возможностью вычисления q из упомянутого начального числа.
21. Устройство по п.20, отличающееся тем, что дополнительно содержит вычислитель v, взаимодействующий с процессором и выполненный с возможностью вычисления v из pv mod q=1.
22. Устройство по п.21, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)u mod 2b, вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)u mod 2b, и где b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и ue mod 2b=1.
23. Устройство по п.22, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
24. Устройство по п.21, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]/e, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]/e.
25. Устройство по п.24, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
26. Устройство для восстановления секретного ключа криптосистемы, содержащее процессор, энергонезависимую память, оперативно связанную с процессором, и набор параметров секретного ключа, хранимый в энергонезависимой памяти, при этом устройство для восстановления секретного ключа выполнено с возможностью восстановления секретного ключа из упомянутого хранимого набора параметров секретного ключа с использованием уравнения kp(p-1)mod е=1, где kp - параметр секретного ключа, р - простой множитель открытого модуля, е-заданный открытый показатель степени.
27. Устройство по п.26, отличающееся тем, что упомянутый набор параметров секретного ключа определен параметрами {р, q, v}, где q - заданный простой множитель открытого модуля, и v получен из pv mod q=1.
28. Устройство по п.27, отличающееся тем, что дополнительно содержит вычислитель kp, взаимодействующий с процессором и выполненный с возможностью вычисления kp из kp(p-1)mod e=1, вычислитель kq, взаимодействующий с процессором и выполненный с возможностью вычисления kq из kq(q-1)mod e=1.
29. Устройство по п.28, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]u mod 2b, вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]u mod 2b, и где b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и ue mod 2b=1.
30. Устройство по п.29, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
31. Устройство по п.28, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]/e, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]/e.
32. Устройство по п.26, отличающееся тем, что упомянутый набор параметров секретного ключа определен параметрами {р, q}, где q - заданный простой множитель открытого модуля.
33. Устройство по п.32, отличающееся тем, что дополнительно содержит вычислитель kp, взаимодействующий с процессором и выполненный с возможностью вычисления kp из kp(p-1)mod e=1, и вычислитель kq, взаимодействующий с процессором и выполненный с возможностью вычисления kq из kq(q-1)mod e=1.
34. Устройство по п.33, отличающееся тем, что дополнительно содержит вычислитель v, взаимодействующий с процессором и выполненный с возможностью вычисления v из pv mod q=1.
35. Устройство по п.34, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]u mod 2b, вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]u mod 2b, и где b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и ue mod 2b=1.
36. Устройство по п.35, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
37. Устройство по п.34, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]/e, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]/e.
38. Устройство по п.37, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
39. Устройство по п.26, отличающееся тем, что упомянутый набор параметров секретного ключа определен параметрами {начальное число, v}, где v получен из pv mod e=1, а начальное число является значением, полученным из генератора случайных чисел.
40. Устройство по п.39, отличающееся тем, что дополнительно содержит вычислитель р, взаимодействующий с процессором и выполненный с возможностью вычисления р из упомянутого начального числа, и вычислитель q, взаимодействующий с процессором и выполненный с возможностью вычисления q из упомянутого начального числа.
41. Устройство по п.40, отличающееся тем, что дополнительно содержит вычислитель kp, взаимодействующий с процессором и выполненный с возможностью вычисления kp из kp(p-1)mod e=1, и вычислитель kq, взаимодействующий с процессором и выполненный с возможностью вычисления kq из kq(q-1)mod e=1.
42. Устройство по п.41, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]u mod 2, вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]u mod 2b, и где b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и ue mod 2b=1.
43. Устройство по п.42, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
44. Устройство по п.41, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]/e, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]/e.
45. Устройство по п.44, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
46. Устройство по п.26, отличающееся тем, что упомянутый набор параметров секретного ключа определен параметрами {начальное число}, где начальное число является значением, полученным из генератора случайных чисел.
47. Устройство по п.46, отличающееся тем, что дополнительно содержит вычислитель р, взаимодействующий с процессором и выполненный с возможностью вычисления р из упомянутого начального числа, и вычислитель q, взаимодействующий с процессором и выполненный с возможностью вычисления q из упомянутого начального числа.
48. Устройство по п.47, отличающееся тем, что дополнительно содержит вычислитель kp, взаимодействующий с процессором и выполненный с возможностью вычисления kp из kp(p-1)mod e=1, вычислитель kq, взаимодействующий с процессором и выполненный с возможностью вычисления kq из kq(q-1)mod e=1.
49. Устройство по п.48, отличающееся тем, что дополнительно содержит вычислитель v, взаимодействующий с процессором и выполненный с возможностью вычисления v из pv mod q=1.
50. Устройство по п.49, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]u mod 2b, вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]u mod 2b, и где b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и ue mod 2b=1.
51. Устройство по п.50, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
52. Устройство по п.49, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=[1+(p-1)(e-kp)]/e, и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=[1+(q-1)(e-kq)]/e.
53. Устройство по п.52, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
54. Устройство для восстановления секретного ключа криптосистемы, содержащее процессор, энергонезависимую память, оперативно связанную с процессором, и набор параметров секретного ключа, хранимый в энергонезависимой памяти, при этом упомянутый набор параметров секретного ключа содержит параметр k, причем упомянутый параметр k получен из k(p-1)(q-1)mod e=1, где р и q - заданные простые множители открытого модуля, е - заданный открытый показатель степени.
55. Устройство по п.54, отличающееся тем, что упомянутый набор параметров секретного ключа определяется параметрами {р, q, k}.
56. Устройство по п.55, отличающееся тем, что дополнительно содержит вычислитель n, взаимодействующий с процессором и выполненный с возможностью вычисления n из n=pq.
57. Устройство по п.56, отличающееся тем, что дополнительно содержит вычислитель d, взаимодействующий с процессором и выполненный с возможностью вычисления d из d=[b+(p-b)(q-b)]t mod 22b, где te mod 22b=1 и b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b.
58. Устройство по п.57, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {n, d} из упомянутых хранимых и вычисленных значений.
59. Устройство по п.58, отличающееся тем, что дополнительно содержит вычислитель d, взаимодействующий с процессором и выполненный с возможностью вычисления d из d=[b+(p-b)(q-b)]/e.
60. Устройство по п.59, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {n, d} из упомянутых хранимых и вычисленных значений.
61. Устройство по п.57, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=d mod (р-1), вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=d mod (q-1).
62. Устройство по п.61, отличающееся тем, что дополнительно содержит вычислитель v, взаимодействующий с процессором и выполненный с возможностью вычисления v из pv mod q=1.
63. Устройство по п.62, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
64. Устройство по п.59, отличающееся тем, что дополнительно содержит вычислитель dp, взаимодействующий с процессором и выполненный с возможностью вычисления dp из dp=d mod(p-1), и вычислитель dq, взаимодействующий с процессором и выполненный с возможностью вычисления dq из dq=d mod(q-1).
65. Устройство по п.64, отличающееся тем, что дополнительно содержит вычислитель v, взаимодействующий с процессором и выполненный с возможностью вычисления v из pv mod q=1.
66. Устройство по п.65, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров секретного ключа {р, q, dp, dq, v} из упомянутых хранимых и вычисленных значений.
67. Способ восстановления секретного ключа, заключающийся в том, что сохраняют параметры секретного ключа в памяти, при этом упомянутый набор параметров секретного ключа содержит параметр kp, причем упомянутый параметр kp получен из kp(p-1)mod е=1, где р - простой множитель открытого модуля, е - заданный открытый показатель степени, и восстанавливают секретный ключ путем вычисления dp и dq, причем dp вычисляется с использованием dp=[1+(p-1)(e-kp)]u mod 2b или dp=[1+(p-1)(e-kp)]/e, и dq вычисляется с использованием dq=[1+(q-1)(e-kq)]u mod 2b или dq=[1+(q-1)(e-kq)]/е, где q - простой множитель открытого модуля, kq получен из kq(q-1)mod e=1, v получен из pv mod q=1, b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b, и и, является значением, удовлетворяющим ue mod 2b=1.
68. Способ восстановления секретного ключа, заключающийся в том, что сохраняют параметры секретного ключа в памяти, при этом упомянутый набор параметров секретного ключа содержит параметр k, причем упомянутый параметр k получен из k(p-1)(q-1)mod е=1, где р и q - заданные простые множители открытого модуля, е - заданный открытый показатель степени, и восстанавливают секретный ключ путем вычисления n=pq и d, причем d вычисляется с использованием d=[1+(p-1)(q-1)]t mod2b или d=[1+(p-1)(q-1)]/e, где t - значение, удовлетворяющее te mod 22b=1, и b - целое число такое, что р меньше, чем 2b, и q меньше, чем 2b.
69. Устройство по п.31, отличающееся тем, что дополнительно содержит блок сбора параметров секретного ключа для сбора параметров {р, q, dp, dq, v} секретного ключа из упомянутых хранимых и вычисленных значений.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/627,927 US6959091B1 (en) | 2000-07-28 | 2000-07-28 | Cryptography private key storage and recovery method and apparatus |
US09/627,927 | 2000-07-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2003105700A RU2003105700A (ru) | 2004-06-10 |
RU2279766C2 true RU2279766C2 (ru) | 2006-07-10 |
Family
ID=24516709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2003105700/09A RU2279766C2 (ru) | 2000-07-28 | 2001-07-26 | Способ и устройство для хранения и восстановления криптографического секретного ключа |
Country Status (17)
Country | Link |
---|---|
US (1) | US6959091B1 (ru) |
EP (1) | EP1305907B1 (ru) |
JP (1) | JP2004505548A (ru) |
KR (1) | KR100737667B1 (ru) |
CN (1) | CN1314223C (ru) |
AT (1) | ATE320124T1 (ru) |
AU (1) | AU2001284673A1 (ru) |
CA (1) | CA2417520A1 (ru) |
CY (1) | CY1105328T1 (ru) |
DE (1) | DE60117813T2 (ru) |
DK (1) | DK1305907T3 (ru) |
ES (1) | ES2255568T3 (ru) |
HK (1) | HK1062510A1 (ru) |
NO (1) | NO20030415L (ru) |
PT (1) | PT1305907E (ru) |
RU (1) | RU2279766C2 (ru) |
WO (1) | WO2002011360A2 (ru) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6959091B1 (en) * | 2000-07-28 | 2005-10-25 | Atmel Corporation | Cryptography private key storage and recovery method and apparatus |
FR2841411B1 (fr) * | 2002-06-19 | 2004-10-29 | Gemplus Card Int | Procede de generation de cles electroniques pour procede de crytographie a cle publique et objet portatif securise mettant en oeuvre le procede |
EP1540880B1 (de) * | 2002-09-11 | 2006-03-08 | Giesecke & Devrient GmbH | Geschützte kryptographische berechnung |
US7634659B2 (en) * | 2002-09-20 | 2009-12-15 | Cable Television Laboratories, Inc. | Roaming hardware paired encryption key generation |
EP1920324A1 (en) | 2005-08-19 | 2008-05-14 | Nxp B.V. | Circuit arrangement for and method of performing an inversion operation in a cryptographic calculation |
CN101421972B (zh) * | 2006-04-12 | 2011-06-08 | 艾利森电话股份有限公司 | 远程通信网络中的数据包压缩及加密方法、节点与装置 |
RU2471300C2 (ru) * | 2007-02-27 | 2012-12-27 | Томсон Лайсенсинг | Способ и устройство генерации сжатого rsa модуля |
EP1998491A1 (en) * | 2007-05-31 | 2008-12-03 | Thomson Licensing | Method for calculating compressed RSA moduli |
TWI350454B (en) * | 2007-12-10 | 2011-10-11 | Phison Electronics Corp | Anti-attacking method for private key, controller and storage device executing the same |
US9444622B2 (en) * | 2008-09-15 | 2016-09-13 | Hewlett Packard Enterprise Development Lp | Computing platform with system key |
JPWO2011040023A1 (ja) * | 2009-09-29 | 2013-02-21 | パナソニック株式会社 | 暗号化装置、復号化装置、暗号化方法、復号化方法、および暗号化復号化システム |
CN104506506B (zh) * | 2014-12-15 | 2017-12-29 | 齐宇庆 | 一种电子信息安全存储系统及存储方法 |
FR3088452B1 (fr) * | 2018-11-08 | 2023-01-06 | Idemia France | Procede de verification d'integrite d'une paire de cles cryptographiques et dispositif cryptographique |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848159A (en) | 1996-12-09 | 1998-12-08 | Tandem Computers, Incorporated | Public key cryptographic apparatus and method |
US6154541A (en) * | 1997-01-14 | 2000-11-28 | Zhang; Jinglong F | Method and apparatus for a robust high-speed cryptosystem |
FR2759806B1 (fr) * | 1997-02-19 | 1999-04-23 | Gemplus Card Int | Systeme cryptographique comprenant un systeme de chiffrement et dechiffrement et un systeme de sequestre de cles, et les appareils et dispositifs associes |
JPH1127253A (ja) * | 1997-07-07 | 1999-01-29 | Hitachi Ltd | 鍵回復システム、鍵回復装置、鍵回復プログラムを記憶した記憶媒体、および鍵回復方法 |
US6708273B1 (en) * | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
US6081598A (en) * | 1997-10-20 | 2000-06-27 | Microsoft Corporation | Cryptographic system and method with fast decryption |
US6959091B1 (en) * | 2000-07-28 | 2005-10-25 | Atmel Corporation | Cryptography private key storage and recovery method and apparatus |
-
2000
- 2000-07-28 US US09/627,927 patent/US6959091B1/en not_active Expired - Lifetime
-
2001
- 2001-07-26 DK DK01963747T patent/DK1305907T3/da active
- 2001-07-26 DE DE60117813T patent/DE60117813T2/de not_active Expired - Lifetime
- 2001-07-26 EP EP01963747A patent/EP1305907B1/en not_active Expired - Lifetime
- 2001-07-26 ES ES01963747T patent/ES2255568T3/es not_active Expired - Lifetime
- 2001-07-26 CN CNB01816482XA patent/CN1314223C/zh not_active Expired - Fee Related
- 2001-07-26 WO PCT/US2001/023676 patent/WO2002011360A2/en active IP Right Grant
- 2001-07-26 RU RU2003105700/09A patent/RU2279766C2/ru not_active IP Right Cessation
- 2001-07-26 CA CA002417520A patent/CA2417520A1/en not_active Abandoned
- 2001-07-26 PT PT01963747T patent/PT1305907E/pt unknown
- 2001-07-26 AU AU2001284673A patent/AU2001284673A1/en not_active Abandoned
- 2001-07-26 JP JP2002515768A patent/JP2004505548A/ja not_active Abandoned
- 2001-07-26 AT AT01963747T patent/ATE320124T1/de not_active IP Right Cessation
- 2001-07-26 KR KR1020037001270A patent/KR100737667B1/ko not_active IP Right Cessation
-
2003
- 2003-01-27 NO NO20030415A patent/NO20030415L/no not_active Application Discontinuation
-
2004
- 2004-06-30 HK HK04104697A patent/HK1062510A1/xx not_active IP Right Cessation
-
2006
- 2006-04-13 CY CY20061100522T patent/CY1105328T1/el unknown
Non-Patent Citations (1)
Title |
---|
СНАЕ HOON LIM, PIL JOONG LEE, Sparse RSA Secret Keys and Their Generation, Proc. of 3 rd annual workshop on selected areas in cryptography, August 1996, Queen's University, Ontario, стр.117-131. MICHAEL J. WIENER, Cryptanalysis of Short RSA Secret Exponents, IEEE Transactions on information theory, v.36 №3, May 1990, стр.553-558. * |
Also Published As
Publication number | Publication date |
---|---|
EP1305907B1 (en) | 2006-03-08 |
JP2004505548A (ja) | 2004-02-19 |
NO20030415L (no) | 2003-03-28 |
AU2001284673A1 (en) | 2002-02-13 |
DE60117813T2 (de) | 2006-10-05 |
KR100737667B1 (ko) | 2007-07-09 |
WO2002011360A2 (en) | 2002-02-07 |
WO2002011360A3 (en) | 2002-06-13 |
ATE320124T1 (de) | 2006-03-15 |
CN1466830A (zh) | 2004-01-07 |
US6959091B1 (en) | 2005-10-25 |
NO20030415D0 (no) | 2003-01-27 |
ES2255568T3 (es) | 2006-07-01 |
PT1305907E (pt) | 2006-07-31 |
CY1105328T1 (el) | 2010-03-03 |
CA2417520A1 (en) | 2002-02-07 |
DK1305907T3 (da) | 2006-06-26 |
HK1062510A1 (en) | 2004-11-05 |
DE60117813D1 (de) | 2006-05-04 |
CN1314223C (zh) | 2007-05-02 |
EP1305907A2 (en) | 2003-05-02 |
KR20030075146A (ko) | 2003-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6141420A (en) | Elliptic curve encryption systems | |
JP4137385B2 (ja) | 公開鍵および秘密鍵による暗号化方法 | |
KR20000071078A (ko) | 유한 필드상의 이산 대수 암호시스템의 원분 다항식 구조 | |
RU2279766C2 (ru) | Способ и устройство для хранения и восстановления криптографического секретного ключа | |
US6973190B1 (en) | Method for protecting an electronic system with modular exponentiation-based cryptography against attacks by physical analysis | |
US11824986B2 (en) | Device and method for protecting execution of a cryptographic operation | |
JP2004304800A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m) | |
EP0952697B1 (en) | Elliptic curve encryption method and system | |
US6609141B1 (en) | Method of performing modular inversion | |
CN1985458B (zh) | 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置 | |
Jung et al. | A reconfigurable coprocessor for finite field multiplication in GF (2n) | |
Abu Khadra et al. | Towards efficient FPGA implementation of elliptic curve crypto-processor for security in IoT and embedded devices | |
McIvor et al. | A high-speed, low latency RSA decryption silicon core | |
KR101112570B1 (ko) | 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체 | |
US7403965B2 (en) | Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication | |
Ko et al. | Montgomery multiplication in | |
JP3779479B2 (ja) | Icカード | |
KR100808953B1 (ko) | 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드 | |
Al-Tuwaijry et al. | A high speed RSA processor | |
Shirase et al. | An architecture for elliptic curve cryptograph computation | |
CA2155038C (en) | Elliptic curve encryption systems | |
Leelavathi | Elliptical Curve Digital Signatures Algorithm | |
KR20050102291A (ko) | 부가채널 공격들로부터 공개키 암호 시스템을 보호하기위한 방법과 장치, 및 상기 방법을 기록한 컴퓨터로 읽을수 있는 기록매체 | |
Kakde et al. | Performance analysis of Montgomery multiplier for public key cryptosystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20090727 |