보안 목표와 서비스
보안 목표
1. 기밀성(Confidentiality)
민감한 정보가 외부에 노출되는 것을 방지
2. 무결성(Integrity)
나의 정보를 다른사람이 수정 하지 못하게
3. 가용성(Availability)
생산한 정보를 사용할 수 있어야 한다.
공격
1. 기밀성 위협 (정보 접근)
•
Snooping : 데이터에 대한 비인가 접근 또는 탈취
•
Traffic Analysis : 트래픽 분석 후 메세지 특성 파악
2. 무결성 위협 (정보 조작)
•
Spoofing : 격자가 다른 사람으로 위장 → 정보 조작
3. 가용성 위협 (정보 훼손)
•
Denial of Service(Dos) : 시스템의 서비스를 느리게 하거나 완전히 차단
보안 서비스와 메커니즘
1. 기밀성 보안
•
암호화
•
라우팅 제어
2. 무결성 보안
•
암호화
•
디지털 서명
•
인증 교환
전통적인 대칭 키 암호
대칭 키 암호 알고리즘의 개념
암호화 키와 복호화 키가 동일하다.
•
장점
◦
빠르다
◦
효율적이다
•
단점
◦
n명이 m명과 통신을 하려면 n * m 개의 키가 필요해진다(공개키 암호화를 활용해 문제 해결)
암호화 과정에서 알고리즘을 숨기는 것은 어렵다. 키를 숨겨야 한다!
이미 유명한 암호화 알고리즘들은 코드가 다 노출되어 있다. 결국 중요한 것은 키를 숨기고, 키를 추론하는 것을 어렵게 만들어야 한다.
암호 해독 공격
암호 해독공격은 다양한 방식으로 가능하다. 알고리즘은 이미 알고있다는 가정 하에 아래 공격들이 가능하다.
•
단독 공격
◦
brute-force attack - 모든 키를 다 넣어보는 공격
◦
statistical attack - 통계적으로 많이 쓰는 문장 넣어보는 공격(ex. 가장 많이 쓰이는 알파벳은 E)
◦
pattern attack - 암호문에 존재하는 패턴을 이용
•
알려진 평문 공격
•
선택 평문 공격
•
선택 암호문 공격
대치 암호 (Substitution Cipher)
하나의 기호를 다른 기호로 대체하는 것(ex. A를 D로 대체하고 T는 Z로 대체)
•
단일 문자 암호
◦
평문 기호와 암호문 기호가 1:1 대응 관계를 갖는다
◦
덧셈암호 - and
◦
곱셈암호 - and
◦
아핀암호 - and
→ 피피티 내용 참고
이란?
Plaintext와 Ciphertext에 각각 1:1로 매칭되는 Value들의 집합.
26은 Value의 size
이란?
의 원소에서 역원이 존재하는 원소들의 집합
추가 설명
•
다중 문자 암호
◦
평문 기호와 암호문 기호가 1:m 대응 관계를 갖는다
◦
자동 키 암호
◦
Vigenere 암호
◦
전치 암호
→ 피피티 내용 참고
AES (Advanced Encryption Standard)
AES 란?
•
2001년 미국 국립기술표준원(NIST)에서 공표한 대칭 키 암호 알고리즘
•
128 비트 평문을 128 비트 암호문으로 출력
•
128, 192, 256비트키를 사용하고 키크기에 따라 각각 10, 12, 14라운드를 갖는 3가지 버전이 존재
•
AES는 128비트의 데이터를 4 x 4 행렬로 만들어서 사용한다. 행렬의 각 원소는 1byte단위이다.
◦
insertion
= S ( i % 4, i / 4)
◦
extraction
Substitution - SubBytes
변환 표를 활용해서 각각의 Byte들을 대칭되는 값으로 변환한다.
4 x 4 행렬의 각 원소가 1byte단위이기 때문에 각 원소가 표현 가능한 범위는 개이다. 변환 표에는 표현 가능한 모든 수에 대한 대칭값들이 적혀있다.
Permutation - ShiftRows
위 과정에서 나온 행렬의 행을 각각 다른 수치만큼 left shift한다(바이트 단위로)
Mixing - MixColumns
행렬곱을 활용해서 각 열을 새로운 열로 변환한다.
•
Byte들의 곱셈 : GF(28)에서x8 +x4 +x3 +x+1의나머지
•
Byte들의 덧셈 : 8-bit 단위의 XOR 연산
•
행렬곱에 사용하는 상수 행렬
•
예시
→ 실습해보면 좋을 것 같음
Key Adding - AddRoundKey
각 state의 열에 round key를 더한다. 라운드 키는 대칭키를 확장하여 생성한다.
→ 질문! state의 열이 62 cf 0c 99 이고 대칭키가 01 23 45 67 일 때, xor 연산하는지? → 맞는듯!
하나의 암호키로부터 +1 개의 128비트 round key를 생성( : round의 수)
round 시작 전 pre-round 단계에 Key Adding 과정을 거치므로 +1 개수의 키가 생성된다.
아래 사진에서 보듯이 1bit 만 달라져도 round가 지날 수록 round key는 극심하게 달라진다
→ AES 192, AES 256 키 확장은 PASS
AES의 분석
보안
•
Brute-Force Attack의 경우, 경우의 수가 2128 (AES-128)
•
수많은 테스트들이 AES 암호문의 통계적인 분석에 실패
구현의 용이성
•
AES는 소프트웨어, 하드웨어, 펌웨어로 구현 가능
•
Table lookup 또는 대수적 구조를 사용하는 루틴을 사용하여 구현 가능
단순성과 비용
•
AES에 사용하는 알고리즘은 매우 단순
•
싼프로세서와최소메모리를이용하여쉽게구현가능
Python Cryptography
pip install cryptography
Shell
복사
Python Cryptography 모듈 구성
•
The Recipes Layer
◦
Fernet → AES 구현
▪
과제 1 - 2 에서 사용
◦
X.509
•
The Hazardous Materials Layer
◦
Low Level의 암호 함수로 구성
◦
정확한 지식없이 사용할 경우 보안상 문제 발생 가능
→ Fernet 모듈을 이용한 대칭 키 암호화 연습해보기