대칭키와 비대칭키

Bummy·2023년 2월 27일
0

웹개발

목록 보기
6/7

암호화 방식은 굉장히 복잡하고 단시간에 이해하기에는 어려운 기술이라고 생각한다 하지만 어느정도의 보안에 대한 지식을 가지고 있어야하기에 공부하고 생각하며 기록한다.

대칭키와 비대칭키

1. 대칭키

1) 대칭키란?

암호화에 쓰이는 키와 복호화에 쓰이는 키가 동일한 기법

클라이언트와 서버가 동일한 키를 가지고 있는 방식
공개키보다 빠르게 통신할 수 있음

2) 대칭키 예시


위 예시처럼 커플은 "0823"이란 대칭키 암호화를 사용하고 있다.

대칭키를 전달하는 과정에서 제3자가 훔쳐볼 위험이 있다.
대칭키가 해킹된다면 당연히 복호화가 가능하니 데이터도 누출될 수 있다.

3) 대칭키의 단점

📌 이렇게 대칭키 암호화 방식에선 대칭키를 상대에게 전달하는 방식에서 해킹당할 위험이 있다.


2. 비대칭키

1) 비대칭키란?

하나의 키를 갖는 대칭키 암호화 방식과 달리, 비대칭키 암호화 방식은 한쌍의 키를 갖게 된다.
각각 암호화, 복호화로 사용된다.

만약 A, B라는 두 개의 키가 있다면 A키로 암호화한 데이터는 B키로만 복호화할 수 있다.
또는 B키로 암호화한 데이터는 A키로만 복호화할 수 있다.
A키로 암호화한 데이터를 A키로 복호화할 수 없으며 B키도 마찬가지이다.

📌 통상적으로 비대칭키 방식에서 가지는 두 개의 키에서 하나는 공개 키(Public Key), 하나는 개인 키(비밀 키, Private Key)라고 부른다.

이렇게 한 쌍의 키로 암호화, 복호화하는 방식을 RSA 알고리즘이라고 한다.

2) 비대칭키 예시



다음과 같은 예시처럼 자신의 공개 키를 알려주고 해당 공개 키로 암호화를 한다.
받은 데이터를 자신의 개인 키로 복호화하여 볼 수 있다.
이러한 과정에서 공개 키가 해킹된다고 해도 개인 키를 알지 못하면 복호화를 할 수 없어 안전하다라는 장점이 있다.

3) 비대칭키 단점

📌 RSA 알고리즘을 이용한 암호화 방식은 복잡한 수학적 원리로 이루어져 있어서 CPU 리소스를 크게 소모한다는 단점이 있다.

이러한 단점으로 인해 RSA 비대칭키 방식으로만 통신을 하기에는 성능상 어려움이 있다.


3. TLS(SSL)

1) TLS(SSL)이란?

각 방식의 단점 때문에 TLS(SSL)에서는 이 두 가지 방식을 보완하여 사용한다. 대칭키 방식에서의 문제점인 대칭키를 전달할 때 해킹을 당할 리스크를 RSA 비대칭키 방식으로 해결한 방식을 의미한다.

처음에는 대칭키를 서로 공유하는 통신을 RSA 비대칭키 방식을 이용하고 실제 통신을 할 때는 CPU 소모가 적은 대칭키 방식으로 데이터를 주고 받는다.

RSA 비대칭키 통신을 이용해서 대칭키를 안전하게 전달할 수 있고
그 이후로부터는 대칭키를 해킹당할 일이 없으니 대칭키 방식을 이용해 실제 통신을 한다.

2) TLS(SSL) 예시



이렇게 비대칭키 암호화 방식으로 대칭키 "1234"를 암호화하여 공유하고 대칭키를 안전하게 공유했으니 대칭키 암호화 방식을 사용하여 데이터를 주고 받는 방식이다.


➕ 인증서와 CA

인증서와 CA(Certificate authority)

데이터를 주고 받는 방식을 암호화하여 보안을 강화
이처럼 서버와 클라이언트 간 통신을 할 때는 서버가 신뢰할 수 있는 서버라는 것을 확인하는 작업이 필요하다.
이럴 때 사용하는 것이 바로 "인증서"이다.

1) 인증서

서버가 신뢰할 수 있는 서버임을 확인하기 위해 필요한 것을 의미한다.

인증서는 다음과 같은 정보를 포함하고 있다.

  • 서비스 정보(인증서를 발급한 CA, 서비스의 도메인 등)
  • 서버 측 공개키(공개키, 공개키 암호화 방법)
  • 지문, 디지털 서명 등

2) CA(Certificate Authority)

인증서를 발급해주는 기관으로, Root Certificate라고 부르기도 한다.
신뢰성이 엄격하게 공인된 기업들만 인증서를 발급할 수 있다.

CA는 자체적으로 공개키와 비밀키를 가지고 있는데 CA의 비밀키는 절대 누설 되어선 안되며, 실제로 어떤 CA 기관은 이 비밀키가 누설되어 파산한 기업도 존재한다.
사례 1 : 쿼드리가 CX
사례 2 : 코인 빈

3) 인증서 발급 받기


1. 인증서를 발급 받고자 하는 기관은 자신의 사이트 정보(도메인 등)과 공개키를 CA에 제출한다.
2. CA는 검증을 거친 후 발급 받고자 하는 기관의 공개키를 해시한다. 이렇게 해시한 값을 Finger Print(지문)이라고 한다.
3. 지문을 CA의 비밀키로 암호화하고, 인증서의 발급자 서명으로 등록한다.
4. CA는 서버에게 이 디지털 서명, 발급자 정보 등이 등록되어 있는 인증서를 발급해준다.

0개의 댓글