Search
Duplicate

Chapter1. 대칭키 암호화(Symmetric-Key Encipherment)

작성일시
2022/03/10 05:11
강의 번호
유형
보안
자료
복습
속성
속성 1
1.
보안 목표와 서비스
기밀성 : 민감한 정보(sensitive information)가 외부에 노출되는 것을 막자
ex) 고객 계좌 정보, 연구개발 정보, 군사 정보 등
공격 종류
스누핑(Snooping) : 데이터에 대한 비인가 접근 or 탈취
트래픽 분석(Traffic Analysis) : 온라인 트래픽을 분석함으로써 (암호화된) 메시지 전송의 특성을 파악
보안 메커니즘 : 암호화 및 라우팅 제어
무결성 : 정보 변경 허락된 자에 의해서 인가된 매커니즘을 통해서만 수행될 것
악의적인 행동의 결과 or 시스템 중단과 같은 외부 요인에 의해 침해가 가능하다
공격 종류
스푸핑(Spoofing) : 다른 사람으로 위장하거나, 가장, 정보조작
보안 메커니즘 : 암호화, 디지털 서명, 데이터 무결성
가용성 : 조직이 생산하고 저장하는 정보는 인가된 자가 사용할 수 있어야 한다
공격 종류
서비스 거부(Dos) : 시스템의 서비스를 느리게 하거나 완전히 차단
2. 전통적인 대칭키 암호
대칭 키 암호 알고리즘의 개념
송신자(Alice), 수신자(Bob), 공격자(Eve)
원 메시지 : 평문(Plaintext),
채널을 통해 보내는 메시지 : 암호문(Ciphertext)
암호 알고리즘 (Encryption Algorithm) : 비밀키 이용 : 평문 → 암호문
C=EK(P)C = E_K(P) = Alice , C = 암호문, P = 평문, K = 키, E = 암호화 알고리즘
복호 알고리즘 (Decryption Algorithm) : 비밀키 이용 : 암호문 → 평문
P=DK(C)P = D_K(C) = Bob, D = 복호화 알고리즘
암호화, 복호화 사용하는 비밀키는 동일하다
암호(Cipher) : 암호/복호 알고리즘
Kerckhoff의 원리
공격자 Eve는 항상 암호(E) / 복호(D) 알고리즘은 알고 있다고 가정한다.
암호의 안정성은 키의 안전성에만 바탕을 둔다.
3.
암호 해독
a.
암호문 단독 공격 : 가로 챈 암호문을 분석해서 대응되는 평문과 키를 파악
i.
전수조사 공격 (brute-force attack) : 가로 챈 암호문에 모든 가능한 키를 사용하여 복호화한 후 의미있는 평문 생성
ii.
통계적인 공격 (statistical attack) : 평문 언어의 고유한 특징을 이용
ex) 가장 빈번한 알파벳은 ‘E’ 이다
iii.
패턴 공격 : 암호문에 존재하는 패턴을 이용
b.
알려진 평문 공격 : 여러 개의 (평문, 암호문)의 쌍이 공격자에게 제공
c.
선택 평문 공격 : 공격자가 평문을 선택하고, 그에 따른 암호문이 제공
d.
선택 암호문 공격 : 공격자가 암호문을 선택하고, 그에 따른 평문이 제공
4.
대치 암호 (Substitution Cipher)
대치 암호
하나의 기호를 다른 기호로 대체
ex) A→D, T→Z, 3→7, 2→6
a.
단일문자 암호 (Monoalphabetic Ciphers)
평문의 기호와 암호문에 대응되는 기호는 항상 1:1 대응 관계를 갖는다
ex) 평문 = hello, 암호문 = KHOOR
a.
덧셈 암호
가장 간단한 암호 = 이동 암호(Shift Cipher), 시저 암호(Caesar Cipher)
평문, 암호문, 키는 모두 Z26 의 원소이다
C=(P+K)mod26C = (P+K)mod26 and P=(CK)mod26P = (C - K) mod 26
b.
곱셈 암호
C=(PK)mod26C = (P * K)mod 26 and P=(CK1)mod26P = (C*K^{-1})mod26
c.
아핀 암호
C=(PK1+K2)mod26C = (P*K_1 + K_2) mod 26 and P=((CK2)K11)mod26P = ((C-K_2)*K_1{^-1}) mod 26
Z26Z_{26} ?
PlainText와 CipherText에 각각 1 : 1로 매칭되는 Value들의 집합
26은 Value의 Size
Z26Z_{26}^* ?
Z26Z_{26}의 원소에서 역원이 존재하는 원소들의 집합
b.
다중문자 암호 (Polyalphabetic Ciphers)
평문 문자와 암호문 문자와의 관계는 1:m 대응 관계를 갖는다
ex) 평문 = hello, 암호문 = ABNZF
자동 키 암호
Vigenere 암호
전치 암호
→ PPT 참고

AES (Advanced Encryption Standard)

AES
2001년 미국 국립기술표준원에서 공표한 대칭키 암호 알고리즘
128 비트 평문을 128 비트 암호문으로 출력
128, 192, 256 비트키를 사용하고 키 크기에 따라 10, 12, 14 라운드를 갖는 3가지 버전 존재
AES는 128비트의 데이터를 4x4 행렬로 만들어서 사용. 행렬의 각 원소는 1byte 단위
삽입
Blocki=S(iBlock_i = S(i %4,i/4)4, i/4)
추출
Sij=Blocki+4jS_{ij} = Block_{i+4j}
대치 Substitution- SubBytes
변환 표를 이용해서 각각의 Byte들을 대칭되는 값으로 변환한다.
4X4 행렬의 각 원소가 1byte단위이기 때문에 각 원소가 표현 가능한 범위는 282^8 개이다. 변환 표에는 가능한 모든 수에 대한 대칭값들이 적혀있다.
치환 Permutation - ShiftRows
위 과정에서 나온 행렬의 행을 각각 다른 수치만큼 Left Shift 한다 (바이트 단위로)
ShiftRows
InvShiftRows
뒤섞음 Mixing - MixColumns
행렬 곱을 이용하여 각 state의 열을 새로운 열로 변환
Byte 들의 곱셈
GF(282^8)에서 x8+x4+x3+x+1x^8 + x^4+x^3+x+1 의 나머지
Byte 들의 덧셈
8-bkt 단위의 XOR 연산
MixColumns와 InvMixColumns에 사용하는 상수 행렬
C * State
키 덧셈 Key Adding - AddRoundKey
각 state의 열 행렬에 라운드 키를 더한다
라운드 키는 대칭 키를 확장하여 생성
하나의 암호 키로부터 Nr + 1 개의 128비트 라운드 키를 생성(Nr : round의 수)
암호 키의 크기 : 128비트(AES-128), 192비트(AES-192), 256비트(AES-256)
1비트만 달라져도 라운드가 지날수록 round key는 라운드를 거쳐가면서 극심하게 달라진다

AES의 분석

보안
Brute-Force Attack의 경우, 경우의 수가 2128 (AES-1280
수많은 테스트들이 AES 암호문의 통계적인 분석에 실패
구현의 용이성
AES는 소프트웨어, 하드웨어, 펌웨어로 구현이 가능하다
Table Lookup 또는 대수적 구조를 사용하는 루틴을 사용하여 구현이 가능하다
단순성과 비용
AES에 사용하는 알고리즘은 매우 단순
싼프로세서와 최소 메모리를 이용하여 구현이 가능하다

Python Cryptography

pip install cryptography
Python
복사

모듈 구성

The Recipes Layer
Fernet → AES 구현
X.509
The Hazardous Materials Layer
Low Level의 암호 함수로 구성
정확한 지식없이 사용할 경우 보안상 문제 발생 가능