블럼 블럼 슈브

Blum Blum Shub

블럼 블럼 슈브(B.B.S.)레노어 블럼, 마누엘 블럼, 마이클[1] 슈브가 1986년 제안한 가성수 생성기마이클 O. 라빈의 단방향함수에서 파생된 것이다.

블럼 블럼 슈브가 폼을 잡는다.

+ = x 2

여기서 M = pqpq의 큰 두 의 곱이다.알고리즘의 각 단계에서 일부 출력은 x에서n+1 파생된다. 출력은 일반적으로 xn+1 비트 패리티 또는 xn+1 최하위 비트 중 하나 이상이다.

시드 x0 M(, p와 q는 x0 요인이 아니라 x의 요인이 아니다)과 공동 프라임인 정수여야 하며 1이나 0이 아니어야 한다.

pq라는 두 가지 소수 모두 3(모드 4)에 일치해야 하며(이것은 각 2차 잔류물이 2차 잔류물인 1제곱근을 갖는다는 것을 보장한다), 작은 gcd(p-3)/2, (q-3)/2)로 안전한 소수여야 한다(이 때문에 주기 길이가 커진다).

블럼 블럼 슈브 발생기의 흥미로운 특징은 ( 오일러의 정리를 통해) 어떤 xi 값도 직접 계산할 수 있다는 것이다.

=( x i )

여기서 (는) Carmichael 함수다.(여기서 ( = ( )= ( , - ) q (이 있다.

보안

그것의 보안을 팩터링의 계산상의 어려움으로 축소하는 증거가 있다.[1]프리임이 적절하게 선택되고 n x의 O(로그 로그 M) 하위 순서 비트가 출력되면, M이 커짐에 따라 한계에서 출력 비트와 무작위를 구분하는 것은 최소한 2차 잔류도 문제 모듈로 M을 해결하는 것만큼 어려워야 한다.

= = = 을(서 s (여기서 s {\displaystyle s})로 한다.We can expect to get a large cycle length for those small numbers, because . The generator starts to evaluate by using and creates the sequence }}, … = 9, 81, 236 36, 31, 202.다음 표는 출력을 결정하는 데 사용되는 다양한 비트 선택 방법에 대한 출력(비트 단위)을 보여준다.

패리티 비트 최하위 비트
0 1 1 0 1 0 1 1 0 0 1 0

다음의 Common Lisp 구현에서는 특히 3비트 선택 방법과 관련하여 발전기를 간단하게 시연할 수 있다.매개변수 p, qs(시드)에 부과된 요건은 점검되지 않는다는 점에 유의해야 한다.

(반기를 들다 1비트 get-of-bits (조각들)   "정수 인코딩 BITS에서 1값 비트 수를 반환한다."   (선언하다 (타자를 치다 (정수의 0 *) 조각들))   ( (정수의 0 *) (로그카운트 조각들)))  (반기를 들다 손익분기점 (조각들)   "정수 인코딩 BITS의 짝수 패리티 비트를 반환한다."   (선언하다 (타자를 치다 (정수의 0 *) 조각들))   ( 물다 (모드의 (1비트 get-of-bits 조각들) 2)))  (반기를 들다 get-the-bit-bit. (조각들)   "정수로 인코딩된 BITS 중 최하위 비트를 반환한다."   (선언하다 (타자를 치다 (정수의 0 *) 조각들))   ( 물다 (ldb (바이트 1 0) 조각들)))  (반기를 들다 벌컥벌컥 화를 내다 (&key (p 11) (q 23) (s 3))   "단순함을 나타내는 인수 없음 함수를 반환함 Blum-Blum-Sub 가성수 생성기, 를 사용하도록 구성됨 제너레이터 매개 변수 P, Q 및 S(시드)와 다음 세 가지 값 반환: (1) 숫자 x[n+1], (2) 숫자의 짝수 패리티 비트는 (3) 해당 숫자의 가장 작은 비트. --- P, Q 및 S 매개 변수는 체크인되지 않았으므로 주의하십시오. 기사에 기술된 조건에 따라."   (선언하다 (타자를 치다 (정수의 0 *) p q s))   (하게 하다 ((M    (* p q))       ;;; M = p * q         (x[n] s))            ;; x0 = 씨앗     (선언하다 (타자를 치다 (정수의 0 *) M x[n]))     #'(람다 ()         ;; x[n+1] = x[n]^2 mod M         (하게 하다 ((x[n+1] (모드의 (* x[n] x[n]) M)))           (선언하다 (타자를 치다 (정수의 0 *) x[n+1]))           ;; x[n+1]을 기준으로 랜덤 비트를 계산하십시오.           (하게 하다 ((짝수 비트       (손익분기점       x[n+1]))                 (최소 비트 (get-the-bit-bit. x[n+1])))             (선언하다 (타자를 치다 물다 짝수 비트))             (선언하다 (타자를 치다 물다 최소 비트))             ;; x[n+1]가 새로운 x[n]이 되도록 상태를 업데이트하십시오.             (세트로 만들다 x[n] x[n+1])             (가치 x[n+1]                     짝수 비트                     최소 비트))))))  ;;; 모범적인 출력물을 인쇄하십시오. (하게 하다 ((bbs (벌컥벌컥 화를 내다 :p 11 :q 23 :s 3)))   (선언하다 (타자를 치다 (기능을 하다 () (가치 (정수의 0 *) 물다 물다)) bbs))   (형식을 갖추다 T "~&키즈:E = 짝수 패리티, L = 최하위")   (형식을 갖추다 T "~2%")   (형식을 갖추다 T "~&x[n+1] E L")   (형식을 갖추다 T "~&--------------")   (고리를 틀다 되풀이하여 말하다 6 하다     (다중 가치관 (x[n+1] 짝수 비트 최소 비트)         (펑콜 bbs)       (선언하다 (타자를 치다 (정수의 0 *) x[n+1]))       (선언하다 (타자를 치다 물다           짝수 비트))       (선언하다 (타자를 치다 물다           최소 비트))       (형식을 갖추다 T "~&~6d~d~d"                 x[n+1] 짝수 비트 최소 비트)))) 

참조

인용구

  1. ^ a b Blum, Blum & Shub 1986, 페이지 364–383.

원천

  • Blum, Lenore; Blum, Manuel; Shub, Michael (1983). "Comparison of Two Pseudo-Random Number Generators". Advances in Cryptology. Boston, MA: Springer US. doi:10.1007/978-1-4757-0602-4_6.
  • Blum, L.; Blum, M.; Shub, M. (1986). "A Simple Unpredictable Pseudo-Random Number Generator" (PDF). SIAM Journal on Computing. Society for Industrial & Applied Mathematics (SIAM). 15 (2): 364–383. doi:10.1137/0215025. ISSN 0097-5397.
  • Geisler, Martin; Krøigård, Mikkel; Danielsen, Andreas (December 2004), About Random Bits (PDF), CiteSeerX 10.1.1.90.3779

외부 링크