공부한 내용 정리하는 공간입니다.
틀린 내용이 있을 수 있습니다.
모든 지적, 첨언 환영합니다.
암호화 요구사항
기밀성 (Confidentiality) : 인가된 자만 데이터 접근
신뢰성 (Authenticity) : 인증
무결성 (Integrity) : 인가된 자만 데이터 변경
>Key를 이용한 암호화 기술로서 3가지 해결
Symmetric Key (대칭키)
암호화 키 = 복호화 키
키를 전달하는 방법도 중요함
ex)
암호화 명령어 ↓
openssl enc -e -des3 -salt -in p1.txt -out cip.bin
p1.txt 파일을 des3 알고리즘을 이용한 대칭키로 암호화하여 cip.bin 파일로 변환
복호화 명령어 ↓
openssl enc -d -des3 -in cip.bin -out p2.txt
cip.bin 파일을 des3 알고리즘을 이용한 대칭키로 복호화하여 p2.txt 파일로 변환
Public Key (공용키), Private Key (개인키)
비대칭키
Public Key 암호화 (기밀성 보장)
| Process | 송신자 | 수신자 |
| 1 | Private Key, Public Key 생성 | |
| 2 | ← (Public Key 전달) ← | |
| 3 | 수신자의 Public Key로 암호화 | |
| 4 | → (암호화된 데이터 전달) → | |
| 5 | Private Key로 복호화 | |
Private Key 암호화 (신뢰성 보장)
| Process | 송신자 | 수신자 |
| 1 | Private Key, Public Key 생성 | |
| 2 | → (Public Key 전달) → | |
| 3 | Private Key로 암호화 | |
| 4 | → (암호화된 데이터 전달) → | |
| 5 | 송신자의 Public Key로 복호화 | |
Hash & Digest (무결성 보장)
| Process | 송신자 | 수신자 |
| 1 | Hash 알고리즘 결정 | |
| 2 | Private Key, Public Key 생성 | |
| 3 | → (Public Key 전달) → | |
| 4 | Data Hash 진행 | |
| 5 | Digest를 Private Key로 암호화 (전자서명) | |
| 6 | → (원본 데이터 + 전자서명 전달) → | |
| 7 | Data Hash 진행 | |
| 8 | 전자서명을 Public Key로 복호화 | |
| 9 | 7번의 Digest와 8번의 Digest를 비교해서 무결성 점검 |
|
Hash
데이터를 고정된 크기의 값으로 변환하는 함수
원본으로 복원 불가능 (단방향성)
출력값 : Digest
알고리즘 종류 : MD 알고리즘, SHA 알고리즘 (현업에서 사용)
| SHA 알고리즘 | 블록 크기 | 해시값 길이 | 해시 강도 (안전성) |
| SHA-1 | 512bits | 160bits | 0.625 |
| SHA-256 | 512bits | 256bits | 1 |
| SHA-384 | 1024bits | 384bits | 1.5 |
| SHA-512 | 1024bits | 512bits | 2 |
SSL / TLS
| SSL (Secure Socket Layer) | TLS (Transport Layer Security) |
| 5계층 응용계층을 보호하는 프로토콜 인증서 기반의 암호화 기술 |
4계층 전송 계층 상위에서 동작 응용계층 암호화 |
| SSL 3.1 = TLS 1.0 | |
SSL/TLS Processing
비대칭키는 대칭키를 안전하게 전달하는 데 사용
대칭키는 실제 데이터를 암호화/복호화하는 데 사용
| Process | Server | Client |
| 1 | ← (데이터 요청) ← | |
| 2 | → (Public Key가 포함된 인증서 전달) → | |
| 3 | Session Key 생성 | |
| 4 | Server Public Key로 Session Key 암호화 | |
| 5 | ← (암호화된 Session Key 전달) ← | |
| 6 | Private Key로 복호화 | |
| 7 | 앞으로 데이터 전송 전/후 Session Key로 암/복호화 (데이터를 안전하게 전송) | |
PKI (Public Key Infrastructure) & 인증서
PKI : 전자서명과 암호화를 지원하는 보안 시스템
인증기관 (CA) 이 인증서 발급
X.509 인증서 : 웹 서버와 브라우저 간 전자 인증서
| Process | CA(인증기관) | Web Browser | Web Server | Client |
| 1 | CA→ (공개키를 포함한 인증서 배포) → W.B | |||
| 2 | W.B → (브라우저 설치 시 CA 인증서(+CA 공개키) 전달) → W.S, C | |||
| 3 | CA ← (공개키를 포함한 인증요청서 전달) ← W.S | |||
| 4 | 심사 | |||
| 5 | CA → (Server 인증서(+CA 전자서명+Server 공개키) 전달) → W.S | |||
| 6 | W.S ← (Server 접속) ← C | |||
| 7 | W.S → (Server 인증서 전달) → C | |||
| 8 | Server 인증서 신뢰성 확인 (2번 CA 공개키로 7번 CA 전자서명 확인) |
|||
| 9 | Server 공개키로 대칭키 암호화 |
|||
| 10 | W.S ← (암호화된 대칭키 전달) ← C | |||
| 11 | 데이터를 암호화해서 주고받을 수 있음 (대칭키 사용) | |||