콘텐츠로 이동

정보 보안의 기초 - 암호화와 인증의 세계

🚀 이 장을 시작하기 전에

여러분의 핸드폰에 저장된 카톡 메시지, 인터넷 뱅킹 비밀번호, SNS 개인 정보들이 누군가 몰래 보고 있다면 어떨까요? 무섭지 않나요?

그런데 좋은 소식이 있습니다. 지금 이 순간에도 암호화라는 기술이 여러분의 정보를 숨겨주고 있어요. 은행이 여러분의 계좌 정보를 보호하고, 메신저 앱이 메시지를 안전하게 전달하는 방법이 바로 이 장에서 배울 암호화와 인증 기술입니다.

이 장을 배우면 여러분은: - 내가 보내는 정보가 어떻게 안전하게 전달되는지 이해할 수 있어요 - 평생 만날 암호화 기술의 기본 원리를 알게 되어요 - "왜 비밀번호가 길수록 안전한가?"라는 궁금증을 해결할 수 있어요


🎯 이 장의 학습 목표

이 장을 마치면 여러분은: - ✅ 대칭 암호화와 공개키 암호화의 차이를 설명할 수 있습니다 - ✅ AES, RSA 같은 주요 암호화 알고리즘이 언제, 어디에 쓰이는지 이해합니다 - ✅ 해시 함수와 전자 서명의 역할을 알게 됩니다

⏰ 예상 학습 시간: 약 120분 (쉬는 시간 포함)


🔑 미리 확인해요 (선수 지식 체크)

아래 내용이 익숙하지 않다면, 이전 장 "네트워크 통신의 기초"를 먼저 복습해주세요.

  • 패킷(Packet) — 네트워크를 통해 전송되는 데이터의 작은 단위예요
  • 클라이언트와 서버 — 요청하는 쪽과 응답하는 쪽의 관계를 알고 있나요?

💡 이 정도만 알고 있으면 OK! 우리는 여기서부터 시작할 거예요.


📚 핵심 개념 1: 대칭 암호화 — 같은 열쇠로 열고 닫기

일상 비유로 이해하기

대칭 암호화는 마치 우편함의 열쇠처럼 작동합니다.

두 친구가 비밀 편지를 주고받는다고 생각해보세요. - 철수가 편지를 쓰고 같은 열쇠로 잠금 - 영희가 같은 열쇠로 열어서 읽음

"같은 열쇠"를 둘이 공유하는 것 — 이것이 대칭 암호화의 핵심입니다.

정확한 설명

대칭 암호화(Symmetric Encryption) 는 다음과 같이 작동합니다:

  • 송신자(철수): 원래 메시지 + 비밀 열쇠 → 암호화 → 암호문 전송
  • 수신자(영희): 암호문 + 같은 비밀 열쇠 → 복호화 → 원래 메시지 읽음

왜 "대칭"이라고 부를까요? 암호화하는 열쇠와 복호화하는 열쇠가 같으니까요. 마치 거울 좌우가 대칭인 것처럼요!

구체적 예시: AES (Advanced Encryption Standard)

은행이 여러분의 송금 정보를 보호할 때 가장 자주 쓰는 암호화 방식이 AES입니다.

예를 들어: - 원래 메시지: "계좌 이체 100만 원" - AES + 256비트 열쇠로 암호화 - 암호문: "xK#9$mL@2pQ%vW4z..." (알 수 없는 글자들) - 영희가 같은 열쇠로 복호화 → "계좌 이체 100만 원" 복원됨

대칭 암호화의 장단점

장점 👍 - 속도가 빠름 (큰 파일도 빠르게 암호화) - 계산이 간단함 (컴퓨터 부담이 적음)

단점 👎 - 열쇠를 어떻게 안전하게 주고받을까? (열쇠 배송 문제) - 사람이 많아질수록 열쇠 관리가 복잡해짐

🔍 체크포인트 | 여기까지 따라오셨나요? - 대칭 암호화에서 "대칭"의 의미가 뭔가요? → "암호화와 복호화가 같은 열쇠를 쓴다"고 답할 수 있다면 OK! - 아직 헷갈린다면 👉 위의 우편함 비유를 한 번 더 읽어보세요. - 설명할 수 있다면 👉 다음 개념으로 넘어가세요! 잘하고 계세요! 💪


📚 핵심 개념 2: 공개키 암호화 — 누구나 열 수 있지만 주인만 열어야 하는 상자

일상 비유로 이해하기

공개키 암호화는 마치 회사의 제안서 박스 같습니다.

여러분이 다니는 회사에 제안서를 제출해야 한다고 생각해보세요. - 회사는 누구나 제안서를 넣을 수 있는 열린 슬릿(공개키)이 있는 상자를 놓아둠 - 하지만 상자 안의 제안서를 꺼내는 열쇠(비밀키)는 회사 이사장만 가지고 있음 - 누구든 제안서를 넣을 수 있지만, 누구도 꺼낼 수 없어요!

정확한 설명

공개키 암호화(Public Key Encryption, 비대칭 암호화) 는 두 개의 다른 열쇠를 사용합니다:

  • 공개키(Public Key): 누구에게나 공개되는 열쇠 — 암호화할 때만 사용
  • 비밀키(Private Key): 주인만 가지는 열쇠 — 복호화할 때만 사용

작동 원리:

철수가 영희에게 비밀 메시지를 보내고 싶어요.

  1. 영희는 자신의 공개키를 모든 사람에게 공개 (SNS처럼 공개하는 거예요!)
  2. 철수는 영희의 공개키로 메시지를 암호화해서 전송
  3. 영희만이 자신의 비밀키로 복호화할 수 있음
  4. 중간에 누군가 도청해도 공개키만으로는 열 수 없어요!

구체적 예시: RSA (가장 유명한 공개키 암호화)

RSA는 인터넷 뱅킹, 전자 서명, HTTPS(안전한 웹) 등에 쓰입니다.

예를 들어: - 여러분이 은행 앱에 접속 → 은행 서버는 공개키를 여러분의 폰에 전송 - 여러분의 폰이 비밀번호를 은행의 공개키로 암호화 - 은행 서버가 비밀키로만 복호화 가능 - 해킹범이 중간에 암호문을 빼앗아도 공개키로는 열 수 없음!

공개키 암호화의 장단점

장점 👍 - 열쇠 배송이 안전함 (공개키는 공개해도 상관없음) - 한 쌍의 열쇠만 있으면 여럿과 안전하게 통신 가능

단점 👎 - 대칭 암호화보다 속도가 느림 - 계산이 복잡함 (매우 큰 소수를 이용)

🔍 체크포인트 | 여기까지 따라오셨나요? - 공개키와 비밀키의 역할을 각각 설명할 수 있나요? - "공개키로 암호화하면 비밀키로만 복호화 가능"이 이해되나요? - 아직 헷갈린다면 👉 위의 제안서 상자 비유를 다시 읽어보세요. - 설명할 수 있다면 👉 다음 개념으로! 대단해요! 🚀


📚 핵심 개념 3: 해시 함수 — 지문처럼 정보를 요약하기

일상 비유로 이해하기

해시 함수는 마치 수고인의 지문 같습니다.

사람마다 지문이 다르고, 지문으로는 그 사람의 외모를 복원할 수 없지만, 그 사람이 맞는지 확인할 수 있어요.

해시 함수도 비슷합니다: - 길든 짧든 어떤 데이터든 입력 가능 - 같은 길이의 고정된 "지문" 같은 값을 출력 - 원래 데이터로 돌아갈 수 없음 (일방향) - 조금만 데이터가 바뀌어도 완전히 다른 해시값이 나옴

정확한 설명

해시 함수(Hash Function) 는 다음과 같이 작동합니다:

입력(어떤 길이든): "안녕하세요" 
        ↓ 해시 함수 적용
출력(고정 길이): "a7f3d9c2e1b4..."

주요 특징: - 결정적: 같은 입력 → 항상 같은 해시값 - 일방향: 해시값으로는 원래 데이터를 복원 불가능 - 민감성: 1글자만 바뀌어도 완전히 다른 해시값 생성 - 충돌 불가능: 서로 다른 두 입력이 같은 해시값을 가질 수 없음 (이상적으로)

구체적 예시: SHA-256

SHA-256은 가장 널리 쓰이는 해시 함수입니다.

입력: "password123"
SHA-256 해시값: "ef92b778bafe771e89245d171baf..."`(64자)

입력: "password124" (숫자 하나만 다름!)
SHA-256 해시값: "8d969eef6ecad3c29a3a873fba50..."`(완전히 다른 64자)

해시 함수의 쓰임

1. 비밀번호 저장 - 사용자가 입력: "password123" - 은행이 저장: SHA-256 해시값만 저장 - 로그인할 때: 입력된 비밀번호를 해시 → 저장된 해시값과 비교 - 해킹범이 데이터베이스를 훔쳐도 원래 비밀번호를 알 수 없음!

2. 파일 무결성 검증 - 큰 파일을 다운로드받을 때 - 해시값으로 "이 파일이 정말 원본인가?"를 확인

🔍 체크포인트 | 해시 함수를 이해하셨나요? - "해시 함수는 일방향"이 무엇을 의미하나요? → "원래 데이터로 되돌릴 수 없다"고 답할 수 있으면 OK! - 아직 헷갈린다면 👉 지문 비유와 SHA-256 예시를 다시 읽어보세요. - 설명할 수 있다면 👉 마지막 개념으로! 거의 다 왔어요! 💪


📚 핵심 개념 4: 전자 서명 — "나임을 증명하기"

일상 비유로 이해하기

전자 서명은 마치 손으로 쓴 서명 같습니다.

여러분이 중요한 계약서에 서명하면: - 그것은 "이 계약서의 내용을 제 손으로 동의했고, 저임을 증명합니다"는 뜻이에요 - 아무도 그 서명을 위조할 수 없어요 (손글씨 고유성 때문에)

전자 서명도 비슷하게 "나임을 증명"합니다. 하지만 복잡한 수학을 사용해요!

정확한 설명

전자 서명(Digital Signature) 은 다음 3가지를 동시에 보장합니다:

  1. 인증: "이 메시지는 정말 철수가 보낸 게 맞아"
  2. 부인 불가: 철수가 "내가 안 보냈어"라고 거짓말할 수 없음
  3. 무결성: "메시지가 도중에 바뀌지 않았어"

전자 서명의 작동 원리 (공개키 이용)

철수가 영희에게 "계약에 동의합니다"라는 메시지에 전자 서명을 붙여서 보낸다고 해봅시다:

Step 1: 철수가 서명하기

메시지: "계약에 동의합니다"
    ↓ 해시 함수 적용
해시값: "abc123def..."
    ↓ 철수의 비밀키로 암호화
전자 서명: "xyz789uvw..."  ← 이것이 "서명"!

Step 2: 영희가 검증하기

받은 메시지 + 전자 서명
    ↓ 철수의 공개키로 복호화
원래 해시값: "abc123def..."
    ↓ 받은 메시지를 다시 해시
새로운 해시값: "abc123def..."
    ↓ 비교
"같다!" → ✅ 정말 철수가 보낸 게 맞고, 도중에 바뀌지 않았어요!

구체적 예시: 전자 계약서

여러분이 인터넷으로 집을 월세 계약할 때: - 부동산이 계약서를 여러분에게 전송 - 여러분이 계약서에 전자 서명 - 부동산이 여러분의 공개키로 서명 검증 → 진짜 여러분이 동의했다는 증명 획득 - 이후 여러분이 "내가 이런 계약 안 했어"라고 거짓말할 수 없음!

🔍 체크포인트 | 전자 서명을 이해하셨나요? - 전자 서명이 증명하는 세 가지가 뭔가요? - 아직 헷갈린다면 👉 위의 "Step 1, Step 2"를 천천히 다시 읽어보세요. - 설명할 수 있다면 👉 축하해요! 이제 핵심 개념을 모두 배웠어요! 🎉


🔧 직접 해봐요 — 해시 함수 체험하기

실습: 온라인 도구로 해시 생성하기

이 실습의 목표: 해시 함수가 어떻게 작동하는지 직접 눈으로 확인하기

준비물: 인터넷 접속 가능한 컴퓨터/휴대폰, 웹 브라우저

따라하기 (천천히 한 단계씩!):

  1. 온라인 해시 생성기 사이트 방문
  2. 검색창에 "SHA-256 online generator" 또는 "해시 생성기" 검색
  3. 가장 위의 검색 결과를 클릭 (예: hashgenerator.de)

✅ 확인: 텍스트 입력창과 해시 결과창이 보이나요? ❓ 못 찾으셨나요? → "onlinehashtools.com" 직접 주소 입력해보세요

  1. 첫 번째 텍스트 입력
  2. 입력창에 hello 입력
  3. 해시 버튼 또는 엔터 키 누르기

✅ 확인: 긴 문자열(해시값)이 나타났나요? 예시: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

  1. 두 번째 텍스트 입력 (비교용)
  2. 입력창 비우기
  3. hello world 입력 (공백 포함)
  4. 해시값 확인

✅ 확인: 처음 해시값과 완전히 다른가요? 이것이 해시 함수의 "민감성"입니다!

  1. 세 번째 입력 (같은 값 재입력)
  2. 입력창 비우기
  3. 다시 hello 입력
  4. 해시값 확인

✅ 확인: Step 2와 같은 해시값이 나오나요? 이것이 해시의 "결정적 특성"입니다!

  1. 비밀번호로 실습해보기
  2. 입력: password123
  3. 해시값 기록하기
  4. 입력: password124 (숫자 1개 다름)
  5. 해시값 기록하고 비교하기

✅ 확인: 아주 조금만 달라도 완전히 다른 해시가 나오나요?

  1. 실습 완료!

🎉 축하해요! 방금 여러분은: - 해시 함수의 "결정적" 특성 확인 - 해시 함수의 "민감성" 체험 - "같은 입력 → 같은 해시값" 확인

이제 해시 함수가 왜 비밀번호를 보호하는데 쓰이는지 이해할 수 있어요!


❓ 자주 묻는 질문 & 막혔을 때

Q. 대칭 암호화와 공개키 암호화, 둘 다 왜 필요한가요? 좋은 질문이에요! 현실에서는 **둘 다 함께 사용**합니다. **HTTPS(안전한 웹)의 예:** 1. 처음 연결할 때: 공개키 암호화로 안전하게 "대칭 열쇠" 주고받기 (느리지만 안전) 2. 이후 통신: 대칭 암호화로 빠르게 데이터 주고받기 쉽게 말하면, **공개키는 열쇠의 열쇠를 주고받는데, 대칭 암호화는 실제 통신에 사용**해요!
Q. 해시값이 정말 복원 불가능한가요? 네, 수학적으로 불가능합니다! 왜냐하면 **여러 개의 다른 데이터가 같은 크기의 해시값으로 압축**되기 때문이에요. 예를 들어, 1,000자의 책 전체가 64글자의 해시가 돼요. 반대로 64글자에서 원래 1,000자 책을 복원? 불가능하죠! 대신 **무작정 시도하기(brute force)**로 비밀번호를 찾을 수는 있어요. 그래서 비밀번호는 길수록, 복잡할수록 안전한 거예요!
Q. 공개키 암호화는 정말 안전한가요? 공개키인데? 네, 완전히 안전합니다! 공개키가 공개되어도 괜찮은 이유: - **공개키**: 문제를 푸는 입력값 (누구나 문제를 낼 수 있음) - **비밀키**: 문제의 답 (주인만 알아야 함) 비유: 모든 사람이 여러분의 우편함 위치(공개키)를 알아도, 우편함을 여는 열쇠(비밀키)는 여러분만 가지고 있어요!
Q. AES와 RSA는 서로 다른 건가요? 네, 완전히 다릅니다! **AES**: 대칭 암호화 (같은 열쇠로 암호화/복호화) → 빠름 **RSA**: 공개키 암호화 (공개키로 암호화, 비밀키로 복호화) → 느림 "AES vs RSA"라고 묻는 건 "자동차 vs 비행기 어느 게 좋아요?"라고 묻는 것처럼, 용도가 다르기 때문에 비교 대상이 아니에요!
Q. 해시와 암호화의 차이는? **암호화**: 원래대로 복원 가능 - "안녕" → (암호화) → "abc123" → (복호화) → "안녕" ✅ **해시**: 원래대로 복원 불가능 (일방향) - "안녕" → (해시) → "xyz789" → ??? (복원 불가) ❌ 쉽게 말하면, **암호화는 열고 닫을 수 있는 상자, 해시는 일방통행 미끄럼틀**이에요!

📌 이 장에서 배운 것 정리

🏆 오늘의 성취: 여러분은 이제 인터넷의 안전을 지탱하는 4가지 기술의 기초를 이해하게 되었어요!

  • 대칭 암호화 (AES): 같은 열쇠로 암호화/복호화 — 빠르지만 열쇠 배송이 문제
  • 공개키 암호화 (RSA): 공개키와 비밀키를 다르게 사용 — 열쇠 배송이 안전하지만 느림
  • 해시 함수 (SHA-256): 데이터를 일방향으로 변환 — 비밀번호 저장, 무결성 검증에 사용
  • 전자 서명: 공개키 암호화를 이용해 "나임을 증명" — 인증, 부인 불가, 무결성 동시 보장

🤔 스스로 점검해봐요

아래 질문에 "예"라고 답할 수 있다면, 다음 장으로 넘어가도 좋아요!

  • 대칭 암호화에서 "대칭"의 의미를 설명할 수 있나요?
  • 공개키와 비밀키의 역할을 각각 설명할 수 있나요?
  • 해시 함수가 왜 일방향인지 이해했나요?
  • 해시 함수와 암호화의 차이점을 설명할 수 있나요?
  • 전자 서명이 증명하는 세 가지가 뭔지 말할 수 있나요?

💡 1-2개가 아직 어렵다면? 완전히 정상이에요! 암호화는 난제예요. 해당 부분의 "개념 설명"과 "비유"를 한 번 더 읽어보세요. 매번 읽을 때마다 더 이해돼요!

3개 이상 어렵다면? 이전 장의 네트워크 기초를 복습하고 돌아와주세요. 천천히 해도 괜찮아요. 여러분은 이미 4가지 개념을 배웠으니까요!


🚀 다음 장 미리보기

다음 장 "SSL/TLS 프로토콜과 HTTPS"에서는: - 지금 배운 암호화, 해시, 전자 서명이 실제로 어떻게 함께 작동하는지 배워요 - 여러분이 매일 쓰는 "https://"가 어떻게 안전함을 보장하는지 직접 확인해요 - "왜 은행 앱은 항상 https 연결을 강요할까?"에 대한 답을 알게 돼요

오늘 배운 것들이 조각조각 맞춰지는 경험을 하게 될 거예요! 기대되시죠? 😊

오늘 정말 고생하셨어요! 정보 보안이라는 어려운 주제를 끝까지 배우신 여러분을 응원합니다! 🎉