Это не официальный сайт wikipedia.org 01.01.2023

Криптосистема Уильямса — Википедия

Криптосистема Уильямса

Криптосистема Уильямса (Williams System) — система шифрования с открытым ключом, созданная Хью Коуи Уильямсом (Hugh Cowie Williams) в 1984 году.

ИсторияПравить

Алгоритм был разработан в 1984 году как альтернатива более известному RSA. Целью разработки было избавиться от уязвимостей криптосистемы.

Об алгоритмеПравить

Для любой криптосистемы желательно, чтобы было доказано, что её взлом имеет вычислительную сложность аналогичную вычислительной сложности задачи, которую на данный момент невозможно решить за обозримое время. Как и RSA, криптосистема Уильямса опирается на предположение о сложности факторизации больших чисел, и было доказано, что для любого взлома шифротекста с помощью предварительного криптоанализа (имея лишь открытый ключ) необходимо провести факторизацию[1], то есть решить уравнение p q = n   относительно p   и q  . Это утверждение не было доказано для системы RSA. Вычислительная сложность задачи факторизации неизвестна, но считается, что она достаточно высока. Но, как и RSA, криптосистема Уильямса уязвима для атаки на основе подобранного шифротекста.

Описание алгоритмаПравить

Алгоритм системы Уильямса, не являясь вычислительно более сложным, чем RSA, намного более громоздкий в описании. Для него существует лемма[2], которая будет описана в разделе о математическом аппарате — она играет ключевую роль в этой криптосистеме.

Математический аппаратПравить

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

α = a + b c = ( a , b ) ,  

где a , b , c   — целые числа, а c   — условный элемент, квадрат которого равен c  . Тогда будут справедливы следующие формулы:

α 1 + α 2 = ( a 1 + a 2 , b 1 + b 2 ) ,  
α 1 α 2 = ( a 1 a 2 + c b 1 b 2 , a 1 b 2 + a 2 b 1 )  

Сопряжённым к α   числом называется

α ¯ = a b c  

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

α i = X i ( α ) + Y i ( α ) c ,  

тогда X i   и Y i   можно выразить через α i   следующим образом:

X i ( α ) = ( α i + α ¯ i ) / 2  
Y i ( α ) = b ( α i α ¯ i ) / ( α α ¯ ) = ( α i α ¯ i ) ( 2 c )  

Последнее выражение предназначено только для упрощения понимания. Так как функции определены для пар ( a , b )  , то не содержат c  . Если предположить теперь, что a 2 b 2 c = 1  , то можно записать следующие рекуррентные соотношения:

X 2 i = 2 X i 2 1  
Y 2 i = 2 X i Y i  
X 2 i + 1 = 2 X i X i + 1 X 1  
Y 2 i + 1 = 2 X i Y i + 1 Y 1  

Эти формулы предназначены для быстрого вычисления X i   и Y i  . Так как X 0 = 1   и X 1 = a  , то X i ( α )   также не зависит от b  .

Создание ключаПравить

Сначала выбираются два простых числа p   и q  , вычисляется их произведение n  . С помощью перебора выбирается число c   так, чтобы символы Лежандра δ p   и δ q   удовлетворяли условиям, наложенным в лемме. Затем (также подбором) определяется число s   такое, что символ Якоби

( s 2 c n ) = 1  

и g c d ( s , n ) = 1.   Число m   выбирается так же, как и в лемме:

m = ( p δ p ) ( q δ q ) / 4  

Затем выбираются числа d , e  , удовлетворяющие условиям, наложенным в лемме. Выберем случайное, например, d : g c d ( d , m ) = 1  , а e   вычислим по формуле

e = m + 1 2 d 1 ( mod m )  

Тогда n , e , c , s   — открытый ключ, а p , q , m , d   — секретный ключ.

ЗашифрованиеПравить

Все вычисления здесь ведутся по модулю n  . Запись a + b c ( mod n )   здесь означает ( a mod n ) + ( b mod n ) c .   Представим открытый текст в виде числа w 2 , 3 , . . . , n 1  . Определим γ   и b 1  : если символ Якоби ( w 2 c n )   равен + 1  , то

b 1 = 0   и γ = w + c ,  

иначе определим γ   через произведение

b 1 = 1   и γ = ( w + c ) ( s + c ) .  

Тогда легко убедиться, что символ Якоби

( γ γ ¯ n ) = 1 ,  

что проверяется прямым вычислением (во втором случае с учётом выбора s   и мультипликативности символа Якоби). Далее находим число

α = γ γ ¯ .  

Представим α   в виде α = a + b c .   α   удовлетворяет условиям, накладываемым в лемме. Действительно, p , q , n , c , d , e   удовлетворяют условиям по построению, и

α α ¯ = γ γ ¯ γ ¯ γ = 1.  
2 ( a + 1 ) = γ γ ¯ + γ ¯ γ + 2 = ( γ + γ ¯ ) 2 γ ¯ γ ( mod n )  

Из последней формулы следует, что

( 2 ( a + 1 ) n ) = 1.  

Получив α ,   следует его зашифровать возведением в степень e   — результат может быть представлен через X e ( α )   и Y e ( α ) ,   которые могут быть[3] быстро (за количество операций порядка log e  ) найдены с помощью рекуррентных формул. Введём обозначение

E = X e ( α ) Y e ( α )  

Тогда криптотекстом будет являться тройка чисел ( E , b 1 , b 2 ) ,   где b 2 = a mod 2.  

РасшифрованиеПравить

Расшифрование проводится проще. Сначала вычисляется

α 2 e = α 2 e ( α α ¯ ) e = E + c E c ,  

что может сделать и злоумышленник. Но для окончательного расшифрования необходимо вычислить, как показано в лемме, α 2 e d   — при том, что d   держится в секрете.

α 2 e d = X d ( α 2 e ) + Y d ( α 2 e ) c = ± α  

Число b 2 ,   передаваемое в сообщении, укажет, какой из знаков верен — тот, что даёт чётный результат или тот, что даёт нечётный. Число b 1   покажет, следует ли умножить результат на ( s c ) / ( s + c )  . В результате мы получим число

α = w + c w c  

И с лёгкостью найдём исходный текст, что и завершит процесс расшифрования.

w = α + 1 α 1 c  

БезопасностьПравить

Как и на RSA, на криптосистему может быть проведена атака на основе подобранного шифротекста. Предположим, что криптоаналитик нашёл некоторый алгоритм, позволяющий с вероятностью δ > 0   расшифровать криптотекст. Тогда он может поступить следующим образом:

1. Выбрать число ϕ   такое, что символ Якоби ( ϕ 2 c n ) = 1  ;
2. Зашифровать ϕ  , но таким образом, как будто упомянутый символ Якоби равен + 1   и b 1 = 0  , получив на выходе криптотекст ( E , 0 , b 2 )  ;
3. Расшифровать полученный криптотекст, получив некоторый ψ ϕ  .

Тогда с вероятностью δ > 0   криптоаналитик может получить

ϕ ψ = p ( mod n )  

или

ϕ ψ = q ( mod n )  

Что позволяет произвести факторизацию n   и взломать криптосистему.

БыстродействиеПравить

После генерации ключа основные вычисления происходят при возведении числа α   в степень, а это может быть произведено за O ( log e )   умножений по модулю, каждое из которых происходит за O ( log e )   операций сложения, в свою очередь выполняющихся за O ( log e )   элементарных операций сложения неизменной скорости — то есть за O ( log 3 e )  , с той же скоростью, что и возведение в степень целого числа по модулю, которое требуется для использования RSA.

ПримерПравить

Генерация ключаПравить

Выберем, например, p = 11   и q = 13  , произведением которых является n = 143  . Так как

( 5 11 ) = 1 = 11 ( mod 4 )  

и

( 5 13 ) = 1 = 13 ( mod 4 )  

Можно выбрать c = 5  . Также, если выбрать s = 2  , получим

( s 2 c n ) = ( 1 11 ) ( 1 13 ) = 1  

Что удовлетворяет условию теоремы. Далее получим

m = ( 10 14 4 ) = 35  

И, наконец, выберем экспоненты шифрования и расшифрования: так как

23 16 = 18 ( mod m )  

Можно выбрать

e = 23  
d = 16  

ЗашифрованиеПравить

Пусть исходный текст будет ω = 21  . Так как

( 21 2 5 143 ) = ( 7 11 ) ( 7 13 ) = ( 1 ) ( 1 ) = 1  

Имеем b 1 = 0  , γ = 21 + 5   и

α = ( 21 + 5 21 5 ) = 125 + 6 5 ( mod 143 )  

Так как 125   нечётно, получаем b 2 = 1  . После вычисления X 23 ( α ) = 68   и Y 23 ( α ) = 125   получаем

E = 68 125 1 = 68 135 = 28 ( mod 143 )  

Таким образом, шифротекстом является тройка ( 28 , 1 , 1 )  .

РасшифрованиеПравить

Теперь следует вычислить α 2 e  :

α 2 e = ( 28 2 + 5 28 2 5 ) + 2 ( 28 28 2 5 ) 5 = 95 + 126 5 ( mod 143 )  

Так как d = 16  , вычисляем также

X 16 ( α 2 e ) = 18  
Y 16 ( α 2 e ) = 137  

Так как b 2 = 1  , то a   должно быть нечётным и

α = ( 18 + 137 5 ) = 125 + 6 5 ( mod 143 )  

Учитывая, что вторая компонента шифротекста b 1 = 0  , заключаем, что α = α  . В таком случае

ω = 126 + 6 5 124 + 6 5 5 = 21 ( mod 143 )  .

Таким образом, мы получили ω = 21  , который и являлся первоначальным открытым текстом.

ПримечанияПравить

  1. Kim, 1992.
  2. Williams, 1985.
  3. Арто Саломаа — Криптография с открытым ключом, изд. Мир, 1995, ISBN 5-03-001991-X

ЛитератураПравить

  • Hugh C. Williams. Some Public-Key Crypto-Functions as Intractable as Factorization. — 1985.
  • Kwangio Kim (Ed.). Public Key Criptography. — 1992. — С. 1—17.