IT Knowledge/Security/images/22-암호학-기초-diagram.svg

암호학 기초 (Cryptography Basics)

암호화의 기본 원리와 알고리즘을 이해합니다.

📌 학습 목표

  • 대칭키/비대칭키 암호화 이해
  • 해시 함수와 디지털 서명 이해
  • SSL/TLS 작동 원리 이해
  • PKI (Public Key Infrastructure) 이해

1. 암호학 기본 개념

용어 정의

용어설명예시
평문 (Plaintext)암호화되지 않은 원본 데이터”Hello World”
암호문 (Ciphertext)암호화된 데이터”U2FsdGVkX1…”
암호화 (Encryption)평문 → 암호문 변환
복호화 (Decryption)암호문 → 평문 변환
키 (Key)암호화/복호화에 사용되는 비밀 정보
알고리즘암호화 수학적 함수AES, RSA

암호화 목적

  1. 기밀성: 권한 없는 자는 읽을 수 없음
  2. 무결성: 데이터 위변조 탐지
  3. 인증: 발신자 식별
  4. 부인 방지: 발신자가 거부 불가

2. 대칭키 암호화

정의

암호화와 복호화에 동일한 키를 사용하는 방식입니다.

특징

  • 속도: 빠름 (대량 데이터 암호화에 적합)
  • 키 분배: 어려움 (보안 취약점)
  • 알고리즘: AES, DES, 3DES, Blowfish

대칭키 알고리즘

AES (Advanced Encryption Standard)

  • 키 길이: 128, 192, 256비트
  • 블록 크기: 128비트
  • 사용: WiFi (WPA2), SSL/TLS, 디스크 암호화
graph LR
    A[평문] --> B[AES 암호화]
    B -->|키| C[암호문]
    C --> D[AES 복호화]
    D -->|동일 키| E[평문]

대칭키 암호화 예제

평문: Hello World
키: MySecretKey123

암호화 → 암호문: U2FsdGVkX1+...

복호화 → 평문: Hello World

3. 비대칭키 암호화

정의

암호화와 복호화에 서로 다른 키 쌍을 사용하는 방식입니다.

키 쌍 구조

  • 공개키 (Public Key): 모두에게 공개, 암호화용
  • 비밀키 (Private Key): 소유자만 보유, 복호화/서명용

특징

  • 속도: 느림 (소량 데이터 암호화)
  • 키 분배: 쉬움 (공개키 공개)
  • 안전성: 비밀키만 보호하면 됨
  • 알고리즘: RSA, ECC, DSA

RSA (Rivest-Shamir-Adleman)

  • 기반: 소인수 분해의 어려움
  • 키 길이: 1024, 2048, 4096비트
  • 사용: SSL/TLS, 디지털 서명, 이메일 암호화

비대칭키 암호화 예제

Alice의 공개키: Alice-Public
Alice의 비밀키: Alice-Private

Bob이 Alice에게 메시지 보내기:
1. Bob: 평문 + Alice-Public → 암호화
2. Bob: 암호문 → Alice

Alice 수신:
3. Alice: 암호문 + Alice-Private → 복호화 → 평문

4. 하이브리드 암호화

정의

대칭키와 비대칭키를 결합한 방식입니다.

작동 원리

  1. 비대칭키: 세션 키 생성 및 교환
  2. 대칭키: 데이터 암호화 (세션 키 사용)

장점

  • 대칭키의 속도
  • 비대칭키의 안전한 키 교환
graph TD
    A[Bob] -->|세션 키 생성| B[비대칭키로 세션 키 암호화]
    B -->|암호화된 세션 키| C[Alice]
    C -->|비밀키로 세션 키 복호화| D[세션 키 획득]
    A -->|대칭키로 데이터 암호화| E[암호문 전송]
    E -->|세션 키로 복호화| C

예시: SSL/TLS

1. 클라이언트 → 서버: Hello (지원하는 암호 알고리즘)
2. 서버 → 클라이언트: Hello + 인증서 (공개키 포함)
3. 클라이언트: 인증서 검증
4. 클라이언트: 세션 키 생성 + 서버 공개키로 암호화
5. 클라이언트 → 서버: 암호화된 세션 키
6. 서버: 비밀키로 세션 키 복호화
7. 이후 통신: 대칭키 (세션 키)로 암호화

5. 해시 함수

정의

고정 길이 해시 값으로 데이터를 변환하는 단방향 함수입니다.

특징

  • 단방향: 해시 → 원본 불가
  • 고정 길이: 데이터 크기 상관없이 고정 길이
  • 결정론적: 동일 입력 → 동일 출력
  • 충돌 어려움: 서로 다른 입력 → 다른 출력

해시 알고리즘

알고리즘출력 길이상태
MD5128비트취약 (충돌 발견)
SHA-1160비트취약 (충돌 발견)
SHA-256256비트안전 (추천)
SHA-512512비트안전

해시 예제

평문: Hello World

MD5:    e59ff979410e944e21a3c... (취약)
SHA-256: a591a6d40bf420404a011733cfb7... (안전)

평문: hello world (소문자 변경)
SHA-256: b94d27b9934d3e08a52e52d7da... (완전히 다름)

해시 사용 용도

  1. 비밀번호 저장: 평문 비밀번호 + 솔트 → 해시 저장
  2. 무결성 검증: 파일 해시 비교
  3. 디지털 지문: 데이터 유일성 식별

솔트 (Salt)

  • 정의: 해시 계산 시 추가되는 랜덤 값
  • 목적: 레인보우 테이블 공격 방지
  • 방식: 비밀번호 + 솔트 → 해시
비밀번호: password123
솔트: randomString456

해시 = SHA256(password123 + randomString456)

6. 디지털 서명

정의

메시지의 출처무결성을 보장하는 방식입니다.

디지털 서명 생성

1. 원본 메시지의 해시 생성
2. 발신자의 비밀키로 해시 암호화 → 디지털 서명
3. 메시지 + 디지털 서명 전송

디지털 서명 검증

1. 수신 메시지의 해시 생성
2. 발신자의 공개키로 디지털 서명 복호화 → 원본 해시
3. 두 해시 비교 → 일치하면 무결성 확인
graph TD
    A[Alice] -->|서명| B[해시 생성]
    B -->|비밀키로 암호화| C[디지털 서명]
    C --> D[메시지 + 서명 전송]
    D --> E[Bob]
    E -->|검증| F[수신 메시지 해시 생성]
    E -->|공개키로 복호화| G[디지털 서명 복호화]
    F --> H[해시 비교]
    G --> H
    H -->|일치| I[무결성 확인]
    H -->|불일치| J[위변조 탐지]

7. PKI (Public Key Infrastructure)

정의

공개키 기반 암호화 시스템을 운영하는 인프라입니다.

구성 요소

  1. CA (Certificate Authority): 인증서 발급/관리 기관
  2. 인증서 (Certificate): 공개키 소유자 신원 증명
  3. CRL (Certificate Revocation List): 폐지된 인증서 목록
  4. RA (Registration Authority): 인증서 요청 검증

인증서 구조

인증서:
- 버전
- 시리얼 번호
- 발급자 (Issuer)
- 유효 기간
- 주체 (Subject): 공개키 소유자
- 공개키
- 발급자 서명

인증서 예시 (웹 브라우저)

https://www.google.com/

인증서 정보:
- 발급자: GTS CA 1O1
- 주체: *.google.com
- 유효 기간: 2024-01-01 ~ 2025-01-01
- 공개키: RSA 2048비트
- 서명: 발급자의 비밀키로 서명

SSL/TLS 인증서 종류

종류인증 수준비용사용
DV도메인 소유만저렴개인 블로그
OV도메인 + 조직중간기업
EV도메인 + 조직 + 엄격 검증비쌈은행, 금융

8. 공격 유형

브루트 포스 (Brute Force)

  • 방식: 모든 가능한 키 시도
  • 방어: 비밀번호 복잡도, 계정 잠금

딕셔너리 공격 (Dictionary Attack)

  • 방식: 일반적인 비밀번호 사전 사용
  • 방어: 솔트, 키 스트레칭

레인보우 테이블 (Rainbow Table)

  • 방식: 미리 계산된 해시 테이블 사용
  • 방어: 솔트 사용

중간자 공격 (MITM)

  • 방식: 통신 가로채기
  • 방어: SSL/TLS, 인증서 검증

🎯 실습 과제

  1. 대칭키 암호화

    # OpenSSL로 AES 암호화
    openssl enc -aes-256-cbc -in secret.txt -out secret.enc -k MyPassword
     
    # 복호화
    openssl enc -aes-256-cbc -d -in secret.enc -out secret.txt -k MyPassword
  2. 해시 생성

    # SHA-256 해시
    sha256sum file.txt
     
    # MD5 해시 (권장하지 않음)
    md5sum file.txt
  3. 인증서 확인

    # 웹사이트 인증서 정보
    openssl s_client -connect google.com:443 -servername google.com

✅ 학습 체크리스트

  • 대칭키/비대칭키 차이점 이해
  • 하이브리드 암호화 원리 이해
  • 해시 함수 특징 이해
  • 디지털 서명 생성/검증 이해
  • PKI 구성 요소 이해
  • SSL/TLS 작동 원리 이해
  • 암호화 공격 유형 식별

🔗 관련 노트

📚 참고 자료


다음 학습: 네트워크 공격 유형