Blum Blum Shub - Blum Blum Shub - Wikipedia

Blum Blum Shub (B.B.S.) bir sözde rasgele sayı üreteci tarafından 1986'da önerildi Lenore Blum, Manuel Blum ve Michael Shub[1] türetilen Michael O. Rabin tek yönlü işlevi.

Blum Blum Shub formu alıyor

,

nerede M = pq iki büyük ürünün ürünüdür asal p ve q. Algoritmanın her adımında, bazı çıktılar aşağıdakilerden türetilir: xn+1; çıktı genellikle ya bit eşliği nın-nin xn+1 veya en önemsiz bitlerinden biri veya daha fazlası xn+1.

tohum x0 eş asal olan bir tamsayı olmalıdır M (yani p ve q faktörler değildir x0) ve 1 veya 0 değil.

İki asal, p ve q, ikisi de olmalı uyumlu 3'e (mod 4) (bu, her birinin ikinci dereceden kalıntı bir tane var kare kök aynı zamanda ikinci dereceden bir kalıntıdır) ve olmalıdır güvenli asal küçük bir gcd ((p-3)/2, (q-3)/2) (bu, döngü uzunluğunu büyütür).

Blum Blum Shub jeneratörünün ilginç bir özelliği, herhangi bir xben doğrudan değer (aracılığıyla Euler teoremi ):

,

nerede ... Carmichael işlevi. (İşte bizde ).

Güvenlik

Güvenliğini düşüren bir kanıt var. hesaplama zorluğu faktoring.[1] Asal sayılar uygun şekilde seçildiğinde ve Ö (günlük günlük M) her birinin alt dereceli bitleri xn çıktı olarak, sonra sınırda M Çıktı bitlerini rasgele olanlardan ayırmak en az Karesel kalıntı problemi modülünü çözmek kadar zor olmalıdır. M.

Misal

İzin Vermek , ve (nerede tohum). Bu küçük sayılar için büyük bir döngü uzunluğu elde etmeyi bekleyebiliriz çünkü Jeneratör değerlendirmeye başlar kullanarak ve diziyi yaratır , , , = 9, 81, 236, 36, 31, 202. Aşağıdaki tablo, çıkışı belirlemek için kullanılan farklı bit seçim yöntemleri için çıkışı (bit cinsinden) gösterir.

Eşlik bitiEn az anlamlı bit
0 1 1 0 1 01 1 0 0 1 0

Aşağıdaki Ortak Lisp uygulama, özellikle üç bit seçim yöntemleriyle ilgili olarak, jeneratörün basit bir gösterimini sağlar. Parametrelere uygulanan gereksinimlerin not edilmesi önemlidir. p, q ve s (tohum) kontrol edilmez.

(defun get-number-of-1-bit (bitler)  "BITS'deki 1 değerli bitlerin sayısını sayar ve döndürür."  (bildirmek (tamsayı bitler))  ( işaretsiz bayt    (döngü için bit dizini itibaren 0 altında (tamsayı uzunluk bitler)          ne zaman (logbitp bit dizini bitler) toplam 1)))(defun eşit-bit (numara)  "NUMBER'ın çift eşlik bitini döndürür."  (bildirmek (tamsayı numara))  ( bit (mod (get-number-of-1-bit numara) 2)))(defun en az anlamlı bit (numara)  "NUMBER'ın en önemsiz bitini döndürür."  (bildirmek (tamsayı numara))  ( bit (ldb (bayt 1 0) numara)))(defun yapmak-blum-blum-shub (& anahtar (p 11) (q 23) (s 3))  "Basit bir ifadeyi temsil eden bağımsız değişken içermeyen bir işlev döndürür   Blum-Blum-Shub sözde rasgele sayı üreteci,   jeneratör parametreleri P, Q ve S (çekirdek) ve üç değer döndürür:   (1) sayının çift eşlik biti,   (2) sayının en önemsiz biti,   (3) x [n + 1] sayısı.   ---   Lütfen P, Q ve S parametrelerinin kontrol edilmediğini unutmayın.   makalede açıklanan koşullara uygun. "  (bildirmek (tip tamsayı p q s))  (İzin Vermek ((M    (* p q))       ;; M = p * q        (x [n] s))            ;; x0 = tohum    (bildirmek (tamsayı M x [n]))    #'(lambda ()        ;; x [n + 1] = x [n] ^ 2 mod M        (İzin Vermek ((x [n + 1] (mod (* x [n] x [n]) M)))          (bildirmek (tamsayı x [n + 1]))          ;; X [n + 1] 'e göre rastgele bitleri hesaplayın.          (İzin Vermek ((eşit-bit       (eşit-bit       x [n + 1]))                (En az anlamlı bit (en az anlamlı bit x [n + 1])))            ;; Durumu, x [n + 1] yeni x [n] olacak şekilde güncelleyin.            (setf x [n] x [n + 1])            (değerler eşit-bit                    En az anlamlı bit                    x [n + 1]))))));; Örnek çıktıları yazdırın.(İzin Vermek ((bbs (yapmak-blum-blum-shub : p 11 : q 23 : s 3)))  (biçim T "~ & Anahtarlar: E = çift eşlik, ~                     L = en az önemli ")  (biçim T "~2%")  (biçim T "~ & x [n + 1] | E | L")  (biçim T "~&--------------")  (döngü tekrar et 6 yapmak    (çoklu-değer bağlama (eşit-bit En az anlamlı bit x [n + 1])        (funcall bbs)      (biçim T "~ & ~ 6d | ~ d | ~ d"        x [n + 1] eşit-bit En az anlamlı bit))))

Referanslar

  1. ^ a b Blum, Lenore; Blum, Manuel; Shub, Mike (1 Mayıs 1986). "Basit Bir Öngörülemeyen Sözde Rastgele Sayı Üreticisi". Bilgi İşlem Üzerine SIAM Dergisi. 15 (2): 364–383. doi:10.1137/0215025.
Genel

Dış bağlantılar