1.
보안 목표와 서비스
•
기밀성 : 민감한 정보(sensitive information)가 외부에 노출되는 것을 막자
◦
ex) 고객 계좌 정보, 연구개발 정보, 군사 정보 등
◦
공격 종류
▪
스누핑(Snooping) : 데이터에 대한 비인가 접근 or 탈취
▪
트래픽 분석(Traffic Analysis) : 온라인 트래픽을 분석함으로써 (암호화된) 메시지 전송의 특성을 파악
◦
보안 메커니즘 : 암호화 및 라우팅 제어
•
무결성 : 정보 변경 허락된 자에 의해서 인가된 매커니즘을 통해서만 수행될 것
◦
악의적인 행동의 결과 or 시스템 중단과 같은 외부 요인에 의해 침해가 가능하다
◦
공격 종류
▪
스푸핑(Spoofing) : 다른 사람으로 위장하거나, 가장, 정보조작
◦
보안 메커니즘 : 암호화, 디지털 서명, 데이터 무결성
•
가용성 : 조직이 생산하고 저장하는 정보는 인가된 자가 사용할 수 있어야 한다
◦
공격 종류
▪
서비스 거부(Dos) : 시스템의 서비스를 느리게 하거나 완전히 차단
2. 전통적인 대칭키 암호
•
대칭 키 암호 알고리즘의 개념
◦
송신자(Alice), 수신자(Bob), 공격자(Eve)
◦
원 메시지 : 평문(Plaintext),
◦
채널을 통해 보내는 메시지 : 암호문(Ciphertext)
◦
암호 알고리즘 (Encryption Algorithm) : 비밀키 이용 : 평문 → 암호문
= Alice , C = 암호문, P = 평문, K = 키, E = 암호화 알고리즘
◦
복호 알고리즘 (Decryption Algorithm) : 비밀키 이용 : 암호문 → 평문
= 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 의 원소이다
◦
and
b.
곱셈 암호
•
and
c.
아핀 암호
•
and
?
PlainText와 CipherText에 각각 1 : 1로 매칭되는 Value들의 집합
26은 Value의 Size
?
의 원소에서 역원이 존재하는 원소들의 집합
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 단위
◦
삽입
▪
%
◦
추출
▪
◦
대치 Substitution- SubBytes
▪
변환 표를 이용해서 각각의 Byte들을 대칭되는 값으로 변환한다.
•
4X4 행렬의 각 원소가 1byte단위이기 때문에 각 원소가 표현 가능한 범위는 개이다. 변환 표에는 가능한 모든 수에 대한 대칭값들이 적혀있다.
◦
치환 Permutation - ShiftRows
▪
위 과정에서 나온 행렬의 행을 각각 다른 수치만큼 Left Shift 한다 (바이트 단위로)
•
ShiftRows
•
InvShiftRows
◦
뒤섞음 Mixing - MixColumns
▪
행렬 곱을 이용하여 각 state의 열을 새로운 열로 변환
•
Byte 들의 곱셈
◦
GF()에서 의 나머지
•
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의 암호 함수로 구성
▪
정확한 지식없이 사용할 경우 보안상 문제 발생 가능