대칭키
- 암복호화에 사용하는 키가 동일한 암호화 방식을 말함
- 알고리즘 : DES, 3DES, AES, SEED, ARIA
- 특징
- 공개키에 비해 연산 속도가 빠름
- 대용량 데이터 암호화에 적합
- 키를 교환해야 한다는 문제 발생(키 탈취 위험)
- 사용자가 증가할수록 관리해야할 키가 방대하게 많아짐
- 문제점 해결방법
- 키의 사전 공유
- 키 배포 센터 사용
- Diffie-Hellman 키 교환
- 공개키 암호화 방식
- 기밀성을 제공하고 무결성/인증/부인방지를 제공하지 않음
- 키의 개수 : nC2 = n * (n - 1) / 2
(전체 구성원 중 2명이 선택될때마다 새로운 키가 필요하기 때문)
비대칭키(공개키)
- 암복호화에 사용하는 키가 서로 다른 암호화 방식을 말함
- 알고리즘 : Diffie-Hellman, RSA, DSA, ECC
- 특징
- 대칭키 알고리즘에 비해 속도가 느림(연산 복잡)
- 키 전달 문제를 해결하여 안전성 확보
- A가 B에게 데이터를 보내는 과정
- A는 공개되어 있는 B의 공개키로 데이터를 암호화해서 보냄
- B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 봄
(이때, 암호화된 데이터는 B의 공개키에 대응되는 개인키를 갖고 있는 B 본인만이 볼 수 있게 됨)
- 기밀성/인증/부인방지를 제공하고 무결성을 제공하지 않음
- 키의 개수 : 2n
기밀성, 무결성, 인증, 부인방지
- 기밀성
- 허락하지 않은 사용자 및 객체가 정보를 확인하지 못하도록 설정되어야 한다.
- 무결성
- 허락하지 않은 사용자 및 객체가 정보를 함부로 변조하지 못하거나 변조가 발생하지 않았는지 확인하는 것이다.
- 두 알고리즘 모두 성립하지 않아서 전자 서명(인증서)을 추가해 무결성을 보장한다.
- 인증
- 부인 방지
- 정보를 송수신한 사실을 부인할 경우 증명하는 기술을 말한다.
HTTPS
HTTPS는 공개키 방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.
- 상세 과정
- A는 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화해서 B에게 보낸다.
- B는 암호문을 받고 자신의 비밀키로 복호화한다.
- B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보낸다.
- A는 자신의 대칭키로 암호문을 복호화한다.
- 앞으로 해당 대칭키로 계속 통신한다.
디지털 인증서
디지털 인증서에는 모두가 신뢰할 수 있는 제3자인 CA와 비대칭키 암호화가 필요하다.
- 상세 과정
- B는 CA에게 자신이 B임을 증명하고 자신의 공개키가 B의 공개키가 맞음을 인증하는 인증서를 발급받는다.
- A에게 B의 공개키가 포함된 해당 인증서를 보낸다.
- 이를 받은 A는 자신이 신뢰할 수 있는 CA에게 진짜 CA가 발급한 인증서인지 확인한다.
- 맞다면 그 인증서에 포함된 B의 공개키로 데이터를 암호화해서 B에게 전달한다.
- B는 CA가 인증하는 B의 공개키에 대응하는 개인키가 있으므로 이를 이용하여 복호화한다.
참고
https://velog.io/@octo__/%EB%8C%80%EC%B9%AD%ED%82%A4%EC%99%80-%EA%B3%B5%EA%B0%9C%ED%82%A4%EB%B9%84%EB%8C%80%EC%B9%AD%ED%82%A4
https://tussle.tistory.com/1036
https://jaehoney.tistory.com/290