콘텐츠로 바로가기

Security Foundations & Cryptography

정보 보호의 3대 요소인 CIA와 데이터의 기밀성, 무결성을 보장하는 암호학적 알고리즘 및 수학적 토대를 다루는 학습 노드입니다.

Article
M

Me

hyunyoun's Blog

security-cryptographysecuritycryptographysecurity-foundationslearningsecurity-foundationcia-triaddefense-in-depth8 min read

1. Overview

보안 기초 및 암호학(Security Foundations & Cryptography, SFC)은 정보 통신의 세계에서 '나쁜 놈(Attacker)'으로부터 자산을 보호하기 위해, 수학과 물리를 무기로 삼아 데이터에 보이지 않는 방어막을 치는 가장 근본적인 학문을 다룹니다.

인터넷은 태생적으로 모든 데이터가 훤히 들여다보이는 투명한 유리관과 같습니다. 학습자는 정보 보안의 절대 목표인 CIA(기밀성, 무결성, 가용성) 트라이앵글을 이해하고, 이를 달성하기 위한 고대 암호부터 현대 암호학의 발전사를 배웁니다. 데이터를 섞고 쪼개어 알아볼 수 없게 만드는 대칭키 알고리즘(AES), 서로 모르는 두 사람이 안전하게 비밀번호를 교환하는 기적 같은 비대칭키(RSA, ECC), 그리고 데이터가 1비트라도 변조되었는지 찾아내는 지문(Hash)의 역학을 익혀, 뚫리지 않는 시스템을 설계하는 정보보안의 초석을 다집니다.

2. Scope & Boundaries

In-Scope

  • 보안의 3요소 (Security Foundations): 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability) 및 식별/인증/인가의 물리적 흐름.
  • 대칭키 암호 (Symmetric Cryptography): 블록 암호(AES, DES)와 스트림 암호, IV(Initialization Vector), 운영 모드(ECB, CBC, GCM).
  • 공개키 암호 (Asymmetric Cryptography): 소인수분해와 이산대수의 수학적 난제(RSA, ECC), 디피-헬만(Diffie-Hellman) 키 교환.
  • 무결성과 인증 (Integrity & Authentication): 해시 함수(SHA-256), 솔트(Salt)와 페퍼(Pepper), 디지털 서명(Digital Signature).

Out-of-Scope

  • 네트워크 방화벽 및 침입 탐지(IDS): 방화벽 정책을 세우고 IP를 차단하는 인프라 관점 \rightarrow 10-02. Infrastructure & Platform Security 영역으로 위임.
  • 양자 컴퓨터의 양자 역학적 회로 설계: 큐비트(Qubit)의 물리학적 제어 \rightarrow 02-04. Advanced Architecture 영역으로 위임.

Boundaries

  • SFC vs. Math (01-01): 정수론(01)이 "소수 P와 Q를 곱하면 N이 된다"는 순수 수학을 배운다면, SFC는 "그 N을 소인수분해하는 데 우주 나이만큼의 시간이 걸린다"는 물리적 한계를 이용해 남의 신용카드 정보를 보호하는 공학적 응용에 집중합니다.

3. Counterexample

  • "직접 만든 암호가 가장 안전하다"는 착각 (Roll Your Own Crypto Fallacy): "해커들이 AES는 다 아니까, 내가 비트 연산을 섞어서 나만의 독자적인 암호화 함수를 만들면 못 뚫겠지?"라고 생각하는 오만함. 전 세계의 천재 수학자들이 수십 년간 두드려 패고도 뚫리지 않아 살아남은 것이 표준 암호(AES, RSA)입니다. 개인이 만든 암호는 하루도 못 가 분석기(Cryptanalysis)에 뚫립니다. 진정한 보안은 암호 알고리즘을 숨기는 것(Security by Obscurity)이 아니라, 알고리즘을 세상에 다 공개해도 **비밀키(Key)**만 숨기면 뚫리지 않는 커크호프의 원리(Kerckhoffs's Principle)를 따르는 것입니다.
  • 인코딩/해시/암호화의 혼동 (Terminology Fallacy): 데이터를 Base64로 '인코딩(Encoding)'해놓고 "암호화했다"고 말하거나, 비밀번호를 '해시(Hash)'로 만들어놓고 "나중에 복호화해서 써야지"라고 말하는 개발자의 무지. 인코딩은 포맷 변환일 뿐 누구나 원본을 볼 수 있고, 해시는 일방향(단방향) 함수라 영원히 원본으로 복구할 수 없습니다. 양방향 복구가 가능한 것만이 '암호화(Encryption)'입니다. 이 물리적 차이를 헷갈리면 시스템 보안 전체가 붕괴합니다.

4. Prerequisites

  • 이산수학과 논리 회로 (Basic): XOR 연산의 대칭적 특성(A \oplus B \oplus B = A)과 모듈로(Modulo) 연산의 단방향성을 알아야 암호학을 이해할 수 있습니다. (01. MAC, 02. CAES)

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 Security Mindset 모든 데이터는 탈취당할 수 있다는 전제하에, CIA (기밀성, 무결성, 가용성) 트라이앵글의 트레이드오프를 배웁니다. P2
2 Symmetric Key 속도가 엄청나게 빠른 대신, 키(Key)를 어떻게 몰래 전달할지 딜레마에 빠지는 대칭키 암호(AES)의 딜레마를 풉니다. Industry
3 Asymmetric Key 문을 잠그는 열쇠(공개키)는 세상에 뿌리고, 여는 열쇠(개인키)는 나만 갖는 기적의 수학(RSA)을 익힙니다. P1
4 Integrity & Auth 내용이 1비트라도 바뀌면 완전히 다른 지문이 나오는 해시(Hash)로 파일의 무결성과 디지털 서명을 입증합니다. Industry

6. Learning Topics

Basic

Core Topic 01: 보안의 3요소와 암호학의 기본 논리 (CIA & Basics)

  • Why to Learn: 보안의 목적을 명확히 하지 않으면, 엄청난 돈을 들여 방화벽을 사고도 정작 내부 직원이 데이터를 USB로 빼돌리는 어처구니없는 참사를 막지 못하기 때문입니다.
  • What to Learn:
    • Concepts: CIA Triad (기밀성, 무결성, 가용성), 자산(Asset), 위협(Threat), 취약점(Vulnerability).
    • Skills: 커크호프의 원리(Kerckhoffs's Principle), 평문(Plaintext)과 암호문(Ciphertext), 인코딩 vs 해싱 vs 암호화의 분별.
    • Tools: Base64 인코더/디코더.
    • Trade-offs: 완벽한 기밀성(망 분리)을 추구하면 정당한 사용자도 시스템을 쓰기 힘들어지는 가용성(Availability)의 극악한 저하 간의 딜레마.
  • How to Learn:
    • 1단계: '기밀성 파괴(개인정보 유출)', '무결성 파괴(성적 데이터 조작)', '가용성 파괴(DDoS 공격으로 서버 다운)' 사례를 수집하여 CIA 모델에 매핑합니다.
    • 2단계: "Hello World"라는 문자열을 Base64로 변환(인코딩), SHA-256으로 변환(해시), AES로 변환(암호화)해 본 뒤, 각 결과물이 복호화(역변환) 가능한지 물리적으로 테스트하여 세 가지 개념의 경계를 긋습니다.
  • Implement: 자신이 즐겨 쓰는 서비스(예: 카카오톡)의 특정 기능이 CIA 3요소 중 어떤 것에 초점을 맞추고 있는지 분석하고 취약점 대응 방안을 제시하는 보안 모델링 리포트.

Core Topic 02: 대칭키 암호와 블록/스트림 역학 (Symmetric Cryptography)

  • Why to Learn: 테라바이트(TB) 단위의 동영상이나 데이터베이스를 눈 깜짝할 새에 암호화할 수 있는 실무 최강의 속도와 효율성을 확보하기 위해서입니다.
  • What to Learn:
    • Concepts: 대칭키(Symmetric Key), 스트림 암호(RC4) vs 블록 암호(DES, AES).
    • Skills: 운영 모드(ECB, CBC, GCM), IV(Initialization Vector)와 패딩(Padding).
    • Tools: OpenSSL CLI.
    • Trade-offs: 대용량 데이터를 순식간에 암호화하는 압도적인 연산 속도 vs 암호화 통신을 하려면 상대방에게 비밀키를 미리 안전하게 건네주어야 하는 치명적인 '키 배송 문제(Key Distribution Problem)'.
  • How to Learn:
    • 1단계: 똑같은 이미지 파일 2개를 AES-ECB 모드와 AES-CBC 모드로 각각 암호화해 봅니다. ECB 모드는 똑같은 픽셀 패턴(펭귄 그림 등)이 암호문에서도 그대로 윤곽선으로 드러나는 최악의 취약점을 눈으로 확인하고, 이전 블록을 체이닝(Chaining)하는 CBC 모드의 무작위성을 증명합니다.
    • 2단계: CBC 모드에서 매번 똑같은 암호문이 나오는 것을 막기 위해, 암호화할 때마다 난수를 섞는 IV(초기화 벡터)의 작동 원리를 코드로 구현해 봅니다.
  • Implement: Python의 cryptography 라이브러리를 이용해, 파일 전체를 읽어 AES-GCM 모드로 암호화하고 복호화 무결성까지 검증하는 안전한 파일 금고(Vault) 스크립트.

Practical

Core Topic 03: 비대칭키 암호와 공개키 인프라 (Asymmetric Cryptography)

  • Why to Learn: 인터넷에서 한 번도 만난 적 없는 사람(또는 서버)과 비밀번호를 주고받아야 하는 불가능에 가까운 상황을 수학으로 해결하기 위함입니다.
  • What to Learn:
    • Concepts: 비대칭키(Asymmetric Key), 소인수분해 문제(RSA), 이산대수 문제(ECC).
    • Skills: 개인키(Private Key)와 공개키(Public Key) 쌍의 생성 물리, 디피-헬만(Diffie-Hellman) 키 교환 메커니즘.
    • Tools: ssh-keygen, GnuPG.
    • Trade-offs: 전 세계 누구에게나 공개키를 뿌려 안전한 통신망을 구축하는 기적의 키 교환 능력 vs 대칭키(AES)에 비해 CPU 연산이 1,000배 이상 무거워서 용량이 큰 데이터를 직접 암호화할 수 없는 심각한 성능 제약.
  • How to Learn:
    • 1단계: 철수가 영희의 '공개키'로 편지를 암호화하여 보내면, 해커가 편지를 가로채도 영희의 '개인키'가 없으면 절대 풀 수 없는 RSA의 편도 함수(One-way Function) 물리를 스케치합니다.
    • 2단계: 물감 섞기(Diffie-Hellman)의 비유를 통해, 철수와 영희가 각자의 비밀 색깔을 숨긴 채 공개된 네트워크에서 페인트(수학적 데이터)를 교환하여 최종적으로 동일한 비밀색(대칭키)을 만들어내는 하이브리드 암호화 시스템의 위대함을 추적합니다.
  • Implement: ssh-keygen으로 RSA 키 쌍을 생성하고, 공개키를 원격 서버에 등록하여 비밀번호 입력 없이 암호학적 수학 연산만으로 안전하게 SSH 로그인(Passwordless Login)하는 인프라 구축.

Advanced

Core Topic 04: 해시 함수와 디지털 서명 (Hashes & Digital Signatures)

  • Why to Learn: 누군가 내 계좌의 이체 금액에 0을 하나 더 붙였는지 확인하고, 나중에 "내가 송금한 적 없다"고 발뺌하는 것을 법적으로 완벽하게 차단하기 위해서입니다.
  • What to Learn:
    • Concepts: 일방향 해시 함수(SHA-256), 눈사태 효과(Avalanche Effect), 충돌(Collision).
    • Skills: 패스워드 솔트(Salt)와 키 스트레칭(Bcrypt), 디지털 서명(Digital Signature)에 의한 부인 방지(Non-repudiation).
    • Tools: Hashcat(개념 이해 목적).
    • Trade-offs: 해시를 통해 데이터의 무결성을 1밀리초 만에 증명하는 효율성 vs 해커가 "1234"부터 모든 비밀번호의 해시값을 미리 계산해 놓은 레인보우 테이블(Rainbow Table) 공격에 노출되는 위험.
  • How to Learn:
    • 1단계: "hello"라는 텍스트의 SHA-256 해시값과, 끝에 온점 하나를 찍은 "hello."의 해시값을 비교하여 출력값이 완전히(눈사태처럼) 달라지는 것을 확인합니다.
    • 2단계: "내가 이 계약서에 동의함"이라는 해시값을 '자신의 개인키(Private Key)'로 암호화하여 서명합니다. 누구나 철수의 '공개키'로 이 서명을 풀어봄으로써, "이 서명은 무조건 철수만이 할 수 있다(부인 방지)"는 것을 증명하는 역방향 암호화 논리를 해부합니다.
  • Implement: 회원가입 시스템을 설계할 때, 비밀번호 평문을 그대로 DB에 넣지 않고 고유한 난수(Salt)를 섞은 뒤 Bcrypt 알고리즘으로 10,000번 반복 해싱(Key Stretching)하여 레인보우 테이블 공격을 방어하는 보안 인증 모듈 작성.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core/misused/legacy)
CIA Triad 정보 보안의 세 가지 핵심 원칙인 기밀성, 무결성, 가용성을 총칭하는 공학적 모델입니다. 기본 보안 지표 Risk Mgmt AIC 단순히 '비밀'로만 오해 P3:CyBOK core
Hash Function 임의의 길의 데이터를 고정된 길이의 고유한 값으로 변환하는 일방향 함수 물리입니다. 기본 무결성 확인 SHA-256 Encryption 복호화가 된다고 오해 P1:CS2023/Crypto core
Salt 비밀번호 해싱 시 동일한 입력에 대해 다른 결과값을 생성하기 위해 추가하는 물리적 난수 데이터입니다. 추천 보안 강화 Rainbow Table Pepper 단순히 '비밀번호 일부'로 오해 P3:CyBOK core
Digital Signature 송신자의 개인키로 암호화한 해시값을 통해 발신자 신원과 메시지 불변성을 동시에 증명하는 논리입니다. 실무 부인 방지 PKI Certificate 단순히 '이미지 서명'으로 오해 P1:CS2023/Crypto core

8. References

Primary References

Secondary References

  • [Applied Cryptography] Bruce Schneier — The practical "crypto bible".
  • [Serious Cryptography] Jean-Philippe Aumasson — Modern algorithm guide.

Industry References

  • [NIST Computer Security Resource Center] — Encryption standards (AES, SHA).
  • [OWASP Secure Coding Practices] — Essential for implementation security.

9. Final Checklist

Primary Checklist

  • 데이터 전송 시 '중간자 공격(MITM)'을 차단하기 위해 공개키 암호화와 디지털 서명이 어떻게 물리적으로 결합되는지 설명할 수 있는가? (P3)
  • 해시 함수의 충돌 저항성(Collision Resistance)이 데이터 무결성 보장에 기여하는 물리적 이유를 기술 가능한가? (P1)

Secondary Checklist

  • 128비트 vs 256비트 암호화 강도의 차이를 브루트 포스 공격에 소요되는 물리적 시간 관점에서 산출 가능한가?
  • 웹 브라우저가 특정 웹사이트의 HTTPS 연결을 신뢰하기 위해 수행하는 인증서 체인 검증 단계(Root-Intermediate-Leaf)를 숙지하고 있는가?

Industry Checklist

  • 실무 서비스 설계 시 민감 정보(개인정보)의 '보관' 시 암호화와 '제공' 시 마스킹의 물리적 차이를 구분하여 적용할 수 있는가? (SFIA)
  • 암호화 키 권한 관리(KMS) 체계를 구축하여 개발자로부터 실제 키 노출을 물리적으로 격리하는 설계를 제안 가능한가?

Security

1 / 2