본문 바로가기
정보처리기사/이론설명

[이론설명 이기적] 대칭키, 공개키, 해시 암호화

by wildOjisan 2025. 8. 2.

🔐 1. 대칭키 암호화란?

✔️ 정의

암호화와 복호화에 같은 키(비밀키)를 사용하는 암호화 방식
→ "보내는 사람"과 "받는 사람"이 같은 비밀키를 미리 공유하고 있어야 함


💡 2. 왜 이런 방식이 생겼을까?

현실 예시로 설명할게:

  • A가 B에게 편지를 보내면서, 남들이 보지 못하게 하려고 자물쇠로 잠갔다고 해보자.
  • B는 그 자물쇠를 열기 위한 열쇠를 가지고 있어야 해.
  • 이때 자물쇠와 열쇠는 같은 걸 공유하고 있어야 하겠지?

컴퓨터도 똑같아. 데이터를 암호화해서 보내면, 받은 쪽이 같은 키로 해독해야 하니까 같은 키를 공유해야 하는 거야.


🔁 3. 동작 방식 요약

 

1 송신자와 수신자가 같은 비밀키를 사전에 공유
2 송신자가 데이터를 암호화함 (비밀키 사용)
3 암호화된 데이터를 수신자에게 전송
4 수신자가 같은 비밀키복호화
 

🔐 4. 주요 알고리즘

정보처리기사에서는 알고리즘 이름도 기억해두면 좋아.

 

DES (Data Encryption Standard) 오래된 방식, 56비트 키, 현재는 안전하지 않음
AES (Advanced Encryption Standard) 현재 가장 많이 사용, 빠르고 안전
SEED 한국 정부에서 개발한 알고리즘 (전자정부에서 많이 사용)
RC4/RC5 스트림 암호로 많이 쓰임
 

시험에서는 DES는 오래돼서 보안이 약하다는 점,
AES가 가장 많이 쓰이고 안전하다는 점이 자주 나와.


🔐 5. 장점과 단점 (시험 포인트)

 

✅ 장점 속도가 빠름, 알고리즘이 단순함
❌ 단점 키 분배가 어려움 (어떻게 안전하게 키를 주고받을까?)
키가 노출되면 모두 해독당함

 

 

 

 

---------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

🔓 1. 공개키 암호화란?

✔️ 정의

**서로 다른 키 쌍(공개키와 개인키)**을 사용하는 암호화 방식.
→ 암호화와 복호화에 다른 키를 씀.

  • 공개키(Public Key): 모두에게 공개됨
  • 개인키(Private Key): 본인만 알고 있는 비밀 키

💡 2. 왜 이런 방식이 필요했을까?

현실 상황 예시

  • A가 B에게 메시지를 보내고 싶어.
  • 그런데 A와 B는 처음 보는 사이야. (비밀키를 미리 공유 못 함)
  • 대칭키 방식처럼 "같은 키를 미리 나눌 수가 없음!"

그래서 등장한 방식이야:

"B가 자기만의 **비밀 키(개인키)**를 갖고,
누구든 B에게 보내고 싶으면 공개된 키로 암호화하면 되잖아?"

즉, 누구든 나에게 암호화된 메시지를 보낼 수 있게 하되,
나만이 복호화할 수 있는 구조
!


🔁 3. 동작 방식 요약

 

1 수신자(B)는 공개키 / 개인키 한 쌍을 생성
2 수신자(B)는 공개키를 인터넷 등으로 공개
3 송신자(A)는 공개키로 메시지를 암호화
4 수신자(B)는 자기만 가진 개인키로 복호화
 

💡 **암호화에 쓴 키(공개키)**로는 복호화가 불가능
오직 개인키로만 복호화 가능


🔐 4. 주요 알고리즘

 

RSA 가장 널리 사용되는 공개키 암호화 방식
ECC 속도 빠르고 키 길이 짧음. 모바일 기기 등에 적합
DSA 디지털 서명 전용 알고리즘
 

정보처리기사에선 RSAECC가 가장 자주 나옴.


🔐 5. 장점과 단점 (대칭키와 비교해서 정리)

 

✅ 장점 키 분배가 쉬움 (공개키를 누구나 가질 수 있음)
❌ 단점 처리 속도가 느림 (계산량 많음)
⚠️ 특징 암호화/복호화 키가 다름 (비대칭)
 

📦 예시 시나리오 (시험에도 자주 나옴)

 

기밀성 보장 📤 암호화: 공개키 / 📥 복호화: 개인키
전자서명(위조방지) 📤 서명: 개인키 / 📥 검증: 공개키

전자서명은 반대 구조!
개인키로 “해시값”을 암호화(=서명) → 공개키로 복호화(=검증)
 

전자서명과 데이터 암호화에 각각 역방향으로 사용하는 게 포인트야!

 

 

 

 

--------------------------------------------------------------------------------------------------------------------------------

 

 

 

🔍 1. 해시 암호(해시 함수)란?

임의의 길이를 가진 데이터를 입력하면, 고정된 길이의 값을 출력해주는 함수

  • 이 출력값을 해시값(hash value) 또는 **다이제스트(message digest)**라고 해
  • 예: “hello” → 2cf24dba5fb0... ← SHA-256 해시값

🎯 해시의 핵심 목적은 "데이터의 무결성 검사"
→ 즉, "데이터가 바뀌지 않았는지 확인"


🧩 2. 왜 해시가 필요할까?

현실에서 예를 들어보자:

  • 어떤 문서를 인터넷으로 보냈다고 해
  • 받는 사람이 "이게 중간에 바뀐 건지 아닌지" 어떻게 확인할까?

→ 원본 문서에서 해시값을 계산해 같이 보내고,
→ 받은 문서도 다시 해시 계산해서 같은지 비교하는 방식!

즉, 해시는 **데이터의 ‘지문’**이야.
→ 내용이 1글자라도 바뀌면 완전히 다른 해시값이 나와.


🧠 3. 해시 함수의 특징 (암기 + 이해)

 

✅ 고정 길이 출력 입력이 길든 짧든 항상 같은 길이의 출력 (ex. SHA-256 → 256bit)
✅ 효율성 계산 속도가 빨라야 함
✅ 충돌 회피성 서로 다른 입력이 같은 해시값을 갖지 않도록 해야 함 (충돌이 거의 없도록)
✅ 일방향성 해시값만 보고는 원래 데이터를 복원할 수 없음 (복호화 불가능!)
✅ 작은 변화 민감 입력이 1비트만 바뀌어도 완전히 다른 해시값이 나옴
 

🔐 4. 해시함수의 주요 용도

 

✅ 전자서명 서명할 때 메시지 전체 대신 해시값만 서명
✅ 비밀번호 저장 비밀번호를 해시값으로 변환해서 DB에 저장 (복호화 불가!)
✅ 무결성 검사 파일이나 메시지가 중간에 바뀌지 않았는지 확인
✅ 블록체인 블록 간 연결 시 이전 블록의 해시값을 사용해 조작 방지
 

🔑 5. 주요 해시 알고리즘

 

MD5 128비트 출력, 빠르지만 현재는 충돌 발생 위험이 높아서 보안에 부적합
SHA-1 160비트 출력, 한때 많이 사용됨. 현재는 취약점 존재
SHA-2 (SHA-256, SHA-512 등) 현재 가장 많이 쓰이는 안전한 해시
SHA-3 SHA-2 이후 차세대 해시, 보안성 강화
 

시험에서는 MD5는 보안에 부적절하다,
SHA-256이 가장 널리 쓰인다 이런 식으로 자주 나와.