1.
암호의 기초
•
암호화 과정
•
암호(Cryptography) : 중요 정보를 다른 사람들이 해석할 수 없게 하는 방법
•
평문 : 암호화되기 전의 메시지
•
암호문 : 암호화되고 난 후 변경된 메시지
•
암호화 또는 암호화 과정 : 평문을 암호문으로 바꾸는 과정
•
암호화 알고리즘 : 어떤 방식으로 평문을 암호문으로 변경할 지 경정
•
암호화 키:암호화 키가 없는 외부인이 강제적으로 암호문을 해독하는 것을 막음
•
복호화 과정
•
복호화 : 암호문을 복호화 키를 이용하여 평문으로 바꾸는 과정
•
암호화 방식 비교
◦
대칭 암호화 알고리즘 : 암호화 키 = 복호화 키
◦
비대칭 암호화 알고리즘 : 암호화 키 = ! 복호화 키
•
고전 암호학
◦
전치법 알고리즘 : 단순히 메시지에 있는 문자의 위치를 바꾸는 방법
◦
단일 치환 알고리즘 : 알파벳 한 글자를 다른 한 글자로 대체
▪
전사 공격에 취약 : 모든 사건을 일일이 시도 또는 대입해 보는 공격
•
대칭 암호화 방식
◦
암호화 키와 복호화 키가 같은 암호화 방식
◦
암호화 및 복호화에 걸리는 시간이 짧으며, 비교적 간단한 방식으로 구현 가능
▪
현대에 가장 많이 사용되던 암호 방식 중 하나, 현대에 가장 많이 사용되던 암호 방식 중 하나 / 전사 공격으로 DES 해독이 가능해짐에 따라, 1998년 11월 이후 공식적 사용 중단 (*DES : Data Encryption Standard)
◦
64비트 평문을 64비트 암호문으로 암호화
◦
키의 크기 : 56 비트 (64비트 중 오류 검출을 위해 8비트가 사용)
◦
암호화 과정 개요
▪
전처리 단계 : 초기 치환 실행
▪
16번의 라운드 수행
▪
후처리 단계 : 최종 치환
◦
트리플 DES
▪
DES의 대안으로 제시된 DES의 비도를 강화한 대칭키 암호 방식
▪
DES를 3번 연속으로 실행하는 것이 기본 개념으로, 삼중 DES 혹은 3DES 라고도 불림
▪
트리플 DES의 암호화 과정
•
2번의 DES 암호화 중간에 DES 복호화 1번을 실행함 - 기존 DES와의 호환성 유지 목적
▪
수학적으로 DES보다 2배의 암호화 강도를 가진다고 평가
▪
충분한 암호 강도가 아니므로 사용을 권장하지 않음
◦
AES
▪
1997년 미국 NIST의 암호 공모에서 새로운 대칭 암호의 표준으로 채택된 대칭키 암호 방식
▪
암호 공모 조건
•
안전성
•
비용
•
구현 효율성
▪
두 명의 벨기에 암호학자인 존 대먼과 빈센트 라이먼에 의해 개발된 레인달에 기반으로 AES 공모에서 선정
•
특징
◦
128 비트 평문을 128 비트 암호문으로 암호하
◦
키의 크기 : 3가지(127,192,256비트)
◦
10/12/14번의 라운드 수행
•
AES의 각 라운드 구성
◦
대치연산
◦
치환연산
◦
혼합연산
◦
AddRoundKey 연산
•
SEED
◦
국산 128비트 블록 암호 알고리즘
◦
전자 상거래, 금융, 무선 통신 등에서 전송되는 중요 정보 보호 목적
◦
SEED 128 - 128비트 키, SEED 256 - 256 비트 키
•
ARIA
◦
국산 128비트 블록 암호화 알고리즘
◦
경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발
◦
AES와 마찬가지로 128/192/256 비트 암호화 키를 지원
◦
학계, 연구소, 정부기관이 공동으로 개발
•
기타
◦
IDEA - 유럽에서 많이 사용
◦
RC5 - 미국 RSA 연구소에서 개발
•
블록 암호 모드
◦
대칭 암호화 방식은 하나의 평문을 블록 단위로 나누어서 암호화 또는 복호화를 수행
◦
예) 300비트 평문을 AES로 암호화 하는 경우
▪
AES 블록 크기 : 128 비트로 가정
▪
블록 개수 : 3개
▪
3 번째 블록에 저장되는 데이터 크기 : 44비트
▪
패딩 : 블록의 남은 부분에 의미없는 데이터를 채워 크기를 맞추는 것
◦
ECB(Electirc Code Book) 모드
▪
각 평문 블록 단위로 암호화한 것이 그대로 암호문 블록이 되는 방식
▪
장점 : 계산이 단순
▪
단점 : 보안적으로 취약(변조 가능)
▪
중간 블록을 단순히 바꿔치기만 해도 동작할 수 있음
◦
CBC 모드(Cipher Block chaining) 모드
▪
암호화 블록을 마치 체인처럼 연결하는 모드
→ 현재의 평문 블록과 현재 블록 바로 직전에 암호화된 암호 블록을 XOR 연산한 후 암호하
▪
초기화 벡터 : 최초 블록을 암호화 할 때 XOR 연산에 사용되는 블록
▪
장점 : 보안적으로 안전(변조 불가)
▪
단점 : 계산이 다소 복잡
→ 제약 사항 : 중간에 있는 블록을 복호화하기 위해서 반드시 첫 블록부터 복호화를 해야함
◦
정리
구분 | 장점 | 단점 | 비교 |
ECB 모드 | 간단,병렬처리 가능(암호화,복호화 모두) | 평문의 반복이 암호문에 반영, 암호문 블록의 삭제 혹은 교체에 의해 평문 변조가 가능 | 보안상 취약함 |
CBC 모드 | 평문의 반복이 암호문에 반영되지 않음, 암호문 블록의 삭제 혹은 교체에 의해 평문 변조가 불가능 | 암호화는 병렬 처리 불가능하지만, 복호화는 각 블록을 다음 이전 암호화 블록과 XOR 하여 복구할 수 있기 때문에 병렬화가 가능 | 사용 권장 |
•
비대칭 암호화 방식
◦
대칭 암호화 방식의 문제점과 보안책
▪
비대칭 암호화 방식의 필요성
▪
대칭 암호화 방식의 “키 배포” 문제에 대한 보안책 필요
◦
디피 - 헬만 키 교환
▪
소수를 이용한 나머지 연산을 사용
▪
소수는 1과 자기 자신 이외의 약수를 갖지 않는 1보다 큰 자연수
→ 통신을 통해 미리 배포되지 않은 새로운 비밀키 S를 각각 생성하여 공유하는 것이 목표
▪
과정
1.
공개된 숫자 p와 g 설정
2.
앨리스 : 자신의 개인키 a에서 숫자 A 를 계산 → 계산된 A를 밥에 전송
3.
밥 : 자신의 개인키 b에서 B를 계산 → 계산된 B를 앨리스에 전송
4.
앨리스 : 밥으로부터 수신한 B와 자신의 개인키 a를 이용하여 비밀키 s를 계산
5.
밥 : 앨리스로 부터 수신한 A와 자신의 개인키 b를 이용하여 비밀키 s를 계산
◦
RSA
▪
비대칭 암호화 방식 중에서 실직적인 산업 표준
▪
암호화 복호화 뿐 아니라 전자서명 등의 다양한 기능을 제공 가능
▪
공개키 : 외부에 공개할 수 있는 키 → 공개키 저장소
▪
개인키 : 외부에 공개하면 안되고, 자신만 알고 있어야 하는 키
▪
공개키로 암호화, 개인키로 복호화
•
앨리스가 밥의 공개키로 암호환 메시지는 밥의 개인키로만 복호화 가능 → 밥만 해독 가능
→ 기밀성 보장
•
다른 사람이 중간에서 도청할 수 없음
→ 이브가 중간에서 앨리스가 암호화된 메시지를 가로챘다고 하더라도 밥의 개인키가 없으므로 암호화된 메시지를 복호화 할 수 없음
▪
개인키로 암호화, 공개키로 복호화
•
앨리스가 자신의 개인키로 서명한 메시지를 밥에게 전송
→ 누구라도 앨리스의 공개키를 입수하여 복호화 가능 → 부인 방지 보장
•
앨리스가 자신이 보낸 사실을 ‘부인’할 수 없음
→ 앨리스의 공개키로만 복호화가 가능하다는 사실을 통해 ‘부인’ 할 수 없는 증거를 제시
•
전자상거래에서 기업 간 주문이나 계약에서도 중요한 법적 증거 역할
RSA 개인키와 공개키 만드는 방법
•
암호화 방식 비교 : 대칭 암호화 방식 vs 비대칭 암호화 방식
대칭 암호화 방식 | 비대칭 암호화 방식 | |
키의 상호 관계 | 암호화 키 = 복호화 키 | 암호화 키 ≠ 복호화 키 |
안전한 키 길이 | 128비트 이상 | 2048 비트 이상 |
키의 구성 | 비밀키 | 공개키 , 개인키 |
예 | DES, 3DES, AES | RSA,ECC |
제공 서비스 | 기밀성 | 기밀성, 부인 방지 및 인증 |
목적 | 데이터 암호화 | 키 교환 |
단점 | 별도의 키 교환이 필요하다 | 공개키 중간자 공격에 취약하다. |
암호화 속도 | 빠르다 | 느리다 |