Криптосистема Блюма — Гольдвассер

Материал из testwiki
Перейти к навигации Перейти к поиску

Криптосистема Блюма — Гольдвассер — одна из схем шифрования с открытым ключом, основанная на сложности факторизации больших целых чисел. Этот алгоритм шифрования был предложен Мануэлем Блюмом и Шафи Гольдвассер в 1984 году.

Пусть m1, m2, … , mm — последовательность бит открытого текста. В качестве параметров криптосистемы выбираем n=pq — число Блюма, x0 — случайное число из Zn, взаимно простое с N.

В качестве открытого ключа для шифрования выступает n, в качестве секретного ключа для расшифрования — пара (p, q).

Для того, чтобы зашифровать открытый текст, обладатель открытого ключа выбирает x0. На основе BBS-генератора по вектору инициализации x0 получают последовательность квадратов x1, x2, … , xm, по которой получают последовательность младших бит b1, b2, …, bm. Путём гаммирования с этой последовательностью битов открытого текста и получают шифрованный текст ci=mi⊕bi, i=1,2,…,m.

Шифрограмма, которая пересылается обладателю секретного ключа, есть (c1,c2,…,cm, xm+1). После формирования шифрограммы последовательность xi, i=0,1,…,m уничтожается, и при следующем сеансе связи отправитель выбирает новое x0.

Получатель шифрограммы восстанавливает по xm+1 последовательность главных корней xm, … , x1 и последовательность их младших бит b1, b2, …, bm, а затем расшифровывает шифрограмму: mi=ci⊕bi , i=1,2,…,m.

Как происходит шифрование сообщений

Предположим, что Боб хочет послать сообщение «m» Алисе:

  1. Боб сначала кодирует m в виде строки из L бит(m0,,mL1)
  2. Боб выбирает случайный элемент r, где 1<r<N, и вычисляет x0=r2modN
  3. Боб использует псевдослучайные числа для генерации случайных чисел L, следующим образом:
    1. Для i=0 до L1:
    2. Ряд bi равен наименьшему значению бита xi;
    3. Увеличиваем i ;
    4. Вычисляем xi=(xi1)2modN
  4. Вычисляем зашифрованный текст с помощью гамирования ключевого потока c=mb,y=xL=xL12modN
  5. Боб отправляет зашифрованный текст(c0,,cL1),y

Как происходит расшифрование сообщений

Алиса получает (c0,,cL1),y. Она может восстановить «m», используя следующую процедуру:

  1. Используя разложение на множители (p,q) Алиса получает rp=y((p+1)/4)Lmodp и rq=y((q+1)/4)Lmodq.
  2. Вычисление начального источника x0=q(q1modp)rp+p(p1modq)rqmodN
  3. Начиная с x0, повторно вычисляем битовый вектор b используя генератор BBS, как в алгоритм шифрования.
  4. Вычисляем текст с помощью гаммирования ключевым потоком с зашифрованным текстом m=cb.

Алиса восстановила исходный текст m=(m0,,mL1)

Эффективность

В зависимости от размера обычного текста BG может задействовать больше или меньше вычислительных ресурсов чем RSA. RSA использует оптимизированный способ шифрования, чтобы минимизировать время шифрования, шифрование RSA будет как правило выигрывать у BG во всём, кроме самых коротких сообщений. Поскольку время расшифрования RSA нестабильно, то возведение в степень по модулю может потребовать столько же ресурсов как для расшифровки BG зашифрованного текста той же самой длины. BG более эффективно к более длинным зашифрованным текстам, в которых RSA требует многократного отдельного шифрования. В этих случаях BG более эффективно.

Примечания

Шаблон:Примечания

Ссылки

  • M. Blum, S. Goldwasser, «An Efficient Probabilistic Public Key Encryption Scheme which Hides All Partial Information», Proceedings of Advances in Cryptology — CRYPTO '84, pp. 289—299, Springer Verlag, 1985.
  • Menezes, Alfred; van Oorschot, Paul C.; and Vanstone, Scott A. Handbook of Applied Cryptography. CRC Press, October 1996. ISBN 0-8493-8523-7

Шаблон:Криптосистемы с открытым ключом