암호학
보안의 3요소
- 기밀성 : Confidentiality
- 무결성 : Integrity
- 가용성 : Avaliability
암호학이 제공해주는 기능
- 기밀성
- 인증 : 내가 나라는 것을 나타내는 것
- 부인 방지 : 내가 보낸 것을 부인하지 못하도록 방지
- 무결성 : 데이터의 결함이 있어서는 안된다.
현대 암호
치환, 전치를 얼마나 어렵게 만드는가?
- 대칭키
평문 → [대칭키 + 암호화 알고리즘] → 암호문 암호문 → [대칭키 + 암호화 알고리즘] → 평문
똑같은 키를 사용해서 암호화, 복호화를 하는 방식이다.
대표적인 대칭키 암호화 알고리즘
- RC4
- DES(Data Encryption System) : 취약점이 발견되어 key 없이도 복호화가 풀리는 것을 확인하여 더 이상 사용하지 않는다.
- 3DES : DES 를 3번 반복하여 암호화한 방식
- AES
- SEED
문제점
- 키 분배의 문제 : 대칭키를 안전하게 분배할 수 있느냐? 키를 네트워크를 통해 보내면 스니핑을 당할 수 있다.
- 키 개수가 너무 많아진다.
- 비대칭키 / 공개키
암호화 키와 복호화 키가 같지 않다.
키 쌍(Key Pair) 가 존재한다.
암호화 통신을 하기 위해서는 Key Pair 가 필요로 하다.
Public Key(공개키) 와 Private Key(개인키) 로 구성되어 있다.
Public Key 는 공개되어도 상관이 없지만 Private Key(대칭키 즉, 비밀키) 는 공개되서는 안된다.
Private Key 는 본인만 가지고 있어야 한다. 남에게 공유해서는 안된다.
A(나)와 B(상대)가 통신을 한다고 할 때
- 상대방의 공개키로 암호화를 하면 상대방의 개인키로만 복호화를 할 수 있다. → 기밀성
- 자신의 개인키로 암호화를 하면 자신의 공개키로만 복호화를 할 수 있다. → 부인 방지
알고리즘
- Diffie-Hellman
- RSA
- DSA
- ECC
- 해시
One Way Function : 단방향 함수
Hash Algorithm
Hash Function
Message Digest
무결성
Input(Message) → f(x) → Hash Value
Input : 길이 제한 X
Outpuy(Hash Value) : 고정된 길이
알고리즘
- MD5 : 취약점이 발결되어 더이상 사용하지 않는다.
- SHA1
- SHA2
- SHA3
해시 문제점 : Birthday Paradox 즉, 다른 값을 넣었을 때 Hash Value 로 같은 값이 나올 수가 있다. → salt 를 사용해서 문제 해결
- PKI
Public Key Infrastructure : 공개키 기반 구조으로 제 3자(CA)가 인증서(공개키) 검증을 대신 해주는 방식이다. 내가 받은 공개키가 상대방의 공개키가 맞는지 검증을 해주는 시스템
CA ⇒ 인증서를 발급하는 기관, x.509 표준 인증서를 사용
VA ⇒ 공개키를 검증하는 기관
RA ⇒ 인증서 등록을 대행해주는 기관
인증서를 살펴보면 공개키에 대한 정보를 확인할 수 있다.
X.509 표준 인증서
- 일련번호
- 발급자
- 전자서명 알고리즘 : sha256RSA
- 유효기간
- 주체 : 발급 대상
- 공개키
- 지문
- 전자서명
전자 서명을 이용하면 부인 방지, 무결성, 인증을 사용할 수 있다.
https://maithean.com/docs/set_bk1.pdf → 28페이지를 보자.
대칭키의 가장 큰 문제는 키를 상대방에게 안전하게 보낼 수 없다는 점이다.
대칭키만 안전하게 전송 할 수 있으면 되지 않을까?
전자 서명 Alice 의 공개키로 풀리면 Alice 가 보낸 전자 서명이 맞다는 것이다.
전자 봉투(Digital Envelope)는 필수는 아니다.
해쉬(Message Digest)