본문으로 바로가기

* PC버전으로 보지 않으면 MathJax 플러그인이 실행되지 않아 expression이 표현되지 않습니다.


 

이 글은 PKC 2010 ; 13th International Conference on Practice and Theory in Public Key Cryptography 에서 발표된 Jean-Charles Faugère, Raphaël Marinier, Guénaël Renault 의 연구를 번역정리한 것이다.

 

RSA를 공략하기 위한 방법 중 하나는 N을 소인수분해하는 것이다.

일반적으로 큰 수를 소인수분해하기는 어렵지만, 특정 조건이 맞으면 짧은 시간 내에 소인수분해를 할 수 있다.

 

1. Factoring 2 RSA Moduli with Shared MSBs

다음과 같이 2개의 n-bit RSA moduli N이 있다고 가정하자. qiα-bit 소수이고, pit개의 MSB (최상위 비트) 를 공유한다.

N1=p1q1N2=p2q2

 

t2α+3 이면, NiO(n2) 시간 내에 소인수분해할 수 있다.

 

Proof

Lemma 1에서 정의한 lattice L의 reduced basis를 구하는 데 O(n2)의 시간이 걸리고, Lemma 2에서 t2α+3 이면 b0=±v0 임을 증명하였다.

Lemma 1 아래의 설명을 따라 Ni의 인수를 구할 수 있다.

 

Lemma 1.

행렬 M을 아래와 같이 정의하고, M의 row vector를 각각 v1, v2 라고 하자.

 

M=[K0N20KN1],K=2nt+12

 

행렬 M의 row vector의 span으로 구성되는 lattice L을 가정하고, L의 벡터 v0을 다음과 같이 정의한다.

 

v0=q1v1+q2v2=q1K,q2K,q1q2(p2p1)


p1p2t개의 최상위 비트를 공유하기 때문에 p2p1 은 대략 n+αt bit의 정수가 된다. t가 충분히 크다면 v0L의 shortest vector가 될 수 있고, 이 경우 v0K로 나눠 q1q2를 다항 시간 (O(n2)) 내에 구할 수 있다.

 

L의 Gramian matrix는 MMT=[K2+N22N1N2N1N2K2+N12] 이고, L의 volume은 Gramian matrix의 행렬식으로 V=det(MMT)=KN12+N22+K2 이다. K222(nt)Ni222n 에 비해 상대적으로 작기 때문에, V22nt 으로 근사시킬 수 있다.

 

v0L의 shortest vector라면, 이 vector의 norm v02n+αtL의 Minkowski's bound보다 작다. 따라서 아래 식이 성립한다.

 

2n+αtv02V122nt2

 

위 식은 t2α 인 경우 성립한다.


 

Lemma 2.

Lagrange method를 통해 찾은 L의 basis를 b1,b2 라고 하자. bi=λi(L) 이며 Hadamard's inequality에 의해 det(L)V 가 성립한다. 이 부등식을 풀어 아래의 두 관계를 얻을 수 있다.

 

b1v0b2Vv0

 

만약 v0<b2 라면, b2L의 local minimum이기 때문에 다음 식이 성립한다.

 

v0=ab1=a(bv1+cv2)a,b,cZ(ab=q1,ac=q2)

 

qi는 소수이기 때문에 a=±1이 되고, 따라서 v0=±b1 이다. 이를 다시 위의 부등호에 대입하면 아래의 결과가 나온다.

 

(1)v02<V

 

이제 v0의 upper bound와 V의 lower bound를 구해 t의 범위를 구할 것이다.

|p2p1|2nα+1t 이므로, v0의 정의에 의해 v022(nt)+1(q12+q22)+q12q22(p1p2)2 이다. pq를 풀어주면 아래의 bound를 얻는다.

 

(2)v0222(n+αt)+2+22(α+n+1t)22(n+αt)+3

 

VN1,N22n1K222(nt) 를 이용해서 아래의 boundary를 찾을 수 있다.

 

(3)V2=K2(N12+N22+22(nt))>24n2t1

 

부등식 (2)와 (3)에서, (1)이 성립하기 위한 t의 범위는 다음과 같다.

 

(4)t2α+4

 

한편 v0V의 범위를 더 tight하게 구해서 t의 범위를 확장시킬 수 있다.

qiα-bit 소수이므로 qi2α1 이다. 2α1=2αϵ1ϵ1을 정의한다. qi222α2ϵ1 이며, K의 정의를 사용해서 K2qi2의 upper bound를 구할 수 있다.

 

(5)K2qi222(nt+α)+12ϵ1

 

pi의 성질을 사용해 아래 부등식을 만들 수 있다.

 

(6)q12q22(p2p1)222(nt+α+12ϵ1)

 

v02pq로 풀어서 쓴 식에 (5), (6)의 부등식을 대입해서 다음과 같이 boundary를 설정할 수 있다.

 

(7)v0222(n+αt)+22ϵ1+22(nt+α+12ϵ1)22(n+αt)+3ϵ1

 

2nt+121=2nt+12ϵ2 를 만족하는 ϵ2를 정의한다. K=2nt+122nt+12ϵ2 이고 Ni222n2 이므로 V2의 lower bound는 다음과 같이 표현된다.

 

(8)V2=K2(N12+N22+22(nt))>K2(N12+N22)24n2t2ϵ2

 

(7)과 (8)의 부등식으로 (1)이 성립하기 위한 t의 범위를 좁힐 수 있다. 22(n+αt)+3ϵ122ntϵ2 를 풀면 t2α+3+ϵ2ϵ1 이 된다.

ϵ1=log2(1112α) , ϵ2=log2(1112nt+12) 이고 αnt 이므로, ϵ2ϵ1 이고 t2α+3 이 된다.

 

Reference

https://hal.archives-ouvertes.fr/hal-01288914/document

https://en.wikipedia.org/wiki/Minkowski%27s_theorem

https://en.wikipedia.org/wiki/Minkowski%27s_bound

https://en.wikipedia.org/wiki/Hadamard%27s_inequality

 

CryptographyTechniques카테고리의 다른글

RSA Exploit  (0) 2020.01.28