저번 포스팅에서 "암호화"에 대해 알아보았습니다.
암호화에는 단방향 암호화, 양방향 암호화 두 종류가 있었는데요.
이번 포스팅에선 양방향 암호화인 대칭키(비공개키)와 비대칭키(공개키)에 대해 설명해 보도록하겠습니다.
암호화, 복호화란 무엇인지에 대해 궁금하신 분들은 아래 포스팅을 참고하시면 됩니다.
암호화, 복호화란 ? 쉽게 알아보자.
암호란 ? 평문을 암호문으로 변환하거나 암호문을 평문으로 변환하는 기술을 의미합니다. 평문 해독 가능한 형태의 텍스트 ( 보고 알아볼 수 있다. ) "12345" , "안녕하세요", "반갑습니다" 암호문
hstory0208.tistory.com
대칭키(비공개키)
암복호화에 사용하는 키가 동일한 암호화 방식으로 공통키라고도 합니다.
송수신자는 서로 공유된 대칭키를 가지고 통신하게 됩니다.
예를 들어
내 컴퓨터와 다른 서버에 동일한 키가 있다면
서버에 로그인할 때 실어보내는 비밀번호를 동일한 키로 암호화하고
서버에서는 동일한 키로 복호화해 인식합니다.
대칭키의 특징
암복호화에 서로 동일한 키가 사용되는 암호화 방식. 그래서 키를 비공개합니다.
- 대표 알고리즘 : DES, 3DES, AES, SEED, ARIA 등
장점
비대칭키(공개키) 암호화 방식에 비해 속도가 빠릅니다.
단점
키를 교환해야한다는 문제 (키 배송 문제)가 존재해 송신 측에서 수신측에 암호 키를 전달하는 과정에서 노출우려와 키가 탈취될 수 있는 문제가 있습니다.
또한, 사람이 증가할수록 전부 따로따로 키교환을 해야하기 때문에 관리해야 할 키가 방대하게 많아집니다.
이러한 키 배송 문제를 해결하기 위한 방법으로 다음과 같은 방법들이 있습니다.
- 키의 사전 공유에 의한 해결
- 키 배포센터에 의한 해결
- Diffie-Hellman 키 교환에 의한 해결
- 공개키 암호에 의한 해결
비대칭키(공개키)
암복호화에 사용하는 키가 서로 다른 암호화 방식
따라서 비대칭키 암호화 에서는 송수신자 모두 한쌍의 키(개인키, 공개키)를 갖고있게 됩니다.
- 공개키 = 모든 사람이 접근 가능한 키
- 개인키(비밀키) = 각 사용자만이 가지고 있는 키
비대칭키의 암호화 방식
공개키를 통해서 암호화를 하고 비밀키를 통해서 복호화를 합니다.
공개키는 공개해도 상관없으니 키 관리에 어려움이 없으나, 속도가 느리다.
예를 들어, A가 B에게 데이터를 보낸다고 할 때,
A는 B의 공개키로 암호화한 데이터를 보내고 B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 보기 때문에
암호화된 데이터는 B의 공개키에 대응되는 개인키를 갖고 있는 B만이 볼 수 있게 되는 것 입니다.
- B 공개키/개인키 쌍 생성
- 공개키 공개(등록), 개인키는 본인이 소유
- A가 B의 공개키를 받아옴
- A가 B의 공개키를 사용해 데이터를 암호화
- 암호화된 데이터를 B에게 전송
- B는 암호화된 데이터를 B의 개인키로 복호화 (개인키는 B만 가지고 있기 때문에 B만 볼 수 있음)
따라서, 공개키는 키가 공개되어있기 때문에 따로 키교환이나 분배를 할 필요가 없습니다.
만약 해커가 B의 공개키를 탈취한다 해도, B의 개인키로만 복호화가 가능하기 때문에 안전하지만, 이러한 과정으로 속도가 느리다는 단점이 있습니다.
장점
키를 분배할 필요가 없다.
개인키로만 복호화가 가능하기 때문에, 대칭키의 키 배송 문제를 차단하기 때문에 안전성이 높다.
단점
대칭키에 비해 속도가 느리다.
'◼ CS 기초 지식 > [네트워크]' 카테고리의 다른 글
도메인과 DNS 란 ? (0) | 2022.09.23 |
---|---|
Gateway(게이트웨이)란 ? Router(라우터)란? 각 개념과 차이점에 대해 알아보자. (1) | 2022.09.23 |
암호화, 복호화란 ? 쉽게 알아보자. (1) | 2022.09.23 |
Port ( 포트 ) 란 무엇인가 ? 포트에 대해 알아보자. (1) | 2022.09.23 |
SSL 이란 ? TLS 이란 ? (0) | 2022.09.22 |