새소식

반응형
Computer Science

[CS] 대칭키 & 공개키 암호화

  • -
728x90
반응형

들어가며

암호화가 필요한 이유

서버와 클라이언트 간 통신시, 민감한 데이터도 주고 받는 상황이 존재한다.
가령, 개인정보 등!


기존 HTTP 통신은 위와 같은 상황에서 발생하는 보안적 이슈를 해결하기 어렵다. 
그럼 어떻게 해야할까? !


=> HTTP의 보안 취약성을 보완해보자!
=> HTTPS의 등장


HTTPS
HTTP를 통해 주고받는 HTML 정보를 '암호화'시켜, 외부 사용자로부터 데이터를 지키는 것.


HTTPS가 지향하는 바

1. 클라이언트에서 보내는 정보를 제3자가 볼 수 없도록 한다.
2. 접속한 사이트가 믿을만한 곳인지 검증해준다.


안전하게 데이터를 통신하는 방법, 암호화

서버와 클라이언트가 통신하다가, 중간에 메세지를 탈취당하더라도, 제3자는 알아볼 수 없도록 암호화한다!
탈취되더라도 내용이 유출되지 않는 것이다.

그럼 암호화는 어떻게 하는건데?
=> 대칭키 & 공개키

 


대칭키 & 공개키 암호화: 데이터 보호를 위한 키 관리 방법

<한눈에 보기>
> 대칭키 암호화 방식: 암복호화에 동일한 키 사용
> 공개키 암호화 방식: 암복호화에 서로 다른 키 사용

대칭키란 무엇일까?

대칭키 Symmetric Key

  • 대칭키란, 암호화와 복호화에 대해 동일한 암호키(대칭키)를 사용하는 알고리즘이다.
  • 즉, `암복호화키`가 `동일`한 것!
  • 해당 키를 아는 사람만이 문서를 복호화해 볼 수 있음!
  • 말 그대로 '대칭시켜봐서 맞다면' 자물쇠가 열리는 개념


대칭키의 장점

  • 공개키 암호화 방식과 비교했을 때, 속도가 빠르다.
  • 즉, 수행시간이 짧다.


대칭키의 단점

  • `키를 교환해야하기 때문`에, 관리 상 문제가 발생할 수 있다. = `키 배송 문제`
  • 키 교환 중 키가 탈취될 수도 있다.
  • 사람이 많아질수록, 전부 따로따로 키교환을 해야하기 때문에, 관리해야할 키가 방대해진다.
plain text 📄 → encryption by key 🔑 → cipher text 🗞 → decryption by key 🔑 → plain text 📄
즉, 송신자와 수신자만이 해당 🔑를 알고 있어야함.
→  키 분배, 관리 등이 복잡해짐 ㅜ.ㅜ
흠, 그럼 대칭키의 문제점을 어떻게 극복할 수 있을까?
-> 공개키 암호화 방식!

공개키란 무엇일까?

공개키 Public Key

  • 공개키란, 암호화와 복호화에 대해 서로 다른 암호키(대칭키)를 사용하는 알고리즘이다.
  • 키가 공개되어있다!
  • 따라서 키를 교환할 필요 X
  • 모든 사람이 접근 가능하다.

 

공개키 암호화 방식

공개키와 개인키 쌍을 활용한다.

이때, 해당 공개키는 자신이 갖고 있는 고유 개인키로만 복호화할 수 있다.


공개키 암호화 진행 과정

1. A가 웹 상에 공개된 'B의 공개키🗝'를 이용해, plain text를 암호화하여 B에게 보낸다.
2. B는 자신의 개인키🗝복호화한 plain text를 확인하고, A의 공개키🔑로 응답을 암호화하여 A에게 보낸다.
3. A는 자신의 개인키🔑로, 수신한 암호화된 응답을 `복호화`한다.


공개키의 장점

  • 키를 교환/분배할 필요가 없다!
  • 기밀성/인증/부인방지 기능을 제공


공개키의 단점

  • 대칭키 암호화 방식에 비해 속도가 느리다.

 

대칭키, 공개키 모두 무결성을 제공하지 않는다.

=> '전자 서명(인증서)'를 추가하여 무결성을 보장한다.

 

<용어 참고>

- 기밀성(Confidentiality): 인가되지 않은 자는 정보를 확인하지 못하도록 함.  
- 무결성(Integrity): 인가 되지 않은 자로부터 위조나 변조가 발생하지 않도록 함. 또한 위조나 변조가 발생하지는 않았는지 확인함.
- 인증(Authentication): 수신 받은 메시지가 송신자 본인이라는 것을 확인하고 증명함
- 부인 방지(Non-repudiation): 메시지를 보낸 사람이 보낸 사실을 부인하거나, 받은 사람이 받은 사실을 부인할 경우 그를 '증명'하는 기술을 말함
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.