"비대칭키"의 두 판 사이의 차이
(→부인 방지) |
|||
(사용자 3명의 중간 판 24개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''비대칭키'''는 암호화 | + | '''비대칭키'''는 [[암호화]]할 때와 [[복호화]]할 때의 키가 서로 다른 [[키]](key)를 의미한다. 타인에게 절대 노출되어서는 안되는 [[개인키]]를 토대로 만든 [[공개키]]가 쌍을 이룬 형태이다.<ref name="chodahi">chodahi, 〈[https://blog.naver.com/chodahi/221406287669 암호화 기법 (대칭키, 비대칭키)]〉, 《네이버 블로그》, 2018-11-26</ref> 비대칭키를 이용한 [[암호 알고리즘]]은 [[공개키 알고리즘]]으로 불리기도 한다.<ref name="제레미">제레미, 〈https://sungjk.github.io/2016/09/30/Security.html 대칭형/비대칭형 암호 알고리즘]〉, 《개인 블로그》, 2016-09-30</ref> |
== 개요 == | == 개요 == | ||
− | 비대칭키는 공개키(Public Key)와 개인키(Private Key)가 | + | 비대칭키는 [[공개키]](Public Key)와 [[개인키]](Private Key)가 하나의 쌍을 이루고 있다. 다른 사람들에게 공개된 키로서 정보를 암호화할 수 있는 [[공개키]]와 사용자 본인만 알고 있어서 암호를 풀 수 있는 키인 [[개인키]]는 하나의 쌍을 이루고 있다. 비대칭키를 사용한 암호화 방식에는 공개키로 암호화를 하는 경우와 개인키로 암호화를 하는 경우로 구분할 수 있다. 공개키로 암호화를 선택했다면 데이터 보안에 중점을 둔 것이고, 개인키로 암호화를 진행했다면 안전한 전자서명을 통한 인증 과정에 중점을 둔 것으로 해석할 수 있다. 암호화할 때의 키와 [[복호화]]할 때의 키 값이 다르면 비대칭키라고 한다. 비대칭키의 대표 알고리즘은 [[RSA]], [[디피-헬만]](Diffie-Hellman), [[타원곡선암호]](ECDSA) 등이 있다.<ref name="chodahi">chodahi, 〈[https://blog.naver.com/chodahi/221406287669 암호화 기법 (대칭키, 비대칭키)]〉, 《네이버 블로그》, 2018-11-26</ref> |
+ | |||
+ | == 개념 == | ||
+ | 비대칭형 암호는 이름 그대로 암호화 키와 복호화 키가 서로 다르다. 암호화를 하면 하나의 키쌍이 생기고 이 키들은 수학적으로 밀접한 관계를 가진다. 두 개의 키를 각각 A키, B키라고 하였을 때, A키로 암호화한 암호문은 B키로만 복호화가 가능하고 B키로 암호화한 암호문은 A키로만 복호화가 가능하다. 그래서 이중 하나의 키만 비밀로 보호하고 다른 하나의 키는 공개해도 상관이 없다. 이렇게 둘 중 하나라도 반드시 공개되어야 통상적인 사용이 가능하기 때문에 [[공개키 암호]]라고도 부른다. 공개키로 암호화한 암호문은 어차피 개인키를 가진 사람이 풀어볼 수 있으므로 상호간 공개키만 교환하고 상대의 공개키로 암호화를 하여 데이터를 교환하면 상대는 자신의 개인키로 복호화를 한다. 따라서 마찬가지로 배송 문제는 근본적으로 발생하지 않는다. 하지만 비대칭형 암호는 암복호화가 대칭형 암호화에 비하여 현저하게 느리기 때문에 현실적으로 비대칭형 암호를 이용하여 대칭형 암호의 키를 배송하고 실제 암호문은 대칭형 암호를 사용하는 식으로 상호보완적인 이용이 일반적이라고 할 수 있다. 또한 비대칭형 암호화라고 하여서 취약점이 없는 것은 아니기 때문에 해커가 중간에서 통신을 가로채 수신자에게는 송신자인 척을 하면서 송신자에게는 수신자인 척을 하여 양쪽의 공개키와 실제 암호화에서 사용된 대칭키를 모두 얻어내는 기법인 [[중간자 공격]]에는 취약하다. 또한 개인키와 공개키의 관계를 역이용하여 [[전자서명]]에 활용되기도 하는데, 특정한 문서를 개인키로 암호화하여 발송하면 이 문서는 해당 발신자의 공개키로만 복호화가 가능하다.<ref>〈[https://javaplant.tistory.com/26 암호화 양방향, 단방향, 공개키(비댕칭키), 비공개키(대칭키) 개념/분류 알고리즘 정리]〉, 《자바공작소》, 2018-05-08</ref> | ||
+ | |||
+ | == 역사 == | ||
+ | [[파일:휫필드 디피.jpg|썸네일|200픽셀|'''[[휫필드 디피]]'''(Whitfield Diffie)]] | ||
+ | [[파일:마틴 헬만.jpg|썸네일|200픽셀|'''[[마틴 헬만]]'''(Martin Hellman)]] | ||
+ | |||
+ | 키 전달의 아이디어는 디피와 헬만이 처음 발표하였다. [[휫필드 디피]](Whitfield Diffie)는 1965년 [[MIT]]에서 수학을 전공하고 컴퓨터 보안과 관련된 일을 했는데, 키 전달에 대한 문제에 관심이 많았다. 하지만 당시에 많은 사람들은 이와 같은 관심에 대해 회의적이었다. 왜냐하면 [[미국 국가안보국]](NSA)에서 많은 연구를 하고 암호를 통제하고 있는 상황이었는데, 개인이 그 문제를 풀 수 있다고 생각하지 않았다. 설사 해결해도 [[NSA]]의 통제로 빛을 발하지 못할 것이라고 여겼다. 하지만 히피 기질이 다분한 디피는 포기하지 않았다. 그리고 같은 관심사를 가진 스탠퍼드 대학교의 [[마틴 헬만]](Martin Hellman) 교수를 만나게 되었다. 1974년부터 디피와 헬만은 암호 전달 문제를 연구하기 시작했고, 그들은 항상 새로운 아이디어를 도출하고 실패하기를 반복하다가 1975년 어느 날 [[비대칭키]]라 불리는 개념을 떠올리게 되었다. 1976년에 발표된 비대칭 암호화 알고리즘의 아이디어는 20세기 암호학의 혁명으로 불렸다. 이후 실제 사용 과정에서 몇 가지 약점이 발견되었으나, 이후 [[RSA]] 등 더 우수한 공개키 암호화 알고리즘의 출현을 앞당기는 계기가 되었다.<ref>〈[https://terms.naver.com/entry.nhn?docId=3431998&cid=58437&categoryId=58437 비대칭 암호화 방식의 발견]〉, 《네이버 지식백과》</ref> | ||
+ | |||
+ | == 동작 원리 == | ||
+ | 공개키 암호 방식은 출제자만이 아는 특정한 종류의 정보 없이는 매우 풀기 어려운 수학적 문제를 바탕으로 만들어진다. 키를 만드는 사람은 공개키를 일반에 공개하고 비밀키는 자신만이 알수 있도록 숨겨둔다. 그러면 누구든지 공개키를 이용하여 메세지를 암호화하면 개인키를 가지고 있는 사람만 해독이 가능하다. [[RSA]] 암호화 같은 초기 암호들은 두 개의 큰 소수를 곱한 숫자를 문제로 사용하였는데 사용자는 임의의 큰 소수를 두 개 골라 비밀키로 삼고 그 곱한 값을 공개키로 공개한다. 큰 수의 [[소인수 분해]]는 풀기 어려운 문제이므로 다른 사람들은 비밀키를 알 수 없을 것이라는 사실이 보장된다. 그러나 최근 이 분야의 연구가 크게 진전되어 [[RSA]]의 안전성을 보장하기 위해서는 수천 비트 이상의 큰 소수를 개인키로 사용하여야 한다. 또 다른 종류의 문제로는 <math> x \ </math>와 <math> y \ </math>가 알려진 상태에서 방정식 <math> x^z \ = \ y </math>의 해 <math> z \ </math>를 구하는 문제가 있는데 실수나 복소수에 대해서는 [[로그함수]]를 이용하여 쉽게 문제를 풀 수 있다. 하지만 [[유한군]]에서는 이러한 문제를 풀기가 어려운 것으로 알려져 있다. 이런 문제를 [[이산로그]] 문제라고 한다. [[타원곡선암호]]를 비롯하여 여러 가지 공개키 암호들이 이산로그 문제를 바탕으로 만들어져 있다.<ref>헬로망고, 〈[https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%EB%B0%A9%EC%8B%9D 공개 키 암호 방식]〉, 《네이버 블로그》</ref> | ||
+ | |||
+ | == 종류 == | ||
+ | * '''RSA''' : RSA는 비대칭 암호화 알고리즘 중에서 가장 많은 지지를 받으며 오늘날 산업 표준으로도 사용되는 방법이다. RSA는 [[론 리베스트]](Ron Rivest), [[아디 샤미르]](Adi Shamir), [[레오나르드 애들만]](Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 암호화 및 인증시스템이다. 세 사람은 [[MIT]] 컴퓨터 사이언스 실험실 8층에서 함께 일했는데, 신문에서 디피와 헬만이 발표한 내용을 보고 비대칭 암호화 알고리즘 개발을 시작하였다. 그러면서 암호화 알고리즘을 만들고 취약점을 찾는 시행착오를 수없이 거쳤다. 1977년 4월 어느날 [[론 리베스트]]는 수학 교과서를 읽다가, 현재 비대칭 알고리즘의 표준처럼 사용되는 RSA 알고리즘의 아이디어를 도출해냈다. 그는 그날 밤 논문을 마쳤고 논문 마지막에 세 사람의 이름을 적었다. 그리하여 3명의 이름 가운데 첫 글자를 모아 붙인 RSA라는 말이 생겨났다. RSA 암호는 기본적인 정수론, 즉 [[소수]]를 이용한다. RSA 암호의 아이디어는 중요 정보를 두 개의 소수로 표현한 후, 두 소수의 곱을 힌트와 함께 암호로 사용한다는 것이다. 사실 소수는 수백년간 연구되어 왔지만 그리 중요하게 여겨지지 않았다. 하지만 암호학에는 결정적 기여를 하였다.<ref>〈[https://terms.naver.com/entry.nhn?docId=3431999&cid=58437&categoryId=58437 RSA 알고리즘]〉, 《네이버 지식백과》</ref> | ||
+ | |||
+ | * '''[[디피-헬만]]'''(Diffie-Hellman) : 1976년 공개키 암호 방식을 최초로 제안한 [[휫필드 디피]](Whitfield Diffe)와 [[마틴 헬만]](Martin Hellman)이 발명한 암호화 알고리즘이다. 디피 헬만은 두 사용자 간에 공통의 암호화키를 공개키 암호 방식의 개념을 이용하여서 사전에 어떠한 비밀키 교환이 없이도 공중 통신망 환경에서 공동키를 안전하게 공유할 수 있는 방법을 제시한 최초의 비밀키 교환 프로토콜이다. 가장 오래된 공개키 암호화 시스템으로 이산로그 구조의 복잡함을 활용한 방식이다. 현대 암호학의 혁명으로 불리지만, [[중간자 공격]]에 취약하다는 단점이 있다.<ref>밤공기후하후하, 〈[https://blog.naver.com/on21life/221390508337 IT보안-Diffie Hellman 키 교환 방식이란 무엇인가]〉, 《네이버 블로그》, 2018-11-02</ref> | ||
+ | |||
+ | * '''[[타원곡선암호]]'''(ECC; Elliptic Curve Cryptosystem) : 1985년 미국 [[워싱턴 대학교]]의 수학 교수인 [[닐 코블리츠]](Neal Koblitz)와 IBM 연구소의 [[빅터 밀러]](Victor Miller)가 거의 동시에 독립적으로 도출한 공개키 형식의 암호화 방식이다. [[타원곡선]]이라고도 불리는 수식에 의해 정의되는 특수 가산법을 기반으로 암호화와 복호화를 수행하는 암호화 방식이다. 타원곡선 군의 연산에서 정의되는 [[이산대수]] 문제의 어려움의 이용을 기초로 하는 공개키 암호 알고리즘 시스템으로서 [[RSA]]/[[DSA]]와 같은 공개키 암호보다 짧은 키 길이와 빠른 연산속도를 가지면서 동일한 수준의 보안 강도를 제공하는 암호 알고리즘이다. 이와 같은 방식으로 만든 암호를 해독하는 방법은 아직 발견되지 않았다. 다만, 일부 곡선에서는 약점이 발견되어 실제 이 방식을 적용하려면 이것을 피할 연구가 필요하다. 짧은 키 사이즈로 높은 안전성이 보장되고, 또 서명할 때의 계산을 빠르게 할 수 있는것이 특징이다. [[스마트카드]](IC카드) 등 정보처리 능력이 그다지 높지 않은 기기에 이용하기에 적합한 암호화 방식이다. <ref>〈[https://terms.naver.com/entry.nhn?docId=1232513&cid=40942&categoryId=32204 타원곡선암호]〉, 《네이버 지식백과》</ref> | ||
+ | |||
+ | * '''[[전자서명]]'''(digital signature) : 전자서명은 [[인증서]] 형태로 발급되는 자신만의 디지털 인감 도장이며 안전한 디지털 서명이다. 인터넷 환경에서 특정 사용자를 [[인증]]하기 위한 목적으로 사용한다. 인증은 특정인이 진짜 그 사람인지를 확인하는 절차라고 할 수 있다. 이와 비슷한 기능으로 권한이 있고 없음을 확인하는 권한이 있는데, 인증과는 다른 특징을 갖고 있다. 일반적으로 전자서명의 인증 과정은 [[RSA]] 알고리즘과는 반대 원리를 가지며 비공개키 알고리즘과 공개키 알고리즘의 조합을 사용한다. 전자서명은 자신을 다수에게 증명하는 기능이므로, 암호화 과정에서 자신만 아는 개인키를 사용한다. 개인키로 암호화한 전자서명은 다수의 타인이 볼 수 있으므로 해독 과정에서는 공개키를 사용하여 복호화되어 원문과 비교될 수 있다. 일반적으로 전자서명의 암호화는 두 단계로 이루어진다. 첫 번째는 전자서명 알고리즘으로 자신을 인증하는 암호화, 두 번째는 공개키를 이용하여 암호화된 정보를 복호화하는 것이다. 이 중에서 두 번째 단계는 전자서명의 정보를 전송하기 위해 다시 RSA 알고리즘을 사용한다. 해독 과정은 먼저 수신한 문서를 RSA 알고리즘의 비공개키로 해독하고 전자서명문을 얻어 그 문서를 송신자의 인증에 필요한 전자서명 공개키를 사용하여 원문서를 얻는다. 전자서명 과정에서 복잡하게 두 단계로 암호화하는 이유는 먼저 RSA 알고리즘을 사용하여 암호화하는 과정은 전송 과정에서 보안 문제를 해결하기 위해서이다.<ref>〈[https://terms.naver.com/entry.nhn?docId=2271972&cid=51207&categoryId=51207 RSA 전자 서명]〉, 《네이버 지식백과》</ref> | ||
== 특징 == | == 특징 == | ||
=== 암호화 === | === 암호화 === | ||
− | '''공개키'''로 데이터를 | + | '''공개키'''로 데이터를 암호화하여 전송하는 경우, 데이터를 수신한 사람은 자신의 개인키로 데이터를 복호화한다. 공개키는 널리 배포될 수 있기 때문에 많은 사람들이 한 명의 개인키 소유자에게 데이터를 보낼 수 있다. '''개인키'''로 암호화를 진행하는 경우 개인키의 소유자가 개인키로 데이터를 암호화하고 공개키와 함께 전달한다. 이 과정에서 공개키와 데이터를 획득한 사람은 누구라도 공개키를 이용하여 복호화가 가능하다. 이런 위험에도 불구하고 이 방법을 사용하는 이유는 데이터 제공자의 신원을 보장해주기 때문이다. 암호화된 데이터가 공개키로 복호화된다는 것은 공개키와 쌍을 이루는 개인키에 의해서 암호화 되었다는 것을 의미한다. 즉 데이터 제공자의 신원 확인이 보장된다는 것이다. 이 방법이 공인인증 체계의 기본 바탕이 되는 전자서명이다.<ref name="chodahi"></ref> |
=== 보안의 3요소 === | === 보안의 3요소 === | ||
− | |||
[[파일:보안의_3요소.PNG|썸네일|450픽셀|가운데| 보안의 3요소]] | [[파일:보안의_3요소.PNG|썸네일|450픽셀|가운데| 보안의 3요소]] | ||
+ | |||
+ | [[보안]]은 3가지 요소가 결합되어야 높은 안정성을 형성한다. 인가받은 사용자만 정보 자산에 접근할 수 있음을 보장하는 [[기밀성]]과 권한을 가진 사용자에 의해 인가된 방법으로만 정보를 변경할 수 있음을 보장하는 [[무결성]]이 보장되야 한다. 마지막으로 최소한의 투입으로 좋은 결과를 만들어 낼 수 있는 [[효율성]]이 비대칭키를 통해 보장된다.<ref>김정출 김정출, 〈[https://jeongchul.tistory.com/606 정보보호 대칭키 비대칭키]〉, 《티스토리》, 2018-10-11</ref> | ||
+ | |||
+ | * '''[[기밀성]]''' : 암호화 알고리즘의 가장 기본적인 기능인 기밀성은 대칭키 암호화 알고리즘보다 비대칭키 암호화 알고리즘에서 좀더 엄밀한 기밀성을 제공한다. 예를 들면 민수가 지수에게 편지를 보내려 할 때 지수를 제외한 사람은 편지를 읽지 못하게 하려면 어떻게 해야 할까? 먼저 민수는 지수의 공개키를 얻는다. 그리고 공개키를 이용해 편지를 암호화하여 보내면 지수는 자신의 개인키를 이용해 민수의 편지를 복호화하여 읽을 수 있다. 그러면 만약 철수가 중간에 편지를 가로채더라도, 지수의 공개키로 인해 암호화한 편지를 철수의 개인키로는 복호화할 수 없다. 왜냐하면 지수의 공개키로 암호화한 것은 오직 지수의 개인키로만 복호화가 가능하기 때문이다. 이것이 대칭키가 제공하는 기밀성이다. | ||
+ | |||
+ | * '''[[무결성]]''' : 무결성은 권한을 가진 사람만 정보를 수정할 수 있도록 보호하는 성질로서, 승인되지 않거나 원하지 않는 방법에 의한 데이터의 변경을 보호하는 역할을 한다. 연결형으로는 메시지 스트림 대상과 불법 변경 보호와 서비스 부인 방지가 있고 비연결형으로는 개인 메시지만 대상, 불법변경 보호가 있고 해시 함수, 디지털 서명, 암호 알고리즘을 사용한다. 무결성은 사고에 의해 훼손될 수 있고, 또는 의도적인 변경 및 삭제, 중복 보관 중인 정보의 일부가 변경 및 삭제되었을 때, 기타 컴퓨터 바이러스에 의한 손상 등으로 인해 깨질 수 있다. | ||
+ | |||
+ | * '''[[효율성]]''' : 효율성은 정보에 대한 접근과 사용이 적시에 확실히 보장되는 상태를 의미한다. 여러 암호 알고리즘 가운데 효율성이 가장 높은 방법을 사용하는 것이 좋다. 동일한 기밀성과 무결성을 보장하는 여러 개의 암호 알고리즘이 있을 경우, 키 길이가 짧을수록 좋고, 암호화와 복호화에 걸리는 시간이 짧을수록 효율성이 높다. | ||
+ | |||
+ | === 부인 방지 === | ||
+ | 비대칭 암호화 알고리즘은 대칭키 암호화 알고리즘에는 존재하지 않는 [[부인방지]](non-repudiation) 기능을 제공한다. 부인 방지는 쉽게 말해 '발뺌 방지'라고 할 수 있다. 예를 들면 영희에게 돈을 빌린 철수가 이번 주 안에는 갚겠다는 약속을 한다. 하지만 다음 주가 되어도 철수가 돈을 갚지 않자 영희는 철수에게 따졌지만 철수는 그런 말을 한 적이 없다고 발뺌을 한다. 그리고 영희에게는 철수가 그런 약속을 했다는 증거가 없다. 이런 경우가 부인방지 기능이 없는 상황이다. 그런데 영희가 철수의 말을 녹음해 두었다면, 부인하지 못했을 것이다. 이때 녹음 기능이 바로 부인방지 기능이다. 부인방지 기능은 전자상거래에서 기업 간 주문이나 계약서에서도 중요한 법적 증거 효력을 발휘하며 여러 암호 알고리즘에도 사용된다.<ref>〈[https://terms.naver.com/entry.nhn?docId=3432001&cid=58437&categoryId=58437&expCategoryId=58437 비대칭 암호화의 기능]〉, 《네이버 지식백과》</ref> | ||
=== 장점과 단점 === | === 장점과 단점 === | ||
− | 비대칭키 암호는 다른 유저와 키를 공유하지 않아도 암호를 통한 안전한 통신을 한다는 장점을 갖는다. 각 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키 정보로 암호화된 정보를 복호화할 수 있는 키를 개별적으로 보유하고 있음으로써 누구나 암호화할 수 있지만 공개키에 대응되는 개인키를 가진 당사자만 복호화할 수 있는 특징을 가진다. n명의 사용자로 구성된 네트워크를 고려하면 각 사용자는 공개키와 개인키 | + | 비대칭키 암호는 다른 유저와 키를 공유하지 않아도 암호를 통한 안전한 통신을 한다는 장점을 갖는다. 각 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키 정보로 암호화된 정보를 복호화할 수 있는 키를 개별적으로 보유하고 있음으로써 누구나 암호화할 수 있지만 공개키에 대응되는 개인키를 가진 당사자만 복호화할 수 있는 특징을 가진다. n명의 사용자로 구성된 네트워크를 고려하면 각 사용자는 공개키와 개인키 두 개를 보유하고 있으므로 네트워크 전체적으로 2n개의 키가 요구된다. 그리고 각 유저는 2개의 키만 보유하고 있으면 된다. 수학적인 난제를 기반으로 설계된 비대칭키는 암호화나 복호화를 수행하기 위한 연산이 복잡한 수학 연산을 기반으로 구성되어 있다. 그로 인해 효율성이 대칭키 암호에 비해 높지 않다. 그럼에도 불구하고, 비대칭키 암호 알고리즘의 경우에는 모두가 확인할 수 있는 공개키에 대응되는 개인키가 각 사용자만 알고 있는 정보이기 때문에, 전 세계적으로 불특정 다수가 정보를 주고받아야 하는 인터넷 환경에서 광범위한 인증 기능을 제공한다는 장점이 있다.<ref>헬로망고, 〈[https://blog.naver.com/rbdi3222/220620652311 보안 요소 기술 ] 대칭키, 비대칭키 ?]〉, 《네이버 블로그》, 2016-02-07</ref> |
{{각주}} | {{각주}} | ||
23번째 줄: | 54번째 줄: | ||
* 김정출 김정출, 〈[https://jeongchul.tistory.com/606 정보보호 대칭키 비대칭키]〉, 《티스토리》, 2018-10-11 | * 김정출 김정출, 〈[https://jeongchul.tistory.com/606 정보보호 대칭키 비대칭키]〉, 《티스토리》, 2018-10-11 | ||
* 헬로망고, 〈[https://blog.naver.com/rbdi3222/220620652311 보안 요소 기술 ] 대칭키, 비대칭키 ?]〉, 《네이버 블로그》, 2016-02-07 | * 헬로망고, 〈[https://blog.naver.com/rbdi3222/220620652311 보안 요소 기술 ] 대칭키, 비대칭키 ?]〉, 《네이버 블로그》, 2016-02-07 | ||
+ | * 밤공기후하후하, 〈[https://blog.naver.com/on21life/221390508337 IT보안-Diffie Hellman 키 교환 방식이란 무엇인가]〉, 《네이버 블로그》, 2018-11-02 | ||
+ | * 〈[https://terms.naver.com/entry.nhn?docId=3431998&cid=58437&categoryId=58437 비대칭 암호화 방식의 발견]〉, 《네이버 지식백과》 | ||
+ | * 〈[https://terms.naver.com/entry.nhn?docId=3432001&cid=58437&categoryId=58437&expCategoryId=58437 비대칭 암호화의 기능]〉, 《네이버 지식백과》 | ||
+ | * 〈[https://terms.naver.com/entry.nhn?docId=1232513&cid=40942&categoryId=32204 타원곡선암호]〉, 《네이버 지식백과》 | ||
+ | * 〈[https://terms.naver.com/entry.nhn?docId=3431999&cid=58437&categoryId=58437 RSA 알고리즘]〉, 《네이버 지식백과》 | ||
+ | * 자바공작소 , 〈[https://javaplant.tistory.com/26 암호화 양방향, 단방향, 공개키(비댕칭키), 비공개키(대칭키) 개념/분류 알고리즘 정리]〉, 《자바공작소》, 2018-05-08 | ||
+ | * 〈[https://terms.naver.com/entry.nhn?docId=2271972&cid=51207&categoryId=51207 RSA 전자 서명]〉, 《네이버 지식백과》 | ||
+ | * 〈[https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%EB%B0%A9%EC%8B%9D 공개 키 암호 방식]〉, 《위키백과》 | ||
== 같이 보기 == | == 같이 보기 == | ||
29번째 줄: | 68번째 줄: | ||
* [[PKI]] | * [[PKI]] | ||
* [[RSA]] | * [[RSA]] | ||
+ | * [[타원곡선암호]] | ||
− | {{ | + | {{암호 알고리즘|검토 필요}} |
2022년 5월 26일 (목) 13:40 기준 최신판
비대칭키는 암호화할 때와 복호화할 때의 키가 서로 다른 키(key)를 의미한다. 타인에게 절대 노출되어서는 안되는 개인키를 토대로 만든 공개키가 쌍을 이룬 형태이다.[1] 비대칭키를 이용한 암호 알고리즘은 공개키 알고리즘으로 불리기도 한다.[2]
개요[편집]
비대칭키는 공개키(Public Key)와 개인키(Private Key)가 하나의 쌍을 이루고 있다. 다른 사람들에게 공개된 키로서 정보를 암호화할 수 있는 공개키와 사용자 본인만 알고 있어서 암호를 풀 수 있는 키인 개인키는 하나의 쌍을 이루고 있다. 비대칭키를 사용한 암호화 방식에는 공개키로 암호화를 하는 경우와 개인키로 암호화를 하는 경우로 구분할 수 있다. 공개키로 암호화를 선택했다면 데이터 보안에 중점을 둔 것이고, 개인키로 암호화를 진행했다면 안전한 전자서명을 통한 인증 과정에 중점을 둔 것으로 해석할 수 있다. 암호화할 때의 키와 복호화할 때의 키 값이 다르면 비대칭키라고 한다. 비대칭키의 대표 알고리즘은 RSA, 디피-헬만(Diffie-Hellman), 타원곡선암호(ECDSA) 등이 있다.[1]
개념[편집]
비대칭형 암호는 이름 그대로 암호화 키와 복호화 키가 서로 다르다. 암호화를 하면 하나의 키쌍이 생기고 이 키들은 수학적으로 밀접한 관계를 가진다. 두 개의 키를 각각 A키, B키라고 하였을 때, A키로 암호화한 암호문은 B키로만 복호화가 가능하고 B키로 암호화한 암호문은 A키로만 복호화가 가능하다. 그래서 이중 하나의 키만 비밀로 보호하고 다른 하나의 키는 공개해도 상관이 없다. 이렇게 둘 중 하나라도 반드시 공개되어야 통상적인 사용이 가능하기 때문에 공개키 암호라고도 부른다. 공개키로 암호화한 암호문은 어차피 개인키를 가진 사람이 풀어볼 수 있으므로 상호간 공개키만 교환하고 상대의 공개키로 암호화를 하여 데이터를 교환하면 상대는 자신의 개인키로 복호화를 한다. 따라서 마찬가지로 배송 문제는 근본적으로 발생하지 않는다. 하지만 비대칭형 암호는 암복호화가 대칭형 암호화에 비하여 현저하게 느리기 때문에 현실적으로 비대칭형 암호를 이용하여 대칭형 암호의 키를 배송하고 실제 암호문은 대칭형 암호를 사용하는 식으로 상호보완적인 이용이 일반적이라고 할 수 있다. 또한 비대칭형 암호화라고 하여서 취약점이 없는 것은 아니기 때문에 해커가 중간에서 통신을 가로채 수신자에게는 송신자인 척을 하면서 송신자에게는 수신자인 척을 하여 양쪽의 공개키와 실제 암호화에서 사용된 대칭키를 모두 얻어내는 기법인 중간자 공격에는 취약하다. 또한 개인키와 공개키의 관계를 역이용하여 전자서명에 활용되기도 하는데, 특정한 문서를 개인키로 암호화하여 발송하면 이 문서는 해당 발신자의 공개키로만 복호화가 가능하다.[3]
역사[편집]
키 전달의 아이디어는 디피와 헬만이 처음 발표하였다. 휫필드 디피(Whitfield Diffie)는 1965년 MIT에서 수학을 전공하고 컴퓨터 보안과 관련된 일을 했는데, 키 전달에 대한 문제에 관심이 많았다. 하지만 당시에 많은 사람들은 이와 같은 관심에 대해 회의적이었다. 왜냐하면 미국 국가안보국(NSA)에서 많은 연구를 하고 암호를 통제하고 있는 상황이었는데, 개인이 그 문제를 풀 수 있다고 생각하지 않았다. 설사 해결해도 NSA의 통제로 빛을 발하지 못할 것이라고 여겼다. 하지만 히피 기질이 다분한 디피는 포기하지 않았다. 그리고 같은 관심사를 가진 스탠퍼드 대학교의 마틴 헬만(Martin Hellman) 교수를 만나게 되었다. 1974년부터 디피와 헬만은 암호 전달 문제를 연구하기 시작했고, 그들은 항상 새로운 아이디어를 도출하고 실패하기를 반복하다가 1975년 어느 날 비대칭키라 불리는 개념을 떠올리게 되었다. 1976년에 발표된 비대칭 암호화 알고리즘의 아이디어는 20세기 암호학의 혁명으로 불렸다. 이후 실제 사용 과정에서 몇 가지 약점이 발견되었으나, 이후 RSA 등 더 우수한 공개키 암호화 알고리즘의 출현을 앞당기는 계기가 되었다.[4]
동작 원리[편집]
공개키 암호 방식은 출제자만이 아는 특정한 종류의 정보 없이는 매우 풀기 어려운 수학적 문제를 바탕으로 만들어진다. 키를 만드는 사람은 공개키를 일반에 공개하고 비밀키는 자신만이 알수 있도록 숨겨둔다. 그러면 누구든지 공개키를 이용하여 메세지를 암호화하면 개인키를 가지고 있는 사람만 해독이 가능하다. RSA 암호화 같은 초기 암호들은 두 개의 큰 소수를 곱한 숫자를 문제로 사용하였는데 사용자는 임의의 큰 소수를 두 개 골라 비밀키로 삼고 그 곱한 값을 공개키로 공개한다. 큰 수의 소인수 분해는 풀기 어려운 문제이므로 다른 사람들은 비밀키를 알 수 없을 것이라는 사실이 보장된다. 그러나 최근 이 분야의 연구가 크게 진전되어 RSA의 안전성을 보장하기 위해서는 수천 비트 이상의 큰 소수를 개인키로 사용하여야 한다. 또 다른 종류의 문제로는 와 가 알려진 상태에서 방정식 의 해 를 구하는 문제가 있는데 실수나 복소수에 대해서는 로그함수를 이용하여 쉽게 문제를 풀 수 있다. 하지만 유한군에서는 이러한 문제를 풀기가 어려운 것으로 알려져 있다. 이런 문제를 이산로그 문제라고 한다. 타원곡선암호를 비롯하여 여러 가지 공개키 암호들이 이산로그 문제를 바탕으로 만들어져 있다.[5]
종류[편집]
- RSA : RSA는 비대칭 암호화 알고리즘 중에서 가장 많은 지지를 받으며 오늘날 산업 표준으로도 사용되는 방법이다. RSA는 론 리베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레오나르드 애들만(Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 암호화 및 인증시스템이다. 세 사람은 MIT 컴퓨터 사이언스 실험실 8층에서 함께 일했는데, 신문에서 디피와 헬만이 발표한 내용을 보고 비대칭 암호화 알고리즘 개발을 시작하였다. 그러면서 암호화 알고리즘을 만들고 취약점을 찾는 시행착오를 수없이 거쳤다. 1977년 4월 어느날 론 리베스트는 수학 교과서를 읽다가, 현재 비대칭 알고리즘의 표준처럼 사용되는 RSA 알고리즘의 아이디어를 도출해냈다. 그는 그날 밤 논문을 마쳤고 논문 마지막에 세 사람의 이름을 적었다. 그리하여 3명의 이름 가운데 첫 글자를 모아 붙인 RSA라는 말이 생겨났다. RSA 암호는 기본적인 정수론, 즉 소수를 이용한다. RSA 암호의 아이디어는 중요 정보를 두 개의 소수로 표현한 후, 두 소수의 곱을 힌트와 함께 암호로 사용한다는 것이다. 사실 소수는 수백년간 연구되어 왔지만 그리 중요하게 여겨지지 않았다. 하지만 암호학에는 결정적 기여를 하였다.[6]
- 디피-헬만(Diffie-Hellman) : 1976년 공개키 암호 방식을 최초로 제안한 휫필드 디피(Whitfield Diffe)와 마틴 헬만(Martin Hellman)이 발명한 암호화 알고리즘이다. 디피 헬만은 두 사용자 간에 공통의 암호화키를 공개키 암호 방식의 개념을 이용하여서 사전에 어떠한 비밀키 교환이 없이도 공중 통신망 환경에서 공동키를 안전하게 공유할 수 있는 방법을 제시한 최초의 비밀키 교환 프로토콜이다. 가장 오래된 공개키 암호화 시스템으로 이산로그 구조의 복잡함을 활용한 방식이다. 현대 암호학의 혁명으로 불리지만, 중간자 공격에 취약하다는 단점이 있다.[7]
- 타원곡선암호(ECC; Elliptic Curve Cryptosystem) : 1985년 미국 워싱턴 대학교의 수학 교수인 닐 코블리츠(Neal Koblitz)와 IBM 연구소의 빅터 밀러(Victor Miller)가 거의 동시에 독립적으로 도출한 공개키 형식의 암호화 방식이다. 타원곡선이라고도 불리는 수식에 의해 정의되는 특수 가산법을 기반으로 암호화와 복호화를 수행하는 암호화 방식이다. 타원곡선 군의 연산에서 정의되는 이산대수 문제의 어려움의 이용을 기초로 하는 공개키 암호 알고리즘 시스템으로서 RSA/DSA와 같은 공개키 암호보다 짧은 키 길이와 빠른 연산속도를 가지면서 동일한 수준의 보안 강도를 제공하는 암호 알고리즘이다. 이와 같은 방식으로 만든 암호를 해독하는 방법은 아직 발견되지 않았다. 다만, 일부 곡선에서는 약점이 발견되어 실제 이 방식을 적용하려면 이것을 피할 연구가 필요하다. 짧은 키 사이즈로 높은 안전성이 보장되고, 또 서명할 때의 계산을 빠르게 할 수 있는것이 특징이다. 스마트카드(IC카드) 등 정보처리 능력이 그다지 높지 않은 기기에 이용하기에 적합한 암호화 방식이다. [8]
- 전자서명(digital signature) : 전자서명은 인증서 형태로 발급되는 자신만의 디지털 인감 도장이며 안전한 디지털 서명이다. 인터넷 환경에서 특정 사용자를 인증하기 위한 목적으로 사용한다. 인증은 특정인이 진짜 그 사람인지를 확인하는 절차라고 할 수 있다. 이와 비슷한 기능으로 권한이 있고 없음을 확인하는 권한이 있는데, 인증과는 다른 특징을 갖고 있다. 일반적으로 전자서명의 인증 과정은 RSA 알고리즘과는 반대 원리를 가지며 비공개키 알고리즘과 공개키 알고리즘의 조합을 사용한다. 전자서명은 자신을 다수에게 증명하는 기능이므로, 암호화 과정에서 자신만 아는 개인키를 사용한다. 개인키로 암호화한 전자서명은 다수의 타인이 볼 수 있으므로 해독 과정에서는 공개키를 사용하여 복호화되어 원문과 비교될 수 있다. 일반적으로 전자서명의 암호화는 두 단계로 이루어진다. 첫 번째는 전자서명 알고리즘으로 자신을 인증하는 암호화, 두 번째는 공개키를 이용하여 암호화된 정보를 복호화하는 것이다. 이 중에서 두 번째 단계는 전자서명의 정보를 전송하기 위해 다시 RSA 알고리즘을 사용한다. 해독 과정은 먼저 수신한 문서를 RSA 알고리즘의 비공개키로 해독하고 전자서명문을 얻어 그 문서를 송신자의 인증에 필요한 전자서명 공개키를 사용하여 원문서를 얻는다. 전자서명 과정에서 복잡하게 두 단계로 암호화하는 이유는 먼저 RSA 알고리즘을 사용하여 암호화하는 과정은 전송 과정에서 보안 문제를 해결하기 위해서이다.[9]
특징[편집]
암호화[편집]
공개키로 데이터를 암호화하여 전송하는 경우, 데이터를 수신한 사람은 자신의 개인키로 데이터를 복호화한다. 공개키는 널리 배포될 수 있기 때문에 많은 사람들이 한 명의 개인키 소유자에게 데이터를 보낼 수 있다. 개인키로 암호화를 진행하는 경우 개인키의 소유자가 개인키로 데이터를 암호화하고 공개키와 함께 전달한다. 이 과정에서 공개키와 데이터를 획득한 사람은 누구라도 공개키를 이용하여 복호화가 가능하다. 이런 위험에도 불구하고 이 방법을 사용하는 이유는 데이터 제공자의 신원을 보장해주기 때문이다. 암호화된 데이터가 공개키로 복호화된다는 것은 공개키와 쌍을 이루는 개인키에 의해서 암호화 되었다는 것을 의미한다. 즉 데이터 제공자의 신원 확인이 보장된다는 것이다. 이 방법이 공인인증 체계의 기본 바탕이 되는 전자서명이다.[1]
보안의 3요소[편집]
보안은 3가지 요소가 결합되어야 높은 안정성을 형성한다. 인가받은 사용자만 정보 자산에 접근할 수 있음을 보장하는 기밀성과 권한을 가진 사용자에 의해 인가된 방법으로만 정보를 변경할 수 있음을 보장하는 무결성이 보장되야 한다. 마지막으로 최소한의 투입으로 좋은 결과를 만들어 낼 수 있는 효율성이 비대칭키를 통해 보장된다.[10]
- 기밀성 : 암호화 알고리즘의 가장 기본적인 기능인 기밀성은 대칭키 암호화 알고리즘보다 비대칭키 암호화 알고리즘에서 좀더 엄밀한 기밀성을 제공한다. 예를 들면 민수가 지수에게 편지를 보내려 할 때 지수를 제외한 사람은 편지를 읽지 못하게 하려면 어떻게 해야 할까? 먼저 민수는 지수의 공개키를 얻는다. 그리고 공개키를 이용해 편지를 암호화하여 보내면 지수는 자신의 개인키를 이용해 민수의 편지를 복호화하여 읽을 수 있다. 그러면 만약 철수가 중간에 편지를 가로채더라도, 지수의 공개키로 인해 암호화한 편지를 철수의 개인키로는 복호화할 수 없다. 왜냐하면 지수의 공개키로 암호화한 것은 오직 지수의 개인키로만 복호화가 가능하기 때문이다. 이것이 대칭키가 제공하는 기밀성이다.
- 무결성 : 무결성은 권한을 가진 사람만 정보를 수정할 수 있도록 보호하는 성질로서, 승인되지 않거나 원하지 않는 방법에 의한 데이터의 변경을 보호하는 역할을 한다. 연결형으로는 메시지 스트림 대상과 불법 변경 보호와 서비스 부인 방지가 있고 비연결형으로는 개인 메시지만 대상, 불법변경 보호가 있고 해시 함수, 디지털 서명, 암호 알고리즘을 사용한다. 무결성은 사고에 의해 훼손될 수 있고, 또는 의도적인 변경 및 삭제, 중복 보관 중인 정보의 일부가 변경 및 삭제되었을 때, 기타 컴퓨터 바이러스에 의한 손상 등으로 인해 깨질 수 있다.
- 효율성 : 효율성은 정보에 대한 접근과 사용이 적시에 확실히 보장되는 상태를 의미한다. 여러 암호 알고리즘 가운데 효율성이 가장 높은 방법을 사용하는 것이 좋다. 동일한 기밀성과 무결성을 보장하는 여러 개의 암호 알고리즘이 있을 경우, 키 길이가 짧을수록 좋고, 암호화와 복호화에 걸리는 시간이 짧을수록 효율성이 높다.
부인 방지[편집]
비대칭 암호화 알고리즘은 대칭키 암호화 알고리즘에는 존재하지 않는 부인방지(non-repudiation) 기능을 제공한다. 부인 방지는 쉽게 말해 '발뺌 방지'라고 할 수 있다. 예를 들면 영희에게 돈을 빌린 철수가 이번 주 안에는 갚겠다는 약속을 한다. 하지만 다음 주가 되어도 철수가 돈을 갚지 않자 영희는 철수에게 따졌지만 철수는 그런 말을 한 적이 없다고 발뺌을 한다. 그리고 영희에게는 철수가 그런 약속을 했다는 증거가 없다. 이런 경우가 부인방지 기능이 없는 상황이다. 그런데 영희가 철수의 말을 녹음해 두었다면, 부인하지 못했을 것이다. 이때 녹음 기능이 바로 부인방지 기능이다. 부인방지 기능은 전자상거래에서 기업 간 주문이나 계약서에서도 중요한 법적 증거 효력을 발휘하며 여러 암호 알고리즘에도 사용된다.[11]
장점과 단점[편집]
비대칭키 암호는 다른 유저와 키를 공유하지 않아도 암호를 통한 안전한 통신을 한다는 장점을 갖는다. 각 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키 정보로 암호화된 정보를 복호화할 수 있는 키를 개별적으로 보유하고 있음으로써 누구나 암호화할 수 있지만 공개키에 대응되는 개인키를 가진 당사자만 복호화할 수 있는 특징을 가진다. n명의 사용자로 구성된 네트워크를 고려하면 각 사용자는 공개키와 개인키 두 개를 보유하고 있으므로 네트워크 전체적으로 2n개의 키가 요구된다. 그리고 각 유저는 2개의 키만 보유하고 있으면 된다. 수학적인 난제를 기반으로 설계된 비대칭키는 암호화나 복호화를 수행하기 위한 연산이 복잡한 수학 연산을 기반으로 구성되어 있다. 그로 인해 효율성이 대칭키 암호에 비해 높지 않다. 그럼에도 불구하고, 비대칭키 암호 알고리즘의 경우에는 모두가 확인할 수 있는 공개키에 대응되는 개인키가 각 사용자만 알고 있는 정보이기 때문에, 전 세계적으로 불특정 다수가 정보를 주고받아야 하는 인터넷 환경에서 광범위한 인증 기능을 제공한다는 장점이 있다.[12]
각주[편집]
- ↑ 1.0 1.1 1.2 chodahi, 〈암호화 기법 (대칭키, 비대칭키)〉, 《네이버 블로그》, 2018-11-26
- ↑ 제레미, 〈https://sungjk.github.io/2016/09/30/Security.html 대칭형/비대칭형 암호 알고리즘]〉, 《개인 블로그》, 2016-09-30
- ↑ 〈암호화 양방향, 단방향, 공개키(비댕칭키), 비공개키(대칭키) 개념/분류 알고리즘 정리〉, 《자바공작소》, 2018-05-08
- ↑ 〈비대칭 암호화 방식의 발견〉, 《네이버 지식백과》
- ↑ 헬로망고, 〈공개 키 암호 방식〉, 《네이버 블로그》
- ↑ 〈RSA 알고리즘〉, 《네이버 지식백과》
- ↑ 밤공기후하후하, 〈IT보안-Diffie Hellman 키 교환 방식이란 무엇인가〉, 《네이버 블로그》, 2018-11-02
- ↑ 〈타원곡선암호〉, 《네이버 지식백과》
- ↑ 〈RSA 전자 서명〉, 《네이버 지식백과》
- ↑ 김정출 김정출, 〈정보보호 대칭키 비대칭키〉, 《티스토리》, 2018-10-11
- ↑ 〈비대칭 암호화의 기능〉, 《네이버 지식백과》
- ↑ 헬로망고, 〈보안 요소 기술 대칭키, 비대칭키 ?]〉, 《네이버 블로그》, 2016-02-07
참고자료[편집]
- 재리, 〈대칭키와 비대칭키, 공유키, 비밀키〉, 《네이버 블로그》, 2019-03-22
- chodahi, 〈암호화 기법 (대칭키, 비대칭키)〉, 《네이버 블로그》, 2018-11-26
- 제레미, 〈대칭형/비대칭형 암호 알고리즘〉, 《개인 블로그》, 2016-09-30
- 김정출 김정출, 〈정보보호 대칭키 비대칭키〉, 《티스토리》, 2018-10-11
- 헬로망고, 〈보안 요소 기술 대칭키, 비대칭키 ?]〉, 《네이버 블로그》, 2016-02-07
- 밤공기후하후하, 〈IT보안-Diffie Hellman 키 교환 방식이란 무엇인가〉, 《네이버 블로그》, 2018-11-02
- 〈비대칭 암호화 방식의 발견〉, 《네이버 지식백과》
- 〈비대칭 암호화의 기능〉, 《네이버 지식백과》
- 〈타원곡선암호〉, 《네이버 지식백과》
- 〈RSA 알고리즘〉, 《네이버 지식백과》
- 자바공작소 , 〈암호화 양방향, 단방향, 공개키(비댕칭키), 비공개키(대칭키) 개념/분류 알고리즘 정리〉, 《자바공작소》, 2018-05-08
- 〈RSA 전자 서명〉, 《네이버 지식백과》
- 〈공개 키 암호 방식〉, 《위키백과》
같이 보기[편집]