암호(Cryptography) : 중요 정보를 다른 사람들이 해석할 수 없게 하는 방법
평문 : 암호화되기 전 메세지
암호문 : 암호화되고 변경된ㅁ ㅔ세지
암호화 : 평문 -> 암호문
암호화 알고리즘 : 평문을 어떤 방식으로 암호문으로 변경할지
암호화 키 : 허락받지 않은 외부인이 암호문을 강제적으로 해독하는 것을 막음 // 암호문,평문 생성 가능
복호화 : 암호문을 복호화 키를 이용해 평문으로 바꾸는 과정
대칭 암호화 알고리즘 => 암호화 키 == 복호화 키
비대칭 암호화 알고리즘 => 암호화 키 != 복호화 키
앨리스(Alice) : 송신자
밥(Bob) : 수신자
이브(Eve) : 중간 도청하는 사람 passive attack
맬로리(Mallory) : 중간에서 메세지의 내용을 변조 active attack
1.기밀성
2.무결성
3.가용성
고전 암호학
1. 스키테일 암호
BC400년 스파르타에서 군사용으로 사용하는 암호화 방식
-> 전치법 알고리즘
2. 시저 암호
BC100년 로마 줄리어스 시저가 군사적 목표로 사용
key size : 26 (문자 + 시프트 할 개수(총 26개))
ex) A를 D로 치환-> B는 E로 치환
-> 단일 치환 알고리즘 : 알파벳 한 글자를 다른 한 글자로 대체
-> 전사 공격(브루트포스)에 취약 : key size가 적기 때문
3. 단일 치환 암호 : 모노 알파베틱 암호
알파벳 26글자를 각각 다른 알파벳에 대응하는 방식으로 암호화
-> 단일 치환 방식이지만 알고리즘의 개선으로 보안성 강화
-> 전사 공격에 강함 (10세기까지 사용)
=> 빈도 분석법에 취약 (빈도를 분석하여 많이 나온 것을 모음으로 가정하여 공격)
4. 다중 치환
한 글자가 암호화 키와의 매핑에 따라 여러 가지 글자로 대체
ex) 비즈네르 암호
->aaa암호화 -> BDG
- 빈도 분석법에 다소 강함
- 플레이페어 암호, 에니그마 등으로 발전
- 컴퓨터의 고속 병렬 처리 연산 등으로 현대에는 해독이 비교적 어렵지 않다.
대칭 암호화 방식 : 가장 자주 사용하는 것 DES
DES : 대칭키 암호화 방식 (Data Encryption Standard)
- 암호화 키와 복호화 키가 같은 암호화 방식
- 암호화 및 복호화에 걸리는 시간이 짧으며, 비교적 간단한 방식으로 구현 가능
-> 현대에서 가장 많이 사용되는 암호 방식 중 하나
- 64비트 평문을 64비트 암호문으로 암호화
-> 키의 크기 56비트(오류 검출로 8비트 사용) : 실제 사용 48비트
- 암호화 과정
1. 전처리 단계 : 초기 치환 실행
2. 16번의 라운드를 수행
3. 후처리 단계 : 최종 치환
1라운드
1. 64비트 블럭 -> L 32비트 블록 R 32비트 블록으로 나눔
2. L비트 블록에 서브키를 이용하여 라운드 함수를 적용하여 저장 R블록은 그대로 유지
3. R블록과 L블록의 위치 변환
4. 다음 라운드 진행'
-> 모든 라운드가 끝난 뒤 64비틀 블록 출력
DES는 쇄도효과가 뛰어나다
트리플 DES
DES 대안으로 제시된 DES의 비도를 강화(키 사이즈 확대)한 대칭키 암호 방식
-> DEX를 연속 3번 실행시키는 것이 기본 개념
암호화 과정
-> 2번의 DES 암호화 중간에 DES 복호화가 1번을 실행 -> 기존 DES와의 호환성 유지 목적
복호화 과정
-> 복호화 암호화 복호화
대칭 암호 시스템
-> 가장 자주 사용되는 것 DES
DES : 64bit block 암호, 56bit 사용
특징
장점 : 쇄도 효과에 뛰어남
단점 : Key size가 적음 -> 전수공격에 취약
AES(Advanced Encryption Standard)
- 1997년 미국 NIST의 암호 공모에서 새로운 대칭 암호 표준으로 채택된 대칭키 암호 방식
- 암호 공모 조건 : 안전성, 비용, 구현 효율성
128비트 평문을 128비트 암호문으로 암호화
키의 크기 : 128, 192, 256비트
10번의 라운드 수행
AES의 각 라운드 구성
대치 연산 - SubBytes
치환 연산 - ShiftRows
혼합 연산 - MixColumns
AddRoundKey 연산
외의 대칭 암호 :
1. SEED
국산 128비트 블록 암호 알고리즘
전자상거래, 금융, 무선통신 등에서 전송되는 중요 정보 보호 목적
SEED 128 - 128비트 키, SEED 256 - 256비트 키
2. ARIA
국산 128비트 블록 암호화 알고리즘
경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발
AES와 마찬가지로 128/192/256비트 암호호 ㅏ키를 지원
3. IDEA - 유럽에서 많이 사용
4. RC5 - 미국 RSA연구소에서 개발
블록 암호 모드
- 대칭 암호화 방식은 하나의 평문을 블록 단위로 난워 암호화 또는 복호화 수행
-> 300비트 평문을 AES로 암호화 하는 경우
-> AES 블록 크기 128비트, 블록 개수 3개, 3번째 블록에 저장되는 데이터 크기 44비트
-> 패딩 : 블록의 남은 부분에 데이터를 채워 넣는 것
1. ECB(Electric Code Book) 모드 : 보안상 취약, 사용 권장 X
각 평문 블록을 암호화한 것이 그대로 암호문 블록이 되는 방식
장점 : 계산이 단순, 병렬 처리 가능(암호화, 복호화 모두)
단점 : 평문의 반복이 암호문에 반영, 보안적으로 취약(변조 가능) -> 중간 블록을 단순히 바꿔치기만해도 동작
2. CBC(Cipher Block Chaining) 모드 : 권장
암호문 블록을 마치 체인처럼 연결하는 모드
-> 현재의 평문 블록과 현재 블록 바로 직전에 암호화된 암호 블록을 XOR연산 후 암호화
초기화 벡터 : 최초 블록을 암호화할 때 XOR연산에 사용되는 블록
장점 : 보안적으로 안전(변조 불가), 평문의 반복이 암호화에 반영되지 않는다.
단점 : 계산이 다소 복잡, 병렬 처리 불가
제약 : 중간 블록을 복호화하기 위하여 반드시 첫 블록부터 복호화 해야함
3. CFB모드(암호 피드백 모드)
4. OFB모드(출력 피드백 모드)
5. CTR모드
'학교수업' 카테고리의 다른 글
가상현실 프로그래밍 12주차 (0) | 2021.12.01 |
---|---|
임베디드 기초 12주차 (0) | 2021.11.30 |
임베디드 기초 11주차 (0) | 2021.11.27 |
웹프로그래밍 13주차 (0) | 2021.11.26 |
객체지향 프로그래밍 12주차 (0) | 2021.11.24 |