-rwxr-xr--
│└┬┘└┬┘└┬┘
│ │ │ └ 기타 사용자: r-- (4)
│ │ └ 그룹: r-x (5)
│ └ 소유자: rwx (7)
└ 파일 유형: - 파일, d 디렉터리, l 심볼릭 링크
위 예시는 754입니다. r=4, w=2, x=1을 더해 자리마다 하나의 숫자로 만듭니다.
umask
새 파일을 만들 때 기본 권한에서 뺄 값입니다.
umask
파일
디렉터리
022
644
755
027
640
750
077
600
700
파일 기본값은 666, 디렉터리 기본값은 777입니다. 파일에는 실행 권한이 처음부터 없다는 점만 기억하면 됩니다. 보안 권장값은 027입니다.
명령어
chmod 755 file, chmod u+s file, chmod o-w file
chown user:group file, chgrp group file
특수 권한
권한
숫자
표시
효과
SetUID
4000
소유자 x 자리 s
파일 소유자의 권한으로 실행
SetGID
2000
그룹 x 자리 s
파일 그룹 권한으로 실행. 디렉터리면 새 파일이 그 그룹을 상속
Sticky Bit
1000
기타 x 자리 t
디렉터리 안의 파일을 소유자(와 root)만 삭제
예: /usr/bin/passwd에는 SetUID가 걸려 있어서 일반 사용자가 변경해도 root 권한으로 /etc/shadow를 고칠 수 있습니다.
예: /tmp는 drwxrwxrwt입니다. 모두가 쓰지만 남의 파일은 못 지웁니다.
대문자 S, T는 실행 권한(x)이 없는 상태에서 특수권한만 켜졌다는 표시입니다.
점검 명령
find / -perm -4000 -type f 2>/dev/null # SetUID 파일
find / -perm -2000 -type f 2>/dev/null # SetGID 파일
find / -perm -2 -type f 2>/dev/null # 아무나 쓸 수 있는 파일
find / -nouser -o -nogroup 2>/dev/null # 소유자·그룹이 없는 파일
불필요한 SetUID root 파일은 권한 상승 경로가 되므로 제거하거나 권한을 낮춥니다.
확인 문제
umask가 027일 때 새로 만든 파일과 디렉터리의 기본 권한은?
정답 보기
파일 640, 디렉터리 750입니다. (666−027=640, 777−027=750)
shadow 파일에서 해시가 $6$로 시작하면 어떤 알고리즘인가?
정답 보기
SHA-512입니다.
파일 권한이 -rwsr-xr-x일 때 의미하는 숫자와 효과는?
정답 보기
4755입니다. 실행하면 파일 소유자의 권한으로 동작합니다.
/etc/passwd에서 UID가 0인 계정이 root 말고 더 있다면 어떤 문제가 있나?
정답 보기
그 계정이 root와 동일한 권한을 가지므로 관리자 권한이 은밀하게 공유됩니다. 점검 시 제거 또는 수정 대상입니다.
프로세스·포트 확인: ps -ef, netstat -antp, ss -antp, lsof -i
chattr와 SELinux 보강
chattr/lsattr: 파일 속성(확장 속성)을 설정·조회합니다. chattr +i(immutable)는 root도 수정·삭제·이름 변경이 불가하고, chattr +a는 추가(append)만 허용해 로그 파일 보호에 씁니다. chmod로는 막을 수 없는 변경을 막는 용도입니다.
SELinux는 리눅스의 MAC 구현입니다. 모드는 Enforcing(정책 위반을 차단·기록), Permissive(차단하지 않고 기록만), Disabled(비활성)이며 getenforce로 확인하고 setenforce 0|1로 Enforcing/Permissive를 전환합니다. 설정 파일은 /etc/selinux/config입니다.
기본 공유: C$, ADMIN$, IPC$는 관리용 숨김 공유입니다. 필요 없으면 제거합니다. 확인은 net share, 연결은 net use.
ADS(Alternate Data Streams): NTFS가 파일에 숨은 데이터를 붙일 수 있는 기능입니다. 악성코드 은닉에 악용됩니다.
로컬 보안 정책 (secpol.msc)
계정 정책: 암호 정책(최소 길이, 복잡성, 최대·최소 사용 기간, 이전 암호 기억)과 계정 잠금 정책(임계값, 기간)
로컬 정책: 감사 정책, 사용자 권한 할당, 보안 옵션
암호 복잡성은 대문자, 소문자, 숫자, 특수문자 중 3종류 이상을 요구하는 것이 일반적입니다.
이벤트 로그
로그 종류는 응용 프로그램, 보안, 시스템입니다.
이벤트 ID
의미
4624
로그온 성공
4625
로그온 실패
4634
로그오프
4672
특수 권한 할당
4688
프로세스 생성 (감사 설정 시)
4720
계정 생성
4732
보안 그룹에 멤버 추가
1102
감사 로그 삭제 (흔적 제거 의심)
로그온 유형
유형
의미
2
대화형 (콘솔 로그인)
3
네트워크 (공유 폴더 접근)
4
배치
5
서비스
7
화면 잠금 해제
10
원격 대화형 (RDP)
레지스트리
루트 키 5개: HKCR, HKCU, HKLM, HKU, HKCC
자동 실행 위치: HKLM\Software\Microsoft\Windows\CurrentVersion\Run 등. 악성코드가 재부팅 후에도 살아남으려고 쓰는 곳입니다.
대응: 원격 레지스트리 서비스 중지, 불필요한 서비스 제거
기타 보안 기능
UAC(권한 상승 시 확인), BitLocker(디스크 암호화), EFS(파일 암호화), Windows Defender, 호스트 방화벽, 패치 관리(WSUS), 화면보호기 암호.
SAM과 SYSKEY
로컬 계정의 패스워드 해시는 %SystemRoot%\system32\config\SAM에 저장됩니다. SYSKEY는 SAM에 저장된 해시를 한 번 더 암호화해 보호하는 기능으로, 오프라인 공격에 대한 보호막이었습니다(최신 윈도우에서는 제거되고 다른 방식이 대체). 시험에서는 "SAM = 로컬 계정 해시 DB, SYSKEY = 그 보호용 암호화"로 짝지어 기억합니다.
프로세스·메모리 구조, 파일시스템, 부팅 과정, 작업 스케줄링, Docker 보안 설정을 시험에 나오는 수준으로 정리합니다.
프로세스
프로세스는 실행 중인 프로그램입니다. 각 프로세스는 고유한 PID를 갖고, 부모 프로세스(PPID)가 자식을 만듭니다.
개념
설명
fork / exec
fork는 프로세스를 복제하고, exec는 복제된 프로세스의 코드를 다른 프로그램으로 교체
데몬
터미널 없이 백그라운드에서 계속 실행되는 서비스 프로세스
좀비 프로세스
종료됐지만 부모가 종료 상태를 회수하지 않아 프로세스 표에 남은 상태
고아 프로세스
부모가 먼저 종료되어 init(PID 1) 이 부모가 된 프로세스
자주 쓰는 명령과 시그널
명령
설명
ps -ef, ps aux
전체 프로세스 목록
top
실시간 자원 사용
kill -9 PID
SIGKILL: 강제 종료 (무시할 수 없음)
kill -15 PID
SIGTERM: 정상 종료 요청 (기본값)
kill -1 PID
SIGHUP: 설정 파일 다시 읽기 (데몬 재로드)
lsof, netstat -antp, ss -antp
프로세스가 연 파일과 포트 확인
프로세스 메모리 구조
높은 주소
┌──────────────┐
│ Stack │ 지역 변수, 함수 호출 정보, 복귀 주소 (아래로 성장)
│ ↓ │
│ │
│ ↑ │
│ Heap │ malloc/new로 동적 할당 (위로 성장)
├──────────────┤
│ BSS │ 초기화되지 않은 전역·정적 변수
├──────────────┤
│ Data │ 초기화된 전역·정적 변수
├──────────────┤
│ Text │ 실행 코드 (읽기 전용)
└──────────────┘
낮은 주소
Stack 오버플로우는 지역 변수 버퍼를 넘쳐 복귀 주소(Return Address) 를 덮어쓰는 공격이고, Heap 오버플로우는 동적 할당 영역을 넘치게 합니다.
방어 기법(NX/DEP, ASLR, 스택 카나리)은 1-5장을 참고하세요.
파일시스템
항목
설명
inode
파일의 메타데이터(소유자, 권한, 크기, 시간, 데이터 블록 위치)를 저장하는 구조. 파일 이름은 inode에 없고 디렉터리 항목에 있음
하드 링크
같은 inode를 가리키는 또 다른 이름 (원본 삭제해도 데이터 유지)
심볼릭 링크
경로 문자열을 저장한 별도 파일 (원본 삭제 시 깨짐)
ext4
리눅스 대표 파일시스템 (저널링)
NTFS
윈도우 파일시스템. ACL, EFS(암호화), 저널링, ADS(대체 데이터 스트림) 지원
FAT32
권한·암호화 기능이 없어 보안 기능이 약함
ADS(Alternate Data Stream): NTFS 파일에 숨겨진 데이터 스트림을 붙일 수 있어 악성코드 은닉에 악용됩니다.
리눅스에서 mount 시 noexec, nosuid, nodev 옵션으로 실행·SUID·장치 파일을 막을 수 있습니다(예: /tmp 파티션).
/etc/fstab은 부팅 시 자동 마운트 설정입니다.
부팅 과정
펌웨어(BIOS 또는 UEFI): 하드웨어 점검(POST), 부팅 장치 선택
부트로더(GRUB 등): 커널을 메모리에 적재
커널: 하드웨어 초기화, 루트 파일시스템 마운트
init / systemd(PID 1): 서비스 시작
UEFI Secure Boot: 서명된 부트로더·커널만 실행하도록 해 부트킷, 루트킷을 막습니다.
부트로더(GRUB)에 패스워드를 설정해 단일 사용자 모드로 진입해 root를 탈취하는 공격을 막습니다.
서비스 관리(systemctl enable/disable/status)는 1-3장에서 다뤘습니다.
컨테이너는 VM과 달리 호스트 커널을 공유하므로 커널 취약점이나 잘못된 설정이 곧 호스트 침해로 이어질 수 있습니다.
주요 명령
docker run -d --name web -p 8080:80 nginx # 컨테이너 실행
docker ps # 실행 중인 컨테이너
docker images # 이미지 목록
docker exec -it web /bin/sh # 컨테이너 내부 접속
docker logs web # 로그 확인
docker inspect web # 상세 설정 확인
보안 설정 체크리스트
위험한 설정
이유
권장
root로 컨테이너 실행
탈출 시 호스트 root
Dockerfile에 USER 지정, 일반 사용자
--privileged
호스트 장치·커널 기능 거의 전부 허용
사용하지 않음, 필요한 capability만 추가
/var/run/docker.sock 마운트
컨테이너에서 호스트 Docker 제어 가능 → 사실상 root
마운트 금지
호스트 디렉터리 전체 마운트
호스트 파일 변조
필요한 경로만, 가능하면 읽기 전용
출처 불명 이미지
악성코드, 백도어
공식 이미지, 이미지 서명, 취약점 스캔(Trivy 등)
시크릿을 이미지에 포함
이미지 유출 시 노출
시크릿 관리 도구, 환경 변수 주입
불필요한 capability
공격 면 확대
--cap-drop ALL 후 필요한 것만 --cap-add
--read-only로 루트 파일시스템을 읽기 전용으로 하고, seccomp, AppArmor, SELinux 프로파일로 시스템 호출을 제한합니다.
Kubernetes에서는 RBAC(권한 최소화), NetworkPolicy(Pod 간 통신 제한), Pod Security(특권 컨테이너 금지), Secret 관리를 점검합니다.
확인 문제
프로세스 메모리 영역 중 지역 변수와 함수 복귀 주소가 저장되는 곳은?
정답 보기
Stack
하드 링크와 심볼릭 링크의 차이는?
정답 보기
하드 링크는 같은 inode를 가리켜 원본을 지워도 데이터가 남고, 심볼릭 링크는 경로 문자열을 담은 별도 파일이라 원본을 지우면 깨집니다.
crontab에서 0 3 * * 0 /backup.sh의 실행 시점은?
정답 보기
매주 일요일 03시 00분
컨테이너에 /var/run/docker.sock을 마운트하면 위험한 이유는?
정답 보기
컨테이너 안에서 호스트의 Docker 데몬을 제어할 수 있어 새 특권 컨테이너를 만들어 호스트를 장악할 수 있기 때문입니다.
UEFI Secure Boot의 목적은?
정답 보기
서명된 부트로더와 커널만 실행하게 해 부트킷·루트킷 같은 부팅 단계 악성코드를 막는 것입니다.
주소 클래스, 사설 IP, 서브넷 계산, NAT, IPv6와 ARP·ICMP·DHCP를 다룹니다.
IPv4 주소 구조
32비트를 8비트씩 4개 옥텟으로 표기합니다(예: 192.168.10.25). 주소는 네트워크 부분과 호스트 부분으로 나뉩니다.
클래스
클래스
첫 옥텟
기본 마스크
용도
A
1~126
255.0.0.0 (/8)
대규모
B
128~191
255.255.0.0 (/16)
중규모
C
192~223
255.255.255.0 (/24)
소규모
D
224~239
-
멀티캐스트
E
240~255
-
연구용 예약
127.x.x.x는 루프백(자기 자신)입니다.
사설 IP (인터넷에 직접 나가지 않는 주소)
대역
CIDR
10.0.0.0 ~ 10.255.255.255
10.0.0.0/8
172.16.0.0 ~ 172.31.255.255
172.16.0.0/12
192.168.0.0 ~ 192.168.255.255
192.168.0.0/16
서브넷 계산
기본 원리
호스트 개수 = 2^(호스트 비트 수) − 2 (네트워크 주소와 브로드캐스트 주소 제외)
블록 크기 = 256 − 서브넷 마스크의 해당 옥텟 값
예제: 192.168.1.130/26
/26이면 마스크는 255.255.255.192 (마지막 옥텟 192).
블록 크기 = 256 − 192 = 64. 서브넷은 .0, .64, .128, .192 에서 시작합니다.
130은 128~191 구간에 속합니다.
네트워크 주소: 192.168.1.128
브로드캐스트 주소: 192.168.1.191
사용 가능 호스트: .129 ~ .190 (62개)
자주 쓰는 마스크
CIDR
마스크
블록 크기
호스트 수
/24
255.255.255.0
256
254
/25
255.255.255.128
128
126
/26
255.255.255.192
64
62
/27
255.255.255.224
32
30
/28
255.255.255.240
16
14
/30
255.255.255.252
4
2
CIDR은 클래스 구분 없이 /비트수로 표기하는 방식이고, VLSM은 한 네트워크를 서로 다른 크기의 서브넷으로 쪼개는 기법입니다.
NAT
사설 IP와 공인 IP를 변환합니다. 공인 주소 부족을 해결하고 내부 구조를 숨기는 부수 효과가 있습니다.
종류
설명
Static NAT
사설 IP 1개와 공인 IP 1개를 1:1 고정 매핑
Dynamic NAT
공인 IP 풀에서 동적으로 할당
PAT (NAPT)
공인 IP 1개를 포트 번호로 구분해 여러 사설 IP가 공유
IPv6
주소 길이 128비트, 16진수 8그룹(2001:db8::1처럼 ::로 0 구간을 한 번만 줄임)
브로드캐스트가 없고 유니캐스트, 멀티캐스트, 애니캐스트를 씁니다.
IPsec 지원이 내장 설계였습니다(실제 사용은 선택).
헤더가 고정 길이 40바이트로 단순해졌습니다.
캐스트 방식
방식
설명
유니캐스트
1:1
브로드캐스트
같은 네트워크의 모두에게 (IPv4만)
멀티캐스트
특정 그룹에게
애니캐스트
가장 가까운 한 대에게 (IPv6)
보조 프로토콜
ARP
IP 주소로 MAC 주소를 알아내는 프로토콜입니다. 같은 네트워크 안에서 브로드캐스트로 "이 IP 가진 사람?" 하고 묻고 해당 장비가 유니캐스트로 답합니다. 결과는 ARP 캐시에 저장됩니다(arp -a). 인증이 없어서 ARP 스푸핑에 취약합니다. RARP는 반대(MAC→IP)입니다.
ICMP
오류 보고와 진단용입니다.
Type
의미
쓰임
0
Echo Reply
ping 응답
3
Destination Unreachable
목적지·포트 도달 불가
5
Redirect
경로 변경 안내
8
Echo Request
ping 요청
11
Time Exceeded
TTL 만료 (traceroute가 이용)
DHCP
IP, 마스크, 게이트웨이, DNS를 자동 할당합니다. 과정은 Discover → Offer → Request → ACK (DORA) 입니다. UDP 67(서버)/68(클라이언트)를 씁니다. 가짜 DHCP 서버(Rogue DHCP)와 주소 고갈 공격에 취약합니다.
ICMP 주요 타입과 EUI-64
Type
의미
0
Echo Reply
3
Destination Unreachable
5
Redirect
8
Echo Request
11
Time Exceeded (TTL 만료, traceroute에 사용)
12
Parameter Problem
EUI-64: 48비트 MAC 주소로 IPv6 인터페이스 ID(64비트)를 만드는 방식입니다. MAC 가운데(OUI와 NIC 사이)에 FFFE를 끼워 넣고 첫 바이트의 7번째 비트(U/L)를 반전합니다. MAC이 노출되어 추적에 쓰일 수 있어 프라이버시 확장을 쓰기도 합니다.
확인 문제
192.168.10.77/27의 네트워크 주소와 브로드캐스트 주소는?
정답 보기
/27 마스크는 255.255.255.224이므로 블록 크기가 32입니다. 77은 64~95 구간에 속하므로 네트워크 주소는 192.168.10.64, 브로드캐스트는 192.168.10.95 입니다.
공인 IP 하나로 여러 내부 PC가 인터넷을 쓰게 하는 NAT 방식은?
정답 보기
PAT(NAPT)로, 포트 번호로 내부 호스트를 구분합니다.
DHCP의 4단계 과정을 순서대로 쓰세요.
정답 보기
Discover → Offer → Request → ACK
traceroute가 경로를 찾을 때 이용하는 ICMP 메시지는?
정답 보기
Time Exceeded (Type 11)입니다. TTL을 1씩 늘리며 보내고 중간 라우터가 TTL 만료 메시지를 돌려주는 것을 이용합니다.
전송 계층 위에서 기밀성, 무결성, 서버 인증을 제공합니다. SSL은 폐기되었고 오늘날은 TLS(1.2, 1.3)를 씁니다. HTTPS는 HTTP를 TLS 위에 올린 것입니다.
구성
Handshake Protocol: 알고리즘 협상, 인증서 검증, 키 교환
Record Protocol: 데이터를 쪼개고, MAC을 붙이고, 암호화해서 전송
Alert, Change Cipher Spec
핸드셰이크 (TLS 1.2 단순화)
클라이언트 서버
ClientHello ───────────────────▶ (지원 암호군, 난수)
◀─────────────────── ServerHello, Certificate, ServerHelloDone
ClientKeyExchange(키 재료) ─────▶
ChangeCipherSpec, Finished ─────▶
◀─────────────────── ChangeCipherSpec, Finished
═══════ 암호화된 데이터 교환 ═══════
서버가 인증서를 보냅니다. 클라이언트는 CA 서명, 유효기간, 도메인 일치를 검증합니다.
키 교환으로 만든 대칭키(세션 키) 로 이후 데이터를 암호화합니다(공개키로 키를 교환하고 대칭키로 데이터를 보호하는 하이브리드 방식).
알려진 공격 이름
Heartbleed(OpenSSL 구현 결함으로 메모리 유출), POODLE(SSL 3.0 다운그레이드), BEAST, CRIME, DROWN. 이름과 "프로토콜 약점 vs 구현 결함"의 구분 정도만 알아두세요.
IPSec
IP 계층(3계층)에서 보호합니다. 상위 응용 프로그램을 고치지 않아도 되는 것이 장점입니다.
두 가지 프로토콜
프로토콜
번호
제공
비고
AH
51
인증, 무결성, 재전송 방지 (암호화 없음)
헤더까지 보호해서 NAT와 충돌
ESP
50
암호화, 인증, 무결성
일반적으로 많이 사용
두 가지 모드
모드
설명
용도
전송(Transport)
원래 IP 헤더를 유지, 페이로드만 보호
호스트 대 호스트
터널(Tunnel)
원래 패킷 전체를 감싸고 새 IP 헤더 추가
VPN 게이트웨이 간
키 관리
SA(Security Association): 단방향 보안 연결 정보. SPI로 식별합니다. 양방향이면 SA가 2개.
IKE(UDP 500, NAT-T는 4500): 키 교환·SA 협상. 1단계(IKE SA, Main/Aggressive Mode), 2단계(IPSec SA, Quick Mode).
Aggressive Mode는 빠르지만 식별 정보가 노출되어 약합니다.
VPN
공중망 위에 가상의 전용선을 만드는 기술입니다.
종류
특징
PPTP
TCP 1723 + GRE. 오래되고 취약
L2TP
UDP 1701. 자체는 암호화가 없어 IPSec과 결합(L2TP/IPSec)
IPSec VPN
사이트 간(Site-to-Site)에 주로 사용
SSL VPN
웹 브라우저·TLS(443) 기반, 원격 사용자에게 편리
SSH
텔넷, rlogin, FTP를 대체하는 암호화된 원격 접속입니다(TCP 22). 포트 포워딩(터널링), SFTP, 공개키 인증을 지원합니다. 처음 접속 시 서버의 호스트 키 지문을 확인해야 중간자 공격을 피합니다. 설정은 PermitRootLogin no, 공개키 인증, PasswordAuthentication no 등을 권장합니다.
IPSec 구성요소 보강
IETF가 설계한 IP 보안 표준이며 IPv4에서는 선택, IPv6에서는 기본 포함입니다.
기능: 기밀성(ESP 대칭키 암호), 무결성·원천 인증(AH와 ESP의 인증 데이터), 재전송 방지(SA의 순서 번호), 접근 제어(SP), 제한된 트래픽 흐름 기밀성(터널 모드 ESP).
SA: 두 피어 간의 보안 협약으로 순서 번호 카운터, 재전송 방지 윈도우, AH/ESP 정보, 수명(Lifetime), 모드, Path MTU 등을 담습니다. SP는 트래픽별로 허용(우회)·폐기·보호(IPSec 적용)를 정하는 패킷 필터링 정책이며 IP 주소, 포트, 전송 계층 프로토콜을 기준으로 합니다.
IKE는 SA 협상과 키 교환을 맡고 UDP 500을 씁니다.
AH는 기밀성이 없고, 터널 모드 ESP는 원본 IP 헤더까지 암호화합니다.
확인 문제
IPSec에서 암호화 기능이 없는 프로토콜은?
정답 보기
AH (인증과 무결성만 제공)
VPN 게이트웨이 사이에 주로 쓰는 IPSec 모드는?
정답 보기
터널 모드
TLS 1.3이 제공을 보장하는 보안 속성 하나를 쓰고 이유를 설명하세요.
정답 보기
순방향 비밀성입니다. (EC)DHE 키 교환을 필수로 해서 서버 개인키가 나중에 유출되어도 과거 세션이 복호화되지 않습니다.
동적 분석: 샌드박스에서 실행하며 행위 관찰(Process Monitor, Wireshark, 샌드박스)
차세대 네트워크 보안 (2027 신규)
SASE
Secure Access Service Edge. 네트워크(SD-WAN)와 클라우드 제공 보안 기능(SWG, CASB, FWaaS, ZTNA)을 클라우드에서 통합 제공하는 모델입니다. 재택·모바일·클라우드 중심 환경에서 사용자가 어디 있든 같은 정책을 적용합니다.
ZTNA와 제로 트러스트
"절대 신뢰하지 말고 항상 검증하라." 내부망이라는 이유로 신뢰하지 않고, 사용자, 단말 상태, 위치를 계속 검증해 애플리케이션 단위로 최소 권한 접근을 줍니다. 기존 VPN이 망 전체에 접근을 열어주던 것과 대비됩니다. 제로 트러스트의 일반 원칙은 NIST SP 800-207에 정리되어 있습니다.
XDR
엔드포인트, 네트워크, 메일, 클라우드의 탐지 데이터를 통합 분석해서 서로 다른 제품에 흩어진 징후를 하나의 사건으로 묶습니다.
방화벽 종류와 구성 방식
세대·종류
동작 계층
특징
패킷 필터링 (1세대)
3·4계층
발신·수신 주소와 포트를 검사해 접속 허용 여부 결정. 단순하고 빠름
프록시 방화벽 (2세대)
7계층
클라이언트와 외부 사이에서 중계, 패킷이 아닌 목적지로 전달. 패킷 필터링보다 보호 능력이 높음
응용 게이트웨이
7계층
서비스별 Proxy 데몬 존재, 내부 IP 주소를 숨기고 로깅·감사에 유리
서킷 게이트웨이
세션~응용 사이
서비스별 전용 데몬이 없는 일반적 Proxy
상태 기반 조사 (3세대)
3~7계층
패킷 필터링과 응용 게이트웨이의 장점을 결합. 연결 상태(세션)를 테이블로 추적, UDP·RPC까지 추적 가능
구성 방식
스크리닝 라우터: 망과 망 사이 라우터에 ACL 구성. 속도가 빠르고 투명하지만 단일 방어선.
배스천 호스트: 외부에 노출되는 '요새' 호스트. 어플리케이션 계층에서 동작하며 인증·로깅 기능을 가짐. 침해되면 내부 망이 보호되지 못함.
듀얼 홈드 게이트웨이: 두 개의 네트워크 인터페이스를 가진 배스천 호스트. 논리적 구분이 가능해 안전.
상태 코드: 2xx 성공, 3xx 리다이렉트, 4xx 클라이언트 오류(401 인증 필요, 403 금지, 404 없음), 5xx 서버 오류
HTTP는 무상태입니다. 로그인 상태를 유지하려고 쿠키·세션을 씁니다. 서버가 세션 ID를 발급하고 브라우저가 쿠키로 계속 보냅니다.
쿠키 보안 속성
속성
효과
HttpOnly
자바스크립트로 쿠키를 읽지 못하게 함 (XSS로 탈취 방지)
Secure
HTTPS에서만 전송
SameSite
다른 사이트에서 시작한 요청에 쿠키를 보낼지 제한 (CSRF 완화)
OWASP Top 10
OWASP는 웹 애플리케이션의 가장 심각한 위험 10가지를 주기적으로 발표합니다. 아래는 가장 널리 쓰이는 2021년판입니다. 최신 개정판의 변화는 OWASP 사이트에서 확인하세요.
순위
항목
쉬운 설명
A01
접근 통제 실패
권한 없는 기능·데이터에 접근
A02
암호화 실패
민감 정보를 평문·약한 암호로 보호
A03
인젝션
SQL, 명령어, LDAP 삽입 (XSS 포함)
A04
불안전한 설계
설계 단계의 결함
A05
보안 설정 오류
기본 설정, 불필요 기능, 에러 노출
A06
취약하고 오래된 구성요소
패치되지 않은 라이브러리
A07
식별·인증 실패
약한 패스워드, 세션 관리 미흡
A08
소프트웨어·데이터 무결성 실패
신뢰되지 않은 업데이트·직렬화
A09
보안 로깅·모니터링 실패
탐지와 대응 불가
A10
SSRF
서버가 공격자 대신 내부 요청
주요 공격과 대응
SQL 인젝션
입력값이 SQL 문장의 일부로 해석되도록 만드는 공격입니다.
로그인 쿼리: SELECT * FROM users WHERE id='$id' AND pw='$pw'
입력: id = admin' --
결과: SELECT * FROM users WHERE id='admin' --' AND pw=''
(-- 이후는 주석이라 패스워드 검사가 사라짐)
유형
설명
Error-based
에러 메시지에 정보가 노출됨
UNION-based
UNION SELECT로 다른 테이블 값을 결합
Boolean Blind
참/거짓 응답 차이로 한 글자씩 추출
Time-based Blind
SLEEP() 같은 지연으로 참/거짓 판단
대응
Prepared Statement(바인드 변수): 쿼리 구조와 값을 분리. 가장 근본적인 방어
입력값 검증(화이트리스트), 특수문자 이스케이프
DB 계정 최소 권한, 에러 메시지 숨김
WAF
XSS (크로스사이트 스크립팅)
공격자의 스크립트가 피해자 브라우저에서 실행되게 합니다. 쿠키 탈취, 가짜 화면 표시, 악성 사이트 유도에 쓰입니다.
유형
설명
Stored
게시판 등에 스크립트를 저장, 글을 보는 모두가 피해
Reflected
요청 파라미터가 응답에 반사, 악성 링크를 클릭해야 발동
DOM-based
서버가 아니라 클라이언트 스크립트가 DOM을 조작하다 발생
대응: 출력할 때 HTML 이스케이프(< → <), 입력 검증, HttpOnly 쿠키, CSP(Content-Security-Policy) 헤더
CSRF (크로스사이트 요청 위조)
로그인한 피해자의 브라우저가 원치 않는 요청을 보내게 합니다(쿠키는 자동으로 붙기 때문). 예: 악성 페이지가 은행 송금 요청 이미지를 심어 둠.
XSS는 사용자 브라우저에서 스크립트 실행, CSRF는 인증된 사용자의 권한을 이용한 요청 위조입니다. XSS는 사용자의 신뢰를, CSRF는 사이트의 사용자 신뢰를 악용한다고 정리합니다.
대응: CSRF 토큰(요청마다 예측 불가능한 값 검증), SameSite 쿠키, Referer·Origin 검증, 중요 작업 재인증
SSRF
서버가 공격자가 지정한 URL로 요청을 대신 보내게 만듭니다. 외부에서 접근할 수 없는 내부망 서비스나 클라우드 메타데이터에 접근합니다. 대응은 URL 화이트리스트, 내부 주소 차단, 응답 노출 제한입니다.
파일 업로드와 웹셸
악성 스크립트(웹셸)를 업로드해 서버에서 실행하는 공격입니다.
대응
확장자 화이트리스트(허용 목록) 검증, MIME 타입·파일 시그니처 확인
업로드 경로를 웹 루트 밖에 두거나 실행 권한 제거
파일명을 서버가 임의 이름으로 바꿔 저장
기타 공격
공격
설명
대응
디렉터리 트래버설
../../etc/passwd로 상위 경로 접근
경로 정규화, 사용자 입력으로 경로 조합 금지
파일 인클루전 (LFI/RFI)
서버·외부의 파일을 포함시켜 실행
포함 파일 화이트리스트
OS 명령어 삽입
입력이 쉘 명령으로 실행 (; cat /etc/passwd)
쉘 호출 회피, 입력 검증
IDOR (취약한 직접 객체 참조)
id=100을 id=101로 바꿔 타인 정보 열람
서버에서 소유자 권한 검증
세션 고정
공격자가 정한 세션 ID를 피해자가 쓰게 함
로그인 후 세션 ID 재발급
정보 노출
에러 메시지, 디렉터리 리스팅, 버전
오류 페이지 통일, 리스팅 끄기
웹 방화벽 (WAF)
HTTP 요청을 7계층에서 검사해서 SQLi, XSS 같은 웹 공격 패턴을 차단합니다. 일반 방화벽은 80, 443 포트가 열려 있으면 그 안의 공격 내용을 보지 못합니다. WAF는 이 틈을 메웁니다.
방식: 블랙리스트(알려진 공격 패턴), 화이트리스트(허용 패턴만)
한계: 우회 기법이 있고, 근본 해결은 애플리케이션 코드 수정입니다. WAF는 임시 방어막입니다.
SQL 인젝션 공격 예와 영향
웹 입력값으로 SQL 명령어를 주입해 오동작을 일으키는 공격입니다.
로그인 우회: 쿼리가 where username = ' + 입력 + ' and password = ' + ...일 때 username에 1' or 1=1 --을 넣으면 or 1=1이 항상 참이고 -- 뒤는 주석 처리되어 로그인이 통과됩니다.
테이블 명 알아내기: ' having 1=1--처럼 오류를 일으켜 오류 메시지로 테이블·컬럼명을 노출시킵니다(오류 기반).
블라인드 SQL 인젝션: 참/거짓 반응만 보고 값을 추측합니다. 예: ascii(substr(비밀번호, 1, 1)) < 100 같은 조건으로 한 글자씩 아스키 코드를 좁혀 갑니다. 오류 메시지가 막혀 있어도 동작하는 경우가 많습니다.
공격으로 일어나는 일
예
인증 우회
' or 1=1 --
데이터 노출
UNION SELECT, 오류 메시지, 블라인드 기법
데이터 변조·삭제
; UPDATE ..., ; DROP TABLE ...
원격 명령 실행
MS-SQL의 확장 프로시저 xp_cmdshell
서비스 거부는 SQL 인젝션의 전형적 유형으로 분류하지 않습니다(무거운 쿼리로 DB를 느리게 만드는 것은 별개의 DoS 분류).
대응: 입력 검증(데이터 타입·길이·특수문자 처리, addslashes 같은 이스케이프, 허용 문자만 받는 화이트리스트), Prepared Statement(입력값을 SQL 문장이 아닌 값으로만 취급, 가장 확실한 방법), 웹 방화벽, 원시 에러 미출력(DB 구조 노출 방지).
OWASP Top 10 (2017) 항목
2017판: A1 인젝션, A2 취약한 인증, A3 민감한 데이터 노출, A4 XXE(신규), A5 취약한 접근 통제, A6 잘못된 보안 구성, A7 XSS, A8 안전하지 않은 역직렬화(신규), A9 알려진 취약점이 있는 구성요소 사용, A10 불충분한 로깅 및 모니터링(신규). 2013 대비 변화: "취약한 인증과 세션 관리"가 "취약한 인증"으로, "안전하지 않은 직접 객체 참조"와 "기능 수준의 접근 통제 누락"이 "취약한 접근 통제"로 합쳐졌고, CSRF와 "검증되지 않은 리다이렉트·포워드"는 목록에서 빠졌습니다. XXE는 외부 URI 리소스 참조로 내부 파일 노출·포트 스캔·원격 코드 실행·DoS에 쓰입니다.
CSRF와 XSS 비교
구분
XSS
CSRF
악성 요청이 실행되는 곳
사용자 브라우저에서 스크립트 실행
위조된 요청이 서버에서 정당한 사용자 요청으로 처리
노리는 것
쿠키·세션 탈취, 화면 변조
사용자 권한으로 글 등록·정보 수정·송금 등 의도하지 않은 기능 실행
악용하는 신뢰
사용자가 사이트를 믿는 점
사이트가 로그인된 사용자의 브라우저를 믿는 점
대책
입력값 검증·출력값 인코딩
요청마다 CSRF 토큰 확인, 재인증, SameSite 쿠키
CSRF는 게시글 등에 요청을 심어 게시판 글을 본 불특정 다수가 공격자의 요청을 보내게 만들 수 있고, XSS와 함께 쓰여 위력이 커집니다. 기억법: "XSS는 서버에서, CSRF는 클라이언트에서 악성 코드가 실행된다"의 반대입니다. 대책으로 입력 화면 작성 시 GET 대신 POST를 쓰고, 입력 화면의 폼과 처리 프로그램 사이에 임의 토큰(세션에 저장 후 hidden 필드로 전달해 일치 여부 확인)을 두며, 중요 기능에는 재인증을 요구합니다. CSRF는 OWASP Top 10(2013)의 A8이었고 2017판에서 빠졌습니다.
확인 문제
SQL 인젝션을 근본적으로 막는 코딩 방법은?
정답 보기
Prepared Statement(바인드 변수)로 쿼리 구조와 입력값을 분리합니다.
XSS와 CSRF의 차이를 한 줄로 설명하세요.
정답 보기
XSS는 피해자의 브라우저에서 공격자 스크립트가 실행되는 공격이고, CSRF는 인증된 피해자의 권한으로 원치 않는 요청을 보내게 하는 공격입니다.
쿠키의 HttpOnly 속성이 막는 것은?
정답 보기
자바스크립트로 쿠키를 읽는 행위(XSS를 통한 쿠키 탈취)
파일 업로드 취약점 대응 두 가지를 쓰세요.
정답 보기
확장자 화이트리스트 검증과, 업로드 디렉터리의 실행 권한 제거(또는 웹 루트 밖 저장)
비밀번호 첫 글자의 아스키 코드를 < 조건으로 좁혀 가는 SQL 인젝션 유형은?
정답 보기
블라인드 SQL 인젝션입니다.
SQL 인젝션에 가장 확실한 대응 방법은?
정답 보기
Prepared Statement입니다. 입력값을 SQL 문장이 아닌 값으로만 처리합니다.
대응 기술: API 게이트웨이, 인증(OAuth 2.0/JWT), 속도 제한(Rate Limiting), 입력 검증, 스키마 검증, API 인벤토리 관리, 로깅.
웹 로그 분석
웹 서버 접근 로그 한 줄의 구조 (Apache Combined 형식):
192.0.2.10 - - [27/Oct/2026:09:41:02 +0900] "GET /board.php?id=1' OR '1'='1 HTTP/1.1" 200 5123 "-" "Mozilla/5.0"
IP ident user 시각 요청(메서드 URL 프로토콜) 상태 크기 Referer User-Agent
의심 패턴
의미
' OR 1=1, UNION SELECT, --, %27
SQL 인젝션
<script>, %3Cscript%3E, onerror=
XSS
../, ..%2f, /etc/passwd
경로 조작(디렉터리 트래버설)
cmd=, ;ls, `
id`
명령어 삽입
같은 IP의 로그인 요청 반복
무차별 대입
.php 업로드 후 접근
웹셸 설치
짧은 시간에 4xx 다량
스캐닝
응답 상태/크기도 함께 봅니다. 공격 요청에 200과 큰 응답 크기가 돌아왔다면 성공했을 가능성이 있습니다.
확인 문제
XST(Cross-Site Tracing)를 막기 위해 비활성화해야 하는 HTTP 메서드는?
정답 보기
TRACE
세션 고정 공격의 대응책은?
정답 보기
로그인 성공 시 새로운 세션 ID를 발급(재발급)합니다.
JWT의 페이로드에 비밀번호를 넣으면 안 되는 이유는?
정답 보기
JWT는 서명이지 암호화가 아니어서 Base64URL 디코딩만으로 누구나 내용을 읽을 수 있기 때문입니다.
신뢰할 수 있는 제3자(KDC)가 티켓으로 인증하는 대칭키 기반 프로토콜입니다. 사용자의 패스워드를 네트워크에 보내지 않습니다.
사용자 KDC (AS + TGS) 서비스 서버
│ ① 인증 요청 ──▶ AS
│ ◀── TGT (티켓 승인 티켓) + 세션키
│ ② TGT로 서비스 티켓 요청 ──▶ TGS
│ ◀── 서비스 티켓
│ ③ 서비스 티켓 제시 ─────────────────────────▶ 서버
│ ◀──────────────────────────── 인증 완료
AS(Authentication Server): 최초 인증하고 TGT 발급
TGS(Ticket Granting Server): TGT를 확인하고 서비스 티켓 발급
약점: KDC 단일 실패점, 시간 동기화 필요(재생 공격 방지를 위한 타임스탬프), 패스워드 추측 공격, 티켓 탈취(Pass-the-Ticket, Golden Ticket)
디바이스 인증
사람이 아니라 장치를 인증합니다.
인증서 기반: 장치에 설치한 X.509 인증서(VPN, 802.1X)
802.1X: 네트워크 접속 전에 인증(무선 WPA2/3 Enterprise). 구성은 서플리컨트(단말), 인증자(스위치·AP), 인증 서버(RADIUS)
TPM·보안 칩: 기기 내부의 하드웨어에 키 저장
MAC 주소 인증: 쉽게 위조되므로 보조 수단
FIDO: 공개키 기반 비밀번호 없는 인증(생체나 PIN은 단말에서만 확인)
인증 절차와 불법 인증 시도 통제
접근통제는 식별 → 인증 → 인가 → 책임 추적성(감사) 네 단계로 흐릅니다. 식별은 신원을 주장만 하는 단계이고 검증하지 않습니다. 인증이 그 주장을 확인하고, 인가가 권한 범위를 정하며, 책임 추적성은 접속·작업 로그로 행위를 남깁니다.
구분
핵심
약점
지식 기반
비밀번호
유추·유출
소유 기반
인증서, OTP, 스마트카드
복제·분실
생체 기반
지문, 홍채
분실 위험은 없지만 재발급 불가, 본인 거부 가능
불법 인증 시도 통제: 로그인 실패 횟수 제한(계정 잠금), 접속 유지시간 제한(세션 타임아웃), 동시 접속 제한, 등록되지 않은 IP 접속 차단 및 알림. 디폴트 계정·비밀번호는 사용하지 않고 주기적으로 변경하며, 개인키는 안전한 보안매체에 보관합니다.
인증 관련 체계: 관리 시스템은 SSO, EAM, IAM, 프로토콜은 Kerberos, OAuth, OpenID, 표준은 X.509, DID입니다. 인증은 상대 확인이고 암호화는 기밀성 수단이며, 부인 방지는 전자서명으로 해결합니다.
DAC, MAC, RBAC, 접근통제 매트릭스, 그리고 Bell-LaPadula·Biba·Clark-Wilson·만리장성 모델을 정리합니다.
접근통제 개념
주체(사용자·프로세스)가 객체(파일·자원)에 접근할 때 허용 여부를 통제하는 것입니다. 구성은 식별 → 인증 → 인가 → 감사입니다.
기본 원칙
최소 권한: 업무에 필요한 최소한만 부여
직무 분리: 한 사람이 중요한 작업 전체를 못 하게 분리
Need-to-know: 알 필요가 있는 정보만 접근
접근통제 정책
정책
결정 주체
설명
예
DAC (임의적)
소유자
소유자가 다른 사용자에게 권한을 임의로 부여
유닉스 파일 권한, 윈도우 ACL
MAC (강제적)
시스템(관리자)
주체의 허가 등급과 객체의 보안 등급을 비교해 시스템이 강제
군·정부, SELinux
RBAC (역할 기반)
관리자
사용자가 아니라 역할에 권한을 부여, 사용자에게 역할 할당
기업 ERP
DAC는 유연하지만 트로이목마에 취약하고, MAC는 엄격하지만 관리가 어렵습니다.
RBAC는 인사 이동 시 역할만 바꾸면 되어 관리가 쉽습니다. 직무 분리 구현에도 유리합니다.
ABAC(속성 기반)는 사용자·자원·환경 속성(시간, 위치)을 조건으로 판단합니다.
접근통제 매트릭스
행은 주체, 열은 객체, 칸은 권한입니다. 이것을 어느 방향으로 잘라 저장하느냐가 구현 방식입니다.
구현
기준
설명
ACL (접근통제 목록)
객체 중심 (열)
객체마다 접근 가능한 주체·권한 목록
Capability (권한 목록)
주체 중심 (행)
주체가 가진 권한 티켓 목록
보안 모델
Bell-LaPadula (BLP) — 기밀성
군사 보안 모델입니다. 정보가 높은 등급에서 낮은 등급으로 새지 않게 합니다.
규칙
의미
단순 보안 속성 (No Read Up)
낮은 등급 주체가 높은 등급을 읽지 못함
\*-속성 (No Write Down)
높은 등급 주체가 낮은 등급에 쓰지 못함
Biba — 무결성
BLP의 반대입니다. 낮은 신뢰 정보가 높은 신뢰 정보를 오염시키지 못하게 합니다.
규칙
의미
단순 무결성 (No Read Down)
낮은 등급을 읽지 못함
\*-무결성 (No Write Up)
높은 등급에 쓰지 못함
Clark-Wilson — 무결성(상업용)
CDI(제약 데이터 항목)는 반드시 규칙으로 보호되는 데이터, UDI는 무제한 데이터
TP(변환 절차)로만 CDI를 변경, IVP(무결성 검증 절차)로 확인
핵심은 잘 구성된 트랜잭션과 직무 분리, 사용자가 데이터에 직접 접근하지 않고 프로그램을 거쳐서만 접근합니다.
만리장성 (Chinese Wall, Brewer-Nash)
이해 충돌을 막습니다. 예를 들어 컨설턴트가 경쟁 관계의 A사 자료를 본 뒤에는 B사 자료에 접근하지 못합니다. 접근 이력에 따라 동적으로 접근이 바뀝니다.
접근통제 모델 심화
DAC의 구현과 약점
ACL은 객체 중심(객체별 접근자 목록), 권한 목록(capability list) 은 주체 중심(주체별 권한 목록), 접근통제 행렬은 이 둘의 이론 모델입니다.
리눅스는 소유자·그룹·기타의 rwx와 chmod, POSIX ACL(setfacl), 윈도우 NTFS는 DACL/ACE를 씁니다. DACL이 없으면 전체 허용, 비어 있으면 전체 거부입니다. DB는 GRANT/REVOKE입니다.
약점: 트로이 목마에 취약(실행자 권한을 그대로 물려받음), 정보 흐름 통제가 없어 복사본에 제한이 적용되지 않음, 권한 위임이 이어지면 범위가 누적됨.
함정: 방화벽·라우터 ACL처럼 관리자가 정한 규칙을 모든 요청에 똑같이 적용하는 방식은 규칙 기반 접근통제입니다. "ACL이니 DAC"는 오답일 수 있습니다.
MAC: 주체에는 인가 등급(clearance), 객체에는 비밀 등급(classification) 레이블을 붙여 비교합니다. 레이블은 계층적 등급 + 비계층적 범주(need to know)이고 격자(lattice) 구조라 격자 기반 접근통제라고도 합니다. 소유자도 레이블을 바꾸거나 위임할 수 없습니다. TCSEC B등급(B1부터 레이블 기반 MAC)이며 구현 예는 MLS, SELinux, 윈도우 무결성 수준(MIC)입니다. 도입 선행 조건은 데이터 분류 정책입니다. 비임의적 접근통제가 모두 MAC은 아닙니다(RBAC도 비임의적).
구분
DAC
MAC
RBAC
결정 주체
소유자
시스템 정책
중앙 관리자(역할 단위)
권한 위임
가능
불가
역할 단위
정보 흐름 통제
없음
있음
없음
TCSEC
C등급
B등급 이상
해당 없음
BLP·비바·클락-윌슨 보강
BLP: 미 국방부 지원으로 만든 최초의 수학적 모델, 기밀성 중심. 단순 보안 속성 = No Read Up, 스타(*) 보안 속성 = No Write Down. 한계: 낮은 등급 주체가 상위 객체를 보지 못한 채 덮어쓰는 Blind Write로 무결성이 깨질 수 있습니다.
비바(1977): 무결성을 보장하는 최초의 모델. 단순 무결성 = No Read Down, 스타 무결성 = No Write Up. BLP와 방향이 정반대이므로 보호 목표(기밀성/무결성)부터 확인합니다. 한계: 기밀성은 보장하지 못하고, 등급이 정적이며, 외부 침입 자체는 막지 못합니다.
클락-윌슨: 금융·상업 환경의 무결성 모델.
구성요소
의미
TP
변환 절차(허가된 작업)
CDI
TP를 통해서만 수정 가능한 데이터
UDI
TP 없이 수정 가능한 데이터
IVP
무결성 검증 절차
객체에 직접 접근하지 못하게 하고 Well-formed Transaction으로만 접근시키며, 업무 분리(Separation of Duties) 로 한 사람이 업무 전체를 처리하지 못하게 합니다. 예: 송금·송금 검증·계정 처리를 서로 다른 담당자가 맡습니다.
RBAC 표준 모델
1992년 Ferraiolo·Kuhn(NIST)이 정식화, 2004년 ANSI/INCITS 359로 표준화되었습니다.
핵심 RBAC: 사용자, 역할, 권한, 세션. 사용자-역할, 역할-권한은 다대다.
계층적 RBAC: 상위 역할이 하위 역할 권한을 상속.
SSD(정적 직무 분리): 역할 할당 시점에 충돌 역할의 동시 보유 금지.
DSD(동적 직무 분리): 세션 활성화 시점에 충돌 역할의 동시 활성화 금지.
운영 문제: 권한 누적(privilege creep) 과 역할 폭증. 대책은 역할 공학, 역할 계층 활용, 정기 권한 검토, 상황 조건을 ABAC로 분리하는 것입니다.
보안 등급과 객체 등급을 비교하는 것은 MAC입니다. RBAC를 레이블 비교로 설명한 선택지는 오답입니다.
확인 문제
소유자가 다른 사용자에게 권한을 임의로 줄 수 있는 접근통제 정책은?
정답 보기
DAC (임의적 접근통제)
객체를 기준으로 접근 가능한 주체 목록을 저장하는 방식은?
정답 보기
ACL (접근통제 목록)
Bell-LaPadula 모델의 두 규칙과 목적을 쓰세요.
정답 보기
No Read Up(단순 보안 속성)과 No Write Down(*-속성)이며, 기밀성 보호가 목적입니다.
경쟁 관계의 회사 정보를 한 사람이 모두 보지 못하게 하는 모델은?
정답 보기
만리장성(Chinese Wall) 모델
RBAC에서 역할 할당 시점에 충돌 역할의 동시 보유를 막는 것은?
정답 보기
정적 직무 분리(SSD)입니다. 세션 안에서 동시 활성화를 막는 것은 동적 직무 분리(DSD)입니다.
BLP 모델에서 낮은 등급 주체가 상위 객체를 읽지 않은 채 덮어써 무결성이 깨질 수 있는 문제는?
암호 용어, 공격 유형, DES·3DES·AES·SEED·ARIA, 블록 암호 운영 모드를 정리합니다.
암호 용어
용어
뜻
평문 / 암호문
원래 메시지 / 암호화된 메시지
암호화 / 복호화
평문 → 암호문 / 암호문 → 평문
키
암호화·복호화에 쓰는 비밀 값
암호 시스템
알고리즘, 키 공간, 평문·암호문 공간의 구성
케르크호프스의 원칙: 암호의 안전성은 알고리즘의 비밀이 아니라 키의 비밀에 의존해야 합니다. 알고리즘은 공개되어도 안전해야 합니다.
암호 분류
대칭키(비밀키) 암호: 암·복호화 키가 같다. 블록 암호와 스트림 암호.
공개키(비대칭키) 암호: 키 쌍(공개키·개인키)을 쓴다.
샤논의 원리
혼돈(Confusion): 키와 암호문의 관계를 복잡하게 → 치환
확산(Diffusion): 평문의 통계적 특성을 암호문에 퍼뜨림 → 전치(순열)
고전 암호
암호
방식
시저
알파벳을 일정 수만큼 밀기 (단일 치환)
비제네르
키워드 기반 다표 치환
플레이페어
알파벳 두 글자씩 치환
전치 암호
글자의 위치를 바꿈
고전 암호는 빈도 분석에 약합니다.
암호 공격 유형
공격자가 가진 정보에 따라 나눕니다. 아래로 갈수록 공격자가 유리합니다.
공격
공격자가 가진 것
암호문 단독 (COA)
암호문만
기지 평문 (KPA)
일부 평문-암호문 쌍
선택 평문 (CPA)
원하는 평문을 암호화한 결과
선택 암호문 (CCA)
원하는 암호문을 복호화한 결과
기타: 전수 조사(무차별 대입), 차분 분석(입력 차이에 따른 출력 차이), 선형 분석(Matsui, 선형 근사식), 중간자 일치 공격(Meet-in-the-Middle; 2중 암호의 이점을 크게 깎음), 부채널 공격(전력·시간·전자기 누설 이용).
블록 암호 구조
Feistel 구조: 블록을 좌·우로 나누고 라운드 함수를 적용해 교차. 암호화와 복호화가 같은 구조(라운드 키 순서만 반대). DES, SEED
SPN 구조: 치환(S-box)과 순열(P-box)을 반복. AES, ARIA
대표 알고리즘
알고리즘
블록
키
라운드
구조
비고
DES
64비트
56비트 (+패리티 8, 총 64)
16
Feistel
키가 짧아 전수 조사로 파훼
3DES
64비트
112/168비트
48
Feistel
EDE (암호화-복호화-암호화)
AES
128비트
128/192/256
10/12/14
SPN
현재 표준. Rijndael
SEED
128비트
128비트
16
Feistel
국산(KISA)
ARIA
128비트
128/192/256
12/14/16
SPN
국산(국정원·학계)
HIGHT
64비트
128비트
32
변형 Feistel
국산 경량
LEA
128비트
128/192/256
24/28/32
ARX
국산 고속·경량
AES의 라운드 4단계
SubBytes(바이트 치환) → ShiftRows(행 이동) → MixColumns(열 혼합) → AddRoundKey(라운드 키 XOR). 마지막 라운드에는 MixColumns가 없습니다.
블록 암호 운영 모드
블록 단위 암호를 긴 메시지에 적용하는 방법입니다.
모드
방식
특징
ECB
블록마다 독립 암호화
같은 평문 블록 → 같은 암호문, 패턴 노출. 비추천
CBC
이전 암호문과 XOR 후 암호화, IV 사용
병렬 암호화 불가(복호는 가능), 오류가 다음 블록에 전파
CFB
이전 암호문을 암호화해 평문과 XOR
스트림처럼 동작, 블록보다 작은 단위 가능
OFB
암호화 출력을 되먹임, 평문과 XOR
오류 전파 없음, 키스트림 사전 계산
CTR
카운터를 암호화해 평문과 XOR
병렬 처리, 임의 접근
GCM
CTR + 인증 태그
인증 암호(기밀성+무결성). TLS 1.3 등에서 사용
CBC에서 IV는 비밀일 필요는 없지만 예측 불가능해야 합니다.
CTR과 OFB는 같은 키·같은 카운터(IV) 재사용이 치명적입니다.
패딩: 마지막 블록이 모자랄 때 채웁니다. 패딩 오라클 공격이 알려져 있습니다.
스트림 암호
비트·바이트 단위로 키스트림과 XOR합니다. 빠르고 실시간 통신에 적합합니다. RC4(취약해서 폐기), A5/1(GSM), ChaCha20(현대적).
키스트림을 재사용하면 안 됩니다. 같은 키스트림으로 두 평문을 암호화하면 두 암호문의 XOR이 두 평문의 XOR과 같아져 해독됩니다.
대칭키 암호의 한계
키 분배 문제: 비밀 키를 안전하게 전달해야 한다.
키 개수 문제: n명이 서로 통신하려면 키가 n(n−1)/2 개 필요합니다(10명 → 45개).
부인방지 불가: 같은 키를 양쪽이 가지므로 누가 만들었는지 증명할 수 없습니다.
암호 분류와 세대
변환 원리는 대치(글자 바꿈)와 전치(순서 바꿈), 키 운용은 대칭키·비대칭키·해시(키 없음)로 나눕니다. 구조는 페이스텔, SPN, I-SPN, GFN입니다. 부호화는 키 없이 공개된 방식으로 데이터를 전달하는 것이어서 기밀성 목적이 아닙니다.
세대
특징
예
1세대
전통 암호
에니그마
2세대
기초적 실무 블록 암호
DES, SEED
3세대
공개키 암호
RSA, ECC
4세대
개선 암호
동형암호, 양자암호, 경량암호
대칭키·공개키의 보안강도는 키 길이에 비례하고, 해시는 키가 없어 충돌 회피성으로 강도가 결정됩니다.
블록 암호 공격 4종
공격
원리
선형 공격
알고리즘의 비선형 구조를 선형으로 근사해 키를 찾음
차분 공격
두 평문 블록의 비트 차이와 대응하는 암호문 차이를 이용
전수(무차별) 공격
가능한 모든 키를 조사. 경우의 수가 크면 비현실적
통계적 분석
평문의 빈도 등 통계로 해독
블록 암호 운용 모드 비교
모드
IV
오류 파급
패딩
병렬 처리
ECB
불필요
없음
사용
암·복호화 모두 가능
CBC
필요
있음
사용
암호화 불가, 복호화 가능
CFB
필요
있음
불필요
암호화 불가, 복호화 가능
OFB
필요
없음
불필요
모두 불가
CTR
카운터
없음
불필요
모두 가능
ECB, CBC는 블록 모드, CFB·OFB·CTR은 스트림 모드처럼 동작합니다.
CFB는 이전 암호문 블록이 알고리즘의 입력이고, OFB는 이전 알고리즘 출력이 다음 입력입니다.
ECB는 같은 평문이 같은 암호문이 되어 평문 조작과 재전송에 취약합니다. CTR은 카운터(키 스트림)를, CBC·CFB·OFB는 IV를 재사용하면 위험합니다.
국내 블록 암호 비교
알고리즘
구조
블록
키
라운드
SEED
Feistel
128
128
16
ARIA
Involutional SPN
128
128/192/256
12/14/16
HIGHT
일반화 Feistel(GFN)
64
128
32
LEA
ARX
128
128/192/256
24/28/32
SEED는 1999년 KISA가 개발했고 2005년 ISO/IEC 18033-3과 IETF RFC 4269로 제정되었습니다. F 함수는 G 함수를 3회 적용합니다. "SEED는 SPN"은 오답이며 SPN은 ARIA의 구조입니다.
ARIA는 국가보안연구소 중심으로 개발한 AES 개선형이며 2004년 KS X 1213입니다. 국가·공공기관 납품 시 적용합니다.
HIGHT·LEA 같은 경량 암호는 S-박스 없이 ARX(덧셈·회전·XOR) 연산을 씁니다.
AES 절차: AddRoundKey → SubBytes → ShiftRows → MixColumns → AddRoundKey. 1997 NIST 공모, 2000 Rijndael 선정, 2001 표준 발표. 3DES 2키 방식은 금지, 3키 방식도 2023년 12월 31일 이후 새 암호화에는 쓸 수 없습니다.
확인 문제
AES의 블록 크기와 키 길이는?
정답 보기
블록 128비트, 키 128/192/256비트 (라운드 10/12/14)
ECB 모드가 안전하지 않은 이유는?
정답 보기
같은 평문 블록이 항상 같은 암호문 블록이 되어 평문의 패턴이 드러나기 때문입니다.
50명이 서로 대칭키로 비밀 통신을 하려면 필요한 키 개수는?
정답 보기
50×49/2 = 1,225개
DES를 안전하지 않다고 보는 이유와 대안은?
정답 보기
키 길이가 56비트로 짧아 전수 조사로 해독이 가능하기 때문이고, 대안은 3DES를 거쳐 AES를 사용하는 것입니다.
두 평문 블록의 비트 차이와 암호문의 비트 차이를 이용하는 블록 암호 공격은?
정답 보기
차분 공격입니다.
CFB와 OFB의 차이는?
정답 보기
CFB는 이전 암호문 블록이 알고리즘의 입력이 되고, OFB는 이전 알고리즘 출력이 다음 입력이 됩니다. CFB는 오류가 파급되고 OFB는 파급되지 않습니다.
국내 블록 암호 중 Feistel 구조이고 블록·키가 모두 128비트이며 16라운드인 것은?
RSA·ElGamal·Diffie-Hellman·ECC의 원리와 수학적 기반, 키 분배 프로토콜과 하이브리드 구조를 정리합니다.
공개키 암호의 개념
키 쌍(공개키, 개인키)을 씁니다. 공개키로 암호화한 것은 개인키로만 풀 수 있습니다. 대칭키의 키 분배·키 개수 문제를 해결합니다. 대신 느립니다(대칭키보다 수백~수천 배).
사용 목적
목적
쓰는 키
얻는 것
기밀성 (암호화)
수신자 공개키로 암호화 → 수신자 개인키로 복호화
수신자만 읽음
인증·부인방지 (서명)
송신자 개인키로 서명 → 송신자 공개키로 검증
송신자 증명
하이브리드 암호
실제 시스템은 공개키로 대칭 세션키를 교환하고, 대칭키로 데이터를 암호화합니다(TLS, PGP, S/MIME). 속도와 키 분배를 동시에 해결합니다.
RSA
소인수분해의 어려움에 기반합니다. 큰 수 n = p × q를 소수 p, q로 분해하기가 어렵다는 점을 이용합니다.
키 생성
큰 소수 p, q를 고른다.
n = p × q, φ(n) = (p−1)(q−1)
φ(n)과 서로소인 e를 고른다 (공개 지수).
d × e ≡ 1 (mod φ(n))인 d를 구한다 (개인 지수).
공개키 = (e, n), 개인키 = (d, n)
암호화·복호화
암호화: C = M^e mod n
복호화: M = C^d mod n
작은 예제
p=5, q=11 → n=55, φ(n)=40
e=3 → d=27 (3×27 = 81 = 2×40 + 1)
평문 M=7 → C = 7^3 mod 55 = 343 mod 55 = 13
복호화 → M = 13^27 mod 55 = 7
안전한 키 길이는 2048비트 이상(3072 권장 확대 추세).
패딩(OAEP, PSS) 없는 "교과서 RSA"는 위험합니다.
양자 컴퓨터의 Shor 알고리즘이 소인수분해를 다항 시간에 풀어 위협이 됩니다(4-6장).
이산대수 기반 방식
이산대수 문제: g^x mod p = y에서 g, p, y를 알아도 x를 구하기 어렵다는 점을 이용합니다.
Diffie-Hellman 키 교환
암호화가 아니라 키 합의 프로토콜입니다. 공개 채널에서 같은 비밀값을 공유합니다.
공개 값: p=23, g=5
앨리스: 비밀 a=6 → A = g^a mod p = 5^6 mod 23 = 8 ──▶ 밥에게
밥: 비밀 b=15 → B = g^b mod p = 5^15 mod 23 = 19 ──▶ 앨리스에게
앨리스: K = B^a mod p = 19^6 mod 23 = 2
밥: K = A^b mod p = 8^15 mod 23 = 2 ← 같은 값
도청자는 p, g, A, B를 알아도 이산대수를 못 풀어 K를 알 수 없습니다.
약점: 상대가 누구인지 인증하지 않기 때문에 중간자 공격에 취약합니다. 인증서나 서명과 결합해야 합니다.
임시 키를 쓰는 DHE/ECDHE는 순방향 비밀성을 제공합니다.
ElGamal
이산대수 기반의 암호화·서명 방식입니다. 같은 평문도 매번 다른 암호문(난수 사용)이 되지만 암호문 길이가 평문의 2배가 됩니다.
DSA, KCDSA
이산대수 기반 전자서명 방식입니다(4-5장). KCDSA는 국산입니다.
타원곡선 암호 (ECC)
타원곡선 위의 이산대수 문제를 이용합니다. 같은 안전 수준에서 키가 훨씬 짧습니다.
안전 강도
RSA 키
ECC 키
약 112비트
2048
224
약 128비트
3072
256
약 192비트
7680
384
장점: 짧은 키, 빠른 연산, 적은 메모리 → 모바일·IoT에 유리. ECDH(키 교환), ECDSA(서명), EC-KCDSA(국산). 이것도 Shor 알고리즘에 취약합니다.
사용 절차: ① 수신자 A가 키 쌍 생성 → ② 공개키 전달 → ③ 송신자 B가 공개키로 암호화 → ④ 암호문 전송 → ⑤ A가 개인키로 복호화.
장점은 키 분배 문제 해결, 단점은 대칭키보다 느림입니다. 중간자 공격(위장·재전송)은 MAC이나 전자서명으로 대응합니다.
디피-헬먼의 한계: 이산대수의 어려움을 이용해 공유키를 만드는 키 교환 방식이며 암호화 자체가 아닙니다. 인증이 없어 신분위장(중간자) 공격과 재전송 공격에 취약하고 무결성도 보장하지 않으므로 실제 프로토콜에서는 인증·무결성을 결합합니다. 예: p=17, g=2에서 개인키 11, 13이면 공개값 8, 15, 공유키 9.
ElGamal: 디피-헬먼 원리 기반, 이산대수 문제가 안전성의 근거이며 DSA의 기반입니다. 암호문 길이가 평문의 2배가 되는 결점이 있고, 서명 값은 (r, s) 두 개입니다. Schnorr 서명은 부분군을 써서 서명 길이를 줄였습니다.
ECC: 코블리츠·밀러가 제안했고 이산대수 기반입니다. 160비트 ECC가 1024비트 RSA와 비슷한 수준이라고 설명하는 자료가 많지만, 현재 RSA 1024는 권고되지 않으므로 "같은 보안에서 키가 훨씬 짧다"를 핵심으로 기억합니다. 곡선식은 y² = x³ + ax + b. 약점은 개인키를 만드는 난수 품질입니다(2013년 안드로이드 비트코인 지갑 도난 사례). 대응은 고품질 난수 생성기와 HSM입니다. 비트코인, ECDSA에 쓰입니다.
이산대수 문제와 방식 분류
소수 p와 생성원 g가 주어졌을 때 g^x ≡ y (mod p)를 만족하는 x를 찾는 문제가 이산대수 문제(DLP)입니다. x에서 y를 구하기는 쉽지만 거꾸로는 p가 충분히 크면(예: 2048비트 이상) 현실적으로 풀 수 없는 일방향 함수이며, 소인수분해와 함께 대표적인 예입니다.
기반
방식
용도
이산대수
디피-헬먼(1976, 최초의 공개키 방식)
키 합의
이산대수
ElGamal
암호화·서명, 암호문은 평문의 2배
이산대수
DSA
서명 전용, FIPS 186-5(2023)부터 새 서명 생성에는 승인되지 않음
타원곡선 이산대수
ECC
256비트 키가 RSA 3072비트와 비슷한 안전성
인수분해
RSA, 라빈
암호화·서명 모두
수치 예(p=23, g=5): A의 비밀값 6 → 공개값 8, B의 비밀값 15 → 공개값 19, 공유키 5^(6×15) mod 23 = 2. 양자 컴퓨터의 쇼어 알고리즘은 이산대수와 소인수분해를 모두 다항 시간에 풀어 RSA·DH·ECC를 위협하므로 ML-KEM 같은 PQC로 전환합니다.
RSA는 1977년 MIT의 Rivest, Shamir, Adleman이 고안했고(1978 발표) 안전성은 큰 수의 소인수분해 난이도에 의존합니다. 큰 데이터 전체를 암호화하기에는 느려서, 실무에서는 세션 키(대칭키)를 RSA로 암호화해 교환하고 데이터는 대칭키로 암호화합니다. 약점은 키 길이가 짧으면 무차별 대입·수학적 기법으로 분석되는 점, 키 관리 부실, 타이밍·전력 분석 같은 부채널 공격, 양자컴퓨터(쇼어 알고리즘)입니다. HTTPS/TLS, 인증서(X.509), 전자서명, PGP에 쓰입니다.
확인 문제
RSA, ElGamal, ECC의 안전성 근거를 각각 쓰세요.
정답 보기
RSA는 소인수분해, ElGamal은 이산대수, ECC는 타원곡선 위의 이산대수 문제입니다.
앨리스가 밥에게 비밀 메시지를 보낼 때 쓰는 키는?
정답 보기
밥의 공개키로 암호화하고, 밥이 자신의 개인키로 복호화합니다.
Diffie-Hellman이 중간자 공격에 취약한 이유는?
정답 보기
교환 상대를 인증하지 않아 공격자가 양쪽과 각각 키를 합의해 중계할 수 있기 때문입니다.
RSA에서 p=3, q=11, e=3일 때 d는? (φ(n)=20)
정답 보기
3×d ≡ 1 (mod 20)을 만족하는 d는 7입니다 (3×7=21).
디피-헬먼 키 교환이 신분위장 공격에 취약한 이유는?
정답 보기
상대방을 인증하는 절차가 없기 때문입니다.
ElGamal 암호의 결점은?
정답 보기
암호문 길이가 평문의 2배가 된다는 점입니다.
서명 전용이며 FIPS 186-5부터 새 서명 생성에 승인되지 않는 이산대수 기반 방식은?
CRL: CA가 제공하는 폐기 목록. 한 인증서를 확인하려도 목록 전체를 내려받아야 하는 것이 단점입니다.
OCSP(RFC 6960): 특정 인증서의 유효성만 실시간 질의합니다. 재연(replay) 공격은 Nonce로 대응하고, 폐기 시 revocationReason으로 사유를 알 수 있습니다. 국내 요건은 HTTP 사용, 응답에 OCSP 서버 인증서 포함입니다.
은닉 서명
서명자가 메시지 내용을 모른 채 서명하는 방식입니다. 1982년 David Chaum이 전자화폐용으로 제안했습니다. 성질은 서명자 무지(Blindness), 불추적성(발급과 사용을 연결할 수 없음), 검증 가능성입니다. 절차는 ① 난수 r로 메시지를 가림 → ② 가려진 값에 서명 → ③ r을 제거해 원 메시지의 서명 획득 → ④ 공개키로 검증입니다. 전자화폐와 전자투표에 쓰입니다. 이중 서명(SET)은 주문 정보와 결제 정보를 나눠 수신자별로 필요한 부분만 보이게 하는 것으로 다른 개념입니다.
MD5
128비트 해시 함수로 RFC 1321에 규정되어 있고, 1991년 로널드 라이베스트가 MD4를 대체하려고 만들었습니다. 충돌 취약점이 발견되어 패스워드 저장 같은 보안 목적에는 부적절하지만, 파일이 원본 그대로인지 보는 단순 무결성 검사에는 지금도 쓰입니다. "무결성 검증 용도"와 "보안 저장 용도"를 구분하는 것이 출제 포인트입니다.
메시지 인증 코드(MAC) 정리
목표: 메시지의 무결성과 메시지 인증(송신자가 보낸 그대로 도착했는지 확인). 해시 + 대칭키 암호 알고리즘으로 만들며, 해시를 이용한 MAC이 HMAC입니다.
절차: ① 송신자와 수신자가 비밀 공유 키를 사전에 공유 → ② 송신자가 메시지로 MAC 값을 계산해 메시지와 함께 전송 → ③ 수신자가 받은 메시지로 MAC을 다시 계산 → ④ 받은 MAC과 비교해 같으면 변조 없는 정당한 송신자의 메시지로 판단.
사용 사례: SWIFT(송금결제 메시지 인증), IPSec, SSL/TLS, VPN.
취약점과 대책
재전송 공격: 공격자가 MAC과 메시지를 그대로 가로채 다시 보냄 → 순서 번호, 타임스탬프, 비표(Nonce) 를 함께 전달해 대응합니다. MAC만으로는 막을 수 없습니다.
부인 방지 불가: 같은 비밀키를 둘 다 가지므로 제3자에게 누가 만들었는지 증명할 수 없습니다. 부인 방지는 공개키 암호(전자서명) 를 함께 써야 합니다.
MAC 종류
기반
설명
HMAC
해시 함수
RFC 2104, FIPS 198-1. TLS, IPSec, JWT 등에서 사용
CBC-MAC
블록 암호
CBC 모드로 암호화한 마지막 블록을 태그로 사용. 가변 길이에는 위조 가능성이 있어 단독 사용 위험
CMAC
블록 암호
CBC-MAC의 약점 보완(NIST SP 800-38B 권고)
GMAC
블록 암호(GCM)
GCM 모드의 인증 부분. 암호화 없이 인증만 할 때
해시·MAC·전자서명 비교
구분
해시
MAC
전자서명
키
없음
대칭키(공유 비밀키)
개인키로 서명, 공개키로 검증
무결성
제공
제공
제공
출처 인증
제공 안 함
제공
제공
부인 방지
제공 안 함
제공 안 함
제공
속도
빠름
빠름
느림
HMAC은 단순 해시 H(K‖m)를 쓸 때 생기는 길이 확장 공격을 막기 위해 해시를 두 번 거치는 구조입니다.
전자서명의 기능·조건·분류
기능 3가지: 무결성, 인증, 부인방지. 송신자가 개인키로 서명하고 송신자와 수신자 모두 가진 공개키로 검증합니다.
조건 5가지: 위조 불가, 서명자 인증, 부인 방지, 변경 불가, 재사용 불가. 서명값은 서명 대상 문서의 해시값과 서명자의 개인키로 계산하므로 문서가 다르면 서명도 다릅니다. 서명을 다른 문서에 그대로 붙여 쓰는 것이 재사용이며 불가능해야 합니다. 검증은 누구나 서명자의 공개키로 합니다.
메시지 복원형: 메시지 전체를 암호화한 후 복호화해 원래 메시지가 복원되는 방식으로 검증. 전체를 블록으로 나눠 암호화해야 해서 부하가 큼.
메시지 부가형: 메시지를 해시로 압축해 일정 길이의 해시값을 만들고 이를 서명해 메시지에 덧붙여 전송. 수신자는 공개키로 서명값을 복호화해 해시값을 비교. 복원형보다 부하가 훨씬 작아 실무 표준입니다.
국내법: 전자서명법은 전자서명을 서명자 신원 확인과 전자문서 서명 의사 표시를 위해 전자문서에 첨부·결합한 전자적 형태의 정보로 정의합니다. 전자금융감독규정은 전자서명 요건(서명생성정보가 본인에게 유일하게 속할 것, 서명 당시 본인이 지배·관리할 것, 변경 여부 확인 가능 등)을 정하고, 일정 요건 아래 전자문서에서 서명 시점 이후 변경 여부와 위·변조 여부를 확인할 수 있어야 합니다.
이중 서명(Dual Signature) 절차
SET에서 고객의 프라이버시 보호와 거래 정당성 확인을 위해 고안된 프로토콜입니다. 결제정보가 판매자를 거쳐 지급정보중계기관(PG)에 전달되므로 판매자에게 결제정보가 노출되지 않게 하면서, 판매자는 구매 내용을, PG는 결제 요청이 실제 고객의 것임을 확인하도록 합니다.
딥러닝(GAN, 확산 모델 등)으로 만든 합성 이미지·영상·음성입니다. 실제 인물의 얼굴과 목소리를 그럴듯하게 바꿉니다.
위협
사기·사칭: 경영진 음성·화상으로 송금 지시, 가족 사칭
인증 우회: 얼굴·음성 기반 생체 인증과 본인 확인(KYC) 공격
허위정보·선거 개입, 명예훼손, 성적 합성물 등 인격권 침해
대응
방식
설명
탐지 기술
생성 흔적(주파수 이상, 눈 깜박임·피부 혈류 불일치, 입 모양 오차)을 AI로 판별
생체 인증 보강
라이브니스(살아있음) 검증, 능동 질의, 다중 요소 결합
출처 증명·워터마크
콘텐츠 생성 시 출처·편집 이력을 서명 기반으로 기록하는 표준(C2PA 등)과 생성형 AI 워터마크
법·제도
딥페이크 성범죄 처벌 강화, 선거 관련 규제, 플랫폼 표시 의무
교육
이중 확인 절차(통화로 재확인), 미디어 리터러시
탐지와 생성은 창과 방패 관계여서 탐지만으로는 한계가 있습니다. 그래서 출처 증명과 절차적 대응이 함께 강조됩니다.
표준화 동향 한눈에
분야
주도 기관·표준
양자내성암호
NIST FIPS 203/204/205, 국내 KpqC
경량암호
NIST 경량암호 표준(ASCON), 국내 LEA 등
동형암호
ISO/IEC 18033-6, 18033-8 등 국제 표준화 진행
콘텐츠 출처 증명
C2PA
제로 트러스트
NIST SP 800-207
표준 번호는 외우기보다 "어느 분야가 어떤 표준을 정하고 있다" 는 방향을 이해하세요.
PQC 유형별 비교
유형
기반
장점
단점
예
격자
격자 문제
다양한 응용, 빠른 구현
파라미터 설정 어려움
NTRU, LWE 계열
해시
해시 충돌 저항성
안전성 증명 가능
서명이 큼
XMSS, SPHINCS+
코드
오류 정정 코드
빠른 암·복호화
키가 큼
McEliece
다변수
다변수 다항식
서명 작고 계산 빠름
키가 큼
Rainbow, GeMSS
아이소제니
타원곡선 아이소제니
작은 키
연산 느림
SIDH
동형암호 심화
"암호화한 채로 연산할 수 있는" 암호입니다. 1978년 Rivest·Adleman·Dertouzos가 개념을 제시했고 2009년 IBM의 Craig Gentry가 격자 기반 완전동형암호(FHE) 구조를 처음 제시했습니다.
분류
제한
부분동형(PHE)
연산 종류 제한(예: 덧셈만, 곱셈만)
준동형(SHE)
연산 횟수 제한
완전동형(FHE)
종류·횟수 제한 없음
연산마다 암호문에 Noise가 쌓여 한계를 넘으면 복호화가 불가능해집니다. Bootstrapping으로 Noise를 줄일 수 있지만 속도가 느려집니다. 원본 유출 위험을 줄여 개인정보 분석(PPDM)에 쓰이고, 무결성은 보장하지 않으며 가단성(Malleability)이 있습니다. 라이브러리는 HElib(IBM), SEAL(Microsoft), HEAAN(서울대, CKKS 기반) 등입니다.
블록체인 구조와 보안 이슈
다수 노드가 P2P로 연결되어 트랜잭션을 처리하고 순서대로 기록하는 분산 원장이며, 한번 기록된 내용은 사실상 변경할 수 없습니다. 레이어는 네트워킹(전파) → 컨센서스(합의) → 어플리케이션(상태 갱신)입니다.
비허가형(퍼블릭): 참여 제한 없음, 대부분 작업증명(PoW). 허가형(프라이빗·컨소시엄): 참여 제한, 위원회가 블록 생성, 대표 합의는 PBFT.
보안 이슈: 키 도난·분실·취약한 키 생성, 참여자 권한 오남용, 합의 가로채기, 블록체인 SW·스마트 컨트랙트 취약점, DDoS, 비정상 거래 탐지 불가.
경량 암호
연산 부담을 줄여 RFID·USN 등 IoT에 쓰는 암호이며 S-박스 없이 ARX(덧셈/뺄셈, 회전, XOR) 연산을 씁니다. 국내 대표는 HIGHT(블록 64, 키 128)와 LEA(블록 128, 키 128/192/256, 24/28/32라운드)입니다.
확인 문제
블록체인에서 과거 블록의 변조가 쉽게 드러나는 이유는?
정답 보기
각 블록이 이전 블록의 해시를 포함하므로, 과거 블록을 바꾸면 이후 모든 블록의 해시가 달라지기 때문입니다.
Shor 알고리즘이 위협하는 암호와 Grover 알고리즘의 영향은 각각?
정답 보기
Shor는 소인수분해·이산대수 기반 공개키 암호(RSA, DH, ECC 등)를 해독하고, Grover는 대칭키·해시의 안전 강도를 절반 수준으로 낮춥니다.
양자 시대에 대칭키 암호의 대응 방법은?
정답 보기
키 길이를 늘립니다(예: AES-128 대신 AES-256). 해시도 출력 길이를 늘립니다.
동형암호의 핵심 특징과 대표 한계를 쓰세요.
정답 보기
암호문을 복호화하지 않고 연산할 수 있으며, 연산이 매우 느리고 암호문 크기가 크다는 한계가 있습니다.
딥페이크 대응으로 얼굴 생체 인증을 보강하는 방법 하나는?
정답 보기
라이브니스(살아있음) 검증, 능동 질의, 다중 요소 결합 중 하나입니다.
PHE, SHE, FHE를 나누는 기준은?
정답 보기
PHE는 연산 종류가 제한되고, SHE는 연산 횟수가 제한되며, FHE는 종류와 횟수 제한이 없습니다.
위험 분석 접근법, 정량·정성 분석, ALE 계산, 위험 처리 전략을 계산 예제와 함께 정리합니다.
위험관리 절차
단계
내용
1. 전략·계획 수립
범위, 방법, 조직, 기준
2. 자산 식별·평가
정보 자산 목록, 중요도(CIA) 평가
3. 위협·취약점 식별
어떤 위협이 어떤 약점을 이용하는가
4. 위험 평가
위험의 크기 산정, 허용 가능한 수준과 비교
5. 대책 선정
비용 대비 효과를 따져 선택
6. 구현
대책 적용, 교육
7. 모니터링·개선
잔여 위험 확인, 주기적 재평가
위험 분석 접근법
접근법
설명
장점
단점
베이스라인
표준 점검표·가이드를 적용
빠르고 저렴
조직 특성 미반영
비형식적 접근
전문가의 경험과 판단
신속, 저비용
주관적
상세 위험 분석
자산·위협·취약점을 구체적으로 분석
정확, 조직 맞춤
시간·비용이 큼
복합적 접근
고위험은 상세 분석, 나머지는 베이스라인
효율적
구분 기준 필요
현실에서는 복합적 접근이 가장 많이 쓰입니다.
정량적 위험 분석
위험을 금액(화폐 가치) 으로 계산합니다.
기본 공식
용어
의미
AV (Asset Value)
자산 가치
EF (Exposure Factor)
노출 계수: 위협이 발생할 때 자산이 손실되는 비율 (0~1)
SLE (Single Loss Expectancy)
단일 예상 손실액 = AV × EF
ARO (Annualized Rate of Occurrence)
연간 발생 빈도
ALE (Annualized Loss Expectancy)
연간 예상 손실액 = SLE × ARO
계산 예제
> 자산 가치 1억 원인 서버. 화재 시 40%가 손실되고, 화재는 2년에 1번 발생할 수 있다.
SLE = 1억 × 0.4 = 4,000만 원
ARO = 0.5 (2년에 1번이므로 연 0.5회)
ALE = 4,000만 × 0.5 = 2,000만 원
비용·편익 분석
대책의 가치는 대책으로 줄어든 ALE에서 대책 비용을 뺀 값입니다.
대책 적용 후 ARO가 0.1로 감소, 대책의 연간 비용이 1,000만 원이라면
ALE(후) = 4,000만 × 0.1 = 400만 원
ALE 감소 = 2,000만 − 400만 = 1,600만 원
순편익 = 1,600만 − 1,000만 = 600만 원 (>0 이므로 도입 타당)
장점
단점
객관적, 비용·편익 분석이 쉬움, 경영진 설득에 유리
과거 통계가 부족하면 어려움, 자산 가치 산정이 어렵고 시간·비용이 큼
대표 기법
과거 자료 분석법: 과거 사고 통계로 발생 빈도 추정
수학공식 접근법: 위협 발생 빈도를 수식으로 계산(ALE)
확률 분포법: 발생 확률 분포를 이용한 추정
점수법: 항목별 점수 부여
정성적 위험 분석
위험을 등급(상·중·하) 으로 판단합니다. 숫자 대신 경험과 직관을 씁니다.
기법
설명
델파이법
전문가 그룹에 익명 설문을 반복해 의견을 수렴
시나리오법
특정 사건이 일어난 상황을 가정해 영향을 추정
순위 결정법
위험 요소를 중요도 순으로 나열
질문서법
체크리스트·설문으로 점검
장점
단점
빠르고 쉬움, 통계 없이도 가능
주관적, 결과 비교와 비용·편익 분석이 어려움
위험 처리 전략
전략
설명
예
위험 감소(완화)
대책을 도입해 위험을 줄임
패치, 방화벽, 교육
위험 회피
위험이 있는 활동 자체를 하지 않음
위험한 서비스 중단
위험 전가(전이)
위험을 제3자에게 이전
보험 가입, 아웃소싱
위험 수용(보류)
허용 가능한 수준이어서 감수
영향이 작은 위험 인정
허용 가능한 위험 수준(DoA): 조직이 감수할 수 있는 위험의 한계. 대책 후 잔여 위험이 DoA 이하가 되어야 합니다.
어떤 대책도 위험을 0으로 만들 수 없습니다. 비용 대비 효과가 없으면 수용합니다.
위험은 지속적으로 재평가해야 합니다(환경과 위협은 변화).
위험분석 접근법 4종
접근법
내용
장점
단점
베이스라인
국내외 표준·법령·가이드를 기준으로 관리
시간·비용 절약
조직 특성 미반영, 수준이 과하거나 부족
비정형
구조화된 방법론 없이 경험자 지식에 의존
소규모 조직에 적합, 신속
보호대책·비용 불확실
상세 위험분석
자산분석 → 위협분석 → 취약성분석 → 위험 평가
적절한 보안 수준 수립
전문 지식·시간·비용 큼
복합 접근
고위험 영역만 상세 분석 + 나머지는 베이스라인
비용 효율적, 고위험 영역 신속 식별
고위험 영역을 잘못 식별하면 낭비·부적절한 대응
정량·정성 분석 기법
정량적: 손실액 등 숫자로 표현. 민감도 분석(토네이도 도표), 금전적 기대값(EMV) 분석(확률 × 결과값 합), 몬테카를로 시뮬레이션(난수로 반복 계산), 의사결정 나무, 과거자료 분석법, 수학공식 접근법, 확률분포법. 계산이 복잡하고 시간이 오래 걸립니다.
대책 선택: 이익 = (적용 전 ALE − 적용 후 ALE) − 연간 대책 비용이며, 이익이 0보다 크고 가장 큰 대책을 고릅니다. 예: 적용 전 ALE 40,000일 때 대책 A(감소액 30,000, 비용 17,000, 이익 13,000), 대책 B(감소액 20,000, 비용 4,000, 이익 16,000)면 B를 선택합니다. 감소액만 보고 고르면 안 됩니다.
위험관리 6단계와 기본 통제
6단계: 관리 계획 수립 → 위험 식별 → 정성적 분석 → 정량적 분석 → 대응 계획 수립 → 감시 및 통제. 위험분석이 먼저 이루어지고 그 결과를 바탕으로 위험관리가 이어집니다. 목적은 위험을 조직이 수용할 수 있는 수준까지 낮추는 것입니다.
기본 통제(Baseline Controls) 는 위험분석 없이 통제를 적용하는 방식으로 비용 효율이 높지만, 보호 수준을 잘못 정하면 과도한 제한이나 보안 결함이 생길 수 있습니다. 위험 대응 4가지는 감소·회피·전가(외주·보험)·수용입니다.
의무 대상(일부): 정보통신서비스 부문 전년도 매출 100억 원 이상, 일일평균 이용자 100만 명 이상, 연매출 1,500억 원 이상 상급종합병원, 재학생 1만 명 이상 학교 등. 기준은 개정될 수 있으니 최신 고시로 확인합니다.
공통평가기준(CC) 구성과 인증 절차
국가마다 다른 정보보호시스템 평가기준을 연동하고 평가 결과를 상호 인정하기 위해 제정한 국제 표준(ISO/IEC 15408)으로 TCSEC, ITSEC, CPCPEC을 통합했고 CCRA로 국가 간 상호 인정합니다.
용어: 엘리먼트(분할할 수 없는 보안 요구사항의 최소 단위) → 컴포넌트(선택 가능한 가장 작은 요구사항 단위) → 패밀리(같은 보안 목적의 컴포넌트 모음) → 클래스(같은 목적의 패밀리 모음). 보호프로파일(PP) 은 특정 소비자 그룹의 요구를 만족하는 독립적인 보안요구사항 집합, 보안목표명세서(ST) 는 평가 대상 평가의 근거가 되는 보안요구사항과 구현 명세의 집합, 평가보증등급(EAL) 은 미리 정의된 보증 컴포넌트로 이루어진 패키지입니다.
구성(3부): 1부 CC 소개와 일반 모델(보안목적 표현과 보안요구사항 정의, PP·ST 구조) / 2부 보안기능 요구사항(기능 클래스·패밀리·컴포넌트) / 3부 보증 요구사항(보증 클래스·패밀리·컴포넌트, PP·ST 평가기준).
인증 절차: PP 평가(안정성, 일치성, 기술적 평가, TOE의 요구사항을 표현하는지 확인) → ST 평가(PP 요구사항 충족 여부, ST의 완전성·일관성·기술적 평가) → TOE 평가(ST에 명세된 보안요구사항 충족 여부).
등급
주요 내용
EAL1
기능 시험
EAL2
구조 시험
EAL3
체계적 시험과 검사
EAL4
체계적 설계·시험·검토
EAL5
준정형화 설계·시험
EAL6
준정형화 설계 검증
EAL7
정형화 설계 검증
EAL1이 최저, EAL7이 최고이며, 등급이 높을수록 평가가 엄격합니다. 국내에서는 평가기관, 인증기관, 정책기관, 신청기관, 사용기관이 구성되는 국내 CC 인증 체계와 상호인정협정(CCRA)을 따릅니다.
확인 문제
ISMS-P 인증기준 101개의 영역별 구성은?
정답 보기
관리체계 수립 및 운영 16개, 보호대책 요구사항 64개, 개인정보 처리 단계별 요구사항 21개