| 구분 | HTTP | HTTPS |
|---|---|---|
| 풀네임 | HyperText Transfer Protocol | HyperText Transfer Protocol Secure |
| 포트 | 기본 80 | 기본 443 |
| 암호화 | 없음 (평문 전송) | TLS(SSL) 기반 암호화 |
| 보안성 | 취약 (도청·위조·변조 가능) | 안전 (기밀성·무결성·인증 보장) |
| 인증 | 없음 | 서버 인증서(SSL/TLS)로 신뢰 확보 |
| 사용 예 | 과거 대부분 웹사이트 | 현재는 거의 모든 웹사이트 (특히 로그인·결제 필수) |
| 보안 위험 | 설명 | 방지법 |
|---|---|---|
| 스니핑 (Sniffing) | 평문으로 전송된 데이터를 네트워크 중간에서 엿봄 (아이디, 비밀번호, 카드번호 노출) | - HTTPS/TLS 암호화 사용 - VPN 사용(공용망) - 와이파이 WPA3 같은 안전한 무선 보안 적용 |
| 중간자 공격 (MITM, Man-in-the-Middle) | 공격자가 요청/응답을 가로채서 변조 (결제 금액 조작, 악성 코드 삽입) | - HTTPS 적용 + HSTS 정책으로 강제 HTTPS - 인증서 유효성 검사(만료/위조 확인) - 공용 와이파이에서 VPN 사용 |
| ARP 스푸핑 | 공격자가 로컬 네트워크에서 라우터로 위장해 트래픽 탈취 | - 스위치에서 DHCP Snooping, Dynamic ARP Inspection(DAI) 적용 - VPN 사용 - 내부망은 ARP 보안 장치 도입 |
| 세션 하이재킹 (Session Hijacking) | HTTP 쿠키(세션 ID)가 평문으로 전송 → 탈취 후 사용자 위장 | - HTTPS 사용(쿠키 암호화 전송) - 쿠키에 Secure, HttpOnly, SameSite 옵션 적용- 세션 만료 시간 짧게 설정 |
| DNS 스푸핑 | 공격자가 DNS 응답을 위조해 가짜 사이트로 유도 | - DNSSEC 사용 - DoH(HTTPS 기반 DNS), DoT(TLS 기반 DNS) 활용 - 브라우저/OS 보안 업데이트 유지 |
| 공격 기법 | 설명 | 예시 |
|---|---|---|
| XSS (Cross-Site Scripting) | 악성 스크립트를 주입해 사용자의 브라우저에서 실행 | 게시판 댓글에 <script>alert('해킹')</script> 삽입 |
| SQL Injection | 입력값 검증 부족으로 DB 쿼리 조작 | id=1 OR 1=1 로 로그인 우회 |
| CSRF (Cross-Site Request Forgery) | 사용자의 인증 정보를 악용해 의도치 않은 요청 실행 | 로그인 중인 사용자가 공격자 링크 클릭 → 강제 송금 |
| MITM (Man-in-the-Middle) | 클라–서버 사이에 끼어들어 트래픽 가로채기 | 공용 와이파이에서 패킷 변조 |
| 세션 하이재킹 | 세션 쿠키를 탈취해 사용자를 위장 | HTTP 쿠키 도청 |
| 브루트포스 공격 | 비밀번호를 무작위 대입으로 시도 | 짧은/단순 비밀번호 빠르게 뚫림 |
| 피싱(Phishing) | 가짜 웹사이트로 유도해 민감 정보 입력 유도 | 은행 로그인 페이지 사칭 |
| 용어 | 의미 |
|---|---|
| 평문 (Plaintext) | 사람이 이해할 수 있는 원본 데이터 (예: password123) |
| 암호문 (Ciphertext) | 암호화 알고리즘과 키로 변환된 읽을 수 없는 데이터 |
| 키 (Key) | 암호화·복호화 과정에서 사용하는 비밀 값 |
| 암호화 (Encryption) | 평문 → 암호문 변환 |
| 복호화 (Decryption) | 암호문 → 평문 복원 |
단방향 암호화 (해시 함수)
특징: 평문 → 암호문만 가능, 복호화 불가
대표 알고리즘: MD5(취약), SHA-1(취약), SHA-256, bcrypt, scrypt
용도: 비밀번호 저장, 무결성 체크(파일 해시)
ex)
평문: password123
SHA-256 → ef92b778... (64자리 해시)
양방향 암호화
대칭키 암호화
하나의 키로 암호화·복호화 모두 수행
장점: 빠름, 대량 데이터 처리 적합
단점: 키 교환 문제(중간에서 탈취 위험)
대표 알고리즘: AES, DES(구식), 3DES
ex)
mysecretkeyEncrypt("Hello", key) → Xy2!a...Decrypt("Xy2!a...", key) → Hello비대칭키 암호화
| 상황 | 암호화/서명에 사용하는 키 | 복호화/검증에 사용하는 키 |
|---|---|---|
| 데이터 기밀성 확보 | 수신자의 공개키로 암호화 | 수신자의 개인키로 복호화 |
| 전자서명 | 송신자의 개인키로 서명 | 송신자의 공개키로 검증 |
PKI란?
공개키 기반의 인증 체계. 신뢰할 수 있는 기관(CA, 인증기관)이 공개키가 특정 사용자/서버에 속함을 보증.
| 단계 | 송신자 → 수신자 | 메시지 | 내용 |
|---|---|---|---|
| 1 | 클라이언트 → 서버 | ClientHello | 클라 랜덤 값, 지원 암호군 목록, TLS 버전, 확장(SNI, ALPN 등) |
| 2 | 서버 → 클라이언트 | ServerHello | 서버 랜덤 값, 선택된 암호군, TLS 버전 |
| 3 | 서버 → 클라이언트 | Certificate | 서버 인증서 체인 (서버 공개키 포함) |
| 4 | 서버 → 클라이언트 | ServerKeyExchange | 서버의 임시(E)CDHE 공개키, 인증서 개인키로 서명 |
| 5 | 서버 → 클라이언트 | ServerHelloDone | 서버 측 초기 인사 종료 |
| 6 | 클라이언트 (로컬) | 인증서 검증 | CA 체인/서명/만료/도메인 검증 |
| 7 | 클라이언트 → 서버 | ClientKeyExchange | 클라이언트의 임시(E)CDHE 공개키 |
| 8 | 클라이언트 → 서버 | ChangeCipherSpec | 이제부터 암호화하겠다는 선언 |
| 9 | 클라이언트 → 서버 | Finished | 지금까지의 핸드셰이크 기록을 세션키로 암호화해 MAC 전송 |
| 10 | 서버 → 클라이언트 | ChangeCipherSpec | 서버도 암호화 전환 |
| 11 | 서버 → 클라이언트 | Finished | 서버도 Finished 메시지 전송 |
정의: 원격 서버 접속을 안전하게 해주는 암호화 프로토콜
포트: TCP 22
특징:
동작:
활용: 원격 로그인(ssh user@host), 파일 전송(SCP, SFTP), 포트 포워딩
Q1. 평문을 암호화한 것은 무엇인가? 암호문
Q2. 암호화할 때 사용한 키와 복호화키할 때 사용하는 키가 같은 암호화 방식은 무엇인가? 대칭키
Q3. 암호화할 때 사용한 키와 복호화할 때 사용하는 키가 다른 암호화 방식은 무엇인가? 비대칭키
Q4. 암호화한 데이터를 다시 원래대로 복호화할 수 없는 암호화 방식은 무엇인가? 단방향 암호화 해시
Q5. 10대의 컴퓨터가 서로 비대칭 키 암호화 방식을 이요해서 통신하려할 때 필요한 키의 수는 몇 개인가? 20개. 각각 개인 키와 공개 키
Q6. 데이터의 해시값을 생성하고 해시값을 특정 대상의 개인키로 암호화하며 데이터가 위변조되었는지 확인하거나 특정 대상의 신원을 확인할 때 사용하는 기술을 무엇이라고 하는가? 디지털 서명
Q7. 제 3의 인증 기관에게 발급받는 것으로, 서버의 도메인 주소와 공개 키를 인증해 주는 파일을 무엇이라고 하는가? 인증서
Q8. 발급 대상, 발급 기관, 발급 대상의 공개 키, 클라이언트의 공개 키 중 인증서에 포함되어 있지 않은 것은 무엇인가? 클라이언트의 공개 키
Q9. SSL 프로토콜은 OSI 모델에서 몇 계층에 속하는가? 4계층
Q10. 해시 암호화의 특징이 아닌 것은?