Algorithmmedium면접 빈도: medium

Cryptography

Cryptography (암호화 알고리즘)

📝 암호화란?

데이터의 무결성 및 기밀성을 유지하기 위한 알고리즘

암호화: 평문(Plain text)을 암호문(Cipher text)으로 재구성

복호화: 암호문을 평문으로 변환


🔑 암호화의 5가지 특성

| 특성 | 기능 | 적용 기술 | |------|------|----------| | 인증 (Authentication) | PKI 사용자 신원 확인 | 인증서 | | 기밀성 (Confidentiality) | 송수신자 외 내용 인지 불가 | 암복호화 | | 무결성 (Integrity) | 조작/변경 여부 확인 | 해시 함수 | | 부인 방지 (Non-repudiation) | 송수신 사실 부인 봉쇄 | 전자 서명 | | 가용성 (Availability) | 정당한 요구 시 서비스 제공 | 암호/인증 |


🚫 부인 방지 (Non-repudiation)

메시지 송수신 후 사실 부인을 방지하는 보안 기술

대칭키 vs 공개키

대칭키: 부인 방지 불가능

공개키: 발행자 증명과 동일한 절차로 부인 방지


부인 방지 예시

🙎‍♀️(은선): 돈 좀 빌려줄 수 있어?
🙍‍♂️(상혁): 개인키/공개키 생성 후 공개키 공개해줘
🙆‍♀️(은선): 알겠어

🙍‍♂️(상혁): '문서'를 개인키로 암호화해줘
💁‍♀️(은선): (은선의 개인키로 암호화하여 전달)

<일주일 후>

💁‍♂️(상혁): 빌린 돈 돌려줄래?
🤷‍♀️(은선): 나 돈 빌린 적 없는데?
💁‍♂️(상혁): (암호화된 문서를 은선의 공개키로 해독하여 검증)
🤦(은선): ...💰

타인은 은선의 공개키로 복호 가능한 문서 생성 불가

암호화된 문서는 은선의 공개키로만 해독 가능

→ 은선만이 발행했다는 증거


🔧 암호 시스템 구성 요소

평문 (Plaintext): 해독 가능한 형태의 메시지

암호문 (Ciphertext): 해독 불가능한 형태의 메시지

암호화 (Encryption): 평문 → 암호문

복호화 (Decryption): 암호문 → 평문

키 (Key): 암호화 알고리즘의 매개변수

암호 알고리즘: 암호화/복호화에 사용되는 알고리즘

암호 시스템: 암호화 기술과 복호화 기술의 통칭


🔄 양방향 암호화

대칭키 방식 (Symmetric-key)

암호화 키 = 복호화 키

특징:

  • 키의 수: 1개 (두 사람이 한 개의 비밀키 공유)
  • Secret Key 사용
  • 부인 방지 불가능
  • 비트 단위 암호화
  • 빠른 속도

장점: ✅ 구현 용이 ✅ 변형 가능

단점: ❌ 상대적으로 쉽게 해독 (보안 취약) ❌ 키 관리 어려움

용도: 개인 파일 암호화, 특정 그룹 내 통신


블록 암호 vs 스트림 암호

| 구분 | 블록 암호 | 스트림 암호 | |------|----------|------------| | 개념 | 고정 길이 블록 단위 암호화 | 비트 단위 순차 암호화 | | 장점 | 높은 확산, 기밀성 | 빠른 속도, 에러 전파 없음 | | 단점 | 느린 암호화, 에러 전달 | 낮은 확산 | | 대상 | 일반 데이터, 스토리지 | 음성, 비디오 스트리밍 | | 예시 | DES, AES, SEED | RC4, A5/1, A5/2 |


AES vs DES

DES (Data Encryption Standard):

  • 1975년부터 사용
  • 오래되어 취약점 발견

AES (Advanced Encryption Standard):

  • 현 미국 표준 방식
  • 128~256비트 키 적용
  • 보안성 뛰어남
  • 공개된 알고리즘

🔐 비대칭키 방식 (공개키)

암호화 키 ≠ 복호화 키

특징:

  • 키의 수: 키쌍 (Private Key + Public Key)
  • 암호화 키: Public Key
  • 복호화 키: Private Key
  • 부인 방지 가능
  • 큰 소수, 곡률 방정식 연산 → 속도 느림

장점: ✅ 암호 해독 어려움 (보안 강화)

단점: ❌ 해독 시간 오래 걸림 ❌ 중간자 공격 가능

용도: 다수의 정보 교환, 전자 서명, 공인 인증서

구현 방식: RSA, DSA, ECC, Digital Signature


중간자 공격 (Man-in-the-Middle)

해커가 중간에서 통신을 가로채는 기법

방법:

  • 수신자에게는 송신자인 척
  • 송신자에게는 수신자인 척
  • 양쪽의 공개키와 대칭키 모두 획득

인터넷 뱅킹 예시

1. 사용자가 은행 사이트 접속
   → 공개키, 비밀키 생성

2. 사용자의 공개키를 은행으로 전송

3. 은행에서 중요 정보를 공개키로 암호화하여 전달

4. 사용자는 비밀키로 암호문 해독하여 통신

암호화 방식의 중점

Public Key로 암호화: Data 보안에 중점

Private Key로 암호화: 인증 과정에 중점


#️⃣ 단방향 암호화 (해시)

해싱을 이용한 암호화 방식

특징:

  • 데이터 진위 여부 확인
  • Privacy 유지
  • 임의 길이 메시지 → 고정 길이 해시 값
  • 암호 키 미사용 → 같은 입력 = 같은 해시
  • 무결성 제공
  • 복호화 불가능

🔒 암호학적 해시 함수의 특징

1. 역상 저항성 (Preimage Resistance)

해시 값으로 원래 입력 값 찾기 어려움

일방향성 (One-wayness)


2. 제2 역상 저항성 (Second Preimage Resistance)

입력 값의 해시 값과 같은 다른 입력 값 찾기 어려움


3. 충돌 저항성 (Collision Resistance)

같은 해시 값을 갖는 두 입력 값 찾기 어려움


📊 Hash 알고리즘

MD5: MD4 개선, 파일 무결성 검사

SHA-1: 1993년 NSA, 미국 정부 표준

SHA-256/384/512: 256비트 해시 값 생성

HAS-160: 국내 표준 서명 알고리즘

HAVAL: 1024bits 블록으로 분할


🔍 MDC vs MAC

MDC (Modification Detection Code)

변경 감지 코드로 메시지 무결성 보장

동작:

  1. 송신자: 원본 메시지 + 해시 값(MDC) 전송
  2. 수신자: 메시지로 MDC 생성 후 비교
  3. 같으면 변경 없음, 다르면 변경됨

목적: 데이터 무결성 판단


MAC (Message Authentication Code)

메시지 인증 코드로 무결성 + 송신자 인증 보장

동작:

  1. 송신자: 공유된 키로 MAC 생성 후 메시지와 함께 전송
  2. 수신자: 키와 메시지로 MAC 생성 후 비교
  3. 같으면 송신자 확인, 다르면 변경됨

장점: 양방향 암호화보다 빠름

단점: 기밀성 제공 안 함 (보안 취약)


❓ 면접 질문 예시

Q1. 비대칭키 암호화와 대칭키 암호화의 차이는?

답변: 대칭키 암호화는 암호화와 복호화에 같은 키를 사용하며 빠르지만 키 관리가 어렵고 부인 방지가 불가능합니다. 비대칭키 암호화는 공개키와 개인키를 사용하여 암호화와 복호화에 다른 키를 사용하며, 보안성이 높고 부인 방지가 가능하지만 속도가 느립니다.

Q2. 단방향 암호화에 대해 설명해주세요.

답변: 단방향 암호화는 해싱을 이용한 암호화 방식으로, 평문을 암호문으로 암호화는 가능하지만 암호문을 평문으로 복호화하는 것은 불가능합니다. 같은 입력에 대해 항상 같은 해시 값을 생성하여 무결성을 제공하며, MD5, SHA-256 등이 있습니다.

Q3. 부인 방지란 무엇인가요?

답변: 부인 방지는 메시지의 송수신 후 그 사실을 사후에 증명함으로써 사실 부인을 방지하는 보안 기술입니다. 공개키 암호화 방식에서 개인키로 암호화한 문서는 해당 공개키로만 복호화할 수 있으므로, 특정인만이 발행했다는 증거가 됩니다.

Q4. 블록 암호와 스트림 암호의 차이는?

답변: 블록 암호는 고정 길이의 블록 단위로 암호화하며 높은 확산과 기밀성을 제공하지만 속도가 느립니다. 스트림 암호는 비트 단위로 순차적으로 암호화하며 속도가 빠르고 에러 전파가 없지만 확산이 낮습니다. 블록 암호는 일반 데이터에, 스트림 암호는 음성/비디오 스트리밍에 적합합니다.

Q5. MDC와 MAC의 차이는?

답변: MDC는 변경 감지 코드로 메시지의 무결성만 보장하며, 원본 메시지와 해시 값을 비교하여 변경 여부를 확인합니다. MAC는 메시지 인증 코드로 무결성과 송신자 인증을 모두 보장하며, 공유된 키를 사용하여 MAC를 생성하고 비교합니다. MAC는 빠르지만 기밀성을 제공하지 않습니다.


📚 원본 참고 자료

출처: 2023-CS-Study

추가 학습 자료