페이지 목차
이 페이지에서 검색
EIS
이 페이지에 묻기
EIS · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.
생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.
EIS · SECURITY
EIS
생성 수정
정보보안기사의 시스템·네트워크·애플리케이션 보안과 암호·관리·실기 내용을 개념의 경계와 실습으로 연결합니다.
29개 문서 · 4 · 정보보안일반 · 20 / 29
19 · 암호 알고리즘
지도 위치 : 4과목 정보보안 일반 · README 4장 ② 부품 층 (무엇으로 지키나) | 출제기준: 2. 암호학 > 1. 암호 알고리즘 | 이전: 18 키 분배 · 전자서명 · PKI | 다음: 20 해시함수와 MAC 출제 빈도 : ⭐⭐⭐ (회당 약 6.0문항 — 출제분석.md, 4과목에서 가장 많음) · 변화 – (이전 6.1 → 현행 5.9) · ⚠️ 신규 범위 포함 (RSA-OAEP, ROT13) 세세항목 : 1. 암호 관련 용어 및 암호 시스템의 구성 / 2. 암호 공격의 유형별 특징 / 3. 대칭키 암호시스템 특징 및 활용(종류, 구조, 운영 모드, 공격 기술 등) / 4. 공개키 암호시스템의 특징 및 활용(종류, 구조, 특징) / 5. 인수분해 기반 공개키 암호방식 / 6. 이산로그 기반 공개키 암호방식
이 노트를 다 읽으면
- 평문 · 암호문 · 키 · 암호화 · 복호화 · 암호 해독을 정확히 말하고, 치환과 전치 를 구별할 수 있다.
- 공격자가 무엇을 손에 쥐었는지로 암호문 단독 · 기지 평문 · 선택 평문 · 선택 암호문 공격을 가를 수 있다.
- 블록 ↔ 스트림 , Feistel ↔ SPN 으로 대칭키 알고리즘을 분류하고, DES · AES · SEED · ARIA · HIGHT · LEA의 블록 크기 · 키 길이 · 라운드 수 를 표로 말할 수 있다.
- ECB · CBC · CFB · OFB · CTR · GCM 을 IV · 패딩 · 병렬 처리 · 오류 전파로 구별할 수 있다.
- RSA의 키 생성과 암 · 복호화를 직접 계산 할 수 있다.
- 공개키 알고리즘을 소인수분해 기반 (RSA · Rabin)과 이산대수 기반 (DH · ElGamal · DSA · ECC)으로 즉시 분류할 수 있다.
- RSA-OAEP 가 왜 필요한지, 하이브리드 암호 가 왜 쓰이는지 설명할 수 있다.
0. 이 노트의 판별 축
| # | 축 | 왼쪽 (0) | 오른쪽 (1) | 이 축으로 갈리는 것 | 큰 축 (README 5장) |
|---|---|---|---|---|---|
| 1 | 키가 몇 개인가 | 대칭키 (암호화 키 = 복호화 키) | 공개키 (공개키 · 개인키 쌍) | AES · SEED ↔ RSA · ECC | ⑤ 대칭 ↔ 비대칭 |
| 2 | 얼마씩 처리하나 | 블록 단위 | 비트 · 바이트 단위 | AES · DES ↔ RC4 · LFSR | 블록 ↔ 스트림 (⑤의 파생) |
| 3 | 라운드를 어떻게 짜나 | 절반만 바꾸고 좌우 교환 (Feistel) | 블록 전체를 치환 · 순열 (SPN) | DES · SEED ↔ AES · ARIA | 이 노트의 축 |
| 4 | 어떤 수학 문제에 기대나 | 소인수분해 | 이산대수 | RSA · Rabin ↔ DH · ElGamal · DSA · ECC | 이 노트의 축 |
| 5 | 공격자가 무엇을 가졌나 | 암호문만 · 평문-암호문 쌍 (수동적) | 평문 · 암호문을 골라 넣을 수 있음 (능동적) | 암호문 단독 · 기지 평문 ↔ 선택 평문 · 선택 암호문 | ② 수동적 ↔ 능동적 |
이 노트의 질문은 "데이터를 어떻게 남이 못 읽게 만드는가, 그리고 그 방법이 얼마나 단단한가?" 입니다. 앞에서 배운 보안의 세 목표(21번 노트) 중 기밀성 을 직접 지키는 부품이며, README 6장 탑다운 순서에서 가장 먼저 배우는 부품 입니다. 뒤의 해시(20번 노트), 인증(17번 노트), 키 분배 · 전자서명(18번 노트)이 모두 이 노트의 개념을 재료로 씁니다.
1. 암호의 기본 용어와 고전 암호
1.1 용어
| 용어 | 정의 |
|---|---|
| 평문 (Plaintext) | 암호화하기 전의 읽을 수 있는 데이터 |
| 암호문 (Ciphertext) | 암호화 결과. 키 없이는 읽을 수 없음 |
| 암호화 · 복호화 | 평문 → 암호문 / 암호문 → 평문 (정당한 키 소유자가 수행) |
| 키 (Key) | 알고리즘의 동작을 정하는 비밀값 |
| 암호 해독 · 암호 분석 (Cryptanalysis) | 키를 모르는 제3자 가 암호문에서 평문이나 키를 알아내려는 것 |
| 암호 시스템의 구성 | 평문 공간 · 암호문 공간 · 키 공간 · 암호화 알고리즘 · 복호화 알고리즘 |
케르크호프스 원리 — 암호 시스템의 안전성은 알고리즘의 비밀이 아니라 키의 비밀 에 의존해야 한다. 그래서 AES · SEED 같은 현대 알고리즘은 모두 공개되어 있습니다.
암호화 ↔ 인코딩 ↔ 해시 — 셋은 다른 범주입니다.
| 되돌릴 수 있나 | 키가 필요한가 | 목적 | 예 | |
|---|---|---|---|---|
| 암호화 | ⭕ (키로) | ⭕ | 기밀성 | AES, RSA |
| 인코딩 | ⭕ (누구나) | ❌ | 형식 변환 | Base64, URL 인코딩 |
| 해시 | ❌ (일방향) | ❌ | 무결성 확인 | SHA-256 (20번 노트) |
1.2 치환과 전치
치환 (Substitution) — [암호 기본 변환]인데, [ 문자(비트)를 다른 문자로 바꾼다 ]는 점에서 위치만 바꾸는 전치와 구별된다. → 혼돈 (Confusion: 키와 암호문의 관계를 복잡하게) 전치 (Transposition) — [암호 기본 변환]인데, [ 문자는 그대로 두고 순서를 섞는다 ]는 점에서 치환과 구별된다. → 확산 (Diffusion: 평문 한 비트의 영향을 암호문 전체로 퍼뜨림)
현대 블록 암호는 치환과 전치를 여러 라운드 반복 하는 곱 암호 (Product Cipher)입니다.
| 고전 암호 | 종류 | 핵심 |
|---|---|---|
| 시저 암호 | 단일 치환 | 알파벳을 k칸 밀기 (원래 k = 3). 키가 25개뿐 → 전수 조사로 즉시 해독 |
| ⚠️ ROT13 (신규 범위) | 단일 치환 (시저의 k = 13) | 알파벳 26자의 절반만큼 밀기 → 암호화와 복호화가 같은 연산 (두 번 하면 원문). 보안용이 아니라 스포일러 가리기 수준 |
| 비즈네르 암호 | 다중 치환 | 키워드 글자마다 다른 칸 수로 밀기 |
| 플레이페어 암호 | 다중 문자 치환 | 두 글자씩 5×5 표로 치환 |
| 스키테일 · 행렬 전치 | 전치 | 막대에 감거나 표의 열 순서를 바꿔 읽기 |
단일 치환 암호는 빈도 분석 (통계적 분석 — 영어에서 E가 가장 많이 나오는 성질 이용)으로 해독됩니다.
일회용 패드 (One-Time Pad, 버냄 암호) — [스트림 암호]인데, [ 평문과 같은 길이의 완전 난수 키를 단 한 번만 XOR한다 ]는 점에서 짧은 키로 키스트림을 만드는 일반 스트림 암호와 구별된다. 이론적으로 완전 안전 하지만 키 분배 · 관리가 현실적으로 불가능합니다. 키를 재사용하면 바로 깨집니다.
📝 기출 포인트 — "대칭 암호의 기본 변환 원리 = 치환 · 전치", "단순 치환 암호 해독법 = 통계적 분석", ROT13 (2024 신규), 일회용 패드의 특성(2017 · 2018).
2. 암호 공격 ⭐
2.1 공격자가 가진 정보로 나누기
| 공격 | 공격자가 가진 것 | 난이도 (공격자 입장) |
|---|---|---|
| 암호문 단독 공격 (COA) | 암호문만 | 가장 어려움 |
| 기지 평문 공격 (KPA) | 이미 알려진 평문-암호문 쌍 몇 개 | ↓ |
| 선택 평문 공격 (CPA) | 공격자가 고른 평문 을 암호화한 결과를 얻을 수 있음 (암호화 장치를 잠시 사용) | ↓ |
| 선택 암호문 공격 (CCA) | 공격자가 고른 암호문 을 복호화한 결과를 얻을 수 있음 (복호화 장치를 잠시 사용) | 공격자에게 가장 유리 |
💡 구별 요령 — "알려진(Known)"은 이미 손에 들어온 것 , "선택(Chosen)"은 공격자가 골라 넣을 수 있는 것 입니다. 기지 평문은 수동적, 선택 평문 · 선택 암호문은 능동적(축 5)입니다.
2.2 블록 암호에 대한 대표 공격
| 공격 | 정의 (유 + 종차) | 공격 모델 |
|---|---|---|
| 전수 조사 (Brute Force) | [암호 공격]인데, [ 가능한 모든 키를 대입한다 ]는 점에서 구조의 약점을 이용하는 분석 공격과 구별된다 | 키 길이가 길수록 불가능해짐 (키가 1비트 늘면 시간 2배) |
| 차분 공격 (Differential) | [분석 공격]인데, [ 두 평문의 차이가 암호문의 차이로 어떻게 전파되는지 통계적으로 분석한다 ]는 점에서 선형 근사식을 쓰는 선형 공격과 구별된다 | 선택 평문 공격. Biham · Shamir |
| 선형 공격 (Linear) | [분석 공격]인데, [ 평문 · 암호문 · 키 비트 사이의 선형 근사식을 찾는다 ]는 점에서 차분 공격과 구별된다 | 기지 평문 공격. Matsui, DES에 적용 |
| 중간 일치 공격 (Meet-in-the-Middle) | 이중 암호화를 양쪽에서 계산해 중간값을 맞춤 | 그래서 2중 DES는 쓰지 않고 3중 DES를 씀 |
| 부채널 공격 (Side Channel) | [공격]인데, [ 알고리즘이 아니라 구현 장치의 전력 소비 · 시간 · 전자파를 측정한다 ]는 점에서 수학적 분석 공격과 구별된다 | 스마트카드 · IoT |
필요한 최소 키 길이 계산 — "모든 키를 시험하는 시간 ≥ 보호해야 하는 기간"이 되어야 합니다.
2^k ÷ (초당 시험 횟수) ≥ 보호 기간(초) → k ≥ log2(초당 시험 횟수 × 보호 기간)
예) 초당 2^30개를 시험하는 공격자, 1년 ≈ 2^25초 보호 → k ≥ 30 + 25 = 55비트 이상
📝 기출 포인트 — 공격 유형 정의(선택 평문 · 기지 평문 · 선택 암호문)가 거의 매 회차 나오고, 차분 공격("평문 차이 기반")도 4회. 2025년에는 전수조사 속도와 보호 기간으로 최소 키 비트를 계산 하는 문항이 나왔습니다. 2023년에는 부채널 공격.
3. 대칭키 암호 ⭐⭐
3.1 대칭키 암호의 성격
대칭키 암호 — [암호 방식]인데, [ 암호화와 복호화에 같은 비밀키를 쓴다 ]는 점에서 공개키 · 개인키 쌍을 쓰는 공개키 암호와 구별된다.
| 대칭키 | 공개키 | |
|---|---|---|
| 속도 | 빠름 (대용량 처리에 적합) | 느림 (대칭키의 수백~수천 배) |
| 키 수 (n명) | n(n-1)/2 | 2n |
| 키 배송 | 문제 있음 (18번 노트) | 공개키는 공개해도 됨 |
| 부인방지 · 서명 | ❌ (양쪽이 같은 키) | ⭕ |
| 대표 | DES, 3DES, AES, SEED, ARIA, LEA, HIGHT, IDEA, RC4 | RSA, Rabin, ElGamal, ECC, DSA |
⚠️ 반례 — "대칭키 암호는 대용량 데이터 처리에 느리다"는 틀린 설명입니다(2024). Diffie-Hellman은 대칭키 알고리즘이 아닙니다 (키 합의 프로토콜).
3.2 블록 암호 ↔ 스트림 암호
| 블록 암호 | 스트림 암호 | |
|---|---|---|
| 처리 단위 | 고정 크기 블록 (64 · 128비트) | 비트 · 바이트 |
| 원리 | 라운드 함수 반복 (치환 + 전치) | 키로 키스트림 을 만들어 평문과 XOR |
| 패딩 | 마지막 블록을 채우는 패딩 필요 (운영 모드에 따라) | 필요 없음 |
| 속도 · 구현 | 상대적으로 복잡 | 빠르고 하드웨어 구현 간단, 실시간 통신에 적합 |
| 오류 전파 | 모드에 따라 블록 단위로 퍼짐 | 해당 비트에만 영향 |
| 대표 | DES, AES, SEED, ARIA | RC4 , A5/1 (GSM), LFSR 기반, ChaCha20 |
LFSR (선형 귀환 시프트 레지스터) — 스트림 암호의 키스트림 생성기입니다. n비트 LFSR의 최대 주기는 2^n − 1 (원시 다항식을 쓸 때). 선형이라 그대로 쓰면 예측되므로 비선형 결합을 덧붙입니다. 스트림 암호의 키스트림은 주기가 길어야 하고, 같은 키스트림을 재사용하면 안 됩니다 .
📝 기출 포인트 — "블록 암호가 아닌 것 = RC4 "(2019 중복 출제), LFSR 주기 2^n − 1(2022), 블록 암호의 패딩 필요성(2024), 스트림 암호의 키스트림 관리 부담(2025).
3.3 Feistel 구조 ↔ SPN 구조
| Feistel 구조 | SPN 구조 | |
|---|---|---|
| 원리 | 블록을 좌우 절반 으로 나눠, 한쪽에 라운드 함수 결과를 XOR하고 좌우를 교환 | 블록 전체 에 치환(S-box)과 순열(P-box · 선형 변환)을 적용 |
| 라운드 함수 | 역함수가 없어도 됨 | 각 계층이 역변환 가능 해야 함 |
| 암호화 ↔ 복호화 | 같은 구조 , 라운드 키 순서만 반대 → 구현 절약 | 복호화에 역연산이 따로 필요 (ARIA는 involution 구조로 같게 만듦) |
| 라운드당 확산 | 절반씩이라 느림 → 라운드 수가 많음 | 전체를 바꿔 빠름 → 라운드 수가 적음 |
| 대표 | DES, 3DES, SEED, Blowfish, HIGHT(변형 Feistel) | AES(Rijndael), ARIA |
- LEA 는 S-box 없이 덧셈 · 회전 · XOR만 쓰는 ARX 구조 입니다. Feistel과 비슷한 형태로 설명되기도 하지만 시험에서는 "ARX · S-box 미사용 · 고속 경량"으로 기억하면 됩니다.
- IDEA 는 XOR · 모듈러 덧셈 · 모듈러 곱셈 세 연산을 섞는 구조(Lai-Massey)로, Feistel · SPN 이분법에 딱 들어맞지 않습니다.
📝 기출 포인트 — "Feistel 구조가 아닌 것 = AES · ARIA"(2018 · 2025), " SEED는 Feistel, ARIA는 SPN "(2017 · 2024 반복). 국산 둘이 서로 다른 구조라는 점이 단골 함정입니다.
3.4 알고리즘별 제원 ⭐⭐ (암기 표)
| 알고리즘 | 국적 · 연도 | 구조 | 블록 크기 | 키 길이 | 라운드 수 |
|---|---|---|---|---|---|
| DES | 미국 표준 (1977) | Feistel | 64 | 56 (패리티 포함 64) | 16 |
| 3DES | 미국 | Feistel × 3 (암호화-복호화-암호화) | 64 | 112 (키 2개) / 168 (키 3개) | 48 (16 × 3) |
| AES (Rijndael) | 미국 표준 (2001) | SPN | 128 | 128 / 192 / 256 | 10 / 12 / 14 |
| IDEA | 스위스 | Lai-Massey (혼합 연산) | 64 | 128 | 8 (+ 출력 변환) |
| SEED | 한국 KISA (1999) | Feistel | 128 | 128 (SEED-256은 256) | 16 (SEED-256은 24) |
| ARIA | 한국 (2004) | SPN (involution) | 128 | 128 / 192 / 256 | 12 / 14 / 16 |
| HIGHT | 한국 (2005) | 변형 Feistel, 8비트 단위 연산 | 64 | 128 | 32 |
| LEA | 한국 (2013) | ARX (S-box 없음) | 128 | 128 / 192 / 256 | 24 / 28 / 32 |
🔍 읽는 포인트
- 블록이 64비트인 것 : DES · 3DES · IDEA · HIGHT . 나머지는 128비트.
- AES · ARIA · LEA 는 키 길이 세 종류 128/192/256을 지원하고, 키가 길수록 라운드가 늘어납니다. 라운드만 외우면 됩니다: AES 10-12-14 , ARIA 12-14-16 , LEA 24-28-32 .
- HIGHT 는 RFID · 센서 같은 초경량 저전력 환경용, LEA 는 모바일 · 클라우드 · 빅데이터처럼 고속 + 경량 환경용입니다.
- 국산 블록 암호 네 개(SEED · ARIA · HIGHT · LEA)는 모두 대칭키 블록 암호 입니다. "공개키 방식"이라는 보기는 틀립니다(2024).
KISA 관점 — KISA 「암호 알고리즘 및 키 길이 이용 안내서」(2018)는 국내 권고 대칭키 블록 암호로 SEED · HIGHT · ARIA · LEA 를 듭니다. 국가정보원 암호모듈 검증제도(KCMVP)의 검증 대상 블록 암호도 이 네 개이며, 검증 대상 알고리즘은 112비트 이상의 보안 강도 를 요구합니다. 정확한 현행 목록은 시험 전 KCMVP 공지에서 확인하세요.
📝 기출 포인트 — ARIA(6회) , AES(4회), DES 구조 · 라운드, "국내 개발 암호가 아닌 것", " 블록 암호별 라운드 수 비교 (IDEA · AES · DES · SEED · 3DES)"(2025), "AES-128 라운드 수"(2025), "LEA · HIGHT 용도 구분"(2025). 위 표가 그대로 정답 근거입니다.
3.5 블록 암호 운영 모드 ⭐⭐
운영 모드 — [블록 암호의 사용 방식]인데, [ 블록 크기보다 긴 데이터를 여러 블록으로 나눠 처리할 때 블록끼리 어떻게 연결하는지 를 정한다]는 점에서 알고리즘 자체(AES 등)와 구별된다.
IV (초기화 벡터) — 첫 블록 처리에 쓰는 값. 같은 평문 · 같은 키라도 IV가 다르면 암호문이 달라집니다. 비밀일 필요는 없지만 예측 불가(CBC) 또는 재사용 금지(CTR · OFB) 여야 합니다.
| 모드 | 원리 | IV | 패딩 | 병렬 처리 | 오류 전파 | 한 줄 특징 |
|---|---|---|---|---|---|---|
| ECB | 블록마다 독립 암호화 | 없음 | 필요 | 암 · 복호 모두 ⭕ | 해당 블록만 | 같은 평문 블록 → 같은 암호문 블록 . 패턴 노출 · 블록 재배열 · 재전송에 취약. 가장 단순, 권장 안 함 |
| CBC | 앞 암호문 블록과 XOR 후 암호화 | 필요 | 필요 | 암호화 ❌ / 복호화 ⭕ | 암호문 1블록 손상 → 평문 2블록 영향 | 가장 널리 쓰인 기본 모드 |
| CFB | 앞 암호문을 암호화한 출력과 평문 XOR | 필요 | 불필요 | 암호화 ❌ / 복호화 ⭕ | 손상 비트 + 다음 블록 | 블록 암호를 스트림처럼 (자기 동기) |
| OFB | 암호화 출력을 다시 암호화해 키스트림 생성, 평문과 XOR | 필요 | 불필요 | ❌ (키스트림은 미리 계산 가능) | 해당 비트만 | 블록 암호를 스트림처럼 . 오류가 퍼지지 않아 위성 · 잡음 채널에 유리 |
| CTR | 카운터 를 암호화해 키스트림, 평문과 XOR | Nonce + 카운터 | 불필요 | 암 · 복호 모두 ⭕ | 해당 비트만 | 스트림처럼 + 병렬 + 임의 위치 접근. 카운터 값은 난수가 아니라 순서대로 증가하는 값 |
| GCM | CTR 암호화 + GHASH 인증 | Nonce | 불필요 | ⭕ | — | 인증 암호화 (AEAD) : 기밀성 + 무결성을 한 번에. TLS 1.3에서 주로 사용 |
| (CCM) | CTR 암호화 + CBC-MAC 인증 | Nonce | — | — | — | 인증 암호화. GCM과 함께 나옴 |
💡 암기 요령 — 스트림처럼 동작하는 모드 = CFB · OFB · CTR (패딩 불필요). IV가 없는 모드 = ECB 하나 . 병렬 암호화가 되는 모드 = ECB · CTR .
📝 기출 포인트 — 운영 모드(7회 이상) 가 G2.1 최빈출. "스트림처럼 동작하는 모드"(2013 · 2014 · 2017), " IV를 쓰지 않는 모드 = ECB "(2025 연속 2회), "CBC 오류 전파 2블록", "CBC 복호화 병렬 가능", " CTR의 키스트림이 난수라는 틀린 설명 "(2024), "그림 보고 모드 식별", CCM과 GCM 구분(2022).
4. 공개키 암호 ⭐⭐
4.1 공개키 암호의 성격
공개키 암호 — [암호 방식]인데, [ 누구나 아는 공개키로 암호화하고 소유자만 가진 개인키로 복호화하며, 공개키에서 개인키를 계산하기 어려운 수학 문제에 기댄다 ]는 점에서 같은 키를 공유하는 대칭키 암호와 구별된다. 1976년 Diffie-Hellman이 개념을, 1978년 RSA가 첫 실용 알고리즘을 냈습니다.
공개키 암호가 필요한 이유는 대칭키가 못 하는 세 가지, 키 배송 · 사용자 인증 · 부인방지(전자서명) 입니다. 단점은 느리다 는 것입니다.
| 키 사용 방향 | 얻는 것 |
|---|---|
| 수신자 공개키 로 암호화 → 수신자 개인키로 복호화 | 기밀성 |
| 송신자 개인키 로 서명 → 송신자 공개키로 검증 | 인증 · 무결성 · 부인방지 (18번 노트) |
4.2 수학적 기반에 따른 분류 ⭐
| 기반 문제 | 알고리즘 |
|---|---|
| 소인수분해 (n = p × q에서 p, q 찾기) | RSA, Rabin (그리고 이차잉여 문제 기반의 확률적 암호 Goldwasser-Micali) |
| 이산대수 (g^x mod p에서 x 찾기) | Diffie-Hellman, ElGamal, DSA, Schnorr, KCDSA |
| 타원곡선 이산대수 | ECC (ECDH, ECDSA, EC-KCDSA) |
| 기타 | 배낭 문제(Knapsack, Merkle-Hellman), 오류 정정 부호(McEliece) |
💡 "소인수분해 = R 로 시작하는 둘( R SA · R abin)", 나머지 대부분은 이산대수입니다. ECC도 이산대수 계열 (타원곡선 위의 이산대수)입니다.
📝 기출 포인트 — "이산대수 기반이 아닌 것"(6회 이상) 정답은 거의 항상 RSA 또는 Rabin . 2024 · 2025년에는 "소인수분해 기반과 ECC 구분"이 신규 유형으로 연속 출제.
4.3 RSA ⭐
RSA — [공개키 암호]인데, [ 큰 수 n = p × q의 소인수분해가 어렵다는 것 에 안전성을 둔다]는 점에서 이산대수에 기대는 ElGamal과 구별된다. 암호화와 전자서명을 모두 할 수 있습니다.
키 생성과 암 · 복호화
① 큰 소수 p, q 선택 → n = p × q
② φ(n) = (p-1)(q-1)
③ e 선택: 1 < e < φ(n), gcd(e, φ(n)) = 1 → 공개키 (e, n)
④ d 계산: e × d ≡ 1 (mod φ(n)) → 개인키 (d, n)
암호화: C = M^e mod n 복호화: M = C^d mod n
계산 예 (p = 3, q = 11)
| 단계 | 계산 | 값 |
|---|---|---|
| n | 3 × 11 | 33 |
| φ(n) | 2 × 10 | 20 |
| e | gcd(3, 20) = 1 | 3 |
| d | 3 × d ≡ 1 (mod 20) → 3 × 7 = 21 | 7 |
| 암호화 (M = 4) | 4^3 mod 33 = 64 mod 33 | C = 31 |
| 복호화 | 31^7 mod 33 | M = 4 (원래 평문) |
🔍 읽는 포인트 : 공개키 (e, n) = (3, 33)과 C만 주어지고 평문을 구하라면, n을 소인수분해해 φ(n)과 d를 먼저 구하는 순서로 풉니다. 작은 수 문제는 이 절차를 그대로 따라 하면 됩니다.
4.4 Rabin · ElGamal · ECC
| 알고리즘 | 기반 | 특징 |
|---|---|---|
| Rabin | 소인수분해 | C = M² mod n. 복호화하면 평문 후보가 4개 나와 그중 맞는 것을 골라야 함. 안전성이 소인수분해와 동등함이 증명 됨. 암호화가 매우 빠름 |
| ElGamal | 이산대수 | 암호화에 난수 를 써서 같은 평문도 매번 다른 암호문(확률적). 암호문이 평문의 약 2배 길이 . 서명에도 사용 |
| ECC | 타원곡선 이산대수 | 짧은 키로 같은 안전성 — 예: ECC 256비트 ≈ RSA 3072비트 수준. 모바일 · IoT · 스마트카드에 유리. ElGamal · DH · DSA를 타원곡선 위에서 구현 |
📝 기출 포인트 — Rabin(5회) : "소인수분해 기반", "복호 시 평문 후보 4개". ElGamal은 "이산대수 기반 공개키 암호", ECC는 "RSA 대비 짧은 키 · 수학적 기반"(2024 · 2025), "타원곡선 적용에 적합한 알고리즘 = ElGamal 계열"(2019).
4.5 ⚠️ 신규 범위 — RSA-OAEP
교과서 그대로의 RSA(C = M^e mod n)는 결정적 입니다. 같은 평문은 언제나 같은 암호문이 되어, 공격자가 후보 평문을 공개키로 암호화해 비교하면 내용을 맞힐 수 있고, 선택 암호문 공격에도 약합니다.
RSA-OAEP — [RSA 패딩 방식]인데, [ 암호화 전에 난수와 해시로 평문을 섞어(패딩), 같은 평문도 매번 다른 암호문이 되게 한다 ]는 점에서 결정적인 교과서 RSA와 구별된다. PKCS #1 v2 표준이며 선택 암호문 공격에 대한 안전성을 높입니다. KISA 안내서의 국내 권고 RSA 암호화 방식(RSAES)이 이 계열입니다. 서명용 패딩은 RSA-PSS 입니다.
📝 기출 포인트 — "같은 평문도 매번 다른 암호문을 만드는 RSA 패딩 = RSA-OAEP"(2025 신규). 2025년 다른 회차에서는 ECC 문항의 보기로 함께 나왔습니다.
4.6 하이브리드 암호
하이브리드 암호 (디지털 봉투) — [암호 사용 방식]인데, [ 데이터는 빠른 대칭키(세션키)로 암호화하고, 그 세션키만 수신자의 공개키로 암호화해 함께 보낸다 ]는 점에서 한 방식만 쓰는 것과 구별된다. 대칭키의 속도와 공개키의 키 배송 능력을 합친 것으로, PGP · S/MIME · TLS 가 모두 이 구조입니다.
⚠️ 하이브리드여도 "받은 공개키가 진짜 수신자의 것인가" 는 따로 확인해야 합니다(인증서 · PKI, 18번 노트).
링크 암호화 ↔ 종단간 암호화 — 링크 암호화는 구간(노드와 노드 사이) 마다 암호화해 헤더까지 숨기지만 중간 노드에서는 평문이 됩니다. 종단간 암호화는 송신자에서 수신자까지 데이터를 암호화해 중간 노드도 내용을 못 보지만 헤더(주소)는 노출됩니다.
난수와 키 보관 — 키 · IV · Nonce는 예측할 수 없어야 합니다. PRNG(의사난수 생성기) — [난수 생성기]인데, [ 짧은 시드에서 결정적 알고리즘으로 난수처럼 보이는 수열을 만든다 ]는 점에서 물리적 잡음을 쓰는 진난수 생성기(TRNG)와 구별된다. 소프트웨어로 구현되며, 암호용은 지난 출력으로 다음 값을 예측할 수 없어야 합니다(예: Hash_DRBG · HMAC_DRBG · CTR_DRBG). HSM(하드웨어 보안 모듈) 은 암호키를 하드웨어 안에 보관하고 연산도 내부에서 해 키가 밖으로 나오지 않게 하는 장치입니다.
앞으로 다시 만납니다 — 하이브리드 암호가 실제로 쓰이는 TLS 핸드셰이크 · IPsec은 10번 노트, PGP · S/MIME은 12번 노트.
5. 실기 연결
관련 수행준거 : 1-2-4 "TCP, UDP, SSL/TLS, IPSec 프로토콜의 동작절차와 취약점", 2 "취약점 점검 및 보완"(취약한 암호 사용 점검), 1-3-5 "DB 서비스와 환경 설정, 보안 기법"(DB 암호화).
| 묻는 방식 | 답안 핵심어 |
|---|---|
| ECB 모드를 쓰면 안 되는 이유 | 같은 평문 블록 → 같은 암호문 블록, 패턴 노출 , 블록 재배열 · 재전송 |
| CBC와 CTR 비교 | CBC: 이전 암호문과 XOR, IV, 패딩, 암호화 순차 / CTR: 카운터 암호화, 병렬 · 임의 접근, 패딩 불필요, Nonce 재사용 금지 |
| 하이브리드 암호 동작 | 세션키로 데이터 암호화 + 수신자 공개키로 세션키 암호화 |
| RSA 계산 | n, φ(n), d 순서로 구해 C^d mod n |
취약한 암호 설정 점검 예시 (웹 서버 TLS 설정)
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5:!RC4:!3DES
🔍 읽는 포인트 : -SSLv3 -TLSv1 -TLSv1.1 → 오래된 프로토콜 끄기. !RC4 → 취약한 스트림 암호 제외, !3DES → 64비트 블록 암호 제외(블록이 작아 장시간 사용 시 충돌 위험), !MD5 → 깨진 해시 제외, !aNULL → 인증 없는 키 교환(18번 노트의 중간자 공격) 제외. 점검 보고서에는 "취약한 알고리즘 이름 + 대체 알고리즘(AES-GCM 등)" 을 함께 씁니다.
앞으로 다시 만납니다 — 서버 설정 점검 서술은 25번 노트에서 이 표를 다시 씁니다.
6. 확인 문제
1. 공격자가 암호화 장치를 잠시 사용할 수 있어 자신이 고른 평문의 암호문을 얻는 상황의 공격은? ① 암호문 단독 공격 ② 기지 평문 공격 ③ 선택 평문 공격 ④ 선택 암호문 공격
2. 다음 중 Feistel 구조를 사용하는 블록 암호는? ① AES ② ARIA ③ SEED ④ RC4
3. 블록 크기가 64비트이고 128비트 키로 32라운드를 수행하며, RFID · 센서 같은 저전력 환경을 위해 국내에서 개발된 블록 암호는? ① LEA ② HIGHT ③ ARIA ④ SEED
4. 블록 암호 운영 모드에 대한 설명으로 옳지 않은 것은? ① ECB는 초기화 벡터를 사용하지 않는다 ② CBC는 복호화를 병렬로 처리할 수 있다 ③ CTR 모드의 카운터 값은 매 블록 새로 생성한 난수여야 한다 ④ OFB는 암호문 한 비트 오류가 평문의 같은 비트에만 영향을 준다
5. RSA에서 p = 5, q = 11, e = 3일 때 개인키 d는? ① 7 ② 13 ③ 27 ④ 37
6. 다음 중 이산대수 문제에 안전성을 두지 않는 알고리즘은? ① ElGamal ② DSA ③ Rabin ④ Diffie-Hellman
7. 교과서 RSA는 같은 평문을 항상 같은 암호문으로 만든다. 이를 보완해 난수 기반 패딩으로 매번 다른 암호문을 만들도록 한 방식은? ① RSA-PSS ② RSA-OAEP ③ ECDSA ④ ROT13
정답과 해설
| # | 정답 | 해설 (판별 축) |
|---|---|---|
| 1 | ③ | "고른 평문" = 선택 평문(축 5의 능동 쪽). ②는 이미 알려진 쌍, ④는 고른 암호문 의 복호 결과 |
| 2 | ③ | SEED는 Feistel. AES · ARIA는 SPN(축 3 반대쪽), RC4는 블록 암호가 아닌 스트림 암호(축 2) |
| 3 | ② | 64비트 블록 · 32라운드 · 초경량 = HIGHT. LEA · ARIA · SEED는 모두 128비트 블록 |
| 4 | ③ | CTR의 카운터는 겹치지 않게 증가하는 값 이면 되고 난수일 필요가 없음(재사용만 금지). ①②④는 옳음 |
| 5 | ③ | φ(n) = 4 × 10 = 40. 3 × d ≡ 1 (mod 40) → 3 × 27 = 81 = 2 × 40 + 1 → d = 27 |
| 6 | ③ | Rabin은 소인수분해 기반(축 4). 나머지는 이산대수 |
| 7 | ② | 암호화용 확률적 패딩 = OAEP. ① PSS는 서명용 패딩, ③은 서명 알고리즘, ④는 고전 치환 암호 |
부록 A. 스스로 확인하기
| # | 질문 | 답이 있는 곳 |
|---|---|---|
| 1 | 암호화 · 인코딩 · 해시의 차이는? | 1.1 |
| 2 | 치환과 전치는 각각 혼돈과 확산 중 무엇에 해당하나? | 1.2 |
| 3 | ROT13이 암호화와 복호화가 같은 이유는? | 1.2 |
| 4 | 기지 평문 공격과 선택 평문 공격의 차이는? | 2.1 |
| 5 | 차분 공격과 선형 공격은 각각 어떤 공격 모델인가? | 2.2 |
| 6 | 보호 기간과 공격 속도로 최소 키 길이를 구하는 식은? | 2.2 |
| 7 | 대칭키가 공개키보다 나은 점과 못한 점은? | 3.1 |
| 8 | n비트 LFSR의 최대 주기는? | 3.2 |
| 9 | Feistel에서 라운드 함수가 역함수일 필요가 없는 이유는? | 3.3 |
| 10 | SEED와 ARIA의 구조 차이는? | 3.3, 3.4 |
| 11 | 64비트 블록 알고리즘 네 개는? AES · ARIA · LEA의 라운드는? | 3.4 |
| 12 | 스트림처럼 동작하는 운영 모드 세 개와 IV가 없는 모드는? | 3.5 |
| 13 | CBC에서 암호문 한 블록이 손상되면 평문 몇 블록이 영향을 받나? | 3.5 |
| 14 | 소인수분해 기반 알고리즘 두 개는? | 4.2 |
| 15 | RSA 키 생성 네 단계는? | 4.3 |
| 16 | Rabin 복호의 평문 후보 수와 ECC의 장점은? | 4.4 |
| 17 | RSA-OAEP가 해결하는 문제는? | 4.5 |
| 18 | 하이브리드 암호에서 세션키는 어떤 키로 암호화하나? | 4.6 |
부록 B. 자주 하는 실수 · 함정
| 실수 | 바로잡기 |
|---|---|
| "암호 해독 = 정당한 수신자의 복호화" | ❌ 해독은 키 없는 제3자 의 분석 |
| "Base64로 바꾸면 암호화된 것" | ❌ 인코딩은 누구나 되돌림 |
| "선형 공격은 선택 평문 공격" | ❌ 선형 = 기지 평문 , 차분 = 선택 평문 |
| "대칭키 암호는 대용량에 느리다" | ❌ 대칭키가 빠름 |
| "RC4는 블록 암호" | ❌ RC4는 스트림 암호 |
| "SEED와 ARIA는 둘 다 SPN" | ❌ SEED = Feistel , ARIA = SPN |
| "AES는 Feistel 구조" | ❌ AES는 SPN (DES가 Feistel) |
| "AES 블록은 키 길이에 따라 128/192/256" | ❌ AES 블록은 항상 128 . 키만 128/192/256 |
| "HIGHT 블록은 128비트" | ❌ HIGHT는 64비트 블록 |
| "국산 암호 LEA는 공개키 방식" | ❌ SEED · ARIA · HIGHT · LEA 모두 대칭키 블록 암호 |
| "ECB도 IV가 있다" | ❌ IV가 없는 유일한 모드 |
| "CTR의 카운터는 난수" | ❌ 증가하는 값. 재사용만 금지 |
| "ECC는 소인수분해 기반" | ❌ ECC는 타원곡선 이산대수 |
| "Diffie-Hellman은 대칭키 알고리즘" | ❌ 공개키 기반 키 합의 프로토콜 |
| "RSA-OAEP는 서명용" | ❌ OAEP는 암호화용 , 서명용은 PSS |
부록 C. AI · NotebookLM 복습 프롬프트
이 19번 노트만 근거로 4지선다 8문제를 내줘. 노트 밖 지식은 쓰지 마.
"암호 공격 유형", "Feistel·SPN 분류", "국산·해외 블록 암호 제원 표", "운영 모드 비교",
"RSA 계산", "소인수분해·이산대수 분류"는 반드시 포함하고, 계산 문제를 1개 넣어줘.
내가 답하면 채점하고, 틀린 보기가 왜 틀렸는지 노트의 판별 축과 절 번호로 설명해줘.
LangTailor