敎敎敎育育育學學學碩碩碩士士士學學學位位位請請請求求求論論 … ·...

26

Upload: others

Post on 27-Feb-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

  • 敎敎敎育育育學學學碩碩碩士士士學學學位位位請請請求求求論論論文文文

    RSA 공개 암호시스템과 제반공격에 관한 연구

    RRRSSSAAApppuuubbbllliiiccccccrrryyyppptttooosssyyysssttteeemmm aaannnddd AAAttttttaaaccckkkiiinnngggaaalllgggooorrriiittthhhmmmsss

    2007200720072007年年年年 8888月月月月

    仁仁仁荷荷荷大大大學學學校校校 敎敎敎育育育大大大學學學院院院

    數數數學學學敎敎敎育育育專專專攻攻攻

    李李李周周周行行行

  • 敎敎敎育育育學學學碩碩碩士士士學學學位位位請請請求求求論論論文文文

    RRRSSSAAA 공공공개개개 암암암호호호시시시스스스템템템과과과 제제제반반반공공공격격격에에에 관관관한한한 연연연구구구

    RRRSSSAAApppuuubbbllliiiccccccrrryyyppptttooosssyyysssttteeemmm aaannnddd AAAttttttaaaccckkkiiinnngggaaalllgggooorrriiittthhhmmmsss

    2007200720072007年年年年 8888月月月月

    仁仁仁荷荷荷大大大學學學校校校 敎敎敎育育育大大大學學學院院院

    數數數學學學敎敎敎育育育專專專攻攻攻

    李李李周周周行行行

    指指指導導導敎敎敎授授授 鄭鄭鄭尙尙尙泰泰泰이이이 論論論文文文을을을 碩碩碩士士士學學學位位位 論論論文文文으으으로로로 提提提出出出함함함

  • 本本本 論論論文文文을을을 李李李周周周行行行의의의 碩碩碩士士士學學學位位位 論論論文文文으으으로로로 認認認准准准함함함

    2007200720072007年年年年 8888月月月月

    主主主主審審審審 印印印印

    副副副副審審審審 印印印印

    副副副副審審審審 印印印印

  • 국문초록국문초록국문초록국문초록

    대표적인 공개암호체제인 RSA는 소인수분해가 어렵다는 것에 기반한 암호

    체제이다. 본 논문 1장에서는 먼저 RSA 의 구성을 간단히 살펴보고, 2장에

    서는 일정한 조건을 만족하는 비밀열쇠들인 경우에 공개열쇠 의 소인수분

    해가 가능하게 하는 Pollard와 Wiener 알고리즘을 알아본다. 3장에서는 복

    호화지수가 어떤 부등식을 만족하는 경우에 RSA를 공격하는 May-Coron 알고

    리즘을 다루고 난 뒤 Maple으로 이러한 알고리듬들을 구현하고자 한다.

    ⅰⅰⅰⅰ

  • ABSTRACTABSTRACTABSTRACTABSTRACT

    The security of the RSA cryptosystem is based on the intractability

    of factoring large integers. In the first chapter of this thesis, we

    summarise the parameters of the RSA cryptosystem. We see in the second

    chapter that the RSA system whose private keys satisfy certain

    conditions can be cracked using the algorithm of Pollard and Wiener.

    In the third chapter we use the May-Corn algorithm to attack the

    the RSA system when the decryption exponent satisfies a certain

    inequality and then implement these algorithms with the Maple.

    ⅱⅱⅱⅱ

  • 목 목 목 목 차차차차

    국국국문문문초초초록록록 …………………………………… ⅰⅰⅰAAABBBSSSTTTRRRAAACCCTTT …………………………………… ⅱⅱⅱ

    111...서서서 론론론1.1.RSA 배경 …………………………………… 11.2.RSA 개념 …………………………………… 2

    222...소소소인인인수수수분분분해해해2.1.Dixon의 제곱 알고리즘 …………………………………… 52.2.Pollard알고리즘 …………………………………… 62.2.1.Pollardp-1알고리즘 …………………………………… 62.2.2.Pollard 알고리즘 …………………………………… 7

    2.3.Wiener알고리즘 …………………………………… 9

    333...복복복호호호화화화 지지지수수수3.1.May-Coron알고리즘 …………………………………… 123.2.ab-1= 형태 …………………………………… 14

    444...결결결 론론론 …………………………………… 18

    참참참고고고문문문헌헌헌 …………………………………… 19

  • 111...서서서 론론론

    요즘 우리는 e메일과 신용카드를 사용하면서 하루에도 몇 번씩 암호를 사용하고 있다.기업이나 국가같이 큰 기관에서도 중요한 기밀을 안전하게 보관하기 위해 암호를 사용한다.인터넷이 상용화되면서 전자상거래 같은 금융거래도 활성화되고 있다.우리가 느끼지 못할 뿐이지 휴대전화로 통화할 때에도 암호하고 해독하는 과정이 있다.현대사회에 없어서는 안 되는 컴퓨터의 발명에까지 손을 뻗고 있다.어떤 자료를 공개된 라인을 통해 주고받아야할 경우는 주고받는 사람들이 인정할 수 있는 사람들만 볼 수 있도록 할 수있는 비밀열쇠가 필요하게 된다.그렇다고 해서 비밀열쇠 수를 늘려서 안전을 기하려 하는 것은 너무나도 많은 비밀열쇠가 필요하게 되어 그 많은 비밀열쇠를 안전하게 보관하는 것은 현실적으로 불가능하기 때문에 비밀열쇠문제는 암호학자나 정부기관들에게 골치 아픈 과제였는데 1970년대에 버클리를 졸업한 RalphMerkle은 공개된 라인에서 비밀열쇠를 주고받을 수 있도록 하는 체제에 대해 제안했고, 이것을 공개열쇠 암호방식의 시초라 볼수 있다.Merkle이전에는 한 개의 열쇠로 비밀열쇠/시리얼 번호 쌍을 암호화했었고,Merkle의 생각은 비밀열쇠/시리얼 번호 쌍을 여러 개의 열쇠로암호화하는 것이었다.이 경우는 해커가 공개된 라인을 통해서 비밀열쇠/시리얼 번호 쌍을 보게 되더라도 복호화하는 시간이 많이 걸리게 된다는 것이다.그러나 나날이 소프트웨어 기술이 진보함에 따라 해커들의 복호화 시간이 점점 줄어들게 되고,해커들에게 더욱 더 많은 계산량을 요구하게 하는방법이 필요하게 된다.그래서 Martin Hellman과 Whitfield Diffie이Merkle과 동참하여 비밀열쇠문제를 해결하기 위해 연구했고,최초로 공개열쇠 암호체계를 개발하게 되었다.Diffie-Hellman-Merkle의 방식은 인터넷시대에 필요한 인증 기술을 갖고 있지 않았지만 RSA가 등장하는데 기여하는 셈이 된다.[5].

    111...111...RRRSSSAAA 배배배경경경

    RonRivest는 한 대학원생의 논문을 읽고 전율을 느끼고 암호학의 새로운 방향에 강하게 끌렸고,그의 인생을 바꾸는 계기가 되었다.그 논문 저자가 바로 Diffie였다.Diffie가 일하는 인공지능 연구소는 Rivest가 일하는컴퓨터 과학연구소 바로 위층에 있었지만 Rivest는 Diffie나 Hellman의 이

  • 름조차 몰랐고 암호에 대해서도 거의 아는 것이 없었다.하지만 충분히 강한일방향함수를 찾는다면 완전히 새로운 종류의 전자상거래가 탄생할 것이라확신했기 때문에 동료들에게도 과제를 전파하기 시작했고 그 중 LeonardAdleman이란 젊은 수학자가 있었다.하지만 Adleman은 Rivest와는 달리순수이론분야에는 관심이 많았지만 응용분야에는 큰 관심이 없었기 때문에Rivest가 제시한 과제에 대해서도 큰 관심을 갖지 않았다.그래서 처음에는친분 때문에 일에 참여하게 된다.AdiShamir도 Rivest와 같이 일방향함수를 찾는 것이 중요하다는 것에 동조했고 이 셋은 한 팀이 되어 연구를 시작한다.Rivest와 Shamir가 어떤 체제를 만들어오면 Adleman은 그 체제의결함을 제시하는 방식이었다.Rivest는 만들어 온 체제마다 번번히 체제가공격당하자 연구방향을 반대로 하여 강력한 일방향함수가 존재하지 않음을증명하려고 시도하였으나 그 쪽도 진전이 없었다.1977년 4월 3일 Rivest는 유월절 축제를 지내고 집에 돌아와 골똘히 생

    각하던 중에 새로운 체계에 대한 아이디어를 생각해내고 다음날 아침Shamir와 Adleman에게 발표 가능한 형식으로 쓴 원고를 보여주었는데 세사람의 이름이 모두 적혀있었다.Adleman은 처음에는 논문에서 자신의 이름이 올라가는 것은 올바르지 않다고 주장했지만 나중에 이름은 올리되 맨마지막에 올려달라고 주문하고,Shamir는 Rivest의 이름이 제일 먼저 기재되기를 원하여 이 세 사람의 이름순서대로 RSA라는 이름이 탄생했다.RonRivest,AdiShamir,LeonardAdleman이 만든 RSA 방식은 암호화하는열쇠와 복호화하는 열쇠를 달리 함으로써 기밀성 이외에도 인증 기술까지도제공할 수 있어 공개열쇠 암호방식의 기초가 된다.Shamir는 오히려 암호에대해 잘 알지 못했던 것이 값진 자산이었다고 말한다.암호학을 어느 정도라도 알고 있었다면 기존의 틀에서 연구하려고 했을텐데 암호학에 대해 아는것이 부족했기 때문에 대학에서 배운 개념들을 시험해보며 연구했다고 말한다.

    111...222...RRRSSSAAA 개개개념념념

    큰 소수 에 대하여 을 정하고,법 에 대하여 ≡ 만족하는 를 정하여 암호화함수 E와 복호화함수 D를 다음과 같이 정의한다.

    → 법

    → 법

  • 이 때, 는 공개열쇠이고, 는 비밀열쇠이다.복호화함수 D가암호화함수 E의 역작용을 하는지부터 알아봐야 하는데 복호화하는 과정에서개념적으로 필요한 오일러정리부터 소개하자.서로소인 두 자연수 에대하여 ≡ (법 )이 성립한다는 것이 오일러정리이다.법 에 대하여다음 합동식이 성립하므로 복호화함수 D가 암호화함수 E의 역작용을 하는것을 알 수 있다.[6].

    보통 알파벳의 첫 자를 따서 나타내는데 평문들이 있는 공간은 평문(planetext)의 첫 자를 따서 Ꮲ로,암호문이 있는 공간은 암호문(ciphertext)의 첫 자를 따서 Ꮸ로,열쇠공간은 열쇠(key)의 첫 자를 따서 Ꮶ로,암호화함수는 암호화(encryption)의 첫 자를 따서 E로,복호화함수는 복호화(decryption)의 첫 자를 따서 D로 쓴다.그래서 다음과 같은 표로 정리할수 있다.

    이 때 복호화지수 를 알고 있다면 복호화를 쉽게 계산할 수 있지만 비밀열쇠인 를 모르는 상황에서 평문 를 알아내는 것은 불가능하다.공개열쇠인 를 사람들에게 공개해 언제든 필요한 정보를 암호화 할 수 있게 해주고,복호화지수 는 공인 받은 사람에게만 제공되기 때문에,공개된 를부여 받은 사람들은 정보를 암호화만 할 수 있지 이것을 풀어볼 수 있는 사람은 복호화지수 를 부여 받은 사람 밖에 없는 것이다.복호화지수 를 갖고 있는 특정인만 확인할 수 있게 하는 것이다.반대로,복호화지수 를 부여 받은 사람이 복호화지수 를 이용해 정보를 암호화 하면 복호화지수 를 부여 받은 수많은 사람들이 이 암호화 정보를 풀어볼 수 있습니다.

    ( 는 소수). Ꮲ=Ꮸ=.

    Ꮶ= { ( ≡ (법) }.

    (법)

    (법)

    여기서 는 공개열쇠이고, 는 비밀열쇠이다.

    [RRRSSSAAA 암암암호호호체체체제제제 ]]]

  • 로 풀어볼 수 있는 정보는 오직 복호화지수 로 암호화 된 정보 밖에 없습니다.이런 이유로 인터넷 상에서 특정인임을 확인해 주는 디지털 인증,디지털 서명 기술에도 RSA암호체제가 사용된다.RSA 암호 기술은 이후 각은행의 사용자 인증, 전자화폐 시스템, 디지털 서명에 응용됐으며,PGP(PrettyGoodPrivacy)라는 인터넷 상의 비공식 무료 암호기술의 기반이 되기도 한다.[4].RSA의 안전성은 공개열쇠인 로부터 비밀열쇠인 를 계산적으로 구하

    는 것이 얼마나 어려운가에 기인한다. 을 소인수분해 할 수 있다면 값도 아는 것이고,유클리드 알고리즘을 사용하면 를쉽게 계산할 수 있게 되지만 을 소인수분해 하지 않고 비밀열쇠 를 효과적으로 계산해내는 방법은 아직 알려진 바가 없다. 가 충분히 크면 을소인수분해하는 효과적인 방법이 없으므로 를 쉽게 계산할 수 있는 방법도없다.즉 RSA 암호체제는 가 충분히 크면 을 소인수분해하는 효과적인 방법이 없다는 것에 기반한 암호체제이다.

  • 222...소소소인인인수수수분분분해해해

    을 소인수분해하는 방법 중에 가장 간단한 방법이라 할 수 있는 값을 이용하는 방법이 있다. 이므로 이다.따라서 값을 알 수 있다면 값도 아는것이나 마찬가지이고 다음과 같은 이차방정식의 해를 구함으로써 의 소인수인 를 구할 수 있다.

    (1)

    이차방정식을 푸는 것은 너무나도 쉬운 일이므로 값은 곧바로 의소인수들을 제공하는 것이나 다름없다.그러나 실제적으로 값을 알지 못한채 값을 알아내는 것은 불가능하다.뒤에 소개하는 Wiener알고리즘이나 May-Coron의 알고리즘도 값을 얻어내는 과정은 다르지만,결국마지막 단계에서는 값을 알아내면서 이 값을 이용하여 의 소인수인 를 구하게 되는 것이다.

    222...111...DDDiiixxxooonnn의의의 제제제곱곱곱 알알알고고고리리리즘즘즘

    합성수 을 소인수분해하는 많은 알고리즘들 중 가장 단순한 형태는 법 에 대하여 다음을 만족하는 를 찾아내는 것이다.

    ≠±

    만약 찾아낸다면 이지만 둘 다 으로 나눌 수 없기 때문에 와 의 최대공약수는 의 약수가 되어야한다.물론 같은 이유로 와 의 최대공약수도 의 약수이다.구체적으로 ≠± 가 성립하는 를 찾는 방법을 알아보자.우선 기본소수집합 B를 정하고 제곱 값이 기본소수집합 B의 원소들의 곱으로 나타내어지는 몇 개의 합동식을 찾는다.찾는 과정은 일단은 무작위로 선택해서 계산해보는 방법도 있지만 이는 효율성이 떨어지므로 효과적이지 못하고, 또는 을 계산해보면서 찾는 방법이 조금 더 효과적이다.이렇게 합동식을 몇 개 찾아낸다면 찾아낸 합동식끼리 곱하여 ≠± 가 성립하는 를 찾아

  • 낼 수 있다. 참고로 다른 공개암호체제 중에 이산대수문제에 기반한Elgamal체제가 있는데,이 체제에 대한 공격방법 중에도 기본소수집합과 합동식을 사용하는 방법(indexcalculusmethod)이 있다.[3].

    예예예))) =15770708441을 Dixon의 제곱 알고리즘을 이용하여 소인수분해 해보자.기본소수집합은 B={2,3,5,7,11,13}라고 하자.법 에 대하여 다음 세합동식이 성립한다.

    ≡×

    ≡× ×

    ≡× ×

    세 합동식을 좌변끼리,우변끼리 곱하면× × ≡× × ×

    이고 정리하면 ≡따라서 9503435785-546과 15770708441의 최대공약수인 115979는 의

    인수가 되고,

    이므로 15770708441의 두 약수를 구

    할 수 있게 된다.

    222...222...PPPooollllllaaarrrddd알알알고고고리리리즘즘즘자연수를 소인수분해 하는 알고리즘 중에는 이차체(quadraticsieve)를 이

    용하는 방법,타원곡선을 이용하는 방법,William의 p+1알고리즘 등이 있는데 이 중에서 Pollard가 고안한 의 특징을 이용하는 Pollard 알고리즘과 반복구간을 이용하는 Pollard- 알고리즘에 대해 알아보자.

    222...222...111...PPPooollllllaaarrrddd 알알알고고고리리리즘즘즘

    Pollard 알고리즘은 의 약수 에 대하여 을 나누는 소수들이모두 보다 작고 지수가 1보다 작을 때 성립하는 공격이다.만약 조건이 성립한다면

    이 성립하는데 페르마소정리에 의해서 ≡ (법 )이므로

  • ≡ (법 )이다.그러므로 라 놓으면 이고 는 의 약수이므로 와의 최대공약수를 구함으로써 을 소인수분해 할 수 있다.값이 그다지큰 값이 아니라면 을 소인수분해 할 수 있게 된다.즉,의 약수 에 대하여 을 나누는 소수들의 크기가 크지 않다면 유용한 공격법이다.

    예예예))) 인 경우에 은 두 소수 115979과 135979의 곱인데135979-1=2*3*131*173이 되어 135979-1을 나누는 소수들은 모두 180보다 작고 지수가 모두 1이다.이 경우 B=180으로 잡고 Pollardp-1알고리즘을 적용한다면 의 두 소인수 115979과 135979를 찾아낼 수 있다.이 알고리즘에 견디는 RSA체제를 만들기 위해서는 p-1도 큰 소수를 갖고 있어야 한다.그래서 큰 소수 에 대하여 도 소수가 되는 수를사용한다.

    222...222...222...PPPooollllllaaarrrddd--- 알알알고고고리리리즘즘즘

    이 알고리즘은 법 에 대하여 다음식이 성립하는 두 자연수 ′를 찾아내는 방법이다.

    ≠± ′, ≡ ′만약 이 조건에 맞는 두 자연수를 찾는다면 ′과 의 최대공약수를

    POLLARD := proc(n::posint, B::posint)

    local x, i;

    x[1] := 2;

    for i from 1 to B do

    if igcd(x[i] - 1, n) = 1 then x[i + 1] := x[i]^(i + 1)

    else print(igcd(x[i]-1,n))

    fi

    od

    end

    - maple 이용한 Pollard p-1 코드 -

  • 계산함으로써 의 약수를 찾을 수 있게 된다.두 자연수 ′를 찾는 방법을 좀 더 구체적으로 살펴보자.우선 함수 를 하나 정하고 수열 을 구성하면 수열이 어느 순간부터는 반복적인 값들이 반복되어 나타나게 되는데,그 반복되는 길이를 이라 한다면 값이 위 조건을 만족시키는 두 정수가 되어 과 의 최대공약수를 계산함으로써의 약수를 얻어내게 된다.수열의 항들이 나타나는 분포의 형태가 모양과비슷하여 Pollard- 알고리즘이라 불린다.

    예예예)))작은 숫자 =7871인 경우에 Pollard 알고리즘이 적용되는 과정을 보자. 이라고 하면 들은 다음과 같이 나타난다.즉,30번째 항부터 6항씩 6504,3263,5578,22,485,6967들이 반복되고 있음을 확인할 수 있다.

    그래서 과 의 최대공약수를 구하면 7871

    1 2 5 26 677 1812 1138 4201

    1620 3358 4893 5739 3858 104 2946 5075

    1714 1914 3382 1362 5360 451 6627 4821

    6850 3470 6142 6333 4145 6504650465046504 3263326332633263 5578557855785578

    22222222 485485485485 6967696769676967 6504 3263 5578 22 485

    6967 6504 3263 5578 22 485 6967 6504

    POLLARDRHO := proc(n::posint, m::posint)

    local x, i, j, y, f;

    x[1] := 1;

    f := x -> x^2 + 1;

    for i from 1 to 2*m do x[i + 1] := f(x[i]) mod n;

    od;

    for j to m do y[j] := x[2*j];

    print(igcd(y[j] - x[j], n))

    od

    end

    - - - - maple 이용한 Pollard 코드-

  • 의 약수인 73을 구하게 된다.똑같은 원리를 좀 더 큰 자연수 인 경우에 대해

    라고 하고 적용해보면 211항씩 반복되는 것을 확인할수 있고,=2261992628-7149213937과 의 최대공약수 135979를구할 수 있다.

    222...333...WWWiiieeennneeerrr알알알고고고리리리즘즘즘

    유리수는

    꼴로 쓸 수 있고,이를 연분수 표현이

    라 하고[]로 쓰기로 하자.예를 들면

    이고,유

    클리드 알고리즘을 사용하여 쉽게 계산할 수 있다.

    정정정리리리222...111 =1이고 이면

    는 의 연분수

    표현의 근사분수(convergent)중 하나이다.

    ① 의 연분수 표현형태 []를 구한다.

    ② 초기값을 ← ← ← ← 으로 정한다.

    ③ j 를 1부터 m까지 변화시키면서

    을 계산한다.

    경우1) 값이 정수일 때

    방정식 의 해를 구한다.

    경우2) 값이 정수가 아닐 때

    j를 하나 증가시켜 ← ←

    값으로 값 계산과정부터 다시 반복한다.

    - Wiener 알고리즘 -

  • Wiener알고리즘은 조건

    이 만족될 때 성립하는알고리즘이다.만약에 조건들이 만족된다면 다음 식이 성립한다.≡ (mod )이므로 이 성립하는 정수 가 존재하고

    WIENER := proc(n::posint, bb::posint)

    local a, b, c, cc, d, dd, mm, m, q, r, i, j;

    a[1] := bb;

    b[1] := n;

    for i from 1 do

    q[i] := iquo(a[i], b[i]);

    r[i] := irem(a[i], b[i]);

    a[i + 1] := b[i];

    b[i + 1] := r[i]

    od;

    cc[0] := 1;

    cc[1] := q[1];

    dd[0] := 0;

    dd[1] := 1;

    for j from 2 do

    cc[j] := q[j]*cc[j - 1] + cc[j - 2];

    dd[j] := q[j]*dd[j - 1] + dd[j - 2];

    mm[j] := (dd[j]*bb - 1)/cc[j];

    if type(mm[j], integer) then m := mm[j] fi;

    od;

    solve(x^2 - (n - m + 1)*x + n, x);

    end;

    - maple 이용한 Wiener 코드 -

  • 그런데 이므로

    이 성립한다.즉

    이 성립하므로 정리2.1에 의해서 는

    의 연분수 표현의 근사분수 중 하

    나이고 Wiener알고리즘을 거치면 을 소인수분해 할 수 있다.실제적으로 값이 정수가 되면 값과 같아지고,이차방정식(1)을 풀고그 두 해가 보다 작은 정수면 의 약수들이 된다.

    예예예))) =317940011,=77537081일 때 Wiener알고리즘을 적용해보자.실

    제로

    ≈ 이므로 Wiener알고리즘이 성립하게 되는 것이다.

    의 연분수 표현은 [0,4,9,1,19,1,1,15,3,2,3,71,3]

    이고 수렴값들은

    이고 과정을 반

    복하다 보면 =4일 때 값이 정수가 된다.

    × ×

    이차방정식 (1).즉, 방정식의 해를 구하면25523과 12457이고 이 해들은 의 소인수들이다.

  • 333...복복복호호호화화화 지지지수수수

    RSA체제에서는 복호화지수 값이 알려지게 된다는 것은 값을 구할수 있는 알고리즘들이 있게 되어 치명적이다.값이 알려지게 된다면 값을바꾸는 정도로는 안전성회복이 안되고 값까지 바꾸어야만 한다.값이 알려지게 된 경우의 RSA체제공격 알고리즘들을 알아보자.

    333...111...MMMaaayyy---CCCooorrrooonnn알알알고고고리리리즘즘즘

    복호화지수 와 암호화지수 에 대하여,값의 제한 범위를 이용하는 방

    법으로 May-Coron알고리즘이 있다.먼저 ≦

    일 때의 공격법을 알아보자.가 작고 인 경우라면 조건범위가 성립한다. 라고가정해도 일반성을 잃지 않는다.

    이므로

    ≡(법 )이므로 성립하는 자연수 가 존재한다.

    라고 정의하면

    이므로 이고, ≦ ≦ 의 여섯 값 중에 하나는 와 같아야 한다.

  • 예예예)))=37,=60728973,=160523347인 경우

    ,

    × 이므로 ≦

    이 성립하

    고 실제로

    ×

    ≈ 가 되어 이고

    ×

    이므로 두 값이 차이가 6보다 작게

    되면서 알고리즘이 성립하게 된다.이차방정식 의 두 근인 12347,13001이

    의 소인수가 된다.

    또 하나의 방법으로 Howgrave-Graham 알고리즘을 사용하여 ≦ 일때 사용하는 방법이 있다.두 정수 가 주어지면, ∈ 에 대하여 (

    )와 모두를 나누면서 보다 큰 정수 모두를 구할 수 있다는 것이 이다. 라 두면≡ 이므로 는 와 모두를 나눈다.

    그래서 으로 보고 Howgrave-Graham

    CORON := proc(a::posint, b::posint, n::posint)

    local k, kk, i, m, j;

    kk := (a*b - 1)/n;

    for i from 0 do

    if i

  • 알고리즘을 적용한다면 ≃ 일 때,값을 구할 수 있다.[2].

    333...222... 형형형태태태

    복호화지수 값을 안다면 암호화지수 는 공개되어 있으므로 을 인수분해하여 (은 홀수)꼴로 표현할 수 있다.이 때 임의로 를 택하여 을 차례대로 계산해 보면서 ≡ ,≠ (법 )이 성립하는 를 찾아내는 방법이다.만약에 이런 를 찾아낸다면 과 의최대공약수를 구함으로써 을 소인수 분해할 수 있다.이 알고리즘의 배경을 좀 더 자세하게 살펴보자.운이 좋아서 를 나 의 배수로 골랐다면이미 의 약수를 찾은 것이고,와 이 서로소라면 ≡ (법 )이 성립할 때까지 을 차례로 계산한다.

    ≡ (법 )이므로 ≡ (법 )이다.그래서 많아봐야 번 반복하게 된다.만약≡(법 )라면 알고리즘은 실패한 것이고,그렇지 않다면 가 의 약수

    가 되므로 알고리즘이 성공한 것인데 성공확률이 정도 됨을 보일 수 있다.

    실패하는 두 가지 경우는 아래와 같다.① ≡ (법 )② ≡ (법 )성립하는 가 존재한다.(≦ ≦ )

    즉 임의로 택했던 가 위의 개의 방정식 중에 하나라도 해가 된다면알고리즘은 실패한다.각 합동방정식의 해의 개수에 대해 살펴보자.우선,①번 합동방정식은 ≡(법 ),≡(법 )의 합동방정식과 동치

    이다.는 순환군이므로, 성립하는 가 존재하고 라고쓸 수 있다.

    ≡(법 ),≡(법 )

    이므로 이고 이 짝수이므로 홀수 에 대해

    라고 쓸 수 있다.

  • ,

    이므로 ≦

    , 이므로 이고,은 홀수이므로 .즉 ≦ ≦ 라고 쓸 수 있으며,합동방정식 ≡ (법 )의

    해의 개수가 개임을 의미한다.같은 방법으로 합동방정식 ≡ (법 )의해의 개수가 개임을 알 수 있다.중국인 나머지 정리에 의하면 ①번 합동방정식 ≡ (법 )의 해의 개수는 개가 된다.

    고정된 ≦ ≦ 에 대하여 ②번 합동방정식 ≡ (법 )도

    ≡ (법 ),≡ (법 )과 동치이다.위와 마찬가지로 는 순환군이므로, 성립하는 생성원 가 존재하고 라고 쓰면

    ≡ (법 )

    ≡ (법 )이므로 ≡ (법 )

    그리고 이므로

    만약 ≧ 이면 이지만 이 은 나눌 수 없으므로 도

    를 나눌 수가 없고,합동방정식 ≡ (법 )의 해는 없게

    된다.반대로 ≦ 인 경우에는 가 합동방정식 ≡ (법 )의 해가

  • 되기 위한 필요충분조건은 가 의 홀수배가 되는 것이다.따라서

    ≡ (법 )의 해의 개수는

    ×

    이고,같은 방법을 합동방정식 ≡ (법 )에 적용하면 ≦ 인

    경우에만

    × 개의 해를 갖게 되고,

    결론적으로 합동방정식 ≡ (법 )의 해의 개수는 다음과 같다.

    ≧ ≦ ≦ 라 해도 일반성을 잃지 않으므로 ≦ 라고 가정하자.≧ 라면 ②번 합동방정식 ≡ (법 )은 해가 없게 되는데 의 범위가 ≦ ≦ 이므로 해가 되지 않는 운 나쁜 를 선택을 하게 되는 최대경우의 수는

    ≦ ≦ 이므로

    즉,해가 되는 운 나쁜 를 선택을 하게 되는 경우의 수는 최대한

    만큼이고,해가 되지 않는 운 좋은 를 선택을 하게 되는 경우의 수는 최소

    한 만큼이다.그러므로 알고리즘이 성공할 확률이 적어도

    은 된다

    는 것을 알 수 있다.[1].

  • 예예예)))=82330933,=34986517,=89855713인 경우에 =5로 잡고 알고리즘 3.1을 적용하면

    =85877701≡ (법 )

    이 성립하고 =85877702과 =89855713의 최대공약수인 9103는 의 약수가 되고 다른 약수 9871까지 알 수 있다.

    W := proc(a::posint, b::posint, n::posint, w::posint)

    local r, rr, i, j, v;

    rr[1] := a*b - 1;

    for i from 1 do

    rr[i] := (a*b - 1)/2^(i - 1);

    if type(rr[i], integer) then r := rr[i] fi;

    od;

    for j from 1 do

    v[j] := (w &^(j*r)) mod n;

    if gcd(v[j] +1, n)=1 then v[j+1]:=v[j]^2;

    else print(v[j] +1, n); fi;

    od;

    end;

    - 알고리즘 3.1 -

  • 444...결결결 론론론

    RSA 공개암호체제는 소인수분해가 어렵다는 것에 기반한 암호체제이지만,일정한 제한조건하에서는 소인수분해하는 알고리즘들이 있고,복호화지수 크기가 작은 경우에 RSA 체제를 공격하는 알고리즘들이 있다.따라서체제를 구성할 때 이런 알고리즘들의 공격에도 견딜 수 있는 비밀열쇠를 잘선택해야 할 것이다.공격하는 알고리즘들이 근거로 삼고 있는 수학적 배경들을 공부하고,maple을 이용하여 실제로 구현해보았다.암호기술과 암호해독능력이 다른 어떤 국가보다도 발전된 미국은

    NSA(NationalSecurityAgency)가 해독할 수 없는 암호화기술이 포함된소프트웨어에 대해서는 수출허가를 해주지 않고 있고,일본은 1988년 12월행정기관이 보유하는 전자계산기처리에 따른 개인정보의 보호에 관한 법률을 제정·공포한 이후에 지방자치단체별로 전자계산처리에 관한 조례 등을 제정·운영하고 있다.국경의 의미가 퇴색되고 있는 정보사회에서 암호기술은곧 국가의 경제적 이익을 확보하는 주요수단으로 부각되는 만큼,우리나라도고유의 암호기술의 발전을 위한 노력을 통한 경쟁력 확보가 중요하다.[7].

  • 참참참고고고문문문헌헌헌

    [1] Douglas Robert ․ Stinson (2002),Cryptography theory andpractice2nd,Chapman& Hall/CRC

    [2] Jean-Sebastien Coron, Alexander May(2006), Deterministicpolynomial-timeequivalenceofcomputing theRSA secretkeyandfactoring.journalofcryptologyv.20 (39-50)

    [3]LawrenceC․ Washington(2003),EllipticCurvesnumbertheoryandcryptography,Chapman& Hall/CRC

    [4] 루돌프 키펜한,김시형 역(2001),암호의 세계,이지북,ISBN 89-89422-42-603410

    [5] H.X.Mel․ DorisBaker,역 정재원 외 2(2001),보안과 암호의 모든 것,서울:인포북

    [6] 김동균 ․ 김은정(2003),공개키 암호학과 전자투표,서울:청문각[7] 쓰지이시게오,역 이희구(2000),암호화 정보사회,서울:한마음사

    1. 서론1.1. RSA 배경1.2. RSA 개념

    2. 소인수분해2.1. Dixon의 제곱 알고리즘2.2. Pollard 알고리즘2.2.1. Pollard p-1알고리즘2.2.2. Pollard- p 알고리즘

    2.3. Wiener 알고리즘

    3. 복호화 지수3.1. May-Coron 알고리즘3.2. ab- 1 = 2^(s)r 형태

    4. 결론참고문헌