통신 보안

패킷은 여러 라우터를 거쳐 이동하기 때문에, 중간에 다른 사람이 그 내용을 몰래 들여다볼 수도 있습니다. 그래서 중요한 정보를 보낼 때는 암호화로 내용을 숨기고, 방화벽으로 위험한 접속을 미리 걸러내야 합니다. 이 장에는 약자와 전문 용어가 많이 나오므로, 처음 보는 말은 아래 📖 용어 및 약자 설명에서 찾아보세요.

암호화 — 알아볼 수 없게 뒤바꾸기

암호화는 읽을 수 있는 원래 글(평문)을 정해진 방법(알고리즘)과 비밀 값(키)으로 뒤바꾸어, 키가 없는 사람은 알아볼 수 없는 암호문으로 만드는 일입니다. 암호문을 키로 다시 평문으로 되돌리는 것은 복호화라고 합니다. 오늘날의 암호는 "알고리즘은 모두에게 공개해도, 키만 비밀이면 안전해야 한다"는 원칙(케르크호프스의 원리)을 따릅니다. 그래서 좋은 암호의 힘은 방법을 숨기는 데서가 아니라 키의 가짓수와 수학적 어려움에서 나옵니다.

구분원리키대표 예오늘날
고전 치환 암호글자를 정해진 규칙에 따라 다른 글자로 바꿈이동 칸 수, 키워드카이사르, 비즈네르빈도 분석·무차별 대입으로 쉽게 풀림(교육용)
고전 전치 암호글자는 그대로 두고 순서만 바꿈줄 수, 막대 굵기스키테일, 레일펜스글자 빈도가 그대로 남아 쉽게 풀림(교육용)
XOR·일회용 패드평문 비트와 키 비트를 XOR(같으면 0, 다르면 1)로 섞음평문만큼 긴 무작위 키, 한 번만 사용버냄 암호이론상 완벽하지만 긴 키를 미리 나눠 갖기 어려움
대칭키 암호비트를 바꾸고 섞는 과정을 여러 번(라운드) 되풀이. 잠그는 키와 여는 키가 같음128 ~ 256비트 키 하나AES, SEED, ChaCha20실제 데이터(웹, 와이파이, 디스크) 암호화의 주인공
공개키(비대칭) 암호수학적으로 짝지은 공개키로 잠그고 개인키로 엶. 소인수분해처럼 거꾸로 풀기 어려운 문제를 이용공개키·개인키 한 쌍RSA, 타원곡선(ECC)키 나누기, 전자서명, 인증서(HTTPS의 시작)
키 교환공개된 값만 주고받아 둘만 아는 같은 비밀 키를 만듦각자의 비밀 수디피-헬먼HTTPS 연결마다 새 대칭키를 만들 때 사용
해시 함수
(암호화와 구분)
아무리 긴 글도 고정 길이의 지문으로 요약. 되돌릴 수 없음(일방향)없음SHA-256비밀번호 저장, 파일이 바뀌지 않았는지 확인

실제 인터넷(HTTPS)에서는 이 방법들을 함께 씁니다. 처음에 키 교환·공개키로 상대를 확인하고 둘만의 대칭키를 만든 뒤, 실제 내용은 빠른 대칭키 암호(AES)로 암호화하고, 내용이 바뀌지 않았는지는 해시를 바탕으로 한 검사값으로 확인합니다. 아래 체험실에서 하나씩 직접 해 보세요.

👉 탭을 눌러 여러 암호를 바꿔 가며 체험해 보세요. 고전 암호를 직접 깨 보고, 진짜 현대 암호(AES·SHA-256)가 어떻게 다른지 비교해 보세요!

치환 암호 — 알파벳을 키만큼 밀어서 바꿉니다. 키 3이면 A→D, B→E … X→A가 됩니다. 율리우스 카이사르가 군사 편지에 썼다고 전해집니다.

3
원문
RADIO
암호화됨 (전송되는 내용)
UDGLR
복호화됨 (키를 아는 사람만)
RADIO

실제 인터넷에서는 이보다 훨씬 복잡한 방식(예: HTTPS)을 사용하지만, "키를 아는 사람만 원래 내용을 알 수 있다"는 기본 원리는 같습니다.

모든 계산은 이 화면 안에서만 이루어지며 입력한 글을 어디로도 보내지 않습니다. RSA와 디피-헬먼은 원리를 보이기 위한 아주 작은 수라서 실제로는 쉽게 풀리며, 실제 시스템에는 검증된 라이브러리와 충분히 큰 키를 써야 합니다.

방화벽 — 위험한 접속을 걸러내기

방화벽은 정해진 규칙에 따라 접속을 허용하거나 차단합니다. 아래 접속 시도가 컴퓨터 → 방화벽 → 서버 순서로 향한다고 할 때, 검사 버튼을 눌러 어떤 것이 방화벽을 통과해 서버까지 도달하고 어떤 것이 막히는지 확인해 보세요.

방화벽은 어디서 차단할까?

접속을 막는 방화벽은 한 곳에만 있는 것이 아닙니다. 아래처럼 네트워크 입구와 서버 자신, 두 단계에서 함께 차단이 이루어집니다.

네트워크 장비 방화벽 (경계 방어)

라우터나 전용 보안장비에 내장된 방화벽이 트래픽이 서버에 도달하기 전에 네트워크 입구에서 먼저 걸러냅니다. 한 번 설정해 두면 그 뒤에 있는 여러 서버를 한꺼번에 보호할 수 있어, 위험한 트래픽이 애초에 내부망 안으로 들어오지 못하게 막는 첫 번째 방어선입니다.

서버 자체 방화벽 (호스트 방어)

각 서버의 운영체제에도 자체 방화벽 기능(예: Linux의 iptables/nftables, Windows 방화벽)이 있어, 특정 IP 주소나 포트 번호 단위로 세밀하게 차단할 수 있습니다. 예를 들어 "80번 포트(웹)는 모두 허용하되 22번 포트(원격 접속)는 관리자 IP에서만 허용"처럼 서버별로 다른 규칙을 적용해, 네트워크 장비를 통과한 트래픽에 대한 마지막 방어선 역할을 합니다.

전산실의 보안 장비 — 종류와 작동 원리

기관의 전산실(데이터센터)에서는 방화벽 하나로 모든 것을 막지 않습니다. 성격이 다른 여러 보안 장비를 인터넷 입구부터 서버 앞까지 겹겹이 배치해, 한 장비가 놓친 공격을 다음 장비가 잡도록 합니다. 이를 심층 방어(defense in depth)라고 합니다. 아래는 흔히 볼 수 있는 배치의 예입니다.

전산실 보안 장비의 배치 예 인터넷에서 들어온 트래픽은 DDoS 방어, 방화벽, 침입방지시스템을 차례로 지납니다. 그 뒤 외부에 공개하는 DMZ 구역에서는 웹방화벽을 거쳐 웹 서버로, 내부망에서는 업무·데이터베이스 서버와 관측 데이터 서버로 갑니다. 관리자는 VPN과 접근제어 서버를 거쳐서만 서버에 접속하고, 모든 장비의 기록은 보안 관제 시스템으로 모입니다. 인터넷 DDoS 방어 대량 트래픽 거르기 방화벽(NGFW) IP·포트·앱 규칙 IPS 공격 패턴 차단 DMZ — 외부에 공개하는 구역 웹방화벽(WAF) HTTP 내용 검사 웹 서버 홈페이지·API 내부망 — 밖에서 바로 못 들어옴 업무·DB 서버 개인정보·회원 정보 관측 데이터 서버 저장소·전송 서버 서버마다: 자체 방화벽 · 업데이트 · 백신(EDR) 필요한 포트만 관리자 PC 밖에서 일할 때 VPN · 접근제어 서버 암호화 터널 · 2단계 인증 · 작업 기록 보안 관제(SIEM) 모든 장비·서버의 기록을 모아 이상 징후 경보
장비의 이름과 순서는 기관마다 다르며, 여러 기능을 한 장비에 합친 경우도 많습니다. 점선 상자는 서로 다른 보안 구역이고, 구역 사이에도 방화벽 규칙으로 꼭 필요한 접속만 허용합니다.
장비보는 계층작동 원리잘 막는 것혼자서는 못 막는 것
방화벽
(상태 기반)
L3·L4출발지·목적지 IP, 포트, 프로토콜을 규칙표와 위에서부터 차례로 비교해 처음 맞는 규칙대로 허용·차단합니다. 연결 상태를 기억해, 안에서 시작한 연결의 응답은 자동으로 통과시킵니다.허락하지 않은 포트·주소로의 접속, 포트 훑기(스캔)열어 둔 포트(웹 443번) 안에 숨은 공격
차세대 방화벽
(NGFW)
L3~L7포트 번호가 아니라 실제 응용 프로그램(웹, 메신저, 파일 공유 등)과 사용자를 알아보고 규칙을 적용합니다. 암호화된 트래픽을 풀어 검사하는 기능을 갖추기도 합니다.허락하지 않은 앱, 위험한 사이트 접속정상 앱의 정상 기능을 이용한 공격
침입 탐지·방지
(IDS·IPS)
L3~L7패킷 내용을 알려진 공격 패턴(시그니처)과 비교하고, 평소와 다른 이상 행동을 찾습니다. IDS는 복사본을 보고 알리기만 하고, IPS는 길 가운데 서서 바로 차단합니다.알려진 취약점 공격, 악성 코드 전파처음 보는 공격(제로데이), 내용을 볼 수 없는 암호화 트래픽
웹방화벽
(WAF)
L7 (HTTP)웹 서버 앞에서 대신 요청을 받아(리버스 프록시) 주소·매개변수·헤더·본문을 검사합니다. SQL 삽입, 스크립트 삽입(XSS), 경로 조작 같은 웹 공격 패턴을 걸러 내고, 허용된 형식만 통과시키도록 설정할 수도 있습니다.웹 프로그램의 약점을 노린 요청권한 검사를 빠뜨린 것 같은 프로그램의 논리 오류
DDoS 방어L3~L7들어오는 트래픽의 양과 모양을 재다가, 평소보다 크게 늘면 공격 트래픽을 골라 버리거나 속도를 제한합니다. 아주 큰 공격은 통신사·클라우드의 대규모 방어 설비가 흡수합니다.대량 접속으로 서비스를 마비시키는 공격적은 양으로 약점을 노리는 공격
VPN·접근제어L3~L7밖에서 내부망에 들어올 때 암호화된 통로(VPN)와 2단계 인증을 거치게 하고, 관리자 접속을 한 서버(접근제어·점프 서버)로 모아 누가 무엇을 했는지 기록합니다.도청, 훔친 비밀번호만으로의 접속정상 권한을 가진 사람의 실수·악용
백신·EDR서버·PC각 컴퓨터 안에서 프로그램의 행동을 지켜보며 악성 코드와 수상한 동작(대량 파일 암호화 등)을 찾아 멈춥니다.랜섬웨어, 악성 프로그램 실행네트워크로 오가는 공격 자체
보안 관제
(SIEM)
전체모든 장비와 서버의 기록(로그)을 한곳에 모아 시간 순서로 엮어 분석하고, 여러 곳에서 동시에 생긴 이상 징후를 경보로 알립니다.여러 단계에 걸친 공격의 발견— (직접 막지는 않고 발견·대응을 도움)

우리나라 공공기관에서는 이에 더해 업무용 컴퓨터망과 인터넷망을 아예 나누는 망분리도 널리 씁니다. 두 망 사이에서 자료를 옮길 때는 검사를 거치는 전용 자료 전송 장치를 씁니다. VPN이 터널을 만드는 원리와 OTP·패스키 같은 사용자 인증 방법은 VPN/OTP와 사용자 인증 편에서 직접 계산해 보며 다룹니다.

🔬 방화벽 규칙은 순서가 중요하다

👉 규칙을 켜고 끄거나 ▲▼로 순서를 바꾼 뒤, 시험 패킷이 어느 규칙에 걸리는지 확인해 보세요!

방화벽 규칙표 (위에서부터 비교, 처음 맞는 규칙 적용)

맨 아래 '기본 차단'은 어떤 규칙에도 맞지 않는 접속을 모두 막는 마지막 규칙으로, 끄거나 옮길 수 없습니다.

시험 패킷과 결과

🔬 웹방화벽은 무엇을 걸러 낼까?

👉 예시 요청을 고르거나 검색어를 직접 바꿔 보며, 웹방화벽이 정상 요청과 공격 요청을 어떻게 구별하는지 확인해 보세요!

실제 웹방화벽은 수백 ~ 수천 개의 규칙과 정상 요청의 형식을 함께 써서 판단합니다. 여기서는 대표적인 공격 네 가지의 단순한 규칙만 흉내 냈습니다. 웹방화벽은 보조 방어선일 뿐이고, 가장 확실한 방어는 아래 '서버 프로그램' 표처럼 프로그램 자체를 안전하게 만드는 것입니다.

서버 자체의 보안 — 운영체제와 계정 지키기

네트워크 장비를 아무리 갖춰도, 열어 둔 문(웹, 원격 접속)으로 들어온 공격은 결국 서버에 닿습니다. 그래서 서버 하나하나가 스스로를 지키도록 설정해야 합니다. 흔히 이것을 서버 보안 강화(하드닝)라고 합니다.

지킬 일방법이유
필요한 것만 설치·실행쓰지 않는 프로그램과 서비스를 지우거나 끄고, 열린 포트를 주기적으로 확인합니다(예: 리눅스 ss -tlnp).문이 적을수록 공격받을 곳도 적습니다.
보안 업데이트운영체제와 프로그램, 라이브러리의 보안 패치를 정기적으로(가능하면 자동으로) 적용합니다.대부분의 침해는 이미 고칠 방법이 나온 약점을 노립니다.
계정과 권한관리자(root) 계정으로 직접 로그인하지 않고, 필요할 때만 권한을 빌려 씁니다(sudo). 프로그램마다 전용 계정을 만들어 꼭 필요한 권한만 주고, 퇴직자·안 쓰는 계정은 잠급니다.한 계정이 뚫려도 피해 범위가 작아집니다(최소 권한).
원격 접속(SSH)비밀번호 대신 키로 인증하고, 22번 포트는 관리망·VPN에서만 엽니다. 로그인 실패가 반복되면 그 주소를 잠시 차단합니다(예: fail2ban).인터넷에 열린 원격 접속 포트는 하루에도 수천 번 비밀번호 대입 공격을 받습니다.
서버 자체 방화벽기본은 모두 차단하고, 서비스에 필요한 포트만 필요한 주소에 엽니다.앞단 방화벽이 잘못 설정되어도 한 번 더 막습니다.
파일 권한과 암호화설정 파일·키 파일은 소유자만 읽게(600) 하고, 개인정보와 백업은 암호화해 저장합니다.서버나 디스크를 잃어버려도 내용이 새지 않습니다.
기록과 정확한 시각접속·관리 기록을 남겨 별도 장소(보안 관제)로 보내고, 모든 서버의 시각을 시간 서버(NTP)에 맞춥니다.사고가 나면 여러 기록의 시각을 맞춰야 무슨 일이 언제 일어났는지 알 수 있습니다(장비간 시각동기화 편 참고).
백업 3-2-1사본 3개, 서로 다른 매체 2가지, 그중 1개는 다른 장소(또는 네트워크에서 분리된 곳)에 둡니다. 복구 연습도 정기적으로 합니다.랜섬웨어는 연결된 백업까지 암호화하므로, 떨어져 있는 사본이 있어야 되살릴 수 있습니다.
물리 보안전산실 출입을 통제·기록하고, 정전에 대비해 무정전 전원 장치(UPS)를 둡니다.서버에 직접 손을 대면 대부분의 보안 설정을 우회할 수 있습니다.

🧮 실제 값으로 계산해 보기 — 비밀번호는 왜 길어야 할까?

유출된 비밀번호 저장값을 공격자가 고성능 컴퓨터로 1초에 100억 번 맞춰 본다고 할 때, 가능한 모든 조합을 시험하는 데 걸리는 시간입니다.

비밀번호조합의 수모두 시험하는 시간
소문자 8자리268 ≈ 2.1 × 1011약 21초
대소문자·숫자 8자리628 ≈ 2.2 × 1014약 6시간
대소문자·숫자 12자리6212 ≈ 3.2 × 1021약 1만 년
대소문자·숫자 16자리6216 ≈ 4.8 × 1028약 1,500억 년
  • 글자 종류를 늘리는 것보다 길이를 늘리는 효과가 훨씬 큽니다. 8자리 → 12자리만으로 6시간이 1만 년이 됩니다.
  • 서버는 비밀번호 원문을 저장하지 않고, 일부러 느리게 만든 해시(bcrypt, Argon2 등)로 바꿔 저장합니다. 그러면 1초에 맞춰 볼 수 있는 횟수가 수천 ~ 수만 번으로 줄어 위 시간이 수십만 배 늘어납니다.
  • 사전에 있는 단어나 다른 사이트에서 쓰던 비밀번호는 조합 수와 상관없이 금방 뚫리므로, 2단계 인증을 함께 써야 합니다.

서버 프로그램을 만들 때 지켜야 할 보안

웹 서버나 데이터 서버의 프로그램 자체에 약점이 있으면, 방화벽이 열어 둔 정상 통로로 공격이 그대로 들어옵니다. 국제 웹 보안 단체 OWASP가 정리한 대표적인 약점과 이를 막는 방법은 다음과 같습니다. 모든 규칙의 바탕은 "사용자가 보낸 값은 아무것도 믿지 않는다"입니다.

약점무슨 일이 생기나프로그램에서 지킬 일
입력값 검증 부족예상하지 못한 값이 프로그램을 오작동하게 함서버에서 모든 입력의 형식·길이·범위를 허용 목록 방식으로 확인(브라우저 쪽 검사는 편의일 뿐)
SQL 삽입입력에 SQL 명령을 섞어 데이터베이스를 엿보거나 지움SQL 문장에 입력을 이어 붙이지 말고 매개변수 바인딩(prepared statement) 사용, DB 계정은 필요한 권한만
스크립트 삽입(XSS)게시글 등에 넣은 스크립트가 다른 사용자 브라우저에서 실행됨화면에 출력할 때 HTML 특수문자를 바꿔서(이스케이프) 출력, 콘텐츠 보안 정책(CSP) 헤더
요청 위조(CSRF)로그인한 사용자 몰래 다른 사이트가 글쓰기·삭제 요청을 보냄상태를 바꾸는 요청마다 CSRF 토큰 확인, 쿠키에 SameSite 속성
인증·세션 관리비밀번호 유출, 로그인 가로채기비밀번호는 느린 해시로 저장, 로그인 시도 횟수 제한, 로그인 후 세션 ID 새로 발급, 쿠키에 Secure·HttpOnly
권한 검사 누락주소의 번호만 바꿔 남의 정보를 봄요청마다 서버에서 "이 사용자가 이 자료에 접근할 수 있는지" 확인(버튼을 숨기는 것은 보안이 아님)
파일 올리기올린 파일이 서버에서 프로그램으로 실행됨확장자·내용 형식 확인, 크기 제한, 이름을 새로 붙여 실행되지 않는 위치에 저장
비밀 정보 노출코드 저장소에 남은 DB 비밀번호·API 키가 유출비밀 값은 코드와 분리해 권한이 제한된 설정 파일·환경 변수·비밀 관리 도구에 보관
자세한 오류 메시지SQL 문장·파일 경로가 화면에 드러나 공격 단서가 됨사용자에게는 간단한 안내만, 자세한 내용은 서버 기록에만(비밀번호·개인정보는 기록에도 남기지 않음)
오래된 부품사용 중인 라이브러리의 알려진 약점을 노림사용하는 라이브러리 목록을 관리하고 보안 업데이트를 정기적으로 반영
암호화하지 않은 통신로그인 정보·쿠키를 중간에서 엿봄모든 접속을 HTTPS로 강제하고 HSTS 등 보안 헤더 설정

PHP로 쓴 예시입니다. 다른 언어에도 같은 역할의 기능이 있습니다.

// ✗ 위험: 입력을 SQL 문장에 그대로 이어 붙임 → ' OR '1'='1 같은 입력이 명령이 됨
$sql = "SELECT * FROM users WHERE id = '" . $_GET['id'] . "'";

// ✓ 안전: 자리표시자(?)에 값을 따로 넘김 → 입력은 언제나 '값'으로만 취급됨
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([$_GET['id']]);

// ✓ 화면에 출력할 때는 HTML 특수문자를 바꿔서 (XSS 방지)
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');

// ✓ 비밀번호는 원문 대신 느린 해시로 저장하고, 비교도 전용 함수로
$hash = password_hash($password, PASSWORD_DEFAULT);
if (password_verify($input, $hash)) { /* 로그인 성공 */ }

// ✓ 글쓰기·삭제처럼 상태를 바꾸는 요청에는 CSRF 토큰 확인
if (!hash_equals($_SESSION['csrf_token'] ?? '', $_POST['csrf_token'] ?? '')) {
    http_response_code(403);
    exit;
}

// ✓ 로그인 성공 직후 세션 ID를 새로 발급 (세션 고정 공격 방지)
session_regenerate_id(true);

관측 데이터 전송 서버는 어떻게 지킬까?

전파망원경 데이터를 주고받는 서버도 방화벽의 두 단계 방어를 그대로 씁니다. 다만 대용량 과학 데이터에는 몇 가지 특별한 점이 있습니다.

지킬 점이유와 방법
제어 포트는 허락된 주소에서만VLBI 전송 프로그램 jive5ab의 제어 포트(기본 2620)에는 비밀번호 같은 인증이 없습니다. 접속만 되면 전송·덮어쓰기 명령을 내릴 수 있으므로, 서버 방화벽에서 제어용 컴퓨터의 IP만 허용합니다.
데이터 포트는 상대 서버에서만데이터 포트(기본 2630)는 데이터를 주고받는 상대 서버의 IP만 허용합니다. UDP 기반 전송을 쓰면 같은 번호의 UDP도 열어야 합니다.
받기와 올리기 권한 나누기관측 자료를 나눠 주는 저장소는 누구나 내려받게 열어 두더라도, 올리기·지우기는 허락된 장비와 주소에서만 하도록 따로 막아 둡니다.
내용이 맞는지 확인체크섬(SHA-256 등)으로 받은 파일이 보낸 파일과 같은지 확인합니다. 전송 도구의 "완료" 메시지만 믿지 않습니다.
암호화와 속도 사이의 선택수십 Gbps를 암호화하면 컴퓨터 부담이 커서, 대용량 데이터는 외부와 분리된 연구망 안에서 보내고 명령·로그인 같은 중요한 통신만 암호화(SSH, VPN)하는 경우가 많습니다.

실제 방화벽 설정 예(ufw)와 전송 도구 설치 방법은 대용량 데이터 전송 및 수신 편 ⑦에서 다룹니다.

핵심 정리

  • 암호화는 정해진 키로 내용을 뒤바꾸어, 키가 없으면 알아볼 수 없게 만듭니다. 방법은 공개하고 키만 비밀로 지키며, 안전성은 키의 가짓수와 수학적 어려움에서 나옵니다.
  • 고전 암호(치환: 카이사르·비즈네르, 전치: 레일펜스)는 빈도 분석과 무차별 대입으로 쉽게 풀립니다. 현대에는 대칭키 암호(AES)로 내용을, 공개키 암호(RSA·ECC)와 키 교환(디피-헬먼)으로 키 나누기와 서명을, 해시(SHA-256)로 무결성을 맡아 함께 씁니다.
  • 방화벽은 규칙에 따라 접속을 허용/차단해 위험한 접근을 걸러냅니다.
  • 방화벽은 네트워크 장비(경계 방어)와 서버 자체(호스트 방어, IP·포트 단위) 두 단계에서 함께 작동합니다.
  • 주소창의 자물쇠 표시(HTTPS)는 이런 암호화가 적용되고 있다는 뜻입니다.
  • 전산실은 DDoS 방어 → 방화벽(NGFW) → IPS → 웹방화벽(WAF) → 서버 순으로 성격이 다른 장비를 겹겹이 두는 심층 방어를 쓰고, VPN·접근제어로 관리자 접속을 통제하며, 보안 관제(SIEM)로 기록을 모아 감시합니다.
  • 방화벽 규칙은 위에서부터 차례로 비교해 처음 맞는 규칙을 적용하므로 순서가 중요하고, 맨 끝은 '기본 차단'이어야 합니다. 웹방화벽은 HTTP 내용까지 열어 웹 공격 패턴을 걸러 냅니다.
  • 서버 자체는 최소 설치, 보안 업데이트, 최소 권한 계정, 키 기반 SSH, 자체 방화벽, 기록·시각 동기화, 3-2-1 백업으로 지킵니다. 비밀번호는 길이가 가장 중요합니다.
  • 서버 프로그램은 입력을 믿지 않고 검증하며, 매개변수 바인딩(SQL 삽입 방지), 출력 이스케이프(XSS 방지), CSRF 토큰, 비밀번호 해시, 서버 쪽 권한 검사를 지켜야 합니다.
  • 관측 데이터 전송 서버는 인증 없는 제어 포트를 허락된 IP에만 열고, 받기·올리기 권한을 나누며, 체크섬으로 내용을 확인합니다(대용량 데이터 전송 및 수신 편 참고).

📖 용어 및 약자 설명

용어·약자원어(풀이)뜻
암호의 기본 용어
평문 / 암호문plaintext / ciphertext읽을 수 있는 원래 글 / 암호화되어 알아볼 수 없게 바뀐 글
암호화 / 복호화encryption / decryption평문을 암호문으로 바꾸기 / 키로 암호문을 평문으로 되돌리기
키key암호화·복호화에 쓰는 비밀 값. 키의 가짓수가 많을수록 안전
알고리즘algorithm정해진 계산 순서. 현대 암호는 알고리즘을 공개하고 키만 비밀로 함
케르크호프스의 원리Kerckhoffs's principle"방법이 알려져도 키만 비밀이면 안전해야 한다"는 암호 설계 원칙
무차별 대입brute force가능한 키를 하나도 빠짐없이 모두 넣어 보는 공격
빈도 분석frequency analysis글자가 나오는 횟수의 버릇으로 단순 치환 암호를 푸는 방법
치환 / 전치 암호substitution / transposition글자를 다른 글자로 바꾸는 암호 / 글자는 두고 순서만 섞는 암호
대칭키 암호symmetric-key cipher잠그는 키와 여는 키가 같은 암호. 빠름(예: AES)
공개키(비대칭) 암호public-key cipher공개키로 잠그고 짝이 되는 개인키로만 여는 암호(예: RSA, ECC)
키 교환key exchange공개된 값만 주고받아 둘만 아는 같은 비밀 키를 만드는 방법
해시 함수hash function어떤 입력이든 고정 길이 지문으로 요약하는 일방향 함수. 되돌릴 수 없음
무결성integrity자료가 중간에 바뀌지 않았음. 해시·인증 태그로 확인
전자서명digital signature개인키로 만든 값으로, 누가 보냈고 내용이 바뀌지 않았음을 공개키로 확인
인증서 / 인증기관certificate / CA (Certificate Authority)웹사이트의 공개키가 그 주소 주인의 것임을 믿을 만한 기관(CA)이 서명해 보증한 전자 문서
소인수분해 / 이산 로그factorization / discrete logarithm큰 수를 소수의 곱으로 나누기 / 나머지 연산 결과에서 지수 찾기. 둘 다 매우 어려워 공개키 암호의 바탕이 됨
암호 관련 약자
AESAdvanced Encryption Standard2001년 미국 표준이 된 대칭키 블록 암호. 키 128·192·256비트
SEED—1999년 우리나라에서 개발한 128비트 블록 암호
ChaCha20—모바일 기기 등에서 많이 쓰는 빠른 대칭키(스트림) 암호
GCMGalois/Counter ModeAES를 쓰는 방식의 하나. 암호화와 함께 인증 태그로 변조 여부를 검사
IVInitialization Vector암호화할 때마다 새로 정하는 시작 값. 같은 평문도 매번 다른 암호문이 되게 함(공개해도 됨)
RSARivest–Shamir–Adleman1977년 발표된 공개키 암호. 만든 세 사람의 이름 머리글자
ECCElliptic Curve Cryptography타원곡선을 이용한 공개키 암호. RSA보다 짧은 키로 같은 안전성
DHDiffie–Hellman1976년 발표된 키 교환 방법(디피-헬먼)
OAEPOptimal Asymmetric Encryption PaddingRSA로 암호화하기 전 무작위 값을 섞는 채움 방식. 같은 평문이 같은 암호문이 되는 것을 막음
XORexclusive OR두 비트가 같으면 0, 다르면 1인 연산. 컴퓨터 암호의 기본 연산
OTPOne-Time Pad일회용 패드. 평문만큼 긴 무작위 키를 한 번만 쓰는 암호(일회용 비밀번호 OTP와는 다른 뜻)
SHA-256Secure Hash Algorithm 256256비트 지문을 만드는 해시 함수
bcrypt · Argon2—비밀번호 저장용으로 일부러 느리게 만든 해시 함수
PQCPost-Quantum Cryptography양자내성암호. 양자컴퓨터로도 풀기 어렵게 설계한 새 공개키 암호
BB84Bennett–Brassard 1984빛 알갱이(광자)의 양자 성질로 키를 나누는 양자 암호 방식
네트워크·통신
IP / IP 주소Internet Protocol인터넷에서 패킷을 목적지까지 보내는 규약 / 기기의 인터넷 주소
TCP / UDPTransmission Control Protocol / User Datagram Protocol확인하며 순서대로 보내는 규약 / 확인 없이 빠르게 보내는 규약
포트port한 컴퓨터 안에서 어느 프로그램에 전달할지 구분하는 번호(예: 웹 443, SSH 22)
패킷packet네트워크로 보내기 위해 잘게 나눈 데이터 묶음
L3 · L4 · L7Layer 3 · 4 · 7OSI 7계층의 네트워크 계층(IP) · 전송 계층(TCP/UDP) · 응용 계층(HTTP 등)
HTTP / HTTPSHyperText Transfer Protocol (Secure)웹 페이지를 주고받는 규약 / 이를 TLS로 암호화한 것(주소창 자물쇠)
TLSTransport Layer SecurityHTTPS 등에서 통신을 암호화하는 규약(예전 이름 SSL)
SSHSecure Shell서버에 암호화된 통로로 원격 접속하는 규약(기본 22번 포트)
VPNVirtual Private Network인터넷 위에 암호화된 전용 통로를 만들어 내부망처럼 접속하는 기술
NTPNetwork Time Protocol네트워크로 컴퓨터 시각을 맞추는 규약
APIApplication Programming Interface프로그램끼리 정해진 형식으로 요청·응답을 주고받는 창구
DBDatabase데이터베이스. 정리된 자료를 저장·검색하는 시스템
보안 장비와 방어 개념
방화벽firewall규칙에 따라 접속을 허용·차단하는 장비·프로그램
상태 기반 방화벽stateful firewall연결 상태를 기억해, 안에서 시작한 연결의 응답은 자동 통과시키는 방화벽
NGFWNext-Generation Firewall차세대 방화벽. 포트가 아니라 응용 프로그램과 사용자까지 알아보고 규칙 적용
IDS / IPSIntrusion Detection / Prevention System침입 탐지 시스템(알리기만 함) / 침입 방지 시스템(바로 차단함)
WAFWeb Application Firewall웹방화벽. HTTP 요청 내용을 검사해 웹 공격을 걸러 냄
DDoSDistributed Denial of Service분산 서비스 거부 공격. 많은 기기로 한꺼번에 접속해 서비스를 마비시킴
DMZDemilitarized Zone외부에 공개하는 서버를 내부망과 분리해 두는 중간 구역
EDREndpoint Detection and ResponsePC·서버 안에서 수상한 행동을 찾아 대응하는 보안 프로그램
SIEMSecurity Information and Event Management보안 관제 시스템. 여러 장비의 기록을 모아 분석하고 경보
리버스 프록시reverse proxy서버 앞에서 요청을 대신 받아 전달하는 중계 서버(웹방화벽이 이 위치에서 동작)
시그니처signature알려진 공격의 특징 패턴. IPS·백신이 비교에 씀
제로데이zero-day아직 고칠 방법이 나오지 않은, 처음 알려진 약점이나 그것을 노린 공격
오탐 / 미탐false positive / false negative정상을 공격으로 잘못 판단 / 공격을 놓침
심층 방어defense in depth성격이 다른 방어 수단을 겹겹이 두어 하나가 뚫려도 다음이 막게 하는 전략
제로 트러스트zero trust내부망이라도 기본으로 믿지 않고, 접속할 때마다 사용자와 기기를 확인하는 방식
망분리network separation업무망과 인터넷망을 물리적·논리적으로 나누는 것
접근제어(점프) 서버bastion / jump server관리자 접속을 한곳으로 모아 통제하고 작업을 기록하는 서버
서버·웹 프로그램 보안
OWASPOpen Worldwide Application Security Project웹 보안 정보를 공개하는 국제 비영리 단체. "OWASP Top 10"으로 유명
SQL / SQL 삽입Structured Query Language / SQL injection데이터베이스 명령 언어 / 입력에 SQL 명령을 섞어 데이터베이스를 조작하는 공격
XSSCross-Site Scripting스크립트 삽입 공격. 넣은 스크립트가 다른 사용자 브라우저에서 실행됨
CSRFCross-Site Request Forgery요청 위조 공격. 로그인한 사용자 몰래 다른 사이트가 요청을 보내게 함
CSPContent Security Policy페이지에서 실행할 수 있는 스크립트 출처를 제한하는 보안 헤더
HSTSHTTP Strict Transport Security브라우저가 그 사이트에 항상 HTTPS로만 접속하게 하는 보안 헤더
매개변수 바인딩prepared statement / parameter bindingSQL 문장과 입력값을 따로 넘겨, 입력이 명령이 아닌 값으로만 다뤄지게 하는 방법
이스케이프escape<, > 같은 특수문자를 화면용 기호(&lt; 등)로 바꿔 명령으로 해석되지 않게 하는 처리
세션 / 쿠키session / cookie로그인 상태를 서버가 기억하는 정보 / 그 표시를 브라우저에 저장한 작은 값
Secure · HttpOnly · SameSite쿠키 속성HTTPS로만 전송 · 스크립트가 읽지 못함 · 다른 사이트에서 온 요청에는 보내지 않음
2단계 인증2FA / MFA (Multi-Factor Authentication)비밀번호에 휴대전화 확인 등 다른 수단을 더하는 인증
하드닝hardening서버의 불필요한 기능을 없애고 설정을 강화해 공격받을 곳을 줄이는 일
패치patch프로그램의 오류·보안 약점을 고친 업데이트
root / sudo—리눅스의 최고 관리자 계정 / 필요할 때만 관리자 권한을 빌려 명령을 실행하는 도구
fail2ban—로그인 실패가 반복되는 주소를 자동으로 잠시 차단하는 리눅스 도구
랜섬웨어ransomware파일을 암호화해 쓰지 못하게 한 뒤 돈을 요구하는 악성 코드
3-2-1 백업3-2-1 backup rule사본 3개, 매체 2가지, 그중 1개는 다른 장소에 두는 백업 원칙
UPSUninterruptible Power Supply무정전 전원 장치. 정전 때 잠시 전기를 공급
PHP / HTMLPHP: Hypertext Preprocessor / HyperText Markup Language웹 서버 프로그램 언어 / 웹 페이지를 표현하는 언어
기관·문서
KISAKorea Internet & Security Agency한국인터넷진흥원. 보호나라 운영, 침해 사고 대응
CERT / CCComputer Emergency Response Team / Coordination Center침해 사고 대응 조직 / 그 조정 센터. KrCERT/CC는 우리나라 조직
NISTNational Institute of Standards and Technology미국 국립표준기술연구소. AES·양자내성암호 등 보안 표준 발표
CSRC · SP · FIPSComputer Security Resource Center · Special Publication · Federal Information Processing StandardNIST의 보안 자료 센터 · 지침 문서 · 연방 정보 처리 표준
UTF-8Unicode Transformation Format – 8-bit전 세계 글자를 바이트로 저장하는 방식(한글은 대부분 3바이트)

🧑‍🏫 선생님·학부모님을 위한 설명 도움말

원리 자세히 보기

  • 자리이동 암호가 쉽게 풀리는 이유 — 영어 알파벳 자리이동 암호의 키는 25가지뿐이라, 하나씩 모두 넣어 보면(무차별 대입) 금방 풀립니다. 키를 몰라도 글자의 출현 빈도(영어에서는 E가 가장 많음)를 세어 보는 '빈도 분석'으로도 풀 수 있습니다. 좋은 암호는 키의 가짓수가 엄청나게 많고, 암호문에 원문의 버릇이 남지 않아야 합니다.
  • 현대 암호의 키 길이 — 인터넷에서 널리 쓰는 AES 암호의 128비트 키는 가짓수가 2128, 약 3.4 × 1038가지입니다. 1초에 1조 개씩 시험해도 모두 시험하려면 약 1019년, 우주 나이의 수억 배가 걸립니다. 그래서 오늘날 해킹은 암호를 정면으로 푸는 것보다 비밀번호를 훔치거나 사람을 속이는 방법을 주로 노립니다.
  • 대칭키와 공개키 — 같은 키로 잠그고 여는 대칭키 암호(AES 등)는 빠르지만, 처음 만난 상대에게 키를 몰래 전해 주기 어렵습니다. 공개키 암호는 누구나 쓸 수 있는 '공개 자물쇠'와 나만 가진 '개인 열쇠'를 짝으로 씁니다. RSA는 큰 소수 두 개를 곱하기는 쉽지만 그 곱을 다시 소인수분해하기는 매우 어렵다는 성질을 이용합니다. HTTPS는 먼저 공개키 방식으로 대칭키를 안전하게 나눠 가진 뒤, 실제 내용은 빠른 대칭키로 암호화합니다.
  • 자물쇠 표시가 보장하는 것 — HTTPS의 자물쇠는 ① 오가는 내용이 암호화되고 ② 중간에 바뀌지 않았으며 ③ 접속한 서버가 그 주소의 주인이 맞다는 것을 인증기관이 서명한 '인증서'로 확인했다는 뜻입니다. 사이트 운영자가 믿을 만한 사람인지까지 보장하지는 않습니다.
  • 방화벽의 기본 원칙 — 잘 설정된 방화벽은 "필요한 것만 열고 나머지는 모두 막는다(기본 차단)"를 따릅니다. 또 안에서 먼저 요청해 돌아오는 응답은 통과시키고, 밖에서 먼저 두드리는 접속은 막는 식으로 연결의 '상태'를 기억해 판단합니다.
  • 심층 방어와 제로 트러스트 — 예전에는 "방화벽 안쪽(내부망)은 믿을 수 있다"고 보았지만, 내부 PC 한 대가 악성 메일로 감염되면 안쪽에서 공격이 시작됩니다. 그래서 요즘은 장비를 겹겹이 두는 것에 더해, 내부망 안에서도 접속할 때마다 사용자와 기기를 다시 확인하는 '아무도 기본으로 믿지 않는다(제로 트러스트)' 방식이 늘고 있습니다.
  • 탐지는 '시그니처'와 '이상 행동' 두 갈래 — IPS·백신은 알려진 공격의 특징(시그니처)과 비교하는 방법이 정확하지만 처음 보는 공격은 놓칩니다. 평소와 다른 행동(새벽의 대량 다운로드, 갑자기 많아진 로그인 실패)을 찾는 방법은 새 공격도 잡지만 정상 행동을 잘못 경보하기도 합니다. 그래서 두 방법을 함께 씁니다.
  • 웹방화벽이 있어도 안전한 프로그램이 먼저 — 웹방화벽의 패턴은 철자를 바꾸거나 인코딩을 섞는 식으로 피해 가는 경우가 있습니다. 매개변수 바인딩처럼 프로그램이 입력을 '값'으로만 다루면 그런 요청이 와도 해가 없습니다. 웹방화벽은 프로그램을 고치기 전까지 시간을 벌어 주는 보조 방어선으로 생각해야 합니다.
  • 전파는 누구나 받을 수 있다 — 유선은 선에 접근해야 엿들을 수 있지만, 전파는 벽 너머까지 퍼집니다. 그래서 Wi-Fi, 블루투스, 휴대전화는 모두 무선 구간을 암호화합니다.

암호의 발전사

시기사건의미
고대 그리스스키테일널리 알려진 이야기로는 스파르타 사람들이 막대에 가죽 띠를 감아 글을 쓰고 풀어서 보냈다고 합니다. 같은 굵기의 막대가 있어야 읽을 수 있는 '자리 바꾸기' 암호입니다. 실제로 암호로 쓰였는지는 학자들 사이에 의견이 갈립니다.
기원전 1세기카이사르 암호로마의 역사가 수에토니우스에 따르면 율리우스 카이사르는 글자를 세 자리씩 밀어 군사 편지를 썼습니다. 위 실험의 키 3이 바로 이 방식입니다.
9세기알킨디의 빈도 분석아랍의 학자 알킨디가 글자의 출현 빈도로 암호를 푸는 방법을 처음으로 기록했습니다. 단순한 글자 바꾸기 암호는 이때부터 안전하지 않게 되었습니다.
1918~1945년에니그마와 암호 해독독일의 셰르비우스가 회전자로 글자를 계속 바꾸는 암호 기계를 특허로 냈고, 군대가 이를 썼습니다. 1932년 폴란드의 레예프스키가 처음 풀었고, 제2차 세계대전 중 영국 블레츨리 파크에서 튜링 등이 해독 기계로 이어받았습니다.
1976~1977년공개키 암호디피와 헬먼이 처음 만난 사이에도 비밀 키를 나눠 가질 수 있는 방법을 발표했고, 이듬해 RSA 암호가 나왔습니다. 오늘날 인터넷 보안의 바탕입니다.
1984년양자 암호(BB84)베넷과 브라사드가 빛 알갱이(광자)의 양자 성질로 키를 나누는 방법을 제안했습니다. 누군가 엿보면 그 흔적이 반드시 남는다는 것이 특징입니다.
1999년 / 2001년SEED와 AES우리나라에서 128비트 블록 암호 SEED가 개발되었고, 미국은 공개 경쟁으로 고른 AES를 표준으로 정했습니다.
2024년양자내성암호 표준미래의 양자컴퓨터가 RSA 같은 공개키 암호를 풀 수 있다는 우려에 대비해, 미국 국립표준기술연구소(NIST)가 양자컴퓨터로도 풀기 어려운 새 암호 표준을 발표했습니다.

보안 장비와 큰 보안 사고의 역사

시기사건의미
1988년모리스 웜인터넷에 연결된 컴퓨터의 약점을 타고 스스로 퍼지는 프로그램이 당시 인터넷 컴퓨터의 상당수를 멈추게 했습니다. 이 사건을 계기로 침해 사고 대응 조직(CERT)이 생겼습니다.
1980년대 말 ~ 1990년대패킷 필터와 상태 기반 방화벽IP·포트로 거르는 패킷 필터 방화벽이 등장했고, 1990년대에는 연결 상태를 기억하는 상태 기반 방화벽이 상용화되어 기업 네트워크의 기본 장비가 되었습니다.
2003년슬래머 웜과 OWASP Top 101월 슬래머 웜이 몇 분 만에 전 세계로 퍼져 우리나라 인터넷이 마비되었습니다(1·25 인터넷 대란). 같은 해 웹 프로그램의 대표 약점을 정리한 OWASP Top 10이 처음 발표되었습니다.
2009년7·7 DDoS 공격감염된 수많은 PC가 국내외 주요 사이트에 동시에 접속해 서비스를 마비시켰고, DDoS 방어 체계를 갖추는 계기가 되었습니다.
2013년3·20 전산망 해킹방송사와 금융기관의 PC·서버 하드디스크가 한꺼번에 지워졌습니다. 내부 관리 서버를 거쳐 퍼진 공격이라, 관리자 접속 통제와 망분리의 중요성이 커졌습니다.
2016년 ~ 현재IoT 기기 감염과 랜섬웨어기본 비밀번호를 쓰던 카메라·공유기가 대규모 공격에 동원되고(CCTV 편 참고), 파일을 암호화해 돈을 요구하는 랜섬웨어가 늘면서 분리 보관 백업이 필수가 되었습니다.

비유로 설명하기

  • 전산실의 보안 장비는 공항 보안 검색과 같습니다. 출입구에서 인원을 조절하고(DDoS 방어), 탑승권과 여권을 확인하고(방화벽), X선으로 수상한 물건을 찾고(IPS), 기내에 들고 가는 가방 안까지 열어 봅니다(웹방화벽). 그래도 비행기 안에는 승무원(서버 자체 보안)이 있습니다.
  • 매개변수 바인딩은 주문서의 빈칸과 같습니다. 손님이 빈칸에 "그리고 금고도 열어 주세요"라고 써도, 주방은 그것을 주문할 메뉴 이름으로만 읽습니다.
  • 공개키 암호는 "열린 맹꽁이자물쇠를 잔뜩 나눠 주기"와 같습니다. 누구나 그 자물쇠로 상자를 잠가 나에게 보낼 수 있지만, 여는 열쇠는 나만 가지고 있습니다.
  • 두 단계 방화벽은 "아파트 공동 현관과 우리 집 현관문"과 같습니다. 공동 현관(네트워크 방화벽)을 통과해도 집마다 다른 도어록(서버 방화벽)이 한 번 더 지킵니다.

자주 하는 오해

  • "자물쇠(HTTPS) 표시가 있으면 안전한 사이트다" — 자물쇠는 '오가는 내용이 암호화되었다'는 뜻일 뿐입니다. 가짜 은행이나 피싱 사이트도 자물쇠를 달 수 있으므로 주소가 정확한지 꼭 확인해야 합니다.
  • "방화벽이 있으면 해킹당하지 않는다" — 방화벽은 열어 둔 문(예: 웹 80·443번 포트)으로 들어오는 공격이나, 사용자가 직접 내려받은 악성 파일까지 막지는 못합니다. 프로그램 업데이트, 강한 비밀번호, 2단계 인증을 함께 써야 합니다.
  • "웹방화벽을 달았으니 프로그램은 대충 만들어도 된다" — 웹방화벽은 알려진 패턴만 걸러 내고 우회되기도 합니다. 권한 검사 누락 같은 논리 오류는 아예 보지 못합니다.
  • "내부망에 있는 서버는 안전하다" — 감염된 내부 PC나 실수로 연결된 장비를 통해 안쪽에서 공격이 시작되는 경우가 많습니다. 내부 서버도 업데이트와 자체 방화벽이 필요합니다.
  • "화면에서 버튼을 숨겼으니 다른 사람은 그 기능을 못 쓴다" — 요청 주소만 알면 누구나 보낼 수 있습니다. 권한 확인은 반드시 서버에서 해야 합니다.

함께 해 볼 질문·활동

  • 암호 체험실에서 같은 문장을 카이사르·비즈네르·AES로 각각 암호화해 보고, 어느 것이 25가지 대입이나 빈도 분석으로 풀리고 어느 것이 풀리지 않는지 이유를 정리하기
  • 키를 알려 주지 않은 카이사르 암호문을 짝에게 주고, 25가지 키를 모두 시험하거나 가장 많이 나온 글자를 E라고 가정해 풀어 보는 '해독 대회' 열기
  • 키친타월 심이나 연필에 종이 띠를 감고 글을 쓴 뒤 풀어서 스키테일 암호를 만들고, 굵기가 다른 막대로는 읽히지 않는지 확인하기
  • 자주 가는 웹사이트 주소창의 자물쇠를 눌러 인증서를 누가 발급했는지, 언제까지 유효한지 함께 확인해 보기
  • 방화벽 규칙 실험에서 '공격 이력 주소 차단' 규칙을 웹 허용 규칙 아래로 내렸을 때 어떤 패킷이 새로 통과하는지 찾고, 규칙 순서를 정하는 원칙을 말로 정리해 보기
  • 비밀번호 계산표를 보며 "짧고 복잡한 비밀번호"와 "길고 외우기 쉬운 문장형 비밀번호" 중 어느 쪽이 더 강한지 토론하고, 가족의 계정에 2단계 인증을 켜 보기

본 교육자료는 Anthropic(Claude) 및 OpenAI(ChatGPT)를 활용하여 제작하였으며, 제작자가 내용을 검토·편집하였습니다. 주요 참고자료와 출처는 각 페이지의 「참고 자료 및 출처」에 명시하였습니다. 출처가 별도로 표기되지 않은 페이지와 참고자료에 포함되지 않은 내용은 제작자가 직접 작성하거나 정리한 것입니다. 내용에 오류가 있거나 수정이 필요한 사항을 발견하시면 kvnsite@kasi.re.kr로 알려 주시기 바랍니다.