Описание детерминированного варианта криптосистемы
В общем, детерминированный вариант криптосистемы Накаша — Штерна может быть описан следующим образом: пусть
— B-гладкое (B мало — обычно это 10-битное число), нечетное, свободное от квадратов число и пусть
— RSA число (Обычно полагают,
— это как минимум 768-битное числое), такое что
делит
и оно взаимно просто с
, где
— это функция Эйлера. Далее, пусть
порядка
. Тогда тройка чисел
формирует закрытый ключ. Сообщение
, меньшее чем
, шифруется как
. Расшифрование основано на использовании простых делителей числа
.[1]
Генерация ключа
- Выбрать
"маленьких простых чисел"
где
— четное. Здесь фраза "маленькие простые числа" означает, что берутся или первые из простых чисел(1, 3, 5, ...) или генерируются каким-либо другим способом, кроме как использования алгоритмов генерации больших простых чисел.
- Пусть
,
и
- Выбрать 2 "больших простых числа"
, таких, что
,
— простые. Здесь фраза "большие простые числа" использована в том смысле, в каком ее использует в алгоритмах генерации больших простых чисел.
- Пусть
. В литературе число
— произведение "больших простых чисел" — называют RSA число.
- Выбрать случайным образом число
, такое что у
порядок
Тогда открытый ключ формирует тройка чисел
. А закрытый —
[1]
С ростом числа
генерация клуча становится очень затратной по времени операцией, потому что число a должно быть в подходящем диапазоне и, кроме того, удовлетворять тестам на простоту вместе с числом
. Для обхода этого затруднения, авторы предлагают сначала сгенерировать простые числа
и затем, подбирая вспомогательные простые числа
, достичь равенства
и
, где
будут простыми[1]
Пример
Генерация ключа для
[см. «Описание детерминированного варианта криптосистемы»]
содержит
|
i=1 |
i=2 |
i=3 |
i=4 |
i=5 |
i=6 |
j = 0 |
1 |
1 |
1 |
1 |
1 |
1 |
j = 1 |
1966 |
6544 |
1967 |
6273 |
6043 |
372 |
j = 2 |
9560 |
3339 |
4968 |
7876 |
4792 |
7757 |
j = 3 |
|
9400 |
1765 |
8720 |
262 |
3397 |
j = 4 |
|
|
6488 |
8651 |
6291 |
702 |
j = 5 |
|
|
2782 |
4691 |
677 |
4586 |
j = 6 |
|
|
|
9489 |
1890 |
8135 |
j = 7 |
|
|
|
8537 |
6878 |
3902 |
j = 8 |
|
|
|
2312 |
2571 |
5930 |
j = 9 |
|
|
|
7701 |
7180 |
6399 |
j = 10 |
|
|
|
|
8291 |
9771 |
j = 11 |
|
|
|
|
678 |
9771 |
j = 12 |
|
|
|
|
|
609 |
j = 13 |
|
|
|
|
|
7337 |
j = 14 |
|
|
|
|
|
6892 |
j = 15 |
|
|
|
|
|
3370 |
j = 16 |
|
|
|
|
|
3489 |
Шифрование
Расшифрование
Далее, используя таблицу, расположенную выше:
и по китайской теореме об остатках получаем:
[1]
Описание вероятностного варианта криптосистемы
Вероятностный вариант криптосистемы — это усовершенствование предшествующих вероятностных криптосистем (например, криптосистемы Бенало).
Предшествующие криптосистемы имели очень существенный недостаток: чтобы зашифровать маленький набор данных
(например, голоса 0, 1 в электронном голосовании), детерминированные криптосистемы, например, RSA, не подходят[1], потому что для расшифровки будет достаточно сравнить шифротекст с зашифрованными элемента набора
. Это свойство криптосистем — невозможность различить шифротексты различных элементов набора S, называется семантической стойкостью[5]. Но при сочетании гомомофрности и семантической стойкости, предшествующие криптосистемы начинали генерировать около килобайта шифротекста, чтобы зашифровать открытый текст в несколько бит[1]. В криптосистеме Накаша — Штерна, кроме того, что есть свойства гомоморфности, семантической стойкости, отношение между размером шифротекста и размером открытого текста в точности равно
. Авторы утверждают, что безопасно взять
[1].
Генерация ключа
- Выбрать
"маленьких простых чисел"
где
— четное. Здесь фраза "маленькие простые числа" означает, что берутся или первые из простых чисел(1, 3, 5, ...) или генерируются каким-либо другим способом, кроме как использования алгоритмов генерации больших простых чисел.
- Пусть
,
и
- Выбрать 2 "больших простых числа"
, таких, что
,
— простые. Здесь фраза "большие простые числа" использована в том смысле, в каком ее использует в алгоритмах генерации больших простых чисел.
- Пусть
— RSA число.
- Выбрать случайным образом число
, такое что у
порядок
Тогда открытый ключ формирует тройка чисел
. А закрытый —
[1]
Применение
В превалирующем большинстве областей применения криптосистемы Накаша — Штерна используется свойство гомоморфности этой криптосистемы по сложению и вычитанию[6][2]
- Предположим, что у клиента в банке на счету
и он хочет снять небольшую сумму
. Предположим также, что баланс
хранится в зашифрованном виде
, и представитель банка, выполняя операцию снятия со счета клиента суммы
, не имеет доступа к расшифрованию данных счета. С помощью криптосистема Накаша — Штерна предлагается простое решение этой проблемы через операцию
— это значение нового баланса на счету в зашифрованном виде :
. Более формально: пусть
— алгоритмы шифрования счетов
, тогда счет, равный сумме
и
вычисляется по следующей формуле:
[1]
- Безопасность облачных вычислений. Предположим, что в облаке
содержится множество пользователей (клиентов)
. У пользователя
имеются конфиденциальные данные
, хранящиеся в облаке. Такая облачная услуга называется Storage aaS (хранилище как сервис). Пользователь
может обратиться к облаку с запросом на вычисление значения некоторой функции
, зависящей от конфиденциальных данных. Запрос должен состоять из описания функции
, идентификатора пользователя и его открытого ключа
. Облако должно проверить полномочия пользователя
на вычисление
. Такая проверка может быть реализована с помощью стандартной процедуры электронной цифровой подписи. Если пользователь подтвердил свои права на вычисление функции
, то облако должно вычислить значение
и отправить его пользователю. В качестве
можно взять функцию шифрования любой гомоморфной криптосистемы с открытым ключом, какой, к примеру, является криптосистема Накаше — Штерна . Пользователь, который размещает в хранилище свои конфиденциальные данные и дает запрос на вычисление функции
, не доверяет облаку и должен принимать соответствующие меры и предъявлять требования по обеспечению их безопасности. Очевидно, что было бы гораздо безопаснее передавать данные в таком виде, чтобы во время операций, которые производятся над ними, никоим образом не распространялась информация об этих данных. Поэтому, во-первых, данные необходимо шифровать, причем они должны поступать на сервер уже в шифрованном виде. Это означает, что шифрование должно осуществляться ещё пользователем. Во-вторых, необходимо обрабатывать эти данные без расшифровки, так как для передачи и хранения секретного ключа необходимо соблюдение определённых процедур, особенно сложных, если информация обрабатывается в недоверенной среде. Криптосистемы с гомоморфным шифрованием как раз помогают решить эти проблемы[7][2]
- Обфускация для защиты программных продуктов. Впервые о применении обфускации в криптографии было упомянуто в работе Диффи и Хеллмана[8]. В ней, для построения асимметричной криптосистемы, предложено использовать сложность задачи, заключающейся в анализе программ на низкоуровневом языке программирования (ассемблере, байт-коде). Основной целью обфускации является затруднение понимания функционирования программы. Поскольку все традиционные компьютерные архитектуры используют двоичные строки, применяя полностью гомоморфное шифрование над битами, можно вычислить любую функцию. Следовательно, можно гомоморфно зашифровать целиком всю программу так, что она сохранит свою функциональность[9]
- Электронное голосование. А именно, Пусть есть
кандидатов и дирекция, которая обладает этой криптосистемой, распространяет среди участников бюллетень-вектор
, где
— фамилия
— го кандидата. И у каждого участника есть открытый ключ
. По итогу мы получаем — каждый избиратель возвращает дирекции вектор
, где
- вектор предпочтений. Победителем выбором считается тот кандидат, который набрал в сумме больше всех голосов — это число — сумма голосов — подсчитывается над шифрованными векторами избирателей. Это становится возможным благодаря гомоморфности. А польза от такого подхода в том, что нет необходимости расшифроваывать данные избирателей для подсчета голосов — повышается безопастность выборов для избирателей[10]
- Область водяных знаков[11]. Гомоморфность криптосистемы позволяет наносить водяной знак на зашифрованные данные[12]
- Доказательство с нулевым разглашением. Гомоморфные системы применяются, когда появляется необходиться подтвердить владение какой-либо информацие, которая поддается такой проверке без раскрытия самой информации[13][14]
Атаки
Широко известных атак на эту криптосистему не задокументировано. Сами авторы поощряют работу над взломом криптосистемы. В оригинальной статье предлагаются[1] 768 долларов тому, кто расшифрует шифротекст
и опубликует метод криптоаналаза. Ниже представлены данные для этой задачи.
= 13370fe62d81fde356d1842fd7e5fc1ae5b9b449
bdd00866597e61af4fb0d939283b04d3bb73f91f
0d9d61eb0014690e567ab89aa8df4a9164cd4c63
6df80806c7cdceda5cfda97bf7c42cc702512a49
dd196c8746c0e2f36ca2aee21d4a36a16
= 0b9cf6a789959ed4f36b701a5065154f7f4f1517
6d731b4897875d26a9e244415e111479050894ba7
c532ada1903c63a84ef7edc29c208a8ddd3fb5f7
d43727b730f20d8e12c17cd5cf9ab4358147cb62
a9fb887bf15204e444ba6ade613274316
= 1459b9617b8a9df6bd54341307f1256dafa241bd
65b96ed14078e80dc6116001b83c5f88c7bbcb0b
db237daac2e76df5b415d089baa0fd078516e60e
2cdda7c26b858777604c5fbd19f0711bc75ce00a
5c37e2790b0d9d0ff9625c5ab9c7511d16
Здесь
(
— формируются из первых
простых чисел, кроме 2)[1]
Ссылки
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Jacques, Stern. A New Public Key Cryptosystem Based on Higher Residues (англ.) // ACM. — 1998. — P. 59–66.
- 1 2 3 А.И. Трубей. Гомоморфное шифрование: безопасность облачныъвычислений и другие приложения (обзор) (рус.) // Информатика. — 2015. — Январь.
- ↑ Реализацию алгоритмов шифрования, расшифрвоания, генерации ключа в криптосистеме Накаше - Штерна (неопр.).
- ↑ Thomas W. Cusick. A comparison of RSA and the Naccache-Stern public-key cryptosystem (англ.) // Security Protocols. — Berlin, Heidelberg: Springer Berlin Heidelberg, 1997. — P. 111–116. — ISBN 9783540624943, 9783540680475. — DOI:10.1007/3-540-62494-5_10.
- ↑ S. Goldwasser, S. Micali. Probabilistic Encryption (англ.) // JCSS. — 1984. — Апрель. — P. 270—299.
- ↑ A Brief Overview of Homomorphic Cryptosystem and Their Applications // nternational Journal of Computer Applications. — 2015.
- ↑ R.L. Rivest, L. Adleman,
M.L. Dertouzos. On data banks and privacy homomorphisms // Foundations of secure computation.
- ↑ W. Diffie, M. Hellman. New directions in cryptography // IEEE Trans. Inf. Theory.
- ↑ J. Alwen [et al.] On the relationship between functional encryption, obfuscation, and fully homomorphic encryption // Cryptography and Coding – 14th IMA Intern. Conf., IMACC-2013..
- ↑ J.D. Cohen Benaloh. Verifiable Secret-Ballot Elections (англ.) // Yale University : Ph-D thesis. — 1988.
- ↑ B. Pfitzmann, M. Schunter. Assymetric fingerprinting (англ.) // Spinger-Verlag. — 1996. — P. 84—95.
- ↑ Constructing Secure Content-Dependent Watermarking Scheme using Homomorphic Encryption.
- ↑ O. Goldreich, S. Micali, A. Wigderson. Proofs that Yield Nothing But Their Validity and a Methodology of Cryptographic Protocol Design (англ.). — 1986. — P. 174—187.
- ↑ G. Brassard, D. Chaum, C. Crépeau. Minimum Disclousure Proofs of Knowledge // JCSS. — 1988.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .