"RSA"의 두 판 사이의 차이
(→역사) |
|||
(사용자 2명의 중간 판 4개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''RSA'''는 | + | '''RSA'''는 [[로널드 리베스트]](Ronald Rivest)와 [[아디 샤미르]](Adi Shamir), [[레너드 애들먼]](Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 [[공개키]] [[암호화]] 및 인증시스템이다. 3명의 이름 가운데 첫 글자를 모아 붙인 용어이다. 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. RSA가 갖는 전자서명 기능은 인증을 요구하는 전자 상거래 등에 RSA의 광범위한 활용을 가능하게 하였다. |
− | |||
==개요== | ==개요== | ||
− | 1977년 | + | 1977년 [[로널드 리베스트]](Ronald Rivest)와 [[아디 샤미르]](Adi Shamir), [[레너드 애들먼]](Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 공개키 암호화 및 인증시스템이다. 3명의 이름 가운데 첫 글자를 모아 붙인 용어이다. [[마이크로소프트]] 윈도, 넷스케이프 브라우저를 비롯해 로터스 등 수백 개의 [[소프트웨어]]와 연동이 가능하며, 국제표준화기구(ISO)를 비롯하여, ITU·ANSI·IEEE 등 여러 국제기구에 암호표준으로 제안되어 있다. 소유권은 RSA시큐러티(Security)가 가지고 있다. |
이 알고리즘은 두 개의 큰 소수(보통 140자리 이상의 수)를 이용한다. 이 수들의 곱과 추가연산을 통해 하나는 공개키를 구성하고 다른 하나는 개인키를 구성하는데, 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 이렇게 구성된 공개키와 [[개인키]]로 인터넷에서 사용하는 정보(특히 전자우편)를 암호화하고 복호화할 수 있는데, 동작원리는 매우 복잡한 수학으로 RSA 홈페이지에 상세하게 기술되어 있다. | 이 알고리즘은 두 개의 큰 소수(보통 140자리 이상의 수)를 이용한다. 이 수들의 곱과 추가연산을 통해 하나는 공개키를 구성하고 다른 하나는 개인키를 구성하는데, 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 이렇게 구성된 공개키와 [[개인키]]로 인터넷에서 사용하는 정보(특히 전자우편)를 암호화하고 복호화할 수 있는데, 동작원리는 매우 복잡한 수학으로 RSA 홈페이지에 상세하게 기술되어 있다. | ||
− | 개인키의 암호를 해독하려면 슈퍼컴퓨터로도 1만 년 이상이 소요되므로 공개키 암호방식의 대명사로서 거의 모든 분야에 응용되고 있다. 그러나 계산량이 많은 것이 단점으로 꼽힌다. 비트 수에 따라 다르나 펜티엄급 컴퓨터에서 공개키와 개인키를 만들려면 짧게는 20여 초, 길게는 몇 분까지 기다려야 한다. 복호화에도 많은 계산량이 요구되고 있어 휴대용 단말기에서는 사용하기 어렵다. 그러나 이런 문제를 해결하기 위해 최근에 타원곡선 알고리즘이 등장하기도 했다. | + | 개인키의 암호를 해독하려면 슈퍼컴퓨터로도 1만 년 이상이 소요되므로 공개키 암호방식의 대명사로서 거의 모든 분야에 응용되고 있다. 그러나 계산량이 많은 것이 단점으로 꼽힌다. 비트 수에 따라 다르나 펜티엄급 컴퓨터에서 공개키와 개인키를 만들려면 짧게는 20여 초, 길게는 몇 분까지 기다려야 한다. 복호화에도 많은 계산량이 요구되고 있어 휴대용 단말기에서는 사용하기 어렵다. 그러나 이런 문제를 해결하기 위해 최근에 타원곡선 알고리즘이 등장하기도 했다. |
− | |||
==역사== | ==역사== | ||
− | 1978년 | + | 1978년 [[로널드 리베스트]](Ron Rivest)와 [[아디 샤미르]](Adi Shamir), [[레너드 애들먼]](Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 암호화 및 인증시스템이다. 이 세 발명자는 이 공로로 2002년 튜링상을 수상했다. 그러나 RSA 방식을 제일 먼저 개발한 사람은 영구 GCHQ에 근무하던 수학자였으며, 이보다 빠른 1973년도에 개발하게 된다. 이 내용은 GCHQ에서 비밀로 취급되었으며, 이후 1997년 세상으로 발표하게 된다. |
==방식== | ==방식== | ||
RSA는 두 개의 키를 사용한다. 여기서 키란 메시지를 열고 잠그는 상수(constant)를 의미한다. | RSA는 두 개의 키를 사용한다. 여기서 키란 메시지를 열고 잠그는 상수(constant)를 의미한다. | ||
*공개키 | *공개키 | ||
− | 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 | + | 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 탄생한 암호 방식이다. 공개키 암호는 한 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는 개인키이고 다른 하나는 누구나 가질 수 있는 공개키이다. 개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화 가능하고, 반대로 공개키로 암호화 한 정보는 그 쌍이 되는 개인키로만 복호화가 가능하다. 공개키 암호는 암호화할 때 사용하는 암호키와 복호화할 때 사용하는 암호키가 서로 다르기 때문에 비대칭키 암호라고도 한다. 공개키 암호는 키 전달 문제를 해결했지만, 암호화, 복호화를 위해 복잡한 수학연산을 수행하여 대칭키에 비해 속도가 느리다.<ref name="티스토리">〈[https://brownbears.tistory.com/332 대칭키 암호, 공개키 암호]〉, 《티스토리》, 2017-03-14</ref> |
일반적으로 많은 공개키 알고리즘의 공개키(public key)는 모두에게 알려져 있으며 메시지를 암호화(encrypt)하는데 쓰이며, 암호화된 메시지는 개인키(private key)를 가진 자만이 [[복호화]](decrypt)하여 열어볼 수 있다. 하지만 RSA 공개키 알고리즘은 이러한 제약조건이 없다. 즉 개인키로 암호화하여 공개키로 복호화할 수도 있다. | 일반적으로 많은 공개키 알고리즘의 공개키(public key)는 모두에게 알려져 있으며 메시지를 암호화(encrypt)하는데 쓰이며, 암호화된 메시지는 개인키(private key)를 가진 자만이 [[복호화]](decrypt)하여 열어볼 수 있다. 하지만 RSA 공개키 알고리즘은 이러한 제약조건이 없다. 즉 개인키로 암호화하여 공개키로 복호화할 수도 있다. | ||
27번째 줄: | 25번째 줄: | ||
메시지와 공개키 모두를 알 수 있다면 변조된 메시지를 보낼 수 있기 때문에, 실제로는 수신측의 공개키만을 사용하여 암호화하는 경우는 드물다. 송수신 양측의 키쌍을 사용하는 방법으로는 A의 개인키로 암호화 -> B의 공개키로 암호화 한 메시지를 전달하고 복호화 과정은 B의 개인키로 복호화 -> A의 공개키로 복호화로 구성된 방식이 일반적이다. RSA의 디자인 상, 그 열쇠(개인키에 해당)는 자물쇠의 형태(공개키에 해당)만 보고서는 쉽게 제작할 수가 없게 되어 있다. | 메시지와 공개키 모두를 알 수 있다면 변조된 메시지를 보낼 수 있기 때문에, 실제로는 수신측의 공개키만을 사용하여 암호화하는 경우는 드물다. 송수신 양측의 키쌍을 사용하는 방법으로는 A의 개인키로 암호화 -> B의 공개키로 암호화 한 메시지를 전달하고 복호화 과정은 B의 개인키로 복호화 -> A의 공개키로 복호화로 구성된 방식이 일반적이다. RSA의 디자인 상, 그 열쇠(개인키에 해당)는 자물쇠의 형태(공개키에 해당)만 보고서는 쉽게 제작할 수가 없게 되어 있다. | ||
− | |||
공개키와 개인키의 획득에 사용되는 알고리즘의 상세한 수학적 설명은 RSA 웹사이트에서 찾아볼 수 있다. 간단히 말해, 이 알고리즘은 두 개의 큰 소수 (소수는 그 숫자와 1로만 나누어지는 수이다)들의 곱과, 추가 연산을 통해 하나는 공개키를 구성하고 또하나는 개인키를 구성하는데 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 한번 그 키들이 만들어지면, 원래의 소수는 더 이상 중요하지 않으며, 버릴 수 있다. 공개 및 개인키 둘 모두는 암호화/복호화를 위해 필요하지만, 오직 개인키의 소유자만이 그것을 알 필요가 있다. RSA 시스템을 사용하면, 개인키는 절대로 인터넷을 통해 보내지지 않는다. | 공개키와 개인키의 획득에 사용되는 알고리즘의 상세한 수학적 설명은 RSA 웹사이트에서 찾아볼 수 있다. 간단히 말해, 이 알고리즘은 두 개의 큰 소수 (소수는 그 숫자와 1로만 나누어지는 수이다)들의 곱과, 추가 연산을 통해 하나는 공개키를 구성하고 또하나는 개인키를 구성하는데 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 한번 그 키들이 만들어지면, 원래의 소수는 더 이상 중요하지 않으며, 버릴 수 있다. 공개 및 개인키 둘 모두는 암호화/복호화를 위해 필요하지만, 오직 개인키의 소유자만이 그것을 알 필요가 있다. RSA 시스템을 사용하면, 개인키는 절대로 인터넷을 통해 보내지지 않는다. | ||
38번째 줄: | 35번째 줄: | ||
*이 수들의 곱과 추가연산을 통해 하나는 공개키를 구성하고 다른 하나는 개인키를 구성하는데, 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 이렇게 구성된 공개키와 개인키로 인터넷에서 사용하는 정보, 특히 전자우편를 암호화하고 [[복호화]]할 수 있는데, 동작원리는 매우 복잡한 수학으로 RSA 홈페이지에 상세하게 기술되어 있다. | *이 수들의 곱과 추가연산을 통해 하나는 공개키를 구성하고 다른 하나는 개인키를 구성하는데, 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 이렇게 구성된 공개키와 개인키로 인터넷에서 사용하는 정보, 특히 전자우편를 암호화하고 [[복호화]]할 수 있는데, 동작원리는 매우 복잡한 수학으로 RSA 홈페이지에 상세하게 기술되어 있다. | ||
*개인키의 암호를 해독하려면 [[슈퍼컴퓨터]]로도 1만 년 이상이 소요되므로 공개키 암호방식의 대명사로서 거의 모든 분야에 응용된다. | *개인키의 암호를 해독하려면 [[슈퍼컴퓨터]]로도 1만 년 이상이 소요되므로 공개키 암호방식의 대명사로서 거의 모든 분야에 응용된다. | ||
− | * 주요 기능으로는 인증, 암호 키 교환 등 있으며, 암호화 그 자체로는 RSA는 계산이 느려 암호화를 위해서는 대칭 키 암호화 방식인 AES 등과 함께 쓰인다. | + | * 주요 기능으로는 인증, 암호 키 교환 등 있으며, 암호화 그 자체로는 RSA는 계산이 느려 암호화를 위해서는 대칭 키 암호화 방식인 [[AES]] 등과 함께 쓰인다. |
+ | |||
{{각주}} | {{각주}} | ||
51번째 줄: | 49번째 줄: | ||
== 같이 보기 == | == 같이 보기 == | ||
* [[공개키 암호 알고리즘]] | * [[공개키 암호 알고리즘]] | ||
+ | * [[로널드 리베스트]] | ||
+ | * [[아디 샤미르]] | ||
+ | * [[레너드 애들먼]] | ||
{{암호 알고리즘|검토 필요}} | {{암호 알고리즘|검토 필요}} |
2021년 11월 28일 (일) 22:41 기준 최신판
RSA는 로널드 리베스트(Ronald Rivest)와 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 공개키 암호화 및 인증시스템이다. 3명의 이름 가운데 첫 글자를 모아 붙인 용어이다. 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. RSA가 갖는 전자서명 기능은 인증을 요구하는 전자 상거래 등에 RSA의 광범위한 활용을 가능하게 하였다.
개요[편집]
1977년 로널드 리베스트(Ronald Rivest)와 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 공개키 암호화 및 인증시스템이다. 3명의 이름 가운데 첫 글자를 모아 붙인 용어이다. 마이크로소프트 윈도, 넷스케이프 브라우저를 비롯해 로터스 등 수백 개의 소프트웨어와 연동이 가능하며, 국제표준화기구(ISO)를 비롯하여, ITU·ANSI·IEEE 등 여러 국제기구에 암호표준으로 제안되어 있다. 소유권은 RSA시큐러티(Security)가 가지고 있다.
이 알고리즘은 두 개의 큰 소수(보통 140자리 이상의 수)를 이용한다. 이 수들의 곱과 추가연산을 통해 하나는 공개키를 구성하고 다른 하나는 개인키를 구성하는데, 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 이렇게 구성된 공개키와 개인키로 인터넷에서 사용하는 정보(특히 전자우편)를 암호화하고 복호화할 수 있는데, 동작원리는 매우 복잡한 수학으로 RSA 홈페이지에 상세하게 기술되어 있다.
개인키의 암호를 해독하려면 슈퍼컴퓨터로도 1만 년 이상이 소요되므로 공개키 암호방식의 대명사로서 거의 모든 분야에 응용되고 있다. 그러나 계산량이 많은 것이 단점으로 꼽힌다. 비트 수에 따라 다르나 펜티엄급 컴퓨터에서 공개키와 개인키를 만들려면 짧게는 20여 초, 길게는 몇 분까지 기다려야 한다. 복호화에도 많은 계산량이 요구되고 있어 휴대용 단말기에서는 사용하기 어렵다. 그러나 이런 문제를 해결하기 위해 최근에 타원곡선 알고리즘이 등장하기도 했다.
역사[편집]
1978년 로널드 리베스트(Ron Rivest)와 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 암호화 및 인증시스템이다. 이 세 발명자는 이 공로로 2002년 튜링상을 수상했다. 그러나 RSA 방식을 제일 먼저 개발한 사람은 영구 GCHQ에 근무하던 수학자였으며, 이보다 빠른 1973년도에 개발하게 된다. 이 내용은 GCHQ에서 비밀로 취급되었으며, 이후 1997년 세상으로 발표하게 된다.
방식[편집]
RSA는 두 개의 키를 사용한다. 여기서 키란 메시지를 열고 잠그는 상수(constant)를 의미한다.
- 공개키
공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 탄생한 암호 방식이다. 공개키 암호는 한 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는 개인키이고 다른 하나는 누구나 가질 수 있는 공개키이다. 개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화 가능하고, 반대로 공개키로 암호화 한 정보는 그 쌍이 되는 개인키로만 복호화가 가능하다. 공개키 암호는 암호화할 때 사용하는 암호키와 복호화할 때 사용하는 암호키가 서로 다르기 때문에 비대칭키 암호라고도 한다. 공개키 암호는 키 전달 문제를 해결했지만, 암호화, 복호화를 위해 복잡한 수학연산을 수행하여 대칭키에 비해 속도가 느리다.[1]
일반적으로 많은 공개키 알고리즘의 공개키(public key)는 모두에게 알려져 있으며 메시지를 암호화(encrypt)하는데 쓰이며, 암호화된 메시지는 개인키(private key)를 가진 자만이 복호화(decrypt)하여 열어볼 수 있다. 하지만 RSA 공개키 알고리즘은 이러한 제약조건이 없다. 즉 개인키로 암호화하여 공개키로 복호화할 수도 있다.
공개키 알고리즘은 누구나 어떤 메시지를 암호화할 수 있지만, 그것을 해독하여 열람할 수 있는 사람은 개인키를 지닌 단 한 사람만이 존재한다는 점에서 대칭키 알고리즘과 차이를 가진다.
RSA는 소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있다.
보다 이해하기 쉬운 예를 들자면, A라는 사람에게 B라는 사람이 메시지를 전하고자 할 때 B는 A의 열린 자물쇠를 들고 와 그의 메시지를 봉인(공개키 암호화 과정에 해당)하고, 그런 다음 A에게 전해 주면, 자물쇠의 열쇠(개인키에 해당)를 가지고 있는 A가 그 메시지를 열어보는(개인키 복호화 과정에 해당) 식이 된다. 중간에 그 메시지를 가로채는 사람은 그 열쇠를 가지고 있지 않으므로 메시지를 열람할 수 없다.
메시지와 공개키 모두를 알 수 있다면 변조된 메시지를 보낼 수 있기 때문에, 실제로는 수신측의 공개키만을 사용하여 암호화하는 경우는 드물다. 송수신 양측의 키쌍을 사용하는 방법으로는 A의 개인키로 암호화 -> B의 공개키로 암호화 한 메시지를 전달하고 복호화 과정은 B의 개인키로 복호화 -> A의 공개키로 복호화로 구성된 방식이 일반적이다. RSA의 디자인 상, 그 열쇠(개인키에 해당)는 자물쇠의 형태(공개키에 해당)만 보고서는 쉽게 제작할 수가 없게 되어 있다.
공개키와 개인키의 획득에 사용되는 알고리즘의 상세한 수학적 설명은 RSA 웹사이트에서 찾아볼 수 있다. 간단히 말해, 이 알고리즘은 두 개의 큰 소수 (소수는 그 숫자와 1로만 나누어지는 수이다)들의 곱과, 추가 연산을 통해 하나는 공개키를 구성하고 또하나는 개인키를 구성하는데 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 한번 그 키들이 만들어지면, 원래의 소수는 더 이상 중요하지 않으며, 버릴 수 있다. 공개 및 개인키 둘 모두는 암호화/복호화를 위해 필요하지만, 오직 개인키의 소유자만이 그것을 알 필요가 있다. RSA 시스템을 사용하면, 개인키는 절대로 인터넷을 통해 보내지지 않는다.
개인키는 공개키에 의해 암호화된 텍스트를 복호화하는데 사용된다. 그러므로, 내가 만약 누군가에게 메시지를 보내는 상황을 가정해 보면, 나는 중앙의 관리자로부터 수신자의 공개키를 찾은 다음, 그 공개키를 사용하여 보내는 메시지를 암호화할 수 있다. 수신자는 그것을 받아서, 자신의 개인키로 복호화하면 된다. 프라이버시를 확실하게 하기 위해 메시지를 암호화하는 것 외에도, 자신의 개인키를 사용하여 디지털 서명을 암호화해서 함께 보냄으로써, 그 메시지가 틀림없이 바로 당신에게서 온 것임을 받는 사람에게 확신시켜줄 수 있다. 메시지를 받은 사람은, 발신자의 공개키를 이용해 메시지를 복호화할 수 있다.
특징[편집]
- 마이크로소프트 윈도, 넷스케이프 브라우저를 비롯해 로터스 등 수백 개의 소프트웨어와 연동이 가능하며, 국제표준화기구(ISO)를 비롯하여, ITU·ANSI·IEEE 등 여러 국제기구에 암호표준으로 제안되어 있다. 소유권은 RSA시큐러티(Security)가 가지고 있다.
- 이 알고리즘은 두 개의 큰 소수보통 140자리 이상의 수를 이용한다.
- 이 수들의 곱과 추가연산을 통해 하나는 공개키를 구성하고 다른 하나는 개인키를 구성하는데, 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 이렇게 구성된 공개키와 개인키로 인터넷에서 사용하는 정보, 특히 전자우편를 암호화하고 복호화할 수 있는데, 동작원리는 매우 복잡한 수학으로 RSA 홈페이지에 상세하게 기술되어 있다.
- 개인키의 암호를 해독하려면 슈퍼컴퓨터로도 1만 년 이상이 소요되므로 공개키 암호방식의 대명사로서 거의 모든 분야에 응용된다.
- 주요 기능으로는 인증, 암호 키 교환 등 있으며, 암호화 그 자체로는 RSA는 계산이 느려 암호화를 위해서는 대칭 키 암호화 방식인 AES 등과 함께 쓰인다.
각주[편집]
- ↑ 〈대칭키 암호, 공개키 암호〉, 《티스토리》, 2017-03-14
참고자료[편집]
- 박경미, 〈RSA 암호화 과정〉, 《박경미의 수학콘서트 플러스》, 2013-12-12
- 〈RSA 암호〉, 《위키백과》
- 〈RSA 암호화〉, 《나무위키》
- 〈RSA〉, 《텀즈》
- 〈RSA〉, 《두산백과》
- 〈RSA〉, 《정보통신기술용어해설》
같이 보기[편집]