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

00SNU3K·2021년 8월 6일
7

인증성 보장을 위한 노력..

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

  • 대칭키 암호화 방식 : 암복호화에 사용하는 키가 동일함
  • 공개키 암호화 방식 : 암복호화에 사용하는 키가 서로 다르며 비대칭키 암호화라고도 함

대칭키

  • 장점 : 암호화방식에 속도가 빠르다. 대용량 Data 암호화에 적합하다.
  • 단점 : 키를 교환해야 하는 문제, 탈취 관리 걱정, 사람이 증가할수록 키관리가 어려워짐, 확장성 떨어짐
  • Session Key, Secret Key, Shared Key, 대칭키, 단용키라고도 함
  • 기밀성을 제공하나, 무결성/인증/부인방지 를 보장하지 않음
  • 대표적 알고리즘 : 공인인증서의 암호화방식으로 유명한 SEED, DES, 3DES, AES, ARIA, 최근 주목받고 있는 암호인 ChaCha20

공개키

  • 단점 : 속도가 느림
  • 장점 : 키분배 필요 X, 기밀성/인증/부인방지 기능 제공
  • 방식
    • 암호 모드 : 송신자 공개키로 암호화 -> 송신자 사설키로 복호화
      소량의 메시지 암호화 목적, 주로 키 교환의 용도로 사용
    • 인증 모드 : 송신자 사설키로 암호화 -> 송신자 공개키로 복호화
      메시지를 인증(부인방지)하는 것이 목적
  • 대표적인 알고리즘
    • Diffie Hellman : 최초의 공개키 알고리즘, 위조에 취약
    • RSA : 대표적 공개키 알고리즘
    • DSA : 전자서명 알고리즘 표준
    • ECC : 짧은 키로 높은 암호 강도, 빠른 구현 가능 PDA, 스마트폰등에 사용

디지털 인증서 원리

디지털 인증서에는 모두가 신뢰할 수 있는 제삼자인 CA와 비대칭키 암호화가 필요.

  1. B는 CA에게 자신이 B임을 증명하고 자신의 공개 키가 B의 공개 키가 맞음을 인증하는 인증서 발급.

  2. A에게 B의 공개키가 포함된 이 인증서를 주면,

  3. 이를 받은 A는 자신이 신뢰할 수 있는 CA에게 CA가 진짜 발급한 인증서인지 확인하고,

  4. 맞으면 그 인증서에 포함된 B의 공개 키로 데이터를 암호화해서 B에게 전달

만약 최종적으로 B가 올바르게 자신의 개인키로 복호화한다면, CA가 인증하는 B의 공개키에 대응하는 개인키를 가지고 있다는 것이므로, 이 과정을 통해 현재 통신하고 있는 상대방이 B가 맞음을 인증할 수 있음.


기밀성 보장을 위한 노력..

키 합의 프로토콜

대칭키 암호화를 사용하기 위해 안전하지 않는 네트워크 상에서 안전하게 키를 교환할 수 있어야 함.

이러한 역할을 하는 알고리즘을 key exchange, key agreement, key establishment등 여러 이름이지만 여기서는 키 합의 프로토콜이라 함.

RSA 키 합의 프로토콜

비대칭키 암호화인 RSA를 사용한 키 합의 프로토콜. 앨리스는 앞으로 통신에 사용할 세션키를 만들어서 이를 밥의 공개키로 암호화한 다음 밥에게 전송. 밥은 자신의 공개키로 암호화된 세션키를 복호화해서 사용.

문제점

밥과 앨리스의 통신 기록을 모두 기록한 앨리스. 추후 밥의 개인키를 알아내어 복호화해서 모든 톻신 기록을 복호화해서 세션키와 세션키를 통한 대화내용을 얻을 수 있음.

해결 방법

현재에만 안전한 것이 아니라 미래에 개인키가 유출되어도 안전하게 하는 보안 목표를 순방향 비밀성(forward secrecy), 완전 순방향 비밀성(perfect forward secrecy, PFS) 이라고 한다. RSA에는 순방향 비밀성이 제공되지 않는다.

디피-헬만(-머클) 키 합의 프로토콜

  • 안전하지 않은 채널에서 안전하게 세션키를 전달 가능

  • 순방향 비밀성 보장

    • 세션키를 만들 수 있는 힌트만을 네트워크상으로 전달하기 때문
  1. 앨리스와 밥은 통신에 사용할 기저키 공개적으로 정함 - 노란색

  2. 각자 비밀키를 정함 - 빨간색, 청록색

  3. 각자 비밀키 + 기저키을 하여 공개적으로 전송 - 오렌지색, 파란색

  4. 받은 (상대방의 비밀키+기저키) + 자신의 비밀키를 하면 최종 공통키 - 갈색

  5. 각자의 비밀키을 즉시 삭제 - 빨간색, 청록색

훗날 밥의 개인 키를 탈취하더라도 얻을 수 있는 것은 힌트뿐이기 때문에 여전히 복호화하지 못함.

세션키를 만드는데에 사용된 비밀키들은 폐기되었기 때문에 세션키 탈취 불가

= 순방향 비밀성 제공

무결성 보장을 위한 노력..

해쉬 함수(Hash Function)

해쉬 함수는 어떤 임의의 데이터를 입력으로 받아서 일정한 길이의 데이터로 바꾸어주는 함수를 말하는데, 이때 나오는 결과인 일정한 길이의 데이터를 해시 또는 해시 값이라고 한다.

암호학적으로 강점을 가지는 요소들을 가진 해시 함수 == 암호학적 해시 함수

  1. 해시 값만을 보고서 입력 데이터를 찾기 어려울 것
  2. 특정 입력 데이터의 해시 값과 같은 해시 값을 가지는 다른 데이터를 찾기 어려울 것
  3. 같은 해시값을 가지는 서로 다른 두 입력 데이터를 탖기 어려울 것

대표적인 암호학적 해시 함수 ) SHA-256

장점

전송 중에 메시지가 변경되었을 경우, 해시 값이 다르다면 오염된 메시지임을 확인 가능

문제점

수정 또는 변경은 감지할 수 있지만 위조는 감지 못함. → 키있는 해쉬 함수 사용

키있는 해쉬 함수(Keyed Hash Function)

키 있는 해쉬 함수 종류중 대표적인 메시지 인증 코드(message authentication code, MAC).

메시지 인증 코드 = 대칭키 암호화 개념 + 해쉬 함수

  • 메시지 인증 코드를 이용한 인증 순서

① 송신자 앨리스와 수신자 밥은 사전에 키를 공유해 둔다.

② 송신자 앨리스는 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).

③ 송신자 앨리스는 수신자 밥에게 송금 의뢰 메시지와 MAC 값을 보낸다.

④ 수신자 밥은 수신한 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).

⑤ 수신자 밥은 앨리스로부터 수신한 MAC 값과 계산으로 얻어진 MAC 값을 비교한다.

⑥ 수신자 밥은 2개의 MAC 값이 동일하면 송금 의뢰가 틀림없이 앨리스로부터 온 것이라고 판단한다(인증 성공). 동일하지 않다면 앨리스로부터 온 것이 아니라고 판단한다(인증 실패).

메시지 인증 코드 실현 방법

1. 일 방향 해시 함수를 써서 실현

대칭키, 공개키, 비밀 값 등을 이용하여 메시지 다이제스트를 생성하고 검증한다.

2. 블록 암호를 이용한 인증코드

트리플 DES나 AES와 같은 블록 암호를 사용해서 메시지 인증 코드를 실현할 수 있다.블록 암호의 키를 메시지 인증 코드의 공유 키로 사용하고, CBC 모드를 써서 메시지 전체를 암호화한다. 메시지 인증 코드에서는 복호화를 할 필요가 없으므로 마지막 블록만 제외하고 나머지 블록들은 모두 폐기해 마지막 블록만 MAC 값으로 이용.

3. 기타 인증 코드 만들기

  • 스트림 암호나 공개키 암호 등을 사용해서 메시지 인증 코드 실현 가능
profile
네트워크 전문가를 꿈꾸며

0개의 댓글