암호(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

+ Recent posts