대칭키와 비대칭키/공개키

bolee·2022년 8월 5일
1
post-thumbnail

양방향 암호화 방식인 대칭키와 비대칭키/공개키를 알아보자

대칭키와 비대칭키(공개키)

  • 대칭키 암호화 방식(symmetric-key security method): 암호화, 복호화에 사용하는 키가 동일하다.

  • 비대칭키/공개키 암호화 방식(asymmetric-key security method): 암호화, 복호화에 사용하는 키가 서로 다르다.

대칭키 암호화 방식

양방향 암호화 방식 중 널리 사용하는 대칭키 암호화 방식은 암호화와 복호화에 같은 암호 키를 사용하는 알고리즘이다.
Session Key, Secret Key, Shared Key, 대칭키, 단용키 라고도 한다.

장점 및 단점

장점

  • 구현이 용이하다.
  • 데이터를 암호화하기 위한 연산이 빨라 대용량 데이터 암호화에 적합하다.
  • 기밀성을 제공한다.

단점

  • 강한 보안을 위해 키를 주기적으로 교환해주는 것이 좋다.
  • 키 탈취 및 관리가 어렵다.
  • 무결성 지원이 부분적으로만 가능하다.
  • 부인 방지 기능을 제공하지 못한다.

종류

블록 암호(block cipher) 방식: 기밀성 있는 정보를 정해진 블록 단위로 암호화 하는 대칭키 암호 시스템으로 만약 암호화하려는 정보가 블록 길이보다 길 경우 특정한 운용 모드가 사용된다.

  • SEED
  • HIGHT(High security and light weight)
  • ARIA
  • LEA(Lightweight Encryption Algorithm)
  • DES(Data Encryption Standard)
  • AES(Advanced Encryption Standard)

스트림 암호(stream cipher) 방식: 이진화된 평문 스트림과 이진 키스트림의 배타적 논리합(XOR) 연산으로 암호문을 생성하는 방식이다.

  • RC4
  • A5/1, A5/2, A5/3

비대칭키/공개키 암호화 방식

비대칭키/공개키는 암호화할 때와 복호화할 때의 키를 서로 다른 키로 사용하는 암호화 알고리즘이다.
외부에 절대 노출되어서는 안되는 개인키(Private Key)와 공개적으로 개방되어 있는 공개키(Public Key)가 쌍으로 이루어진 형태이다.

장점 및 단점

장점

  • 키 분배 및 키 관리가 용이하다.
  • 기밀성, 무결성을 지원한다.
  • 부인 방지 기능을 제공한다.
  • 암호학적 문제를 해결할 수 있다.

단점

  • 상대적으로 키의 길이가 길다.
  • 연산속도가 느리다.

부인 방지

부인 방지란 송신자나 수신자가 메세지를 주고받은 사실을 부인하지 못하도록 방지하는 것을 말한다.

예를 들어 A 가 B 에게 돈을 빌린 후 '차용증'에 서명했는데, 후에 A 는 돈을 빌리지 않았으며 차용증 역시 자신의 서명이 아니라고 부인 하는 경우를 생각해 볼 수 있다.
이 때, B 는 문서에 있는 서명이 A 의 것이 맞다는 것을 확인하는 것이 '부인 방지'이다.

비대칭키/공개키 암호화 방식에서는 본질적으로 '발행자의 증명'과 동일한 절차로 이루어진다.

  1. B는 A에게 개인키/공개키를 생성한 뒤 공개키를 공개하도록 요구한다.
  2. B는 A에게 '문서'를 개인키로 암호화할 것으로 요구한다.
  3. B는 이 '암호화된 문서'를 수령한다.
  4. B는 '암호화된 문서'를 A 의 공개키로 해독하여, 이 문서가 A 의 개인키로 제대로 암호화 되었음을 검증할 수 있다.
  5. 만약 해독되지 않는다면, 개인키-공개키 쌍이 맞지 않음을 의미한다. 공개한 공개키가 잘못되었거나, 다른 개인키로 암호화 했음을 뜻한다.

이 '암호화된 문서'는 A 의 공개키로만 해독이 가능하므로, 이 '암호화된 문서'는 A 만이 발행할 수 있다는 증거가 된다. 또한, 변조되지 않았음도 동시에 증명할 수 있다.

종류

  • RSA
  • 디피-헬만(Diffie-Hellman)
  • 타원곡선암호(Elliptic Curve Cryptosystem, ECC)
  • 전자서명(digital signature)

비대칭키/공개키를 사용한 암호학적 문제 해결

비대칭키/공개키를 사용할 경우 2가지 암호학적 문제를 해결할 수 있다.

  • 데이터 보안
  • 인증

공개키 암호화 → 개인키 암호화: 데이터를 안전하게 전송할 수 있는 보안 관점
개인키 암호화 → 공개키 암호화: 신뢰할 수 있는 단체라는 것을 인증하는 관점

데이터 보안 관점

사용자가 데이터를 서버로 보내는 과정에서 개인정보와 같은 중요 데이터의 경우 암호화해서 보내야 한다.
그래서 서버만 유일하게 가지고 있는 개인키로 복호화할 수 있도록 하고 서버의 공개키로 암호화하여 해서 보내도록 하면 데이터를 안전하게 전송할 수 있다.

즉, 제 3자가 클라이언트로부터 전송하는 데이터를 볼 수 없어 데이터 보안을 강화할 수 있다.

인증 관점

  1. 클라이언트와 서버는 서로 확인 위해 Handshake 과정을 진행한다.
    a. 이 때 서버에서는 CA(공인 인증 기관)에서 인증받은 인증서(CA의 개인키로 암호화된 전자서명)를 클라이언트로 보낸다.
  2. 사용자는 CA의 목록을 확인해 공인 인증 기관이 서명한 인증서인지 확인한다.
  3. CA의 공개키를 이용해 해당 인증서를 복호화한다.
  4. 복호화에 성공하면 서버의 공개키를 얻는다.

이러한 방식으로 공인 인증 기관으로부터 서명 받은 서버의 인증서가 공인 인증 기관의 공개키로 복호화가 가능하다는 것을 통해 해당 기관이 인증 받은 단체라는 것을 확인할 수 있다.

대칭키과 비대칭키의 혼합

  1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
  2. B는 암호문을 받고, 자신의 비밀키로 복호화함
  3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
  4. A는 자신의 대칭키로 암호문을 복호화함
  5. 앞으로 이 대칭키로 암호화를 통신함

위와 같은 방식으로 대칭키와 비대칭키를 적절하게 혼합해 사용함으로써 2가지 방식의 장점을 적절하게 취할 수 있다.

요약

대칭키 암호화 방식비대칭키 암호화 방식
개념- 암호키(비밀키)=복호키(비밀키)
- 대칭구조
- 암호키(공개키)와 복호키(개인키)가 다르며, 이들 중 복호화키만 비밀로 간직
- 비대칭 구조를 가짐
특징- 대량의 Data 암호화 유리- 전자서명, 공인인증서 등 다양한 이용
장점- 연산속도가 빠르고 구현이 용이
- 일반적으로 같은 양의 데이터를 암호화하기 위한 연산이 공개키 암호보다 현저히 빠름
- 쉽게 기밀성 제공
- 키 분배/키 관리가 용이
- 사용자의 증가에 따라 관리할 키의 개수가 상대적으로 적음
- 키 변화의 빈도가 적음(공개키의 복호화키는 길고 복잡하기 때문)
- 기밀성, 무결성을 지원하고 특히 부인 방지 기능을 제공
단점- 키관리가 어렵
- 무결성 지원이 부분적으로만 가능하며, 부인방지 기능을 제공하지 못함
- 키의 길이가 길고 연산속도가 느림
알고리즘SEED, HIGHT, ARIA, LEA, DES, AES, RC4, A5/1, A5/2, A5/3RSA, Diffie-Hellman, ECC, digital signature

참고 자료

https://velog.io/@gs0351/%EB%8C%80%EC%B9%AD%ED%82%A4-vs-%EA%B3%B5%EA%B0%9C%ED%82%A4%EB%B9%84%EB%8C%80%EC%B9%AD%ED%82%A4
https://myjamong.tistory.com/293
https://wooono.tistory.com/106
http://wiki.hash.kr/index.php/%EB%8C%80%EC%B9%AD%ED%82%A4
http://wiki.hash.kr/index.php/%EB%B9%84%EB%8C%80%EC%B9%AD%ED%82%A4
https://retro-blue.tistory.com/40

보안의 3요소

보안은 3가지 요소가 결합되어야 높은 안정성을 형성한다.
보안의 3가지 요소는 아래와 같다.

  • 기밀성: 인가받은 사용자만 정보 자산에 접근할 수 있음을 보장하는 것
  • 무결성: 권한을 가진 사용자에 의해 인가된 방법으로만 정보를 변경할 수 있음을 보장하는 것
  • 효율성: 정보에 대한 접근과 사용이 적시에 확실히 보장하는 것

1개의 댓글

comment-user-thumbnail
2024년 6월 3일

잘 보고 갑니다!

답글 달기