공개키 암호 알고리즘 편집하기
편집을 되돌릴 수 있습니다.
이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
− | '''공개키 암호 알고리즘'''(public key cryptosystem) 또는 '''비대칭키 암호 알고리즘'''이란 암호화 알고리즘의 한 종류로, | + | '''공개키 암호 알고리즘'''(public key cryptosystem) 또는 '''비대칭키 암호 알고리즘'''이란 암호화 알고리즘의 한 종류로, 암호화헐 때 사용하는 암호키와 복호화할 때 사용하는 암호키가 서로 다르다. |
== 개요 == | == 개요 == | ||
− | 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 탄생했다. 한 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는 개인키(또는 비밀키)이고 다른 하나는 누구나 가질 수 있는 공개키이다.<ref name = "불곰"> 불곰, 〈[https://brownbears.tistory.com/332 암호(대팅키 암호, 공개키 암호)]〉, 《티스토리》, 2017-03-14 </ref> 공개키 암호화 방식은 암호학적으로 연관된 두 개의 키를 만들어서 하나는 자기가 안전하게 보관하고 다른 하나는 상대방에게 공개한다.<ref name = "깃북스"> 〈[https://lesstif.gitbooks.io/web-service-hardening/content/public-key-encryption.html 공개키 암호화]〉, 《깃북스》</ref> 개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화가 가능하고, 공개키로 암호화한 정보는 그 쌍이 되는 개인키로만 복호화가 가능하다. 개인이 비밀통신을 할 경우엔 [[대칭키 암호]]를 사용할 수 있지만, 다수가 통신을 할 때에는 키의 개수가 급증하게 되어 큰 어려움이 따른다. 이런 어려움을 극복하기 위해 나타난 것이 공개키 암호이다. 공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 할 수 있다는 | + | 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 탄생했다. 한 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는 개인키(또는 비밀키)이고 다른 하나는 누구나 가질 수 있는 공개키이다.<ref name = "불곰"> 불곰, 〈[https://brownbears.tistory.com/332 암호(대팅키 암호, 공개키 암호)]〉, 《티스토리》, 2017-03-14 </ref> 공개키 암호화 방식은 암호학적으로 연관된 두 개의 키를 만들어서 하나는 자기가 안전하게 보관하고 다른 하나는 상대방에게 공개한다.<ref name = "깃북스"> 〈[https://lesstif.gitbooks.io/web-service-hardening/content/public-key-encryption.html 공개키 암호화]〉, 《깃북스》</ref> 개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화가 가능하고, 공개키로 암호화한 정보는 그 쌍이 되는 개인키로만 복호화가 가능하다. 개인이 비밀통신을 할 경우엔 [[대칭키 암호]]를 사용할 수 있지만, 다수가 통신을 할 때에는 키의 개수가 급증하게 되어 큰 어려움이 따른다. 이런 어려움을 극복하기 위해 나타난 것이 공개키 암호이다. 공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 할 수 있다는 장점을 갖는다.<ref name = "불곰"></ref> |
== 배경 == | == 배경 == | ||
− | 1976년 | + | 1976년 휫필드 디피(Whitfield Diffe)와 마틴 헬만(Martin Hellm an)은 하나의 공유 비밀 키가 아니라 두 개의 키를 사용할 것을 제안했다. 공개키가 어떤 특성을 가져야하는지에 대한 공개키 암호화의 아이디어를 발표했다. 휫필드 디피와 마틴 헬만은 공개키 암호화는 암호화 및 암호 해독 프로세스를 근본적으로 변경하여 커다란 혁신을 가져왔다. 1977년에 공개키 암호의 구체적인 알고리즘으로 랠프 메르클레(Ralph Merkle)와 마틴 헬만(Martin Hellm an)에 의해 배낭(napsack) 암호가 만들어졌다. 1978년, 공개키 암호 알고리즘 론 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir)와 레너드 애들먼(Leonard Adleman)에 의해 RSA를 발표했다. <ref name = "스캇"> 스캇SCOTT, 〈[http://blog.naver.com/PostView.nhn?blogId=kostry&logNo=220812677304&parentCategoryNo=10&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView 공개키 암호 시스템]〉, 《네이버 블로그》, 2016-09-14</ref> |
== 통신 절차 == | == 통신 절차 == | ||
# 송신자는 수신자의 공개키를 구한다. | # 송신자는 수신자의 공개키를 구한다. | ||
# 송신자는 수신자의 공개키로 평문을 암호화한다. | # 송신자는 수신자의 공개키로 평문을 암호화한다. | ||
− | # 송신자는 암호화된 메시지를 상대방에게 전달한다. 메시지는 암호화되어 | + | # 송신자는 암호화된 메시지를 상대방에게 전달한다. 메시지는 암호화되어 있기때문에 전달 도중에 유출되거나 도청이 되더라도 암호문으로부터 원문을 알아내기 어렵다. |
# 수신자는 자신의 비밀키로 암호화된 메시지를 해독해서 평문을 얻는다.<ref name = "깃북스"></ref> | # 수신자는 자신의 비밀키로 암호화된 메시지를 해독해서 평문을 얻는다.<ref name = "깃북스"></ref> | ||
== 장단점== | == 장단점== | ||
− | 공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 한다는 장점을 가진다. 각 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키의 정보로 암호화된 정보를 복호화할 수 | + | 공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 한다는 장점을 가진다. 각 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키의 정보로 암호화된 정보를 복호화할 수 잇는 키를 비밀로 보유하고 있음으로써 누구나 암호화할 수 있지만 공개키에 대응되는 비밀키를 가진 사람만이 복호화할 수 있는 특징을 가진다. n명의 사용자로 구성된 네트워크를 고려하면 각 사용자는 공개키와 비밀키 두개를 보유하고 있으므로 네트워크 전체적으로 2n개의 키가 필요하다. 그리고 각 사용자는 2개의 키만 보유하면 된다. 또한, 키 관리와 키 분배가 용이하다. 공개키 암호화 통신을 할 경우 각자의 공개키 및 개인키를 생성하여 공개키는 공개하고 자신의 개인키만 관리하면 되고, 공개키에 의한 암호화 통신을 할 경우에는 각자의 공개키를 공개하여 필요할때 상대방이 이용할 수 있도록 한다. 다만, 공개키 암호는 수학적인 난제를 기반으로 설계되었다. 암호화나 복호화를 수행하기 위한 연산이 복잡한 수학 연산을 기반으로 구성되기 때문에 효율성은 [[대칭키 암호]]에 비해 높지 않고, 대칭키 알고리즘에 비해 속도가 대략 1000배 느리다.<ref name = "스캇"></ref> |
+ | |||
+ | == 활용 == | ||
+ | |||
== 종류 == | == 종류 == | ||
대표적인 공개키 [[암호 알고리즘]]은 다음과 같다. | 대표적인 공개키 [[암호 알고리즘]]은 다음과 같다. | ||
===RSA(Rivest, Shamir and Adleman)=== | ===RSA(Rivest, Shamir and Adleman)=== | ||
− | RSA[25]는 | + | RSA[25]는 Rivest, Shamir 및 Adleman (각 이름의 첫 자를 따서, RSA라고 함)에 의해 처음으로 설명되었다. RSA는 공개키 암호 시스템으로 암호화와 인증에 사용되고, RSA는 오늘날 사용되는 공개키 암호 방식의 가장 일반적인 공개 알고리즘이다. RSA는 일반 정수론적인 면에서 정의되었다. RSA 체계에서는 두 개의 숫자(대개 두 개의 큰 소수)를 곱하여 얻어낸 계수를 이용해 키를 생성한다. 이 시스템은 큰 수의 인수분해의 어려움에 안전성을 두고 있다. RSA는 수 많은 국제기구의 표준일 뿐만 아니라 산업 표준으로 권장되고 있다.<ref name = "binance"> 〈[https://www.binance.vision/ko/security/what-is-public-key-cryptography 공개 키 암호 방식이란 무엇인가요?]〉, 《BINANCE ACADEMY》, 2019-010-31</ref> |
===ElGamal=== | ===ElGamal=== | ||
25번째 줄: | 28번째 줄: | ||
===ECC(Elliptic Curve Cryptosystem, 타원 곡선 암호 시스템)=== | ===ECC(Elliptic Curve Cryptosystem, 타원 곡선 암호 시스템)=== | ||
− | 타원 곡선(Elliptic Curves)은 약 150년 전부터 수학적으로 광범위한 연구가 | + | 타원 곡선(Elliptic Curves)은 약 150년 전부터 수학적으로 광범위한 연구가 있어 왔다. ECC[27]는 10여 년 전 비트 당 안전도가 타 공개키 시스템보다 효율적이라는 것이 알려졌고, 최근 높은 속도의 구현이 가능하게 되었다. 또한, ECC는 전원의 양이 한정된 이동 통신 기기의 암호화에 적용될 수 있으며, 차세대 공개키 암호 방법으로 주목 받고 있다. |
− | === | + | === KCDSA === |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | ===전자서명(Digital signature)=== |
− | + | 전자 서명(Digital signature)은 우리가 일상생활에서 신원을 확인하거나 거래를 하려고 할 때 주민등록증이나 인김 날인 또는 서명 등이 필요하듯이, 인터넷 상에서도 이를 확실히 보장해 줄 수 있는 수단이 전자 서명이다. 한마디로 전자 서명은 이증서 형태로 발급되는 자신만의 디지털 인감이며 서명인 것이다. 결국 전자 서명은 어떠한 사람이 그 문서를 작성했는지 증명하는 법이므로 전자 서명을 하기 위해선 어떤 문서에 자신의 개인키로 암호화해서 첨부하는 것이다. | |
== 한계점 == | == 한계점 == | ||
− | 공개키 암호 방식은 컴퓨터 보안을 강화하고 메시지의 무결성을 확인하는 데 사용하지만, 몇 가지 한계점도 있다. 암호화 및 해독과 관련된 복잡한 수학적 계산 때문에, 대량의 데이터를 처리해야 할 경우 매우 느려진다. 또한, 이러한 유형의 암호 방식은 개인 키가 안전하게 보호된다는 가정을 전제로 한다. 개인키가 실수로 공유되거나 노출될 경우, 이와 상응하는 공개 키를 통해 암호화된 모든 | + | 공개키 암호 방식은 컴퓨터 보안을 강화하고 메시지의 무결성을 확인하는 데 사용하지만, 몇 가지 한계점도 있다. 암호화 및 해독과 관련된 복잡한 수학적 계산 때문에, 대량의 데이터를 처리해야 할 경우 매우 느려진다. 또한, 이러한 유형의 암호 방식은 개인 키가 안전하게 보호된다는 가정을 전제로 한다. 개인키가 실수로 공유되거나 노출될 경우, 이와 상응하는 공개 키를 통해 암호화된 모든 메시지들의 보안이 위협받게 된다. 또한, 사용자가 실수로 개인키를 잃어버릴 수도 있으며, 이 경우에는 암호화된 데이터에 접근할 수 없게 된다.<ref name = "binance"></ref> |
{{각주}} | {{각주}} | ||
== 참고자료 == | == 참고자료 == | ||
− | * 불곰, 〈[https://brownbears.tistory.com/332 암호( | + | * 불곰, 〈[https://brownbears.tistory.com/332 암호(대팅키 암호, 공개키 암호)]〉, 《티스토리》, 2017-03-14 |
* 〈[https://lesstif.gitbooks.io/web-service-hardening/content/public-key-encryption.html 공개키 암호화]〉, 《깃북스》 | * 〈[https://lesstif.gitbooks.io/web-service-hardening/content/public-key-encryption.html 공개키 암호화]〉, 《깃북스》 | ||
* 〈[https://www.binance.vision/ko/security/what-is-public-key-cryptography 공개 키 암호 방식이란 무엇인가요?]〉, 《BINANCE ACADEMY》, 2019-010-31 | * 〈[https://www.binance.vision/ko/security/what-is-public-key-cryptography 공개 키 암호 방식이란 무엇인가요?]〉, 《BINANCE ACADEMY》, 2019-010-31 | ||
* 스캇SCOTT, 〈[http://blog.naver.com/PostView.nhn?blogId=kostry&logNo=220812677304&parentCategoryNo=10&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView 공개키 암호 시스템]〉, 《네이버 블로그》, 2016-09-14 | * 스캇SCOTT, 〈[http://blog.naver.com/PostView.nhn?blogId=kostry&logNo=220812677304&parentCategoryNo=10&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView 공개키 암호 시스템]〉, 《네이버 블로그》, 2016-09-14 | ||
− | |||
== 같이 보기 == | == 같이 보기 == | ||
− | |||
* [[대칭키 암호 알고리즘]] | * [[대칭키 암호 알고리즘]] | ||
* [[전자봉투]] | * [[전자봉투]] | ||
{{암호 알고리즘|검토 필요}} | {{암호 알고리즘|검토 필요}} |