개발놀이터

공개키 암호화 본문

CS 지식/보안

공개키 암호화

마늘냄새폴폴 2023. 3. 21. 01:58

이번 포스팅에서는 공개키 암호화에 대해서 알아보도록 하겠습니다. 공개키 암호화는 개인키 암호화와 묶여서 설명이 가능한데요. 보통 공개키와 개인키는 SSL handshake에서 사용됩니다. 아직 SSL handshake에 대한 포스팅이 없어서 자세히 설명은 못해드리지만 요약하자면 이겁니다. 

 

"인증기관에 인증서를 보내고 인증서는 서버의 공개키로 암호화 되어있습니다. 클라이언트는 본인의 개인키로 인증서를 decrypt할 수 있고 내용을 확인할 수 있다."

 

이번 시간에는 SSL handshake 의 과정에 해당하는 공개키 암호화, 개인키 암호화에 대해서 알아볼까합니다. 그럼 시작해보죠

 

 

공개키 암호화

공개키와 개인키로 암호화하고 이를가지고 통신하는 것은 비대칭키 암호화라고 부릅니다. 맞습니다. 대칭키 암호화도 있죠. 

 

비대칭키 암호화는 비교적 최신 기술이고 이전에는 대칭키 암호화로 암호화된 데이터를 주고 받았습니다. 

 

대칭키 암호화는 이름에서도 알 수 있듯이 서로 같은 키로 데이터를 주고 받는 것입니다. 

 

하지만 이는 공격자 입장에서는 땡큐죠. 데이터를 탈취하고 싶을 때 서버 혹은 클라이언트 둘 중 아무나 키를 갈취해서 열어보면 되니까요. 

 

개발자들은 이에 대응하는 비대칭키를 만들어 보안을 강화했습니다. 암호화와 복호화에 필요한 키를 다르게 만들어서 공격자 입장에서 두배로 수고스럽게 만든다는 작전이었죠. 

 

이는 꽤나 잘 먹혀들었습니다. 클라이언트 (개인) 의 키를 뺏는건 그렇다 쳐도 서버 (기업)의 키를 갈취하는건 쉬운 일이 아니니까요. 

 

심지어 클라이언트의 키도 뺏는것이 만만치않았습니다. 클라이언트는 악성코드가 담겨있는 파일에 손만 안대면 갈취당할 일이 없으니까요. 서버의 키도 마찬가지죠 서버에는 보안을 신경쓰기 때문에 뚫는것이 쉽지 않았죠. 

 

 

 

공개키 암호화에 대한 중요한 특징은 다음과 같습니다. 

  • 암호화와 복호화에 다른 키를 사용한다
  • 각각의 개인키는 서로 다릅니다. 보통의 경우 개인키는 OS에 붙엉닜거나, 하드웨어마다 다릅니다. 
  • 암호화 알고리즘은 굉장히 강력하다
  • 개인키, 공개키는 수학적으로 설계되어 있다. 

 

개인키나 공개키는 RSA 암호화에 따라 암호화가 실행됩니다. 간단하게 RSA의 알고리즘에 대해서 알아보죠

 

 

RSA Algorithm

RSA는 세명의 학자에 의해 탄생했습니다. Rivest, Shamir, Adleman 이 셋의 앞글자를 따서 만든 것이 바로 RSA 알고리즘이죠. 

 

RSA 알고리즘은 공개키와 개인키를 암호화하고 복호화 하는데 사용됩니다. 이제 RSA에 대해서 설명해보겠습니다.

 

RSA 모듈을 만든다

두개의 아주 큰 소수 p 와 q 를 만듭니다. 그리고 그 둘을 곱한 n 을 생성하죠. 그리고 아주 강력한 암호화를 진행합니다. 이 n은 전형적으로는 512비트를 넘지 않습니다. 

 

파생된 숫자를 찾는다

파생된 숫자 e는 1과 (p - 1)(q - 1) 사이에서 만들어집니다. 1은 포함 안됩니다.

 

공개키를 만든다

숫자 n 과 e 는 RSA 공개키를 만드는데 사용됩니다. 흥미롭게도 이 n 은 공개키의 일부분이 됩니다. 이 n 은 엄청나게 큰 수이기 때문에 공격자가 쉽제 찾을 수 없습니다. 찾기 위해서는 특별한 알고리즘을 사용하지 않는다면 무한에 가까운 시간이 듭니다. 이 부분이 바로 RSA가 강력한 부분입니다. 

 

개인키를 만든다

개인키 d 는 p 와 q 로부터 계산됩니다. 주어진 숫자 n 과 e 를 가지고 유니크한 숫자인 d 를 만듭니다. 숫자 d 는 e 가 만들어낸 모듈을 뒤집은 것입니다. 

 

 

이렇게 RSA가 만들어지고 이 공개키와 개인키는 통신에 사용됩니다. 

 

 

여기까지 공개키 암호화, 개인키 암호화에 대해서 알아봤습니다. 이번 내용은 쉽고 짧은 내용이었습니다. 요즘 길고 어려운 내용들을 공부해서 그런지 기분이 새롭긴 합니다. 

 

이 개인키, 공개키에 대한 내용은 사전지식에 해당하구요 이 뒤에 SSL handshake에 대해서 다뤄볼 예정입니다. 그럼 글은 여기서 마쳐보도록 하겠습니다. 오늘도 즐거운 하루 되세요~

 

 

출처

https://www.tutorialspoint.com/cryptography/public_key_encryption.htm

 

Public Key Encryption

Public Key Encryption - Unlike symmetric key cryptography, we do not find historical use of public-key cryptography. It is a relatively new concept.

www.tutorialspoint.com

https://www.ibm.com/docs/en/ztpf/1.1.0.15?topic=concepts-public-key-cryptography 

 

Public key cryptography

The most commonly used implementations of public key cryptography (also known as public-key encryption and asymmetric encryption) are based on algorithms presented by Rivest-Shamir-Adelman (RSA) Data Security. Public key cryptography involves a pair of key

www.ibm.com

https://www.globalsign.com/en/ssl-information-center/what-is-public-key-cryptography

 

Public Key Cryptography - GlobalSign

Learn about the main business applications for public-key cryptography and how your business can easily deploy SSLs and manage digital document signing.

www.globalsign.com

 

'CS 지식 > 보안' 카테고리의 다른 글

JWT, 함부로 사용하면 다친다?  (0) 2024.08.18
인증과 인가  (0) 2023.05.04
SSL handshake / TLS handshake  (2) 2023.03.26