Computer Science/Network Security

[CS][알기 쉬운 정보보호개론 3판] Chapter14. 이메일 보안

y-seo 2023. 12. 6. 12:00

 

 
 

이메일과 프로토콜

  • SMTP 와 IMAP/POP이 주로 사용된다.
  • SMTP
    • simple mail transfer protocol (정말 simpl해서 mail만 보낼 수 있다.)
    • 발신지에서 목적지까지 인터넷을 통해 메세지를 이동하는 데에 사용하는 프로토콜
    • 이메일 메세지를 봉투(envelope)에 캡슐화하고 캡슐화된 메세지를 발신지에서 목적지까지 다수의 MTA(mail transfer agent : 중간중간의 router)를 통해 전송
    • 클라이언트-서버 사이에서의 SMTP (송수신자 서버 사이에서 작동)
      • 클라이언트(이메일 송신자)가 서버(다음-홉 수신자)에 접촉하고 해당 메세지가 전송되어야 할 곳에 대한 정보를 말해주는 명령어 집합을 제시하며 메세지를 전송하는 역할
    • MTA 간의 SMTP
      • 한 MTA가 메세지를 수신하게 되면 SMTP 크라이언트 역할을 하고 메세지를 최종목적지까지의 경로를 따라 다음 MTA로 전송
  • IMAP/POP
    • 우리가 주로 마주하는 것
    • MS(message store)에 저장된 메일을 MUA(mail user agent : 사용자 쪽 application)로 전송시키는 프로토콜 → 주로 IMAP 사용
    • IMAP : MS와 MUA 동기화 (더 무거움)
    • POP : MS → MUA로 이동하므로 MS에는 더이상 남지 않음 (더 가벼움)
      • 사용은 취향 차이

 

 
 

MIME (Multipurpose Internet Mail Extension)

  • SMTP나 RFC 5322의 확장으로 이들의 한계점을 극복한 새로운 메일 프로토콜
    • SMTP가 사용되고는 있다. 말단에서는 MIME를 쓰지만 중간중간 MTA들은 지원 안하고 SMTP만 지원되는 것도 있기 때문에 이들 사이에서 SMTP를 사용한다.
  • MIME 이전 메일 프로토콜의 한계점 및 극복방법
    • SMTP는 실행 파일이나 바이너리 객체를 전송하지 못함
    • SMTP는 국제 언어 문자(national language characters)를 포함한 텍스트 데이터를 전송하지는 못한다. (알파벳/숫자만 전송 가능, ASCII 코드만)
    • SMTP 서버는 특정 크기 이상의 메일 메세지를 거절한다.

 

 
 

이메일 보안 위협들

  • 인증-관련 위협 (Authentication-related threats)
    • 기업 이메일 시스템에 허가받지 않은 접근 허용
  • 무결성-관련 위협 (Integrity-related threats)
    • 이메일 콘텐츠의 허가 받지 않은 수정을 허용 (내용이 바뀌어서 온다)
  • 기밀성-관련 위협 (Confidentiality-realted threats)
    • 민감한 정보의 허가받지 않은 노출을 허용
    • 중간에서 보는 것, 요즘은 암호화되어 전송되어서 괜찮다.
  • 가용성-관련 위협 (Availability-related threats)
    • 종단 사용자가 메일 전송이나 수신하는 것을 방해

 

 
 

이메일 위협과 완화 방법

알기 쉬운 정보보호개론 3판

 

 
 

위협 대응용 표준 프로토콜

  • STARTTLS
    • SMTP에 TLS를 적용하기
  • S/MIME SMTP
    • 원래 MIME에 보안 기능을 추가
  • DNS 보안 확장 (DNSSEC : DNS Security Extensions)
    • DNS 데이터의 인증과 무결성 보호를 제공하며 다양한 이메일 보안 프로토콜에서 사용하는 기본 도구
    • DNS가 해킹되면 목적지가 아닌 다른 곳으로 간다.
  • 네임드 개체 DNS-기반 인증 (DANE : DNS-based Authentication of Named Entities)
    • DNSSEC을 보완한 것
  • 송신자 정책 프레임 워크 (SPR : Sender Policy Framework)
  • DKIM (DomainKey Identified Mail)
  • DMARC (Domain-based Message Authentication, Reporting, and Conformance)
    • SPF와 DKIM을 이용해서 이메일 스푸핑을 찾아내는 이메일 인증 프로토콜

 

 

 
 

S/MIME

  • Secure/Multipurpose Internet Mail Extension
  • RSA Data Security사에서 제공하는 기술을 토대로 MIME 인터넷 이메일 형식 표준에 보안을 강화한 것
  • S/MIME가 제공하는 서비스

알기 쉬운 정보보호개론 3판

 

 
 

1. S/MIME의 디지털 서명

  • 이메일 내용의 무결성을 인증하는 데에 사용된다.
  • 가장 보편적으로 SHA-256을 사용한 RSA를 사용한다.
  • 서명 절차
    1. 송신자는 메세지를 생성한다. → 보내기 버튼 push
    2. SHA-256로 메세지로부터 256 비트 메세지 다이제스트를 생성한다.
    3. 송신자의 개인키와 RSA를 이용해서 메세지 다이제스트를 암호화한다. 그 결과(서명)를 메세지에 이어 붙인다. 서명자를 인식할 수 있는 정보를 추가한다. 추가 정보로 수신자는 서명자(송신자)의 공개키를 검색한다.
    4. 수신자는 RSA와 송신자의 공개키를 이용해서 서명을 복호화하고 메세지 다이제스트를 복구한다.
    5. 수신자는 복구된 메세지로부터 새로운 메세지 다이제스트를 생성한 다음 이를 복호화한 해시 코드와 비교한다(Email을 해시함수에 넣고 비교한다). 이 두 값이 일치하면 메세지가 정당한 것으로 받아들여진다.

 

 
 

2. S/MIME의 메세지 암호화

  • 이메일 내용의 기밀성을 위해 암호화
  • 대부분의 경우 128-비트 키를 사용하는 AES로 암호화 (블록/키 size 모두)
  • 운용 모드는 CBC(Cipher Block Chaining) 모드
  • 키 자체도 암호화하는데 RSA로 암호화 (대칭키를 수신자의 공개키로 암호화)
  • 키 공유 및 메일 내용 암호화 절차
    1. 송신자는 메세지를 생성하고 1280비트 수(대칭키를 생성, 1회만 사용)를 생성하고 이를 콘텐츠-암호 키로 사용하되 이 메세지에 오직 한 번만 사용한다.
    2. 콘텐츠-암호 키로 메세지를 암호화 (이메일을 암호화)
    3. 콘텐츠-암호 키를 RSA로 암호화하는데 이때 수신자의 공개키를 이용한다. 암호화된 콘텐츠-암호 키를 메세지에 붙인다.
    4. 수신자는 자신의 개인키로 RSA 복호화한다. 이렇게 해서 콘텐츠-암호키를 복구한다.
    5. 콘텐츠-암호 키로 암호문을 복호화해 메세지를 복구한다.
    6. Email 내용을 확인할 수 있다.

 

 
 

S/MIME의 디지털 서명 및 암호화

  • 둘 다 일어날 수도
  • 서명 먼저 하고 서명을 포함해서 암호화를 한다.

알기 쉬운 정보보호개론 3판

 

 
 

3. S/MIME 암축

  • 암호화 후에 압축을 한다.
  • 압축을 하면 이메일 전송량이나 파일 저장소 공간을 절약한다.
  • 암호화된 메세지와 서명을 모두 압축한다.
  • 만일 손실 압축 알고리즘을 사용할 경우, 압축을 먼저 하고 그 뒤에 암호화 및 서명을 한다.
    • 압축을 하면, 다시 압축을 풀었을 때 압축 이전 파일과 다른 경우 = 손실 압출
      • 이미지, 영상, 음악 등에 사용
      • 압축률 한계 X
    • 압축을 하면, 다시 압축을 풀었을 때 압축 이전 파일과 다른 경우 = 무손실 압출
      • 파일, 이메일 등에 사용
      • 압축률 한계 O

 

 
 

4. S/MIME의 이메일 호환성 제공

  • MTA나 수신자 중에는 SMTP만 지원하고 S/MIME를` 지원하지 않는 경우가 존재한다.
  • 이들은 S/MIME를 이용하여 보안 처리 된 이메일을 전달하거나 읽어올 수 없다.
  • 이를 위한 표준 중 하나로 Base 64 (기저 64) 변환을 사용한다.
  • Base 64 : 6비트를 하나의 ASCII 문자로 변환하기 위한 규칙, 6bit마다 8bit로 바꿔준다, 남게 되면 처리 방법이 별도로 존재한다. 용량이 4/3배가 된다.
  • Base 64를 사용하는 이유
    1. SMTP 서버 통과를 위해서
    2. 수신자가 Email 구버전을 쓸 때

 

 
 

S/MIME에 적용되는 보안 알고리즘들

알기 쉬운 정보보호개론 3판

 

 
 

S/MIME가 제공하는 기능들

  • 사실 암호화와 서명이 둘 다 들어갈 필요는 없다 → 기능적 문제 때문에 한가지만 할 수도 있다.
  1. Enveloped Data
    • 기밀성만 제공한다. (암호화만)
    • 무결성과 인증성은 제공하지 않는다.
    1. 송신자는 대칭키를 선택하고 이 대칭키로 메일 내용을 암호화한다.
    2. 대칭키를 각 수신자의 공개키로 암호화한다.
    3. 각 수신자들을 위한 암호화된 대칭키들과 암호화된 메일 내용을 Base 64로 인코딩 및 전송한다.
  2. Signed Data
    • 무결성과 인증성만 제공한다.
    • 호환성이 없다.
      • 송/수신자의 성능이 다를 경우, 받는 사람이 글자가 깨진 이메일을 받게 된다. 이메일 호환성 때문에 전체를 인코딩해서
    • 서명만 해준다.
    • 기밀성은 제공하지 않는다. (볼 수는 있어야 한다.)
    • 이게 적용된 메일은 수신측 기기가 S/MIME를 지원할 때만 열어볼 수 있었따.
    1. 송신자는 메일 내용에 해시 함수를 적용하여 Message Digest를 얻는다.
    2. 송신자는 Message Digest에 자신의 비밀키로 서명한다.
    3. 송신자는 자신의 공개키 인증서가 포함된 SignerInfo라는 것을 준비하여 메일 내요으 서명 SignerInfo를 연결한다.
      • SignerInfo : 인증서, 공개키가 누구 것인지 알 수 있도록
    4. 전체를 Base 64로 인코딩한 후 전송한다.
  3. Clear-signed Data
    • 인증성만 제공한다.
    • 호환성도 있다.
    • 서명만 해준다.
    • 이를 위해 Signed Data의 4번 과정에서 전체를 Base 64로 변환하지 않고 서명과 SignedInfo만 Base 64로 변환한다.
      • Email 내용을 그대로 둔다. → 송/수신자의 성능 차이가 있어도 내용을 볼 수 있다. (진짜인지는 모르지만)
    • 이렇게 하면, S/MIME를 지원하는 기기로는 메일의 확인 및 검증이 가능하고 그렇지 않은 기기로는 메일의 확인만 가능하다.
  4. Signed and Enveloped Data
    • 디지털 서명과 암호화가 모두 적용된다.
    • 가장 좋다.
    • 압축, Base 64를 모두 적용한다.

 

 
 

PGP (Pretty Good Privacy)

  • Phil Zimmermann 제작
  • 이메일과 파일 저장 응용에 필요한 기밀성과 인증을 제공한다.
  • S/MIME과 근본적으로 같은 기능이다.
  • PGP와 S/MIME의 차이점
    • 공개키와 연관있다.
    • 키 인증 (key certification)
      • S/MIME : 인증기관(CA)에서 발행한 X.509 인증서를 사용한다.
      • OpenPGP : 사용자가 자신의 OpenPGP 공개 키와 개인 키를 생성하고 그들이 알고 있는 개인이나 조직의 공개 키에 대한 서명을 요청한다. (PGP 운영 관리자가 서명한다. (공인 인증 기관 X)
    • 키 배분 (key distribution)
      • S/MIME : 메세지에 송신자의 공개키를 첨부한다.
      • OpenPGP : 메세지에 송신자의 공개키를 첨부하지는 않지만, 수신자는 송신자의 공개키를 다른 통로로 수집한다. 공개키를 PGP 관리자에게 따로 받아온다. (같이 보내지 않는다.)

 

 
 

OpenPGP

  • 암호문이나 디지털 서명 형식을 정한 규격
  • RFC: 표준, 만드려면 지켜야 하는 것
  • RFC1991: (1991년) PGP 메시지 형식을 기술
  • RFC2440
  • RFC4880: (2007년) RSA와 DSA를 지원 for 디지털 서명
  • RFC5581
  • RFC6637: (2012년) 타원 곡선 암호(ECC)를 지원
    • 공개키 암호화 방식으로 key의 사이즈가 작아야 한다. (bit가 작을수록 시간↓)
    • Curve P-256, P-384, P-521이라는 3종류의 타원곡선을 사용하여 타원곡선 DSA(Elliptic Curve Digital Signature Algorithm) 알고리즘을 지원한다. (작은데도 보안 수준이 좋다.)

 

 
 

GNU Privacy Guard (GnuPG, GPG)

  • OpenPGP 규격에 따라 만들어진 암호화 소프트웨어
  • 암호화, 디지털 서명, 키 관리, S/MIME와 ssh 등을 지원
  • PGP가 지원하는 것은 다 지원한다.
  • GNU PGL에 기초한 프리 소프트웨어

 

 
 

PGP가 제공하는 보안 기능

  • S/MIME과 유사하다.
  • 대칭키 암호 : 이메일 내용을 암호화하며, AES, IDEA, CAST, 삼중 DES, Blowfish, Twofish, CFB모드를 사용한다.
  • 공개 키 암호 : 대칭키를 암호화하기 위해 사용되며, RSA와 ElGamal 사용한다.
  • 디지털 서명 : 이메일 내용을 서명하기 위해 사용되며, RSA와 DSA 사용한다.
    • DSA : 공개키 기반 암호 알고리즘, 이산로그를 푸는 것이 어렵다는 것에 근거한다.
  • 일방향 해시 함수 : 이메일 내용의 해시값을 계산하기 위해 사용되며, MD5, SHA-1, RIPEMD-160 등을 사용한다.
  • 인증서 : OpenPGP에서 정의한 자체 인증서를 사용하며, X.509 표준을 따른다.
    • 관리자가 인증해준 것이다.
  • 압축 : ZIP, ZLIB, BZIP2 등을 이용하여 압축한다.
  • 이진 데이터의 ASCII로의 변환 : radix-64를 이용하여 호환성을 보장한다.
  • 큰 파일의 분할과 결합
  • 키 고리 관리 : 자신의 키 쌍이나 공개키를 관리하는 기능

 

 
 

PGP의 이메일 서명 및 검증

알기 쉬운 정보보호개론 3판

 

 
 

PGP의 이메일 암/복호화 및 서명/검증

알기 쉬운 정보보호개론 3판

 

 
 

신뢰망

  • S/MIME나 다른 공개키 인증서 기반 프로토콜과는 달리, PGP는 공개키를 인증할 수 있는 공인인증기관이 없다. 그래도 공개키를 사용한다. (그 공개키를 관리자가 아닌 다른 이에게 받았을 때의 이야기)
  • 대신, PGP는 신뢰망을 이용하는데 PGP 사용자가 신뢰할 수 있는 다른 사람의 공개키에 서명을 하는 방식을 기반으로 한다
  • 사용자가 다른 사람의 공개키를 인증하는 기준은 다음과 같다. (이렇게 공개키를 얻는다.)
    • 경우1 : 자기 자신의 디지털 서명으로 확인한다. (원래부터 가지고 있는 것을 확인한다.)
    • 경우2 : 자신이 항상 신뢰하고 있는 사람의 디지털 서명으로 확인한다. (신뢰하고 있는 사람이 그 다른 사람의 공개키를 서명했을 경우)
    • 경우3 : 자신이 부분적으로 신뢰하고 있는 사람들의 디지털 섬여으로 확인한다. (부분적으로 신뢰하고 있는 사람들이 그 다른 사람의 공개키에 서명했을 경우이다.)

 

 
 

DNSSEC (DNS 보안 확장)

  • 웹/이메일 등에서 다른 곳으로 가게 할 수 없게 만드는 기술
  • 웹에서 Pharming을 방지하기 위해 만든 기술
  • DNS 서버가 해킹 되더라도 위장 사이트에 접속하지 못하게 하는 기술이다.