맨땅에 코딩

공통 - 암호학 기초 본문

화이트햇 스쿨 2기/이론교육

공통 - 암호학 기초

나는 푸딩 2024. 9. 18. 17:20

*화이트햇 스쿨 2기에서 이수한 이론교육 내용을 바탕으로 작성되었습니다.

1. "암호학 기초" 개요

보안통신(Securing Communications)

- 정보시스템 보안의 3가지 기본 목표

  1. 기밀성(Confidentiality)

  2. 무결성(Integrity)

  3. 가용성(Availability)

- 안전하게 데이터 주고 받는 보안 통신을 하려면?

  → 데이터 기밀성(Data Confidentiality

       - 인가 받은(authorized) 사용자만 메시지를 읽을 수 있음

  → 데이터 무결성(Data Integrity)

       - 메시지가 수정되지 않았음을 확인할 수 있음

  → 데이터 출처 인증(Origin Authentication)

       - 메시지의 출처와 내용이 수정되지 않았음을 확인할 수 있음

  → 데이터 부인방지(Data Non-Repudiation)

       - 송신자가 메시지를 보낸 사실, 그 내용을 부정할 수 없음

  → 접근 통제(Access Control)

       - 승인된 사용자만 데이터/단말기에 접근해야 함

 

암호기술(Cryptography)

- 암호기술

    통신 당사자 간 메시지 전달 과정을 보호하고 컴퓨터에 저장된 메시지를 보호하기 위한 수학적 기술

- 암호기술의 용어

  → Cryptology(암호학)

        - “비밀코드(secret codes)”를 만들거나 해독하는 학문

  → Cryptography(암호기술)

       - “비밀코드”를 만드는 것

  → Cryptanalysis (암호분석)

       - “비밀코드”를 해독하는 것

  → Crypto (암호)

       - 가장 포괄적인 용어

 

케르크호프스의 원리 (Kerckhoffs’ Principle)

- 프랑스 언어 학자, 암호 학자

- In 1883 in le Journal des Sciences Militaires (Journal of Military Science) entitled La Cryptographie Militaire (Military Cryptography)

- 실용적인 암호 설계의 6가지 원칙

  → 시스템은 수학적으로는 아니더라도 실질적으로 해독할 수 없어야 한다.

  → 비밀을 요구하지 않아야 하며, 적의 손에 넘어가도 문제가 되지 않아야 한다.

  → 키를 전달하고 기억할 수 있어야 하며, 통신원이 마음대로 키를 변경하거나 수정할 수 있어야 한다.

  → 전신 통신에 적용 가능해야 한다.

  → 휴대할 수 있어야 하며, 여러 사람이 취급하거나 조작할 필요가 없어야 한다.

  → 시스템은 사용하기 쉬워야 하며, 사용자가 긴 규칙 목록을 알고 준수하도록 요구해서는 안 된다.

 

암호 알고리즘과 키 길이

- 용어 정의

  → 안전성 수준

       - 시스템이 어느 정도의 보안강도를 만족해야 하는지를 의미

  → 완전한 탐색 (exhaustive search)

       - 모든 가능한 키를 찾아내는 것

  → N비트 키: 2^N개

       - 이 중에서 키를 찾기 위해서는 평균적으로 2^N-1 번의 시도 필요

  → 보안강도

       - 암호 알고리즘이나 시스템의 암호키 또는 해시함수의 취약성을 찾아내는데 소요되는 작업량을 수치화한 것

       - 예) 112비트: 2112번의 계산을 해야 암호키 또는 암호 알고리즘의 취약성을 알아낼 수 있음을 의미

- 암호 알고리즘과 키 길이 선택 기준

  → 암호 알고리즘과 키 길이는, 암호 알고리즘의 안전성 유지기간과 보안강도별 암호 알고리즘 키 길이 비교표, 암호키의 사용 유효기간을 기반으로 선택함

 

암호기술의 활용

암호학자의 도구 상자, 보안 위협과 암호 기술

 

암호기술의 분류

- 일방향 암호기술

  → 해시함수

       - Modification Detection Code (MDC) → 무결성

         - 예 ) MD5, SHA -2, SHA - 3

       - Message Authentication Code (MAC) → 무결성 & 인증

         - 예 ) HMAC (Key -Hashed MAC)

- 양방향 암호기술

  → 대칭키 암호기술

       - 스트림 암호기술 → 기밀성

         - 예 ) RC4

       - 블록 암호기술 → 기밀성 , 인증

          - 예 ) AES, SEED, HEIGHT

  → 비대칭키 암호기술

       - 공개키 암호기술 → 기밀성 , 인증 , 부인방지

          - 예 ) DH, RSA, ElGamal, ECC

 

2. 무결성과 인증 (Integrity and Authenticity)

 

암호 해시함수(Cryptographic Hash Functions)

- 해시(Hash)는 데이터의 무결성을 확인하는데 사용됨

  → 물리공간에서는?

       - 문서에 직접 서명

       - 문서와 서명이 물리적으로 결합

  → 사이버공간에서는?

       - 암호 기술을 사용 → 메시지 다이제스트(MD: Message Digest)

       - 메시지와 메시지 다이제스트는 디지털 정보이므로 전자적으로 분리 가능

       - 메시지 다이제스트는 변경되어서는 안됨

- 해시 함수는 다양한 길이의 메시지를 입력 받아, 일정한 고정 길이 값으로 출력함

  → 해시는 일방향(one-way) 수학 함수에 기반함

       - 해시 값을 만드는 것은 쉽지만, 해시 값으로 원래의 값을 찾는 것은 매우 어려움

       - 예) 11 mod 4 = 3

  → 출력값

       - 메시지 다이제스트(message digest)

       - 디지털 지문(digital fingerprint)

 

암호 해시함수(Cryptographic Hash Functions)

- 안전한 암호 해시함수

  → 서로 다른 두 개의 메시지가 같은 해시 값을 만들 확률이 매우 낮음

  → 메시지의 내용이 변경되면, 해시 값도 변경됨

- 암호 해시함수의 3가지 기준 요건

  → 프리이미지 저항성(preimage resistance)

       - 어떤 MD가 주어졌을 때 (메시지 내용은 모름), 같은 MD를 갖는 메시지를 만들 수 있음

  → 제2 프리이미지 저항성(second preimage resistance)

       - 어떤 메시지와 이것의 MD가 주어졌을 때, 같은 MD를 갖도록 메시지를 변조할 수 있음

  → 충돌 저항성(collision resistance)

       - 공격자는 하나의 MD에 대해 서로 다른 메시지를 선택할 수 있음

 

비둘기 집 원리(Pigeonhole Principle)

- 만약에 n+1 마리의 비둘기가 n 개의 비둘기 집에 들어가 있다면 적어도 한 비둘기 집에는 두 마리의 비둘기가 들어있다는 뜻

- 일반화된 비둘기 집 원리 버전

  → 만약 kn+1 마리의 비둘기가 n 개의 비둘기 집에 들어가 있다면

  → 적어도 한 개의 비둘기 집에는 k+1 마리의 비둘기가 들어가 있어야 함

- 예) 해시함수에 적용되는 비둘기 집 원리

  → 메시지 길이가 6 비트이고, MD 길이는 4 비트이면,

  → 가능한 메시지의 개수는 2^6=64개, MD (비둘기 집)의 총 개수는 2^4=16개

  → 따라서, n=16 이고 kㆍn+1=64 이므로, 3 < k < 4 임

  → 그러므로 하나의 MD는 적어도 k+1=4 개의 메시지와 대응함

 

생일 문제(Birthday Problems)

- 한 교실에 k명의 학생이 있을 때 (학생→메시지, 생일→MD)

  → 상황 #1 (메시지 다이제스트를 알고 있음)

       - 미리 지정한 특정 일자와 생일이 같은 학생이, 적어도 1 명 있을 확률이 50% 이상이 되려면 , k 의 최소값은 얼마인가? 253 명

  → 상황 #2 (메시지와 메시지 다이제스트를 알고 있음)

       - 미리 지정한 어떤 학생과 그 생일이 같은 학생이 적어도 1 명 있을 확률이 50% 이상이 되려면, k 의 최소값은 얼마인가? 254 명

  → 상황 #3 (MD 가 같은 두 개의 메시지 존재)

       - 임의의 한 학생이 , 적어도 1명의 학생과 생일이 같을 확률이 50% 이상이 되려면 , k 의 최소값은 얼마인가? 23 명

  → 상황 #4 (MD 가 같은 두 개의 메시지 존재 )

       - 임의의 한 학생이, 다른 교실의 k 명 중 적어도 1명의 학생과 생일이 같을 확률이 50% 이상 되려면 , k 의 최소값은 얼마인가? 16 명

 

암호 해시 동작(Cryptographic Hash Operation)

- 해시 동작의 수학적 표현: h=H(x)

  → 해시 함수 H는 입력 메시지 x를 받아, 고정 길이의 해시 값 h를 출력함

- 암호 해시 함수의 특성

  → 입력 메시지의 길이는 고정되어 있지 않음

  → 출력 해시 값의 길이는 고정되어 있음

  → 입력 메시지 x를 이용해서 H(x)를 계산하는 것은 상대적으로 쉬움

  → H(x)는 일방향 함수이며, 역으로 계산할 수 없음

  → H(x)는 충돌하지 않음

       - 서로 다른 입력 값은 서로 다른 해시 값을 출력함

- 해시 함수는 메시지의 무결성을 확인하는데 사용됨

  → 예) Alex에게 100$를 송금했을 때

       - 송신자는 송금 메시지를 해시함수에 입력하여 해시값 4ehiDx67NMop9를 얻음

       - 이 해시값을 메시지에 붙여서 수신자에게 송신함 (메시지와 해시값은 모두 평문)

       - 수신자는 메시지로부터 해시값을 분리하고, 메시지를 송신자가 사용한 것과 동일한 해시함수에 입력함

       - 그 결과값이 수신된 해시값과 같으면 메시지 변조가 없는 것이고, 그렇지 않다면 무결성을 신뢰할 수 없는 것임

- 송신자를 확인(출처 인증)할 수 있는가?

  → 해시 함수 자체에는 송신자에 대한 유일한 식별 정보가 사용되지 않음

       - 누구나 해시 함수를 이용해 해시 값을 만들 수 있음 →

       - 따라서, 해시 값을 만드는 과정은 중간자 공격(man-in-the-middle attack)에 취약함

 

출처 인증(Origin Authentication)

- 출처 인증과 무결성을 모두 보장하려면, 비밀키 해시 메시지 인증 코드(HMAC)를 사용함

  → Keyed-hash message authentication code(HMAC)

       - 비밀키(secret key)를 메시지 입력에 함께 사용함

       - SSL, IPsec, SSH에 사용됨

  → HMAC 값 생성하기

       - 메시지와 비밀키를 함께 해시함수에 입력해서 해시값(HMAC)을 구함

       - 이 값을 메시지에 붙여서 수신자에게 송신함

  → HMAC 값 확인하기

       - 수신자는 받은 메시지에서 해시값을 분리하고, 메시지를 비밀키와 함께 송신자가 사용한 것과 같은 해시 함수에 입력함

       - 계산된 해시값이 수신한 해시값과 같으면 메시지는 수정되지 않은 것임

       - 그리고, 비밀키를 갖고 있는 송신자가 보낸 것이므로 송신자도 인증됨

- HMAC은 메시지 인증에 사용됨

  → HMAC 값이 일치하면 상대방이 비밀키를 정당하게 갖고 있다고 생각할 수 있음

  → 송신자와 수신자만 비밀키를 알고 있어야 함

  → 비밀키는 안전하게 사전에 공유되어야 함

 

잘 알려진 해시함수

- MD (Message Digest)

  → MD4

       - Rivest가 1990년에 만든 일방향 해시 함수

       - 128비트의 해시 값

       - Dobbertin에 의해 충돌 발견 방법이 고안

       - 현재는 안전하지 않음

  → MD5

       - Rivest가 1991년에 만든 일방향 해시 함수

       - 128비트의 해시 값

       - 2005년, MD5 해시에 대한 충돌 방법 발견 (중국)

       - 사용을 권장하지 않음

  → RIPEMD-160

       - 1996년, Hans Dobbertin, Antoon Bosselaers, Bart Preneel 제작

       - 160비트의 해시 값

       - 비트코인에서 사용

       - RIPEMD-128, RIPEMD-256, RIPEMD-320

- SHA (Secure Hash Algorithm)

  → SHA-1

       - 1995년, NIST 제작

       - 160비트의 해시 값, 메시지 길이 상한 264비트 미만

       - 2005년 취약점 발견

  → SHA-2

       - 2002년, NIST 제작

       - SHA-256: 256 비트 출력, 메시지의 길이 264 비트 미만

       - SHA-384: 384 비트 출력, 메시지의 길이 2128 비트 미만

       - SHA-512: 512 비트 출력, 메시지의 길이 2128 비트 미만

  → SHA-3

       - SHA-1의 강한 충돌 내성 침해(2005년)

       - 2007년, NIST 차세대 일방향 해시함수 선정 개시, 2012년 선정 완료

          → KECCAK(케챡)을 표준으로 선정

       - 4가지 해시함수 : SHA3-224/256/384/512 (출력)

       - 특징

          → SHA-2와 전혀 다른 구조: 스펀지 구조

          → 구성이 투명하여 구조를 해석하기 쉬움: 듀플렉스 구조

          → 다양한 디바이스에서 구동되고, 조합 형태로도 양호

          → 하드웨어 상에 내장 시 높은 고성능

 

해시함수의 한계

- 해시함수는 「조작 또는 변경」을 검출할 수 있지만, 「거짓 행세」는 검출 못함

  → 그래서 인증(authentication)과 부인방지(non-repudiation) 기술이 필요함

       - 인증: 메시지가 올바른 송신자로부터 온 것임을 확인하는 것

       - 부인방지: 이 파일이 정말로 앨리스가 작성한 것인지를 확인하는 것

- 메시지 인증 코드로 해결 할 수 없는 문제

  → 제3자에게 증명하기

       - 앨리스로부터 메시지를 받은 밥이 「이 메시지는 앨리스가 보낸 것이다」라는 것을 제 3자인 빅터에게 증명할 수 있을까?

          → 빅터가 검증을 하기 위해서는 밥이 갖고 있는 키를 빅터에게 알려줘야 함

          → 그런데 그 키는 앨리스와 밥 모두가 동일한 키를 가지고 있으므로 둘 중 누가 작성했는지 말할 수 없음

  → 부인 방지

       - 밥이 MAC 값이 포함된 메시지를 받음으로써, 이 메시지의 출처가 앨리스임을 확신할 수 있음

       - 하지만 앨리스가 전송 자체를 부정할 경우 제3자에게 이 사실을 증명 할 수 있을까?

          → 메시지 인증 코드로는 부인 방지(nonrepudiation) 불가

- 공개키 암호기술을 이용하는 디지털 서명 필요

  → Digital Signature (DS): 해시함수와 공개키 암호기술을 이용

 

3. 기밀성 (Confidentiality)

 

데이터 기밀성(Data Confidentiality)

- 데이터 기밀성(Data Confidentiality)

  → 인가 받은(authorized) 사용자만 메시지를 읽을 수 있음

- 데이터 기밀성을 제공하는 데 사용되는 암호화는 키를 사용하는 방식에 따라 구분

  → 대칭키 암호기술

       - 각 통신 당사자가 미리 공유한 키를 사용하여 암호화/복호화를 할 수 있음

       - 스트림 암호, 블록 암호

       - 예) DES, 3DES, AES, SEED, HIGHT, ARIA, LEA

  → 비대칭키 암호기술

       - 각 통신 당사자의 공개키/개인키를 사용하여 키를 미리 공유하지 않고 암호화/복호화를 할 수 있음

       - 예) RSA, Rabin, ElGamal, ECC

- 대칭키 암호기술과 비대칭키 암호기술 비교

 

대칭키 암호화(Symmetric Encryption)

- 대칭키 암호기술은 동일한 사전 공유 키(비밀 키)를 사용하여 데이터를 암호화/복호화함

- 대칭키 암호기술은 비대칭 암호기술보다 CPU 리소스를 덜 사용하기 때문에 VPN 트래픽에 일반적으로 사용됨

- 안전성은 키의 길이가 길수록 안전해짐

  → 대부분의 암호화 키는 112비트에서 256비트 사이에서 선택함

  → 대칭키 암호기술은 스트림 암호 또는 블록 암호로 분류됨

- 대칭키 암호의 용도

  → 공개 채널로 전달되는 메시지에 대한 기밀성 보장

  → 기억 장치에 저장되는 데이터에 대한 기밀성 보장

  → 개체 인증을 위해 사용

       - 엘리스와 밥은 비밀키 Kab를 공유

       - 밥은 랜덤수 Nb를 생성해서 엘리스에게 전달

          → Nb는 이번 세션을 위해 처음 사용된 값이므로 이 메시지의 최신성(Freshness)을 검증 할 수 있음

          → 랜덤수를 Nonce (Number used just ONCE)라고 함

       - 엘리스는 Kab로 Nb를 암호화해서 밥에게 전달

          → Kab는 엘리스와 밥만 알고 있으므로 밥은 엘리스가 회신하였다는 것을 확신 할 수 있음 ▪

  → 메시지 무결성 검증을 위해 사용

       - Message Authentication Code (MAC): CBC (Cipher Block Chaining)

- 스트림 암호

  → 스트림 암호는 일반 텍스트를 한 번에 1바이트 또는 1비트씩 암호화함

        - 스트림 암호는 기본적으로 블록 크기가 1바이트 또는 비트인 블록 암호임

  → 스트림 암호는 데이터가 지속적으로 암호화되기 때문에 일반적으로 블록 암호보다 빠름

       - 예) GSM 휴대폰 통신을 암호화하는 데 사용되는 RC4 및 A5가 있음

 

- 블록 암호

  → 블록 암호는 고정 길이의 일반 텍스트 블록을 64비트 또는 128비트의 암호 텍스트 블록으로 변환함

  → 일반적인 블록 암호에는 64비트 블록 크기의 DES와 128비트 블록 크기의 AES가 있음

 

비대칭키 암호화(Asymmetric Encryption)

- 공개 키 알고리즘이라고도 하며, 암호화 키와 복호화 키가 서로 다르게 설계되어 있음

- 비대칭 알고리즘은 공개 키와 개인 키를 사용함

- 두 키 모두 암호화 프로세스를 수행할 수 있지만 복호화에는 쌍을 이루는 키가 필요함

   → 예) 공개 키로 암호화된 데이터를 해독하려면 개인 키가 필요함

- 비대칭 알고리즘은 기밀성과 인증을 제공함

- 비대칭 암호화는 512비트에서 4,096비트 사이의 키 길이를 사용할 수 있음

  → 비대칭 알고리즘은 대칭 알고리즘보다 훨씬 느림

 

- 비대칭 알고리즘은 키를 미리 공유하지 않고 기밀성을 제공하는 데 사용될 수 있늠

  → 하지만, 속도 때문에 일반적으로 짧은 메시지(예, 비밀 키) 암호화에 사용함

- 비대칭 알고리즘으로 기밀성 보장

  → 공개 키(암호화) + 개인 키(암호 해독) = 기밀성

       - 공개 키를 사용하여 데이터를 암호화할 때는 반드시 개인 키를 사용하여 데이터를 복호화함

       - 오직 한 호스트만 개인키를 가지고 있으므로 기밀성이 유지됨

앨리스는 밥의 공개 키를 획득하고 이를 사용하여 메시지를 암호화 한 다음 밥에게 보낸다. 밥은 개인 키로 메시지를 해독하고 개인 키를 가진 유일한 사람이므로 기밀성이 확보된다.

 

- 비대칭 알고리즘으로 인증, 부인방지

  → 개인 키(암호화) + 공개 키(암호 해독) = 인증, 부인방지

       - 한 호스트만 개인 키를 가지고 있기 때문에 해당 호스트만이 메시지를 암호화하여 발신자를 인증할 수 있음

       - 호스트가 공개 키를 사용하여 메시지를 성공적으로 해독하면 개인 키가 메시지를 암호화한 것으로 신뢰 되어 발신자가 누구인지 알 수 있으므로, 부인방지 할 수 있음

앨리스가 개인 키 사용: 앨리스가 개인 키를 사용하여 메시지를 암호화하여 밥에게 보낸다. 밥이 공개 키 사용: 밥은 앨리스의 공개 키를 얻은 후 이를 사용하여 메시지를 해독하고 앨리스로부터 메시지를 수신했음을 인증하고, 앨리스가 송신한 것을 부인할 수 없다.

 

- 비대칭 알고리즘으로 무결성 보장

  → 두 가지 비대칭 암호화 프로세스를 결합하면 메시지 기밀성, 인증 및 무결성을 제공함

  → 예) 밥의 공개 키로 메시지를 암호화하고, 앨리스의 개인 키로 암호화된 해시를 암호화함

1. 앨리스가 밥의 공개키로 메시지를 암호화 → 기밀성

2. 앨리스가 자신의 개인키로 해시값을 암호화 → 인증

3. 밥은 앨리스의 공개키로 해시값을 복호화 → 무결성

4. 밥은 자신의 개인키로 메시지를 복호화 → 기밀성

 

4. 공개키 암호기술 (Public Key Cryptography)

 

키 배송 문제 (Key Distribution Problem)

- 키 배송 문제

  → 대칭 암호를 사용하려면 송신자와 수신자가 대칭키를 사전에 공유해야 함

  → 공유해야 할 곳이 많아지면 관리해야 할 키 수 증가

       - 예시) 1000명의 사원들이 서로 비밀 통신을 하려면, 키는?

          → 1인당 999개의 키가 필요

          → 회사 전체에서 필요한 키의 수 1000 x 999 / 2 = 499,500

  → 대칭 키를 보내지 않으면 수신자는 복호화 할 수 없음

  → 안전하게 키를 보내는 방법은?

- 해결 방법

  → 키의 사전 공유에 의한 해결

  → 키 배포 센터에 의한 해결

  → Diffie-Hellman 키 교환

  → 공개 키 암호에 의한 해결

 

디피-헬만(Diffie-Hellman) 키 교환 알고리즘

- DH는 두 대의 컴퓨터가 동일한 공유 키를 생성할 수 있는 비대칭 수학적 알고리즘임

  → 암호 통신을 하는 두 사람은 먼저 “특정 정보”를 서로 교환

       - 공개되어도 무방

  → 두 사람은 교환한 정보를 가지고 각자 “동일한 키”를 생성

       - 도청자는 공개된 특정 정보만으로 동일한 키 생성이 어려움

       - 새 공유 키는 발신자와 수신자 간에 실제로 교환되지 않음

          → 이 키는 암호화 알고리즘에 의해 두 시스템 간의 트래픽을 암호화에 사용

          → 예) IPsec VPN을 사용하여 데이터를 교환하는 경우, SSH 데이터 교환

  → DH의 안전성은 이산대수 (discrete log) 문제 기반

       - 𝑦 = 𝑔 𝑥 𝑚𝑜𝑑 𝑝가 있을 때,

         → 𝑔, 𝑥, 𝑝가 주어진다면, 𝑦를 계산하는 것은 쉬움

         → 𝑦, 𝑔, 𝑝가 주어진다면, 𝑥를 계산하는 것은 매우 어려움

  → DH 알고리즘의 비유

       - 공통 색상, 약속 색상: 공개키

       - 비밀 색상: 개인키

       - 공개키 + 개인키 → 비밀키

 

디지털 서명(Digital Signatures)

- 디지털 서명은 인증, 무결성, 부인 방지 기능을 제공하는 데 사용되는 수학적 기법임

- 디지털 서명은 비대칭 암호기술과 해시함수를 사용함

- 디지털 서명은 일반적으로 다음 두 가지 상황에서 사용됨

  → 코드 서명(Code singing)

       - 코드 서명은 공급업체 웹사이트에서 다운로드한 실행 파일의 무결성을 확인하는 데 사용됨

       - 서명된 디지털 인증서를 사용하여 파일의 소스인 사이트의 신원을 인증하고 확인함

  → 디지털 인증서(Digital certificates)

       - 공급업체 웹사이트와 시스템의 신원을 인증하고 기밀 데이터를 교환하기 위한 암호화된 연결을 설정하는 데 사용됨

       - 예) 디지털 서명 알고리즘(DSA) 리베스트-샤미르 아델만 알고리즘(RSA) 타원 곡선 디지털 서명 알고리즘(ECDSA)

 

디지털 서명(Digital Signatures) – 코드 서명

- 디지털 서명은 주로 소프트웨어 코드의 진위 여부와 무결성을 보장하는 데 사용됨

  → 메시지를 디지털 서명한 디지털 봉투로 포장함

       - 예) 메시지의 해시 값을 개인키로 암호화하고, 메시지와 함께 비밀키로 암호화

  → 최종 사용자가 소프트웨어를 설치하기 전에 서명을 확인할 수 있음

-  디지털 서명 코드는 코드에 대한 몇 가지 보증을 제공함

  → 코드가 진본이며 실제로 게시자가 제공한 것임

       - 게시자의 디지털 서명 확인 → 인증

  → 소프트웨어 게시 후 코드가 수정되지 않았음

       - 게시자의 디지털 서명 확인 → 무결성

  → 게시자가 명백하게 코드를 게시했다. 즉, 게시 행위를 부인하지 않음

       - 게시자의 디지털 서명 → 부인방지

- 디지털 서명의 목적은 소프트웨어가 변조되지 않았으며, 원본을 신뢰할 수 있는 출처에서 비롯되었음을 보장하기 위한 것임 (인증, 무결성, 부인방지)

 

디지털 서명(Digital Signatures) – 디지털 인증서

- 디지털 인증서를 사용하면 사용자, 호스트 및 조직이 인터넷을 통해 안전하게 정보를 교환 할 수 있음

  → 디지털 인증서는 실제 인증서와 유사함

       - 디지털 인증서는 독립적으로 신원을 확인함

       - 인증서는 신원을 확인하고 서명은 신원으로부터 오는 정보를 확인함

  → 디지털 인증서는 메시지를 보내는 사용자가 본인이 맞는지 인증하고 확인하는 데 사용됨

       - 송신자의 디지털 서명으로 확인

  → 디지털 인증서는 수신자에게 회신을 암호화하는 수단으로 기밀성을 제공하는 데에도 사용할 수 있음

       - 수신자의 공개키를 신뢰

       - 수신자의 공개키로 암호화하여, 수신자만 개인키로 복호화

- 디지털 인증서 시나리오 예시

  → 밥은 앨리스가 밥의 웹사이트에서 주문한 주문을 확인한다.

  → 밥이 주문을 확인하면 밥의 컴퓨터가 확인 해시를 생성한다.

       - ① 컴퓨터는 밥의 개인 키로 해시를 암호화한다.

       - ② 디지털 서명인 암호화된 해시가 문서에 추가된다.

       - ③ 주문 확인서가 인터넷을 통해 앨리스에게 전송된다.

  → 앨리스가 디지털 서명을 받으면 다음 프로세스가 진행된다.

       - ① 앨리스의 수신자는 디지털 서명이 포함된 주문 확인을 수락하고 밥의 공개 키를 얻는다.

       - ② 앨리스의 컴퓨터는 밥의 공개 키를 사용하여 서명을 복호화하여 보내는 장치의 추정 해시값을 확인한다.

       - ③ 앨리스의 컴퓨터는 서명이 없는 수신된 문서의 해시를 생성하고 이 해시를 복호화된 해시와 비교한다.

          → 해시가 일치하면 문서가 진본이다. 즉, 밥이 보낸 확인서는 서명 이후 변경되지 않았음을 의미한다.

 

 

공개키의 관리

- 두 호스트 간에 비대칭 연결을 설정할 때 호스트는 공개 키 정보를 교환함

  → 인터넷상의 신뢰할 수 있는 제3자가 디지털 인증서를 사용하여 이러한 공개 키의 진위 여부를 보장함

  → 제3자는 위조하기 어려운 자격 증명을 발급함

       - 자신의 개인키로 디지털 서명

  → 제3자를 신뢰하는 모든 개인은 제3자가 발급하는 자격 증명을 수락할 수 있음

       - 제3자의 공개키로 확인

- 공개 키 기반체계 (PKI)

  → 디지털 인증서를 생성, 관리, 배포, 사용, 저장 및 해지하는 데 사용되는 사양, 시스템 및 도구로 구성됨

  → PKI는 공개 암호화 키의 대규모 배포 및 식별을 지원하는 데 필요함

  → PKI 프레임워크는 확장성이 뛰어난 신뢰 관계를 촉진함

  → 예) 운전면허증과 디지털 인증서 역할 비교

       - 앨리스는 운전면허증을 신청한다.

       - 앨리스는 신분을 확인 받고 운전면허증을 받는다.

       - 앨리스는 현금 지급을 위해 은행을 방문한다.

       - 은행은 앨리스의 운전면허증으로 앨리스의 신분을 확인한다.

       - 디지털 인증서는 사이버공간에서 신분증과 같은 역할을 한다.

 

공개키 기반체계(PKI)

- PKI의 주요 요소

  → 디지털 인증서를 생성, 관리, 저장, 배포 및 해지하는 데 필요한 하드웨어, 소프트웨어, 사람, 정책 및 절차로 구성됨

- ① PKI 인증서: 소유주의 공개키와 공개키의 유효성을 인증하는 정보를 담고 있다. (유효기간, 사용된 암호 알고리즘 등)

- ② 인증서 보관: 인증서는 개인키와 함께 개인 컴퓨터 또는 별도의 저장매체에 보관된다.

- ③ 인증 기관(CA): PKI 인증서를 발행하는 신뢰할 수 있는 제3의 기관이다. 인증서를 자신의 개인키로 디지털 서명한다.

- ④ 인증서 DB: CA가 승인한 모든 인증서들이 보관되어 있다.

- PKI의 운용 예시

→ PKI는 다음과 같이 구성요소간 상호작용을 가짐

     - ① PKI 인증서 발급: 밥은 CA로부터 인증서를 발급받는다. CA는 밥을 인증하고, 밥의 인증서를 보관한다.

     - ② PKI 인증서 교환: 밥은 자신의 PKI 인증서를 사용해서 앨리스와 통신한다.

     - ③ PKI 인증서 확인: 앨리스는 CA의 공개키를 사용해서 밥의 PKI 인증서를 확인한다.

  → 모든 PKI 인증서를 CA에서 직접 받는 것은 아니다.

       - RA(등록 기관)는 하위 CA이며 특정 용도에 대한 인증서를 발급하기 위해 Root CA의 인증을 받는다.

 

공개키 기반체계(PKI) 클래스 구분

- 많은 공급업체가 CA 서버를 관리형 서비스 또는 최종 사용자 제품으로 제공함

  → Microsoft Server 또는 Open SSL을 사용하여 비공개 PKI를 구현할 수도 있음

- CA는 인증서의 신뢰도를 결정하는 클래스를 기반으로 인증서를 발급함

  → 클래스 번호는 인증서를 발급할 때 소유자의 신원 확인 절차에 따라 결정됨

  → 클래스 구분

Class Description
0 테스트 용으로 사용
1 이메일 확인을 위한 개인용으로 사용
2 신원 증명이 필요한 조직용으로 사용
3 서버 및 소프트웨어 서명용으로 사용
4 기업 간 온라인 거래용으로 사용
5 개인 조직 또는 정부 조직의 보안용으로 사용

       - 클래스 번호가 높을수록 인증서를 더 신뢰할 수 있음

 

공개키 기반체계(PKI) 신뢰 시스템

- PKI는 신뢰 관계에 따라 다양한 신뢰 토폴로지를 형성할 수 있음

  → 단일 루트 PKI 토폴로지(Single-Root PKI Topology)

       - 가장 간단한 신뢰 토폴로지이다.

       - 루트 CA는 동일한 조직 내의 최종 사용자에게 모든 인증서를 발급한다.

       - 더 큰 네트워크에서는 두 개의 기본 아키텍처를 사용하여 PKI CA를 연결할 수 있다.

  → 상호 인증된 CA 토폴로지(Cross-certified CA Topology)

       - 개별 CA가 CA 인증서를 교차 인증하여 다른 CA와 신뢰 관계를 설정한다.

  → 계층적 CA 토폴로지(Hierarchical CA Topology)

       - 루트 CA(최상위 CA)는 최종 사용자 및 하위 CA에 인증서를 발급할 수 있다.

 

공개키 기반체계(PKI) 상호운용성 

- IETF X.509 프레임워크

  → 많은 CA 공급업체가 제공하는 PKI 및 지원 서비스 간 상호운용성 보장이 필요함

  → IETF는 X.509 공개 키 인프라 인증서 정책 및 인증 관행 프레임워크(RFC 2527)를 발표함

       - Public Key Infrastructure Certificate Policy and Certification Practices Framework

       - X.509 v3 표준은 디지털 인증서의 형식을 정의함

  → X.509v3 응용체계 예시

       - SSL, TLS

          → 웹 사이트 인증, HTTPS 구현에 사용된다.

       - IPsec

          → IPsec VPN의 공개키 분배에 사용된다.

       - S/MIME

          → 메일 내용의 암호화에 사용된다.

       - EAP-TLS

          → 장치의 LAN 포트 접속을 통제하는 801.1X 프레임워크 인증에 사용된다.

 

5. 암호기술의 활용

 

암호기술의 활용

- 다음은 암호기술의 일반적인 용도

  → SSL/TLS 인증서 기반 피어 인증

  → IPsec VPN을 사용한 네트워크 트래픽 보안

  → HTTPS 웹 트래픽

  → 802.1x 인증을 사용하여 네트워크에 대한 액세스 제어

  → S/MIME 프로토콜을 사용한 이메일 보안

  → 인스턴트 메시징 보안

  → 코드 서명을 사용하여 애플리케이션 승인 및 권한 부여

  → 암호화 파일 시스템(EFS)으로 사용자 데이터 보호

  → 스마트 카드로 2단계 인증 구현

  → USB 저장 장치 보안

 

SSL/TLS

- 통신 내용을 암호화해 주는 프로토콜

  → SSL: Secure Socket Layer, TLS: Transport Layer Security

  → 프로토콜의 이중 구조

       - 예) SSL/TLS 상에 HTTP를 올린 후 HTTP의 통신 암호화 (https://)

       - SMTP(Simple Mail Transfer Protocol): 메일 전송

       - POP3(Post Office Protocol): 메일 수신

 

- SSL (Secure Socket Layer)

  → 1994년 Netscape사가 제작 

       - 웹 브라우저 Netscape Navigator에 내장

  → 1995년, SSL 3.0

- TLS (Transport Layer Security)

  → 1999년, TLS 1.0 (RFC 2246)

       - SSL 3.0을 기초로 해서 IETF가 만든 프로토콜

  → 2006년, TLS 1.1 (REC 4346)

       - 대칭암호 알고리즘으로서 AES 추가

  → 2008, TLS 1.2 (RFC 5246)

       - Heartbleed (CVE-2014-0160), POODLE (CVE-2014-8730)

  → 2018, TLS 1.3 (RFC 8446)

       - 핸드세이크 개선, Cipher Suite 개선, 타원곡선 알고리즘을 기본으로 지원

       - DH를 키 교환 방식으로 사용 (RSA 미사용)

 

TLS 1.2와 TLS 1.3 비교

- TLS 발전

  → TLS 1.0 RFC 2246 (1999.1 – 2018.6)

  → TLS 1.1 RFC 4346 (2006.4 – 2018.6)

  → TLS 1.2 RFC 5246 (2008.8 – 미정)

  → TLS 1.3 RFC 8846 (2018.3)

- TLS 1.3의 개선 사항

  → 핸드셰이크에 ‘0-RTT’ 모드 추가

  → 정적인 묶음 방식의 암호화 스위트(Cipher Suite) 개선

  → 핸드셰이크를 가능한 최대한 암호화

  → 타원 곡선 알고리즘을 기본으로 지원

  → 교환과 암호화 방식을 묶음 방식이 아니라, 개별적으로 결정

 

TLS Cipher Suite

- TLS 1.2의 Cipher Suite 방식

  → 키 교환, HMAC 알고리즘, 암호화 알고리즘 등 새로운 조합법이 나올 때마다 업데이트 필요

- TLS 1.3의 Cipher Suite 방식

  → 암호화 스위트의 각 부분을 나눠서 각각 합의

       - 암호화 알고리즘

       - 키 교환 방법 (ECDHE, DH만 지원)

       - 인증서 서명 알고리즘

 

암호화 및 보안 모니터링

- 암호화된 네트워크 트랜잭션

  → 공격자는 SSL/TLS를 사용하여 암호화된 네트워크 트랜잭션을 악용할 수 있다.

       - 예) 네트워크에 규정 준수 위반, 바이러스, 멀웨어, 데이터 손실 및 침입 시도

- 보안 경고와 관련된 PKI 관련 문제는 다음과 같다.

  → 유효 날짜 범위

       - X.509v3 인증서는 "이전" 및 "이후" 날짜를 지정한다.

       - 현재 날짜가 이 범위를 벗어나면 웹 브라우저에 메시지가 표시된다. 

  → 서명 유효성 검사 오류

       - 브라우저에서 인증서의 서명을 유효성 검사할 수 없는 경우, 인증서의 공개 키가 진짜인지 확인할 수 없다. 

  → SSL/TLS 관련 문제는 웹 서버의 인증서 유효성 검사와 관련이 있다.

       - 이러한 문제가 발생하면 웹 브라우저에 보안 경고가 표시된다.

- 암호화는 역동적이고 항상 변화한다.

  → 보안 분석가는 암호화 알고리즘과 작동을 잘 이해하고 있어야 한다.

- 암호화가 보안 조사에 미치는 영향

  → 첫째, 공격은 암호화 알고리즘 자체를 구체적으로 표적으로 삼을 수 있다.

       - 알고리즘이 크랙되고 공격자가 키를 획득한 후에는 캡처한 모든 암호화된 데이터를 공격자가 해독하여 읽을 수 있으므로 개인 데이터가 노출될 수 있다.

  → 둘째, 데이터를 암호화하여 눈에 잘 띄지 않게 숨길 수 있기 때문에 보안 조사에도 영향을 미친다.

       - 패킷이 암호화되면 네트워크 모니터링이 더욱 어려워진다.

          → 예) HTTPS는 TLS/SSL을 통해 종단간 암호화된 HTTP 트래픽을 도입하므로, 트래픽 모니터링이 쉽지 않다.

- 보안 분석가는 이러한 문제를 우회하고 해결하는 방법을 알고 있어야 한다.

  → SSL 트래픽과 비 SSL 트래픽, HTTPS 트래픽과 비-HTTPS SSL 트래픽을 구분하는 규칙을 구성한다.

  → SSL 트래픽을 복호화하여 IPS 어플라이언스로 전송하여 일반적으로 SSL에 숨겨져 있는 위험을 식별한다.

 

하이브리드 암호기술 

- 대칭키 암호기술 → 데이터 암호화

- 비대칭키 암호기술 → 비밀키 암호화

'화이트햇 스쿨 2기 > 이론교육' 카테고리의 다른 글

공통 - 정보보안 윤리  (5) 2024.09.18
공통 - 네트워크 기초  (1) 2024.09.18
공통 - 운영체제 기초  (15) 2024.09.17
공통 - 컴퓨터 구조 I  (1) 2024.08.04
공통 - 프로그래밍 기초(C)  (0) 2024.08.04