목차
1. 보안 목표와 서비스
1-1. 세 가지 보안 목표
- 기밀성
- 민감한 정보가 외부에 노출되는 것을 막자
- 무결성
- 허락되지 않은 접근으로 침해되지 않아야 함
- 가용성
- 허가된 자는 언제든 접근하여 사용할 수 있어야 함
1-2. 공격
- 기밀성
- 스누핑 : 비인가 접근 또는 탈취
- 트래픽 분석 : 트래픽 패킷을 털어서 공격
- 무결성
- 권한이 없는 자가 정보를 조작
- 스푸핑 : 다른 사람으로 위장, 가장
- 가용성
- D.Dos : 서비스를 느리게 하거나 완전히 차단
암호화, 디지털 서명 두 가지의 중요한 주제
2. 전통적인 대칭 키 암호
2-1. 대칭 키 암호 알고리즘의 개념
- Plaintext 평문, Ciphertext 암호문
- Encryption algorithm : 평문 → 암호문
- Decryption algorithm : 암호문 → 평문
- 암호와 복호에 사용하는 비밀 키는 동일
암호의 안정성은 키의 안정성에 바탕을 둔다
2-1-1. 암호 해독
- 암호문 단독 공격
- 전수조사 : 무식하게 하나씩 비교
- 통계적인 공격 : 얘가 좀 많이 쓰이더라로 공격
- 패턴 공격 : 암호문에 존재하는 패턴을 이용
- 알려진 평문 공격
- 선택 평문 공격
- 선택 암호문 공격
밑으로 내려올수록 풀기 쉬워지나 현실성은 떨어짐
2-2. 대치 암호
하나의 기호를 다른 기호로 대체
2-2-1. 단일문자 암호
1 : 1 대응 관계
- 덧셈 암호
- key 의 경우의 수가 26개 뿐 → 너무 쉽게 풀린다
$$ C = (P+K)mod26\,,\,P= (C-K)mod26 $$
- 곱셈 암호
- 26과 서로소이면 역원을 가진다
$$ C = (P*K)mod26\,,\,P = (C*K의 역원)mod26 $$
$$ (K*K^{-1})mod26 = 1 \\ 이면 K 의 역원 $$
- 아핀 암호
- K1 = 곱셈 암호의 K
- K2 = 덧셈 암호의 K
- 키의 공간은 12 * 26 = 312
$$ C = (P*K_{1}+K_{2})mod26\,,\,P=((C-K_{2})*K_{1}^{-1})mod26 $$
2-2-2. 다중문자 암호
1 : m 대응 관계
자동 키 암호 Autokey
- 암호화
- 첫번째 K 를 사전에 정의/공유
- 다음 K = 이전의 P
- 복호화
- 첫번째 K 를 사전에 정의/공유
- 다음 K = 이전에 복호화 한 P
Vigenere 암호
- 주어진 키 만큼을 돌려가면서 사용
2-3. 전치 암호
섞는 규칙을 K(key) 가 가지고 있다
2-3-1. 키가 없는 전치 암호
- Rail fence 암호
- 합의한 열의 개수에 맞춰 행렬로 나타낸 후 열 순서대로 읽어들임
- 평문의 각 문자를 암호문으로 바꾸는 순열로 표시
2-3-2. 키가 있는 전치 암호
- 사전에 정의된 크기로 평문을 나눈 뒤, 각각의 블록에 독립적으로 키를 사용하여 문자를 치환
2-3-3. 두 가지 접근법의 결합
- 3단계로 암호화/복호화가 진행
- 표에 행 순서로 기록 → 열을 재배열 → 표를 열 순서로 읽음
2-4. AES (Advanced Encryption Standard)
- 미국 국립기술표준원(NIST)에서 공표한 대칭 키 암호 알고리즘
- 현재 대칭 키 암호화에서 많이 쓰이는 기술
- 기본적으로 128비트 평문 → 128비트 암호문 생성
- key 의 크기에 따라 각각 라운드를 갖는 3가지 버전
- 128, 192, 256비트 키 → 10, 12, 14라운드
- AES에서의 데이터 단위
- 1byte = 8bit
- 1word = 4byte
- 1block = 4word = 16byte = 128bit
- block 을 4*4 행렬로 나타낸 것이 state
- 행렬 표현 방식은 세로 방향으로
2-4-1. 변환 함수
- SubBytes - 대치
- 각 state 들을 주어진 S-박스를 대조하여 값 변환
- ShiftRows - 치환
- 바이트 단위의 left-shift
- Row 0→3 : 0→3byte left-shift
- 바이트 단위의 left-shift
- MixColumns - 믹싱
- state 의 column 들을 주어진 constant 테이블과 행렬 곱을 수행
- 이때 1byte 크기를 넘지않기위해 기약다항식 \(x^{8}+x^{4}+x^{3}+x+1\) 과 modular 연산
- 8-bit 단위로 XOR 연산 → 같으면 0 다르면 1
- state 의 column 들을 주어진 constant 테이블과 행렬 곱을 수행
- AddRoundKey - 키 덧셈
- state 의 column 들에 라운드 키를 더함
- 라운드 키는 대칭 키를 확장하여 생성
2-4-2. 키 확장 과정
128bit (4word) 기준
\(t_{i}\) 의 계산
- \(w_{i-1}\) 를 RotWord → 한 바이트씩 left-shift
- SubWord → SubBytes 의 S-박스 이용하여 대치
- RCon(Round Constant) → round 별로 정해진 상수와 XOR 연산
- 192비트, 256비트의 경우 단위가 6word, 8word로 확장하여 계산
- t 의 경우 여전히 각 네번째의 워드를 사용하여 계산
- 결국 나머지 word 들은 숨겨진 채로 암호화 → 더욱 알기 어려워짐
2-4-3. 키 확장 과정의 특징
- 암호 키의 일부나 라운드 키의 일부 값으로 나머지 키 값을 유추할 수 없음
- 오직 한 비트만 다른 두개의 암호 키도 적은 수의 라운드 만에 서로 다른 라운드 키를 생성
- 상수 RCons 는 라운드 키들 사이의 대칭성을 제거
- 심각한 취약 키가 존재하지 않음
- 성능이 좋지 않은 CPU에서도 잘 작동할 수 있음
2-5. AES 의 분석
- 보안
- 경우의 수가 \(2^{128}\) (AES-128)
- 통계적인 분석으로도 실패
- 구현의 용이성
- 다양한 플랫폼으로 구현 가능
- Table lookup, 대수적 구조를 사용하는 루틴으로 구현 가능
- 단순성과 비용
- 알고리즘이 매우 단순
- 저렴한 비용의 하드웨어로도 쉽게 구현 가능
1. 보안 목표와 서비스
1-1. 세 가지 보안 목표
- 기밀성
- 민감한 정보가 외부에 노출되는 것을 막자
- 무결성
- 허락되지 않은 접근으로 침해되지 않아야 함
- 가용성
- 허가된 자는 언제든 접근하여 사용할 수 있어야 함
1-2. 공격
- 기밀성
- 스누핑 : 비인가 접근 또는 탈취
- 트래픽 분석 : 트래픽 패킷을 털어서 공격
- 무결성
- 권한이 없는 자가 정보를 조작
- 스푸핑 : 다른 사람으로 위장, 가장
- 가용성
- D.Dos : 서비스를 느리게 하거나 완전히 차단
암호화, 디지털 서명 두 가지의 중요한 주제
2. 전통적인 대칭 키 암호
2-1. 대칭 키 암호 알고리즘의 개념
- Plaintext 평문, Ciphertext 암호문
- Encryption algorithm : 평문 → 암호문
- Decryption algorithm : 암호문 → 평문
- 암호와 복호에 사용하는 비밀 키는 동일
암호의 안정성은 키의 안정성에 바탕을 둔다
2-1-1. 암호 해독
- 암호문 단독 공격
- 전수조사 : 무식하게 하나씩 비교
- 통계적인 공격 : 얘가 좀 많이 쓰이더라로 공격
- 패턴 공격 : 암호문에 존재하는 패턴을 이용
- 알려진 평문 공격
- 선택 평문 공격
- 선택 암호문 공격
밑으로 내려올수록 풀기 쉬워지나 현실성은 떨어짐
2-2. 대치 암호
하나의 기호를 다른 기호로 대체
2-2-1. 단일문자 암호
1 : 1 대응 관계
- 덧셈 암호
- key 의 경우의 수가 26개 뿐 → 너무 쉽게 풀린다
- 곱셈 암호
- 26과 서로소이면 역원을 가진다
- 아핀 암호
- K1 = 곱셈 암호의 K
- K2 = 덧셈 암호의 K
- 키의 공간은 12 * 26 = 312
2-2-2. 다중문자 암호
1 : m 대응 관계
자동 키 암호 Autokey
- 암호화
- 첫번째 K 를 사전에 정의/공유
- 다음 K = 이전의 P
- 복호화
- 첫번째 K 를 사전에 정의/공유
- 다음 K = 이전에 복호화 한 P
Vigenere 암호
- 주어진 키 만큼을 돌려가면서 사용
2-3. 전치 암호
섞는 규칙을 K(key) 가 가지고 있다
2-3-1. 키가 없는 전치 암호
- Rail fence 암호
- 합의한 열의 개수에 맞춰 행렬로 나타낸 후 열 순서대로 읽어들임
- 평문의 각 문자를 암호문으로 바꾸는 순열로 표시
2-3-2. 키가 있는 전치 암호
- 사전에 정의된 크기로 평문을 나눈 뒤, 각각의 블록에 독립적으로 키를 사용하여 문자를 치환
2-3-3. 두 가지 접근법의 결합
- 3단계로 암호화/복호화가 진행
- 표에 행 순서로 기록 → 열을 재배열 → 표를 열 순서로 읽음
2-4. AES (Advanced Encryption Standard)
- 미국 국립기술표준원(NIST)에서 공표한 대칭 키 암호 알고리즘
- 현재 대칭 키 암호화에서 많이 쓰이는 기술
- 기본적으로 128비트 평문 → 128비트 암호문 생성
- key 의 크기에 따라 각각 라운드를 갖는 3가지 버전
- 128, 192, 256비트 키 → 10, 12, 14라운드
- AES에서의 데이터 단위
- 1byte = 8bit
- 1word = 4byte
- 1block = 4word = 16byte = 128bit
- block 을 4*4 행렬로 나타낸 것이 state
- 행렬 표현 방식은 세로 방향으로
2-4-1. 변환 함수
- SubBytes - 대치
- 각 state 들을 주어진 S-박스를 대조하여 값 변환
- ShiftRows - 치환
- 바이트 단위의 left-shift
- Row 0→3 : 0→3byte left-shift
- 바이트 단위의 left-shift
- MixColumns - 믹싱
- state 의 column 들을 주어진 constant 테이블과 행렬 곱을 수행
- 이때 1byte 크기를 넘지않기위해 기약다항식
과 modular 연산
- 이때 1byte 크기를 넘지않기위해 기약다항식
- 8-bit 단위로 XOR 연산 → 같으면 0 다르면 1
- state 의 column 들을 주어진 constant 테이블과 행렬 곱을 수행
- AddRoundKey - 키 덧셈
- state 의 column 들에 라운드 키를 더함
- 라운드 키는 대칭 키를 확장하여 생성
2-4-2. 키 확장 과정
128bit (4word) 기준
를 RotWord → 한 바이트씩 left-shift- SubWord → SubBytes 의 S-박스 이용하여 대치
- RCon(Round Constant) → round 별로 정해진 상수와 XOR 연산
- 192비트, 256비트의 경우 단위가 6word, 8word로 확장하여 계산
- t 의 경우 여전히 각 네번째의 워드를 사용하여 계산
- 결국 나머지 word 들은 숨겨진 채로 암호화 → 더욱 알기 어려워짐
2-4-3. 키 확장 과정의 특징
- 암호 키의 일부나 라운드 키의 일부 값으로 나머지 키 값을 유추할 수 없음
- 오직 한 비트만 다른 두개의 암호 키도 적은 수의 라운드 만에 서로 다른 라운드 키를 생성
- 상수 RCons 는 라운드 키들 사이의 대칭성을 제거
- 심각한 취약 키가 존재하지 않음
- 성능이 좋지 않은 CPU에서도 잘 작동할 수 있음
2-5. AES 의 분석
- 보안
- 경우의 수가
(AES-128) - 통계적인 분석으로도 실패
- 경우의 수가
- 구현의 용이성
- 다양한 플랫폼으로 구현 가능
- Table lookup, 대수적 구조를 사용하는 루틴으로 구현 가능
- 단순성과 비용
- 알고리즘이 매우 단순
- 저렴한 비용의 하드웨어로도 쉽게 구현 가능