1. 정보 보안
- 정당하지 않은 사용자로부터 자산(정보)를 지키는 행위
- 완벽한 정보 보안을 현실적으로 불가능 => 상황과 목적에 맞는 최적의 보안 수준 설정 필요
- 경제학적 관점 : 공격 비용 > 정보가치 > 보안 비용
2. 정보 보안 대응 전략
- 위험 수용 (Acceptance): 위험을 귿로 받아들이고 특별한 조치를 하지 않음
- 위험 감소 (Mitigation/Reduction) : 위험 발생 가능성이나 피해를 줄이도록 조치함
- 위험 회피 (Avoidance) : 위험이 있는 활동 자체를 피하거나 제거함
- 위험 전가 (Trnasfer) : 보험, 외부 업체 계약 등으로 위험 책임을 다른 곳으로 옮김
3. CIA
기밀성 (Confidentality) : 허가된 사람만 정보 접근 가능 (비밀키(대칭키), 공개키(비대칭키))
무결성 (Integrity) : 정보가 승인되지 않은 방법으로 변경되지 않도록 하는 것 (암호화적 해시함수, MAC)
가용성 (Availability) : 필요한 사람이 필요할 때 정보를 이용할 수 있도록 보장
4. 현대 암호
- 케르크호프스 원리 : 암호 시스템의 안전성은 알고리즘 자체가 아니라, 키만 비밀이여야 한다 (secret key)
- 난수 (random number) => 암호화 키, 인증 토큰 생성할 때 사용
- 의사 난수 (Pseudo Random Number) : 알고리즘 (수학적 공식)에 의해 생성되는 난수
- 진난수 (True Random Number) : 물리적 현상(자연적 잡음)에서 발생하는 불규칙성을 이용해 생성된 난수
5. 비밀키(대칭키)
- 참여자가 N명일때 개인이 관리해야할 key의 개수는 N-1
- 전체 key의 개수는 N(N-1)/2개 필요함
- 송신자가 대칭키를 이용해 데이터를 암호화하여 전송하면, 수신자는 대칭키를 이용해 데이터를 복호화하여 사용한다.
- 대표적인 대칭키 알고리즘 : DES, AES, ARIA 등등 ..
- 스트림 암호 (Stream Cipher)
- 데이터를 1비트 또는 1바이트 단위로 암호화
- 평문을 스트림(연속적인 흐름)으로 처리함
- 키와 평문에 대해 XOR 연산을 수행 (같으면 0, 다르면 1을 출력)
- 빠른 성능이 필요한 데이터를 실시간으로 보호 가능
- 1bit 오류는 해당 bit에만 영향을 준다
- 하지만 블록 암호의 비해 사용 빈도가 떨어짐 (표준화 부재, 보안 취약점, 유연성 부재)
- 블록 암호 (Block Cipher)
- 데이터를 일정 크기 (64bit, 128bit) 블록 단위로 암호화
- 같은 키와 평문 블록은 항상 같은 암호문 블록 생성
- 1bit 오류는 해당 블록에 영향을 준다.
- 상대적으로 느린 연산 속도를 가지고 있다.
- 대부분의 데이터 암호화에서 사용한다.
6. 블록 암호
- 평문과 암호문이 고정된 크기의 블록으로 구성
- 블록 크기를 맞추기 위한 패딩 (Padding) 필요
- 블록 암호의 핵심 원리인 혼돈(confuse)과 확산 (diffusion)은 암호를 해독하기 어렵게 만드는 두가지 기본 전략이다.
- 혼돈은 평문과 키 관계를 복잡하게 만드는 것
- 확산은 평문 한 비트가 변화하면 암호문 전체가 변화하는 것
- 블록 암호 패딩 : 전체 평문 길이가 블록 크기의 배수가 아닐 때 블록 크기의 배수가 되도록 채우는 것이다.
7. 블록 암호 운영 방식
(1). ECB (Electronic Code Book)
- 가장 단순한 방식으로, 각 블록을 독립적으로 암호화한다.
- 같은 평문 블록 -> 같은 암호문 블록
- 패턴 노출에 위험하지만 구현이 간단하며 빠르다는 장점이 있다.
Plain1 → Encrypt → Cipher1
Plain2 → Encrypt → Cipher2
Plain3 → Encrypt → Cipher3
(2). CBC (Cipher Block Chaining)
- 이전 암호화 블록과 현재 평문 블록을 XOR한 뒤 암호화 하는 방식이다.
C1 = E( P1 ⊕ IV )
C2 = E( P2 ⊕ C1 )
C3 = E( P3 ⊕ C2 )
(IV: Initialization Vector, 초기화 벡터)
- 동일한 평문이라도 이전 암호문과 다르면 결과가 달라지기 때문에 패턴 숨기기가 가능하다.
- 복호화는 순차적으로 진행해야 하기 때문에 병렬 처리가 어렵다
- 전송 중 블록 하나가 깨지면 이후에 영향이 있다.
- (참고) 통신 프로토콜에서 CBC 사용 단계
- 송신자와 수신자가 공유 비밀키(K)와 IV를 결정 (IV는 매 세션마다 새로 생성)
- 평문 길이가 블록 크기의 배수가 아닐 경우 패딩 추가 (PKCS#7)
- 평문 블록마다 이전 암호문 블록과 XOR 후 암호화
- 암호문 블록과 IV를 함께 전송
- 수신자가 IV와 공유키를 사용하여 복호화함.
(3). CTR (Counter)
- 블록 암호를 스트림 암호처럼 사용하는 방식
- 평문을 직접 암호화하지 않고, 암호화된 카운터 값과 XOR하는 방식이다.
- 핵심 아이디어 (카운터 -> 암호화 -> XOR 방식)
- 1) 카운터라는 숫자를 블록 단위로 하나씩 증가시킴
- 2) 각 카운터를 블록 암호로 암호화 -> 그 결과를 키스트림(key stream)으로 사용
- 3) 그 키스트림과 평문을 XOR하면 암호문이 됨
- 각 블록마다 카운터가 다르므로 동일한 평문이라도 암호문이 달라짐.
- 병렬 처리 가능
- 가변 길이 데이터를 패딩 없이 암호화 가능 (비트 단위 암호화 가능)
8. 공유키(비대칭키)
- 참여자가 N명일 때 개인이 관리해야 할 key는 자신의 개인키 1개
- 상대방의 공개키는 공개되어 있어서 관리할 필요가 없음
- 대표적인 알고리즘 : RSA
- 디지털 서명: 자신의 비밀키로 암호화 (서명) => 받은 서명을 공개키로 복호화 = 메세지를 똑같이 해시함수를 적용시켜보고 같으면 ok , 다르면 변조된 것
- 안전한 공개 키 배포 및 유효성 검증을 위해서 PKI (Public Key Infrastructure)과 Out of Band가 사용된다.
- PIK는 정말 이사람의 것이라는 것을 보장해 주는 시스템
- PIK에서는 체인검증을 함
- Out of Band는 공개키를 전달할 때 다른 경로를 이용하는 방식
9. 하이브리드 암호화 (Hybrid Cryptosystem)
- 대칭키 암호는 빠르고 효율적이지만, 키 배포가 어렵다.
- 공개키 암호는 키 배포는 편리하지만, 암호화/복호화 속도가 느리다.
- 1) 실제 메세지 (데이터)는 대칭키로 암호화
- 2) 그 대칭키 자체를 수신자의 공개키로 암호화
- 3) 수진자는 자신의 비밀키로 대칭키를 복호환 후, 메세지 해독
- 메세지 자체는 빠른 대칭키 암호를 사용하고, 키 배포는 안전하게 공개키 암호로 처리하는 것이다.
10.암호학적 해시함수
- 데이터 무결성을 보장한다.
- 입력 데이터를 고정된 길이의 해시값(Hash value)으로 변환하는 함수
- 단방향성, 충돌 저항성, 민감도
11. MAC (Message Authentication Code)
- 무결성 보장
- 메세지 인증 코드 => 메세지의 무결성과 인증을 확인하기 위해 사용
- 메세지가 전송 중에 변조되지 않았는지, 정말 해당 메세지를 보낸 사람인지 확인
- 동작 원리
- 1) 공유 비밀키 K를 송신자와 수신자가 미리 공유
- 2) 메시지 M과 키 K를 입력으로 하여 MAC 값 T 계산
- 3) 송신자는 M과 T를 함께 전송
- 4) 수신자는 받은 M과 공유된 K로 다시 MAC 계산
- 5) 받은 T와 생성한 T를 대조하여 비교한다.
12. AEAD (Authenticated Encryption with Associated Data)
- 기밀성, 무결성, 인증 보장
- 암호화와 인증을 동시에 수행하는 방식
- Tag(인증 태그) : 메세지의 무결성을 검증하는 값 (MAC과 흡사)
- Error(오류) : 인증 태그 검증 실패시 발생
- Associated Data(부가 데이터) : 암호화하지 않았지만 무결성 검증에 포함되는 데이터 (패킷 헤더, 메세지 ID, 타임스템프)
- AEAD는 메세지, 부가데이터 => 암호화 + 태그 생성하고, 수신 측에서는 암호화 해체 + 태그 검증을 수행한다. 검증 실패시 Eroor 반환하는 구조이다.
- 대표 알고리즘 : GCM, CCM, ChaCha20-Poly1305
| 알고리즘 | 기반 | 인증 방식 | 특징 |
|----------|------|-----------|------|
| GCM | AES 블록 암호 | Galois field | 병렬 처리 가능, 속도 빠름 |
| CCM | AES 블록 암호 | CBC-MAC | 순차 처리, 무선 통신용 |
| ChaCha20-Poly1305 | 스트림 암호 | Poly1305 | AES 없는 환경에서도 효율적, 속도 빠름 |
13. 안전한 메세지 통신을 위한 필수 요소
- MITM(Man in the Middle) : 공격자가 중간에 메세지를 가로채거나 변조하는 공격
- 중간자 공격을 막기 위해서는 상호인증 + 암호화 키 및 인증 키 공유 + 안전한 데이터 전송이 필요하다.
- KDC(Key Distribution Center) : 대칭키 환경에서 중앙 인증 서버 역할 => 안전한 공유 키를 발급 및 배포
14. 인증
- 1) 지식 기반 인증 (something you know)
- 비밀번호,PIN, 보안 질문 등
- 가장 일반적인 인증 방식이지만 유출 위험이 있음.
- 2) 소유 기반 인증 (something you have)
- OTP (One Time Password)
- 보안카드, USB 보안키
- 부수적인 물리적 장치를 이용하지만 상대적으로 안전
- 3) 생체 기반 인증 (something you are)
- 지문, 홍채, 안면, 음성 인식
- 사용이 편리하고 위조가 어려움
- 초기 구축 비용이 높다
15. 주요 인증 방식
(1). OTP (One Time Password)
- 한 번만 사용할 수 있는 비밀번호를 말한다.
- TOTP(Time based One Time Password) => 공유된 seed와 time 기반
- 상대적으로 보안성이 높다
- 정해진 짧은 시간 내에 생성된 코드를 입력해야하는 불편함이 존재
- HOTP (HMAC based One time Password) => 공유된 seedd와 event 기반
- 시간적 민감성이 부족하여 재사용 공격 등과 같은 특정 취약점에 노출 가능성
- 일반적으로 많이 사용
(2). FIDO (Fast IDentity Online)
- 비밀번호 없이 안전하게 인증을 수행하는 인증 표준
- 주로 웹 서비스와 모바일 앱에서 사용
- 공개키 암호 기반 인증을 사용
- 사용자의 디바이스(스마트폰, 보안 키, 생체 인증 장치)가 인증 과정에 참여한다.
16. MFA (Multi Factor Authentication)
- 로그인을 할 때 두가지 이상의 인증 요소를 요구하는 방식
- 예 : 비밀번호 + SNS 코드, 비밀번호 + 지문
17. SSO (Single Sign On)
- 한번 로그인으로 여러 시스템이나 서비스에 접근할 수 있게 해주는 인증 방식
- 예: 회사 계정으로 이메일, 인트라넷, 업무 툴 모두 접근 가능
18. OAuth
- 다른 서비스의 계정으로 로그인 허용하는 인증 표준
- 예 : 구글 계정으로 앱 로그인 -> 앱이 구글에서 인증만 받고 비밀번호는 모름
19.보안 솔루션
(1). 네트워크
- VPN 가상 사설망 : 인터넷 통신을 암호화하여 안전하게 연결
- NAC (Network Acess Control) :네트워크 접근 권한 확인
- DLP (Data Loss Prevention) : 중요 데이터 유출 방지
(2). 엔드 포인트 보안 솔루션
- 안티 바이러스/ 안티 멀웨어
- PMS (Patch Management System) : 소프트웨어 취약점 패치 관리
- EDR (Endpoint Detection & Response) : 엔드포인트 위협 탐지 및 대응
- XDR (Extended Detection & Response) : 여러 보안 장치를 통합해 위협 대응
- IAM (identitiy and Access management) : 사용자 계정과 접근 권한 관리
(아래 내용은 참고사항입니다.)
PQC (Post Quantum Cryptography)
- 양자 컴퓨터가 충분히 강력해지면 현재의 공개키 기반 암호는 취약
- PQC 양자 공격에 안전한 알고리즘을 연구하고 표준화하는 과정
KCMVP (Korea Cryptographic Module Validation Program)
- 한국에서 암호 모듈의 안전성을 검증하고 인증하는 제도
- 암호 알고리즘 적합성, 키 관리, 접근 제어, 데이터 보호, 환경 보안과 관련해서 검증
- Type - Length - Value
- T는 데이터의 종류
- L은 데이터의 길이
- V는 실제 데이터
┌────────┬─────────┬────────────────────┐
│ Type │ Length │ Value │
├────────┼─────────┼────────────────────┤
│ 0x01 │ 0x03 │ "ABC" │
└────────┴─────────┴────────────────────┘