평문
암호화: 평문 → 암호화
복호화: 암호화 ← 평문
1. 기밀성 (3자가 알 수 없게) 인증 id/pw
2. 무결성 (위변조 불가) 위변조 hash
3. 가용성 (사용시간 유지) 지속성
- 단방향 : hash 암호화만 수행 (무결성) 복호화가 불가능하기 때문에 key로 활용
- 양방향 (대칭) 암호화/복호화 키가 동일
- **비대칭 : 암호화/복호화 키가 한쌍으로 다른키가 쓰임**
- 하이브리드 : 키교환은 비대칭 , 데이터 전달은 대칭
- 단방향 암호화
1. 복호화 X
2. 평문 (암호화) → 암호문
3. 메세지 진위를 확인 (위변조) , 무결성
4. hash algorithm : md5($1) , sha , sha2($6) 등등
- 양방향 암호화 (key가 존재)
1. 한쌍의 알고리즘 (암호화/복호화)를 사용
2. 평문 (key : 암호화 ) 암호문
암호문 (key : 복호화 ) 평문
3. 대칭/비대칭 암호화 - 키를 기준으로 대칭, 비대칭을 나눔
1. 스트림 암호화 방식 : 입력되는 순서대로 암호화 수행 (RC4,RC5.........)
2. 블록 암호화 (block cipher) : 데이타를 나누어서 암호화 수행 ( xor , 전치 , 치환) - 카드 섞듯이..
2-1. DES : date encryption standard ( 16라운드 ): 전 세계적으로 대칭 블록 암호화 표준
1. 64bit 대칭키 크기 *** (block크기)
2. 블록 byte당 1bit 의 패리티 (오류 검사) 비트 블록당 할당 [ 1byte = 8bit ]
3. 라운드키크기 56bit ( 8bit가 패리티 )
분할된 실제 대칭키 크기
(라운드 안에서 동작 : 48 bit (32-8) (32-8) )
4. 16라운드 **
- 키워드 : 64bit 대칭키 크기 , 16라운드
2-2. 3DES : DES를 다중으로 반복하여 암호 수행
1. block 크기 => 64bit
2. 실제 대칭키 크기 => 168bit (192/3 = (64-8) + (64-8) + (64-8)
3. 블록 byte당 1bit씩 패리티(오류검사) 비트
4. 분할된 크기 56bit => 실제 대칭키 크기 48bit
실제 대칭키= 56X3 = 168bit
- des,3des 차이점 : 192 ` 168 ,대칭키 크기 3배 , 3번 반복
2-3. aes (advanced encryption standard)
1. DES의 취약점 완화 , NIST (미국 국립표준연구소) 에서 개발
2. SPN구조(병렬레이어구조) 이용 (Feistel구조와 spn구조 검색해볼것)
3. block 크기 -> 128bit
4. 대칭키 크기 -> 128/192/256bit
> 64bit des
192bit 3des
128/192/256bit aes
>
개인키 : private key 복호화
공개키 : public key 암호화
- (통신)교환은 보통 공개키 → 주고받는것은 늘 공개키 , 개인키는 주고 받지 않음
- 공개키는 모든 사용자에게 공개 ( 암호화) 교환
- 개인키는 개인만 사용하는 키 ( 복호화 )
- 공개키로 암호화된 데이타는 개인키로만 복호화가능 -> 공인인증서 ,전자서명
특징
종류
공개키 암호화 → 개인키 복호화 : 데이터를 안전하게 전송할 수 있는 보안 관점
개인키 암호화 → 공개키 복호화 : 신뢰할 수 있는 단체라는 것을 인증하는 관점
비대칭 암호화의 장점
비대칭 암호화의 단점
암호화/복호화의 처리속도가 느림
MITM 공격에 취약함 (인증서를 통해 해결)
MITM공격 (Man in the middle attack) : 중간자 공격
Diffie-Hellman 키 동기화 방식 - 치퍼(알고리즘 메소드)
P -> 소수(1,3,7,11,13,17) 뒤에 1,3,7 나오면 무조건 소수
g -> 알고리즘 초기값
clinet
- 개인키(b)생성
- 공개키(a) 생성 a= g^b mod p
- 서버에 공개키(a)전달
- 요약: 만들어진 공개키생성 -> 서버로 전송
server
- 개인키(y)생성
- 공개키(x) 생성 x= g^y mod p
- client에게 공개키(x)전달
- 요약: 개인키 공개키생성 공개키를 클라이언트로 전송
server (비밀키생성) (비밀키 = 공개 ^개인 MOD소수)
client (비밀키생성)
server의 공개키(x)와 client의 개인키(b)를 이용하여 비밀키(s)생성
s= x^b mod p
g^개인키 mod p = 공개키산출
산출공개키^(비밀키) mod p = 비밀키
정리