인터페이스 구현 (보안)
목차 21
인터페이스를 구현해 운영 환경으로 내보내기 전, 데이터가 흐르는 송수신 통신 구간을 봉인하는 보안을 잡는다. 핵심 질문은 하나 — "어느 계층에서 무엇으로 막는가." 네트워크(IPSec·3계층) → 전송(SSL/TLS·4계층 위) → 애플리케이션(API·7계층) 세 겹을 한 단계씩 봉인하고, 끝에 개발 단계 보안(시큐어 코딩·대표 웹 공격)을 맛보기로 짚는다. 한 계층이 뚫려도 다음이 막는 다층 방어(Defense in Depth) 가 큰 그림이다. 2과목 마지막 단원이며, IPSec AH·ESP·계층 비교가 매년 빠지지 않는 정조준 빈출이다.
핵심 암기: IPSec 두 프로토콜 AH=무인 / ESP=기무인(암호화는 무조건 ESP) · IPSec 두 모드 터·전(터널=전체+새 IP / 전송=페이로드만) · 적용 계층 IPSec=3계층(AH·ESP) / SSL=4계층 위(브라우저) · 시큐어 코딩 7원칙 입보시에코캡A · 입력 검증 화이트=안전 / 블랙=위험 · 웹 공격 XSS=실행 / CSRF=위조
송수신 보안의 출발 — 위협과 4중 방어선
송수신 4대 위협 + 보안 3요소(CIA) ·송수신 보안·
[정의] 통신선이 노출되는 순간 데이터는 네트워크 위를 평문으로 흘러간다. 그 흐름을 노리는 위협이 정확히 네 가지이고, 각 위협이 깨뜨리는 보안 요소가 시험의 평가 잣대다.
[표] 송수신 4대 위협 — 무엇을 노리고, 무엇을 깨뜨리나.
| 위협 | 영문 | 노리는 것 | 침해 요소 |
|---|---|---|---|
| 스니핑 | Sniffing | 송수신 데이터 도청(엿보기) | 기밀성 |
| 변조 | Modification | 데이터 무단 수정 | 무결성 |
| 재전송 | Replay | 가로챈 패킷을 그대로 재발송 | 무결성·인증 |
| 가로채기(MITM) | Man-in-the-Middle | 중간자가 끼어들어 양쪽 행세 | 기밀성+무결성 |
[정의] 보안 3요소 = CIA — 이 단원 전체의 잣대.
| 요소 | 영문 | 한 줄 정의 |
|---|---|---|
| 기밀성 | Confidentiality | 권한 없는 자가 못 보게(암호화) |
| 무결성 | Integrity | 변조되지 않게(검증) |
| 가용성 | Availability | 필요할 때 쓸 수 있게 |
💡 일반 우편(평문)은 누구든 편지를 펼쳐보고(스니핑), 뜯어 바꿔 다시 봉인하고(변조), 같은 편지를 또 보낼 수 있다(재전송). 가짜 우체부가 양쪽에서 가로채 친구인 척하면(MITM) 봉인·신원이 동시에 무너진다.
🔑 암기 보안 3요소 = CIA(기밀성·무결성·가용성). AH·ESP·TLS가 각자 이 셋 중 무엇을 지키는지가 19강의 축. ⚠️ 함정 '도청·엿보기'→스니핑 / '수정·변조'→변조 / '재발송'→Replay / '중간자·양쪽 행세'→MITM. 4쌍 매칭을 뒤바꾸는 함정이 단골. 🎯 빈출 위협↔침해 요소 매칭, CIA 정의 매칭이 간헐 출제. 본격 공격 유형은 5과목 49·50강.
인터페이스 보안 4대 영역 — 계층별 4중 방어 ·송수신 보안·
[정의] 4대 위협을 막는 방어선은 OSI 계층별로 4대 영역으로 나뉜다. 19강은 ①·②·③을 본격으로 다루고, ④ DB 보안은 3과목 데이터베이스 단원으로 위임한다.
[표] 어느 계층에서 무엇으로 막는가 — 4중 방어선.
| 계층 | 영역 | 대표 기술 | 보호 대상 |
|---|---|---|---|
| ① 3계층(네트워크) | 네트워크 보안 | IPSec(AH·ESP) | IP 패킷 자체 |
| ② 4~7계층(전송) | 전송 보안 | SSL/TLS, SSH | 종단간 세션 |
| ③ 7계층(응용) | 애플리케이션 보안 | WS-Security, OAuth, JWT | API 호출·메시지 |
| ④ DB 영역 | 데이터 보안 | TDE, 마스킹, 접근 통제 | 저장된 데이터(→ 3과목) |
💡 건물의 4중 보안과 같다. ① 외벽 봉인(IPSec) → ② 정문 신분증 검사·출입증 발급(SSL/TLS) → ③ 부서별 카드 키(OAuth/JWT) → ④ 금고 자물쇠(TDE). 한 단계가 뚫려도 다음이 막는 다층 방어가 모범.
⚠️ 함정 '한 계층만 강력하면 충분'→❌(4중 방어가 표준). ④ DB 보안을 19강 본격 범위로 넣으면 ❌(데이터베이스 단원). 🎯 빈출 '어느 계층에서 무엇으로 막나' 매칭. 계층↔대표 기술 짝을 뒤바꾸는 함정 주의.
① 네트워크 보안 — IPSec (3계층)
IPSec 정의 — 3계층 표준, AH·ESP·터널·전송 ·IPSec·1순위·
[정의] IPSec(IP Security) = IP 패킷 단위로 보안을 적용하는 3계층(네트워크 계층) 표준 프로토콜 집합. IETF가 표준화했고(RFC 4301), IPv6에는 기본 내장·IPv4에는 옵션으로 추가된다. 대표 용도는 VPN(사이트간·원격 접속).
[표] IPSec 한눈에.
| 항목 | 내용 |
|---|---|
| 계층 | 3계층(네트워크) |
| 두 프로토콜 | AH(Authentication Header) + ESP(Encapsulating Security Payload) |
| 두 동작 모드 | 터널 모드 + 전송 모드(터·전) |
| 부가 구성 | SA(Security Association·보안 연관), IKE(Internet Key Exchange·키 교환) |
| 대표 용도 | VPN(사이트간·원격 접속) |
[흐름] 왜 등장했나 — TCP/IP는 원래 보안을 고려하지 않아 평문이 그대로 흐른다. 응용 단(HTTPS)에서 막으면 모든 앱이 각자 보안을 구현해야 해 비효율적이다. "차라리 IP 계층에서 한 번에 봉인하자" 가 IPSec의 발상.
💡 IPSec은 IP 패킷을 통째로 봉인 트럭에 싣는 방식. 봉인을 어떻게 하느냐가 AH·ESP, 어디까지 하느냐가 터널·전송으로 갈린다.
🔑 암기 IPSec = 3계층 · AH·ESP · 터·전 · VPN. ⚠️ 함정 'IPSec은 7계층 응용 프로토콜'→❌(3계층). 'IPv4에 기본 내장'→❌(IPv6 기본·IPv4 옵션). 🎯 빈출 '3계층·네트워크 계층·IP 패킷·AH·ESP·IETF'가 보이면 IPSec. 매년 한 문항 이상 보장. 📝 기출 정의 매칭형·계층 판단형. IPSec/SSL VPN은 5과목 51강 보안 솔루션에서 재등장.
★AH=무인 / ESP=기무인★ — '암호화' 보이면 무조건 ESP ·IPSec·시그니처·1순위·
[정의] IPSec의 두 프로토콜은 단 하나 — 암호화(기밀성) 유무 — 로 갈린다. AH는 암호화하지 않고, ESP는 AH의 모든 기능에 암호화까지 더한 풀세트다.
[표] 기능 비교 — 한 줄만 다르다.
| 기능 | AH | ESP |
|---|---|---|
| 무결성(Integrity) | ⭕ | ⭕ |
| 인증(Authentication) | ⭕ | ⭕ |
| 재전송 방지(Replay) | ⭕ | ⭕ |
| 기밀성(암호화) | ❌ | ⭕ |
| 두음 | 무인(무결성+인증) | 기무인(기밀성+무결성+인증) |
[표] 시험 함정 4쌍 — 빈출 1순위.
| ⚠️ 함정 표현 | ✅ 정답 |
|---|---|
| 'AH가 기밀성을 보장한다' | ESP만(AH는 암호화 ❌) |
| 'ESP는 인증을 못 한다' | ESP는 다 함(AH 기능 + 암호화) |
| 'AH가 IP 패킷을 암호화한다' | 암호화 ❌(봉인 스티커지 금고 아님) |
| 'AH와 ESP는 동시에 못 쓴다' | 동시 적용 가능(현실은 대부분 ESP만) |
💡 AH = 봉투에 봉인 스티커 — 누가 뜯었는지·누가 보냈는지는 확인되지만 내용은 그대로 보인다(암호화 ❌). ESP = 봉인 스티커 붙은 금고 — 내용까지 안 보인다(암호화 ⭕). 그래서 현실의 거의 모든 IPSec VPN은 ESP를 쓴다.
🔑 암기 AH=무인 / ESP=기무인 — '암호화'가 보이면 무조건 ESP. 한 글자 차이로 정답이 갈린다. ⚠️ 함정 AH↔ESP의 기능을 뒤바꾸거나, 'AH도 암호화'로 끼워넣는 함정. 암호화는 ESP만. 🎯 빈출 19강 출제 빈도 1위 카드. 부정형('옳지 않은 것')으로 ④에 'AH처럼 암호화 안 함'을 박는 패턴이 단골. 📝 기출 설명 판단형(부정·긍정) 매회 변형.
★터·전★ — 터널 모드 vs 전송 모드 ·IPSec·시그니처·
[정의] AH·ESP가 '무엇으로 봉인하느냐'라면, 모드는 '어디까지 봉인하느냐'다. 터널은 원래 IP 패킷 전체를 새 IP 헤더로 감싸고(사이트간 VPN), 전송은 페이로드만 봉인하고 원래 IP 헤더는 노출한다(호스트간 직접).
[표] 보호 범위·용도 비교.
| 모드 | 보호 범위 | 새 IP 헤더 | 대표 용도 |
|---|---|---|---|
| 터널(Tunnel) | 원래 IP 패킷 전체 | ⭕(새 헤더가 앞에 붙음) | 사이트간 VPN(게이트웨이↔게이트웨이) |
| 전송(Transport) | 페이로드만(원래 IP 노출) | ❌ | 호스트간 직접(서버↔서버) |
원본 IP 패킷
[ IP헤더 ][ TCP ][ 데이터 ]
전송 모드 — 페이로드만 봉인, 원래 IP 노출
[ IP헤더 ][ ESP ][ TCP+데이터 = 암호화 ][ ESP-T ]
터널 모드 — 전체 패킷 봉인, 새 IP로 원래 IP까지 가림
[ 새 IP헤더 ][ ESP ][ 원래 IP헤더+TCP+데이터 = 전체 암호화 ][ ESP-T ]
💡 터널 = 택배 박스를 더 큰 봉인 박스에 한 번 더 포장(받는 사람 주소=원래 IP까지 가려짐) → 회사↔회사 게이트웨이 VPN 표준. 전송 = 박스 내용물만 봉인하고 겉면(원래 IP)은 노출 → 서버↔서버 직접 통신.
🔑 암기 터·전 — 터널은 통째로(전체+새 IP), 전송은 페이로드만(원래 IP 노출). ⚠️ 함정 '전송 모드가 사이트간 VPN 표준'→❌(터널이 표준) / '터널은 페이로드만 보호'→❌(전체 패킷) / '터널이 원래 IP를 노출'→❌(새 헤더로 가림). 🎯 빈출 '원래 IP 패킷 전체 + 새 IP 헤더' 설명→터널 매칭이 단골. 모드를 뒤바꾼 함정 보기가 1순위. 📝 기출 설명 판단형(긍정).
② 전송 보안 — SSL/TLS·SSH (4계층 위)
SSL/TLS 정의 — 4계층 위, HTTPS의 핵심 ·SSL/TLS·1순위·
[정의] SSL(Secure Sockets Layer) / TLS(Transport Layer Security) = 클라이언트-서버 사이 전송 계층(4계층) 위에서 동작하는 종단간 보안 프로토콜. Netscape의 SSL을 IETF가 표준화하며 TLS로 개명했고, SSL 3.0 이하는 전부 폐기, 현재는 TLS 1.2 / 1.3 이 표준이다(현행 권장 TLS 1.3).
[표] SSL/TLS 한눈에.
| 항목 | 내용 |
|---|---|
| 계층 | 4계층 위(전송~응용 사이) |
| 현재 표준 | TLS 1.3(RFC 8446) / TLS 1.2 호환. SSL은 전부 폐기 |
| 올라가는 프로토콜 | HTTP→HTTPS, SMTP→SMTPS, FTP→FTPS |
| 포트 | 443(HTTPS), 465(SMTPS), 993(IMAPS) |
| 3대 기능 | 기밀성(암호화) + 무결성(MAC) + 인증(인증서) |
| 인증 방식 | 공개키 인증서(X.509) — CA가 발급 |
[흐름] HTTPS = HTTP + TLS. 브라우저 주소창 자물쇠 아이콘은 '이 페이지는 TLS로 봉인돼 있다'는 의미. HTTPS의 'S'(Secure)를 만드는 게 TLS다.
💡 SSL/TLS는 VIP 라운지 입장 절차와 같다. ① 입구에서 신분증(인증서) 확인 → ② 출입증(세션 키) 발급 → ③ 라운지 안 대화는 외부에 안 들리게 차폐(암호화).
🔑 암기 SSL/TLS = 4계층 위 · X.509 인증서 · 443 · 기밀성+무결성+인증. ⚠️ 함정 'SSL/TLS는 3계층'→❌(4계층 위 · 3계층은 IPSec). 'SSL이 현재 표준'→❌(TLS 1.2/1.3, SSL은 폐기). 🎯 빈출 '4계층·HTTPS·X.509·443'이 보이면 SSL/TLS. 계층·포트 매칭이 단골.
TLS 핸드셰이크 4단계 — 비대칭키 + 대칭키 결합 ·SSL/TLS·
[정의] TLS는 통신 시작 전 핸드셰이크 4단계로 신원 확인과 키 합의를 끝낸 뒤, 본 통신을 암호화한다. '4단계 순서'와 '단계별 역할'이 단골 출제.
[클라이언트] [서버]
① ─► ClientHello : 지원 암호 알고리즘 목록 제시
② ◄─ ServerHello + 서버 인증서(X.509)
③ ─► 인증서 검증 + 세션 키 교환(RSA/DHE)
④ ◄► Finished : 이후 모든 통신을 대칭키로 암호화
[표] 단계별 역할.
| 단계 | 무엇이 일어나나 | 보안 요소 |
|---|---|---|
| ① ClientHello | 클라→서버: 내가 지원하는 암호 알고리즘 목록 | (협상) |
| ② ServerHello+인증서 | 서버→클라: 이 알고리즘 쓰자 + 내 신분증 | 인증 |
| ③ 키 교환 | 비대칭키로 대칭키(세션 키)를 안전하게 합의 | 기밀성 |
| ④ Finished+암호화 | 합의된 대칭키로 본 통신 암호화 시작 | 기밀성+무결성 |
[흐름] 핵심 통찰 — 비대칭키 + 대칭키 결합. 비대칭키는 안전하지만 느리고, 대칭키는 빠르지만 키 분배가 어렵다. TLS는 비대칭키로 세션 키를 안전하게 합의한 뒤, 본 통신은 빠른 대칭키로 암호화해 둘의 장점만 쓴다. (TLS 1.3은 핸드셰이크가 1-RTT로 단축)
🔑 암기 핸드셰이크 = ClientHello → ServerHello+인증서 → 키 교환 → Finished. 키는 비대칭으로 합의·대칭으로 통신. ⚠️ 함정 '핸드셰이크는 한 번에 끝난다'→❌(여러 단계) / 'TLS는 대칭키만 쓴다'→❌(비대칭+대칭 결합). 🎯 빈출 4단계 순서·비대칭+대칭 결합 통찰이 단골. 대칭/비대칭의 역할(분배 vs 통신)을 뒤바꾸는 함정.
HTTPS 자물쇠 — 보장 vs ❌ 보장(피싱도 자물쇠 가능) ·SSL/TLS·
[정의] 브라우저 자물쇠 아이콘이 무엇을 보장하고 무엇은 보장하지 않는지 — 이 경계가 시험 함정의 단골이다.
[표] 자물쇠가 보장하는 것.
| 보장 | 의미 |
|---|---|
| 이 사이트는 진짜 그 도메인이 맞다 | CA 인증서 검증(인증) |
| 요청·응답이 암호화돼 있다 | 중간자가 봐도 평문 ❌(기밀성) |
| 요청·응답이 변조되지 않았다 | MAC으로 검증(무결성) |
[흐름] ❌ 보장하지 않는 것 — '이 사이트가 안전한 사이트다'는 보장이 아니다. 피싱 사이트도 무료 인증서로 자물쇠를 띄울 수 있다. 자물쇠는 '통신 구간'만 보장하지, 사이트 자체의 신뢰성은 보장하지 않는다.
💡 HTTPS 자물쇠는 '이 편지가 봉인된 채 도착했다'는 도장이지, '보낸 사람이 좋은 사람'이라는 보증이 아니다. 봉인(통신 구간)과 신뢰성(사이트 자체)은 별개.
🔑 암기 HTTPS 보장 = 기밀성·무결성·서버 인증(통신 구간). 사이트 신뢰성은 ❌. ⚠️ 함정 'HTTPS면 무조건 안전한 사이트'→❌(피싱도 HTTPS) / 'HTTPS가 DB도 보호'→❌(통신 구간만) / 'HTTPS만 쓰면 입력값 공격 차단'→❌(코드 단계 검증 필요). 🎯 빈출 부정형('옳지 않은 것')으로 '자물쇠=안전한 사이트 보장'을 박는 패턴이 1순위. 📝 기출 설명 판단형(부정).
SSH — 22번 포트, Telnet(23) 대체 ·SSH·🌟
[정의] SSH(Secure Shell) = 원격 컴퓨터에 안전하게 접속하는 프로토콜. 평문 전송이던 Telnet(23번)을 대체했다. 빈도는 낮지만 포트 매칭(22) 으로 1점이 갈린다 — 🌟 여기만 보면 충분.
[표] SSH vs Telnet.
| 항목 | SSH | Telnet |
|---|---|---|
| 포트 | 22 | 23 |
| 암호화 | ⭕ | ❌ |
| 인증 | 비밀번호 + 공개키 | 비밀번호만 |
| 현재 사용 | 표준 | 사용 금지(보안 사고 직결) |
[흐름] 주요 용도 — 원격 로그인(ssh user@host), 원격 명령 실행, 파일 전송(SCP·SFTP), 포트 포워딩(SSH 터널링). 코드 저장소 원격 접속도 SSH 키페어(공개키·개인키) 기반.
🔑 암기 22=SSH / 23=Telnet(평문). SSH는 공개키 인증 지원. ⚠️ 함정 'Telnet은 안전한 원격 접속'→❌(평문) / 'SSH는 25번 포트'→❌(25는 SMTP). 🎯 빈출 포트 번호 매칭(22)이 간헐 출제.
★IPSec=3계층 / SSL=4계층★ — '어느 계층' 즉답 ·SSL/TLS·시그니처·1순위·
[정의] 매년 빈출 1순위 — '어느 계층이냐' 한 줄 질문이다. IPSec VPN과 SSL VPN을 한 표로 가른다.
[표] IPSec VPN vs SSL VPN.
| 구분 | IPSec VPN | SSL VPN(TLS VPN) |
|---|---|---|
| OSI 계층 | 3계층(네트워크) | 4~7계층(전송~응용) |
| 핵심 프로토콜 | AH, ESP | TLS(SSL은 폐기) |
| 클라이언트 설치 | 전용 클라이언트 필요 | 브라우저만 있으면 됨 |
| 보호 대상 | IP 패킷 전체 | 종단간 세션(HTTPS 등) |
| 주요 용도 | 사이트간 VPN, 본사-지사 | 원격 접속 VPN, 웹 기반 보안 |
💡 IPSec = 회사와 집 사이에 땅을 파 만든 지하 전용 터널(공사 큼·전 트래픽 보호·사이트간 VPN). SSL VPN = 기존 고속도로(HTTPS 443)에 그은 VIP 전용 차선(공사 간단·웹 트래픽만·브라우저 접속).
🔑 암기 IPSec=3계층(AH·ESP) / SSL=4계층 위(브라우저). AH·ESP 보이면 IPSec, 브라우저 보이면 SSL. ⚠️ 함정 'SSL/TLS는 3계층'→❌(4계층 위) / 'IPSec은 응용 계층'→❌(3계층) / 'AH·ESP는 SSL의 구성 요소'→❌(IPSec의 구성 요소). 🎯 빈출 매년 빈출 1순위. 계층을 서로 바꿔 적은 짝짓기 함정이 단골. 📝 기출 짝짓기·설명 판단형(긍정).
③ 애플리케이션 보안 — API (7계층)
SOAP WS-Security — XML 메시지 단위 보안 ·API 보안·
[정의] SOAP(Simple Object Access Protocol) = XML 기반 메시지 프로토콜. 그 보안 표준이 WS-Security다. 핵심은 메시지 단위 보안 — 통신 채널이 아니라 메시지 자체에 서명·암호화가 박혀, 중간 노드를 거쳐도 보호가 유지된다.
[표] WS-Security 구성.
| 기능 | 어떻게 |
|---|---|
| 메시지 무결성 | XML 전자서명(XML-DSig) |
| 메시지 기밀성 | XML 암호화(XML-Enc) |
| 인증·권한 | SAML, X.509 인증서, UsernameToken |
💡 TLS가 봉투 단위 봉인이라면, WS-Security는 본문 단위 봉인 — 편지 본문 자체에 도장(서명)을 찍고 본문을 암호로 적어둔다. 우체국을 여러 번 거쳐도 받는 사람이 풀 때까지 안전.
🔑 암기 WS-Security = SOAP·XML·메시지 단위(XML-DSig·XML-Enc). ⚠️ 함정 'WS-Security는 통신 채널만 보호'→❌(메시지 단위 — TLS가 채널 단위). 🎯 빈출 'XML·SOAP·메시지 단위 보안' 매칭이 간헐 출제.
REST API 보안 3축 — HTTPS + OAuth 2.0 + JWT ·API 보안·
[정의] REST API는 가볍고 단순해 모바일·웹의 표준이 됐다. 보안 3대 축이 모두 살아 있어야 안전하다 — HTTPS(통신 구간) + OAuth 2.0(권한 위임) + JWT(토큰).
[표] 3대 축.
| 보안 축 | 역할 | 표준 |
|---|---|---|
| HTTPS(TLS) | 통신 구간 암호화 | RFC 8446 |
| OAuth 2.0 | 인가(접근 권한 위임) | RFC 6749 |
| JWT(JSON Web Token) | 토큰 자체에 서명·정보 담기 | RFC 7519 |
[클라이언트] ─ [인증 서버] ─ [리소스 서버(API)]
① 클라 ─► 인증서버 : 로그인(ID/PW 또는 OAuth)
② 인증서버 ─► 클라 : 액세스 토큰(JWT) 발급
③ 클라 ─► API서버 : 호출 + Authorization 헤더에 토큰
④ API서버 : 토큰 서명 검증 + 권한 확인
⑤ API서버 ─► 클라 : 응답(HTTPS 암호화)
[표] JWT 구조 = Header.Payload.Signature — 세 부분을 점(.)으로 잇는다.
| 부분 | 담는 것 |
|---|---|
| Header | 서명 알고리즘·토큰 타입 |
| Payload | 사용자 정보 + 만료 시간(클레임) |
| Signature | 위·변조 검증용 서명 |
[흐름] JWT는 토큰 안에 정보+만료+서명이 모두 들어 자체 검증(Stateless) 이 된다. 서버가 세션 저장소를 따로 둘 필요가 없어 수평 확장이 자유롭다. 단, 서명·인코딩이지 암호화가 아니다 — Payload는 Base64 디코딩만으로 평문이 보인다(민감정보 금지).
💡 OAuth = 출입증 발급받기(외부 계정 로그인 → 권한 동의 → 액세스 토큰). JWT = 출입증 자체에 이름·층수·만료일이 적혀 있어 검문할 때마다 DB 조회가 필요 없는 구조.
🔑 암기 REST 3축 = HTTPS + OAuth + JWT. JWT = Header.Payload.Signature(서명, 암호화 ❌).
⚠️ 함정 'HTTPS 없이 OAuth만으로 안전'→❌(토큰이 평문 노출되면 탈취당해 그 권한으로 호출 가능 — HTTPS는 필수 전제) / 'JWT는 암호화 토큰'→❌(서명·인코딩) / 'OAuth 1.0이 현재 표준'→❌(2.0).
🎯 빈출 3축 매칭·JWT 구조·'서명이지 암호화 아님'이 단골.
개발 단계 보안 입문 — 시큐어 코딩 (맛보기)
시큐어 코딩 7원칙 입보시에코캡A + 입력 검증 ·시큐어 코딩·
[정의] 시큐어 코딩(Secure Coding) = 보안 취약점이 생기지 않도록 개발 단계에서부터 안전한 코딩 규칙을 적용하는 방법론. 국내는 행정안전부·KISA 가 표준 가이드를 운영(공공 SW는 전자정부법상 의무).
[표] 시큐어 코딩 7대 원칙 — 입보시에코캡A.
| 두음 | 원칙 | 한 줄 키워드 |
|---|---|---|
| 입 | 입력 데이터 검증 및 표현 | SQL 인젝션·XSS·경로 조작 |
| 보 | 보안 기능 | 인증·인가·암호화 |
| 시 | 시간 및 상태 | 경쟁 조건·세션 |
| 에 | 에러 처리 | 스택트레이스 노출 차단 |
| 코 | 코드 오류 | 정수 오버플로·NULL |
| 캡 | 캡슐화 | 접근 제어자·디버그 코드 |
| A | API 오용 | 취약 함수(strcpy·gets) |
[흐름] 가장 중요한 ① 입력 검증 — 화이트리스트 vs 블랙리스트. 화이트리스트(허용할 것만 명시 → 나머지 거부)가 안전, 블랙리스트(거부할 것만 명시)는 새 공격 패턴(제로데이)에 무력하다. 핵심 원칙은 '모든 외부 입력은 신뢰할 수 없다 → 서버 단 검증 필수'.
💡 시큐어 코딩은 요리사의 위생 수칙 — 사고 난 뒤 청소(보안 패치)보다 처음부터 위생(개발 단계 보안)이 훨씬 싸고 안전하다. 화이트리스트는 'VIP 명단에 있는 사람만 입장'이라 명단에 없는 새 인물(제로데이)도 자동 차단.
🔑 암기 입보시에코캡A(입력·보안·시간·에러·코드·캡슐·API) · 화이트=안전 / 블랙=위험. ⚠️ 함정 '빅데이터·AI·블록체인·클라우드 보안'을 7원칙에 끼워넣기→❌(일곱 글자 외엔 모두 의심). '블랙리스트가 더 안전'→❌(화이트리스트가 안전). 🎯 빈출 7원칙 소거형('해당하지 않는 것')에 신기술 키워드를 박는 함정이 단골. 📝 기출 소거/이질성형.
대표 웹 공격 — SQLi·XSS·CSRF 방어 짝꿍 ·웹 공격·
[정의] 인터페이스 구현 시 자주 만나는 대표 웹 공격과 1순위 방어를 맛보기로 짚는다. 공격마다 방어 짝꿍을 뒤바꾸는 함정이 단골 — 본격 유형·방어는 5과목 50강(웹 공격) 에서 다룬다.
[표] 공격 ↔ 1순위 방어.
| 공격 | 핵심 동작 | 1순위 방어 |
|---|---|---|
| SQL 인젝션 | 입력에 SQL 메타문자(' ; --) 삽입 |
Prepared Statement(쿼리-데이터 분리) |
| XSS | 악성 스크립트를 다른 사용자 브라우저에서 실행 | HTML 인코딩 + CSP |
| CSRF | 로그인된 사용자 권한으로 요청 위조 | CSRF 토큰 + SameSite 쿠키 |
[흐름] 결정적 차이 — XSS=실행 / CSRF=위조. 한 글자로 정답이 갈린다. SQL 인젝션의 1순위 방어는 Prepared Statement(쿼리 틀과 데이터를 분리해 입력을 명령이 아닌 문자로만 처리).
💡 SQL 인젝션은 주문서 메뉴 칸에 "주방장 비밀 레시피 갖다 줘"라고 써 넣는 것. Prepared Statement는 메뉴 칸과 수량 칸을 분리해, 명령문을 적어도 그저 문자로만 처리한다.
💡 OWASP Top 10 = 웹 애플리케이션 보안 위협 표준 목록. 접근 통제·인젝션·인증 실패가 매 개정마다 상위에 남는 단골 항목이다. 단, 순위 번호(A01·A03 등)는 개정마다 바뀌므로(최신 2025판) 번호 암기보다 개념 매칭이 핵심.
🔑 암기 SQL 인젝션→Prepared / XSS=실행→인코딩+CSP / CSRF=위조→토큰. ⚠️ 함정 'XSS 방어로 CSRF 토큰'→❌(CSRF용) / 'Prepared가 XSS를 막는다'→❌(SQL 인젝션만) / 'HTTPS만 쓰면 SQL 인젝션 차단'→❌(통신 구간만·코드 단계 검증 필요). 🎯 빈출 방어 짝꿍을 뒤바꾸는 함정이 단골. 'XSS=실행·CSRF=위조' 한 줄이 즉답 무기.
기출 다지기
[기출 1 출제] 다음 중 IPSec의 ESP(Encapsulating Security Payload)에 대한 설명으로 옳지 않은 것은? (설명 판단형·부정)
- ① 메시지의 기밀성(Confidentiality)을 제공한다.
- ② 메시지의 무결성(Integrity)을 제공한다.
- ③ 송신자의 인증(Authentication)을 제공한다.
- ④ AH와 동일하게 암호화 기능을 제공하지 않는다.
정답 및 해설 보기
정답 ④
핵심은 AH=무인 / ESP=기무인 — AH는 암호화 ❌, ESP는 암호화 ⭕. ④는 정반대 함정이다.
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 옳음 | 기밀성(암호화)은 ESP의 핵심 기능 |
| ② | 옳음 | ESP는 AH의 모든 기능 포함 |
| ③ | 옳음 | ESP는 AH의 모든 기능 포함 |
| ④ | 틀림(정답) | AH는 암호화 ❌·ESP는 암호화 ⭕(정반대) |
🔑 AH=무인 / ESP=기무인 — '암호화'가 보이면 무조건 ESP.
[기출 2 출제] 다음 중 IPSec의 터널 모드(Tunnel Mode) 에 대한 설명으로 가장 옳은 것은? (설명 판단형·긍정)
- ① 페이로드만 보호하고 원래 IP 헤더는 그대로 노출된다.
- ② 호스트와 호스트 간의 직접 통신에 주로 사용된다.
- ③ 원래 IP 패킷 전체를 보호하며, 새 IP 헤더가 추가된다.
- ④ SSL VPN의 표준 모드로 사용된다.
정답 및 해설 보기
정답 ③
핵심은 터·전 — 터널=전체 IP 패킷+새 헤더(사이트간) / 전송=페이로드만, 원래 IP 노출(호스트간).
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 오답 | 전송 모드의 설명(정반대) |
| ② | 오답 | 전송 모드의 용도(사이트간이 터널) |
| ③ | 정답 | 터널 모드의 정확한 정의 |
| ④ | 오답 | IPSec과 SSL VPN은 별개(SSL은 4계층) |
🔑 터·전 — 터널은 통째로(전체+새 IP), 전송은 페이로드만.
[기출 3 출제] 다음 중 SSL/TLS와 IPSec의 적용 계층 비교로 옳은 것은? (짝짓기·긍정)
- ① SSL/TLS는 3계층, IPSec은 4계층에서 동작한다.
- ② SSL/TLS는 4계층(전송) 위, IPSec은 3계층(네트워크)에서 동작한다.
- ③ 둘 다 7계층(응용)에서 동작한다.
- ④ SSL/TLS는 IPSec의 하위 프로토콜이다.
정답 및 해설 보기
정답 ②
핵심은 IPSec=3계층(AH·ESP) / SSL=4계층 위(브라우저).
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 오답 | 계층을 서로 바꿔 적음(정반대) |
| ② | 정답 | SSL=4계층 위·IPSec=3계층 |
| ③ | 오답 | SSL은 4계층 위·IPSec은 3계층 |
| ④ | 오답 | 독립된 별개 프로토콜 |
🔑 '어느 계층' 보이면 즉답 — AH·ESP면 IPSec(3), 브라우저면 SSL(4).
[기출 4 출제] 다음 중 TLS 핸드셰이크와 암호화 방식에 대한 설명으로 옳지 않은 것은? (설명 판단형·부정)
- ① 핸드셰이크에서 서버는 X.509 인증서로 자신의 신원을 증명한다.
- ② 비대칭키로 세션 키를 안전하게 합의한 뒤, 본 통신은 대칭키로 암호화한다.
- ③ 핸드셰이크는 단 한 번의 메시지 교환으로 즉시 완료된다.
- ④ ClientHello 단계에서 클라이언트가 지원 암호 알고리즘 목록을 제시한다.
정답 및 해설 보기
정답 ③
핸드셰이크는 ClientHello → ServerHello+인증서 → 키 교환 → Finished의 단계적 절차다(한 번에 끝나지 않음). TLS 1.3에서 1-RTT로 단축됐을 뿐 '한 메시지로 즉시 완료'는 아니다.
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 옳음 | ServerHello 단계에서 X.509 인증서 제시(인증) |
| ② | 옳음 | 비대칭=키 합의·대칭=본 통신(둘의 장점 결합) |
| ③ | 틀림(정답) | 단계적 절차(한 방에 끝나지 않음) |
| ④ | 옳음 | ClientHello = 지원 알고리즘 목록 제시 |
🔑 키는 비대칭으로 합의·대칭으로 통신. 핸드셰이크는 단계적.
[기출 5 출제] 다음 중 HTTPS(HTTP over TLS)에 대한 설명으로 옳지 않은 것은? (설명 판단형·부정)
- ① 통신 구간의 기밀성과 무결성을 보장한다.
- ② CA가 발급한 인증서로 서버의 신원을 인증한다.
- ③ 브라우저 자물쇠 아이콘은 해당 사이트가 신뢰할 수 있는 안전한 사이트임을 보장한다.
- ④ 기본 포트는 443번이다.
정답 및 해설 보기
정답 ③
자물쇠는 '통신 구간'만 보장하지, 사이트 자체의 신뢰성은 보장하지 않는다 — 피싱 사이트도 무료 인증서로 자물쇠를 띄울 수 있다.
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 옳음 | TLS의 기밀성·무결성 |
| ② | 옳음 | X.509 공개키 인증서로 서버 인증 |
| ③ | 틀림(정답) | 통신 구간만 보장·사이트 신뢰성은 ❌(피싱도 HTTPS) |
| ④ | 옳음 | HTTPS 기본 포트 443 |
🔑 HTTPS 보장 = 기밀성·무결성·서버 인증(통신 구간). 'HTTPS=안전한 사이트'는 함정.
[기출 6 출제] 다음 중 KISA·행정안전부 시큐어 코딩 가이드의 7대 원칙(보안 약점)에 해당하지 않는 것은? (소거·이질성형)
- ① 입력 데이터 검증 및 표현
- ② 보안 기능
- ③ 빅데이터 분석
- ④ 캡슐화
정답 및 해설 보기
정답 ③
핵심은 입보시에코캡A — 입력·보안·시간·에러·코드·캡슐·API. '빅데이터 분석'은 한 글자도 없다.
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 해당 | '입' — 입력 데이터 검증 및 표현 |
| ② | 해당 | '보' — 보안 기능 |
| ③ | 해당 없음(정답) | 신기술 키워드 함정 |
| ④ | 해당 | '캡' — 캡슐화 |
🔑 입보시에코캡A — 빅데이터·AI·블록체인·클라우드는 7원칙 ❌(일곱 글자 외엔 의심).
[기출 7 출제] 다음 중 웹 공격과 1순위 방어 기법의 짝으로 옳지 않은 것은? (짝짓기·부정)
- ① SQL 인젝션 — Prepared Statement
- ② XSS — HTML 인코딩 + CSP
- ③ CSRF — CSRF 토큰 + SameSite 쿠키
- ④ SQL 인젝션 — CSRF 토큰
정답 및 해설 보기
정답 ④
SQL 인젝션의 1순위 방어는 Prepared Statement다. CSRF 토큰은 CSRF 방어용 — 방어 짝꿍을 뒤바꾼 함정.
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 옳음 | SQL 인젝션 → Prepared Statement(쿼리-데이터 분리) |
| ② | 옳음 | XSS → HTML 인코딩 + CSP |
| ③ | 옳음 | CSRF → CSRF 토큰 + SameSite |
| ④ | 틀림(정답) | CSRF 토큰은 CSRF용·SQL 인젝션엔 Prepared |
🔑 SQL→Prepared / XSS=실행→인코딩+CSP / CSRF=위조→토큰.
[기출 8 출제] 다음 중 인터페이스 보안에 대한 설명으로 옳은 것은? (종합·긍정)
- ① AH(Authentication Header)는 IP 패킷의 페이로드를 암호화한다.
- ② IPSec 전송 모드는 사이트간 VPN의 표준 모드이다.
- ③ SSL/TLS는 3계층 네트워크 프로토콜이다.
- ④ SQL 인젝션의 1순위 방어 기법은 Prepared Statement이다.
정답 및 해설 보기
정답 ④
①②③은 19강 함정 단골이다.
| 선지 | 판정 | 정답 |
|---|---|---|
| ① | 오답 | AH는 암호화 ❌·ESP만 암호화 |
| ② | 오답 | 터널이 사이트간·전송은 호스트간 |
| ③ | 오답 | SSL은 4계층 위·3계층은 IPSec |
| ④ | 정답 | SQL 인젝션 1순위 방어 = Prepared Statement |
▶ 19강 종합 함정 4쌍 (시험장 직전 마지막 확인):
| # | ⚠️ 함정 표현 | ✅ 정답 |
|---|---|---|
| ① | 'AH가 암호화한다' | AH는 암호화 ❌·ESP만 ⭕ |
| ② | '전송 모드가 사이트간 VPN' | 터널이 사이트간·전송은 호스트간 |
| ③ | 'SSL/TLS는 3계층' | SSL은 4계층 위·IPSec이 3계층 |
| ④ | 'Prepared는 XSS 방어' | Prepared는 SQLi·XSS는 인코딩+CSP |
한 장 요약
[표] 19강 핵심 기둥 한 장 정리.
| 기둥 | 핵심 | 한 줄 정의 |
|---|---|---|
| ① IPSec AH·ESP | AH=무인 / ESP=기무인 | '암호화' 보이면 무조건 ESP |
| ② IPSec 모드 | 터·전 | 터널=전체+새 IP(사이트간) / 전송=페이로드만(호스트간) |
| ③ IPSec vs SSL 계층 | 3계층 / 4계층 위 | IPSec=3계층(AH·ESP) / SSL=4계층 위(브라우저) |
| ④ TLS·HTTPS | 핸드셰이크 4단계 | 비대칭 합의+대칭 통신 / 자물쇠=통신 구간만(피싱도 HTTPS) |
| ⑤ API 보안 | REST 3축 | HTTPS + OAuth + JWT(서명, 암호화 ❌) / WS-Security=메시지 단위 |
| ⑥ 시큐어 코딩 | 입보시에코캡A | 입력 검증=화이트리스트(안전) |
| ⑦ 웹 공격 | 실행 / 위조 | SQL→Prepared, XSS=실행·CSRF=위조 |
[시험장 직전 30초 카드]
① AH=무인 · ESP=기무인 — 암호화 보이면 무조건 ESP
② 터·전 — 터널=전체+새 IP(사이트간) / 전송=페이로드만(호스트간)
③ IPSec=3계층(AH·ESP) / SSL=4계층 위(브라우저)
④ TLS 핸드셰이크 4단계 = 비대칭 합의+대칭 통신 / HTTPS 자물쇠=통신 구간만
⑤ REST 3축 = HTTPS + OAuth + JWT(서명·암호화 ❌)
⑥ 시큐어 코딩 입보시에코캡A — 입력 검증=화이트리스트(안전)
⑦ SQL 인젝션→Prepared / XSS=실행 · CSRF=위조
💡 진짜 외울 두음은 단 2장 — AH=무인·ESP=기무인 / 터·전. 여기에 '어느 계층'(IPSec=3·SSL=4) 즉답만 흔들리지 않으면 19강 출제 핵심은 잡힌다. 시큐어 코딩·웹 공격은 입문 수준으로 짝꿍만 기억하고, 본격 웹 공격은 5과목 50강에서 다룬다.
