728x90
🔸대칭키 암호
- =비밀키 암호, 단일키 암호, 관용 암호
- 암호화와 복호화에 하나의 같은 비밀키를 사용하는 암호 방식
C = Eₖ(P)
P = Dₖ(C)
1. 블록 암호
- 평문을 고정된 크기의 블록으로 나누어 각 블록마다 암호화 과정을 수행하여 블록 단위로 암호문을 얻는 대칭키 암호 방식
🔸블록 암호 알고리즘의 구조
- 입력 블록과 키의 모든 비트는 출력 블록의 각 비트에 영향을 줌
- 암호화는 주로 단순한 함수를 반복적으로 적용함으로써 암호학적으로 강한 함수를 만듦
- 라운드 함수: 반복되는 함수
- 라운드 키: 라운드 함수에 작용하는 키
- 키 스케줄: 키를 입력하여 라운드 키를 발생시키는 과정
🔸라운드 구성
①파이스텔(feistel) 구조
- 하나의 입력 블록을 분할하여 좌우 두 개의 블록으로 구분 후 짝수 번의 라운드를 진행
- 각 라운드의 출력 블록이 다음 라운드의 입력 블록이 됨
- i번째 라운드 처리 과정
- f: 라운드 함수
- kᵢ: 라운드 키
Lᵢ = Rᵢ₋₁ | 출력의 왼쪽 부분은 입력의 오른쪽 부분이 그대로 위치 |
Rᵢ = Lᵢ₋₁⊕f(Rᵢ₋₁, kᵢ) | 출력의 오른쪽 부분은 입력의 오른쪽 부분과 라운드키가 파라미터인 라운드 함수를 거친 결과를 입력의 왼쪽 부분과 xor 연산함 |
- 라운드 함수와 관계없이 역변환(복호화) 가능 → 라운드를 거꾸로 계산
- 단, 복호화 할 때는 왼쪽 출력 부분을 라운드 함수 파라미터로 해야 됨 = f(Lᵢ₋₁, kᵢ)
- 두 번의 수행으로 블록 간의 완전한 확산이 이루어짐(짝수 번의 라운드를 진행하는 이유)
- DES, SEED 등 많은 블록 암호에 사용됨
②SPN(Substitution Permutation Network) 구조
- 하나의 입력 블록을 여러 개의 소블록으로 나눈 후 라운드를 진행
- 각 라운드의 출력 불록이 다음 라운드의 입력 블록이 됨
- i번째 라운드 처리 과정
- 각 소블록을 S-box로 입력하여 치환
- S-box 출력을 P-box로 전치
- 라운드 함수가 역변환 가능해야 함
- 더 많은 병렬성을 제공
- AES, ARIA 등 최근의 블록 암호에서 사용됨
🔸블록 암호의 사용 모드
- 각 블록에 블록 암호를 어떤 방식으로 사용할 것이냐에 따라 구분
- 전자 코드 북(ECB) 모드: 블록 암호의 개념 정도로만 생각
- 암호 블록 연결(CBC) 모드: 현재 자주 이용되는 모드
- 암호 피드백(CFB) 모드
- 출력 피드백(OFB) 모드
- 카운터(CTR) 모드: 현재 자주 이용되는 모드
① 전자 코드 북(Electronic Code Book, ECB) 모드
- 입력 받은 평문을 각각의 블록으로 나눈 뒤, 각각의 키를 가지고 블록 암호를 돌려서 암호문을 생성
- 암·복호화 시 병렬처리 가능
- 암호문 블록의 오류가 다른 블록에 영향을 미치지 않음
- 동일한 평문 블록은 동일한 암호문 생성(패턴 분석 가능) → 요즘 잘 사용하지 않는 이유
② 암호 블록 연결(Cipher Block Chaning, CBC) 모드
- XOR 연산 추가, 다음 평문은 직전의 암호문과 XOR → 암호화 시 병렬처리 불가능(복호화할 때는 병렬처리 가능)
- 암호화 시 평문 블록 오류가 그 다음 모든 암호문에 영향 → 메시지 인증에 사용
③ 암호 피드백(Cipher FeedBack, CFB) 모드
- 암호화 시 특정 입력이 이후로 영향을 미침 → 메시지 인증에 사용
- 복호화 함수 필요 없음
④ 출력 피드백(Output FeedBack, OFB) 모드
- 암호문 블록의 오류는 한 블록에만 영향을 미침 → 영상이나 음성 같은 디지털 신호화된 아날로그 신호에 사용
- 복호화 함수 필요 없음
⑤ 카운터(CounTeR, CTR) 모드
- 암·복호화 시 병렬처리 가능
- 오류의 확산이 일어나지 않음
- 복호화 함수 필요 없음
2. 스트림 암호
- 평문과 같은 길이의 키 스트림을 생성하여 평문과 키를 비트 단위로 XOR하여 암호문을 얻는 대칭키 암호 방식
🔸키 스트림
- 임의의 길이의 평문이 주어져도 동일한 길이의 키 스트림 생성 가능
- 규칙성이 없어 예측이 불가능한 랜덤 수열이 가장 안전
- 의사 랜덤(pseudorandom) 수열 생성
- 예측이 어려우면서도 자동화된 생성이 가능
- Ex) LFSR
🔸선형 귀환 시프트 레지스터(Linear Feedback Shift Register, LFSR)
- 직전 m개의 비트값을 선형 결합하여 새로운 한 비트값을 생성
- 주기: 최대 2ᵐ-1 비트 길이
- LFSR 단독 사용은 쉽게 해독됨
✅ 대칭키 암호 알고리즘
① DES(Data Encryption Standard)
- 1977년 미국에서 데이터 암호 알고리즘의 표준으로 공표
- 블록 암호 알고리즘
- 블록 크기: 64bits
- 키 길이: 56bits
- 파이스텔 구조: 16라운드, 라운드 키 길이 48bits
- 컴퓨터 속도 개선과 암호해독기술의 발전으로 2001년 AES에 표준 자리를 물려줌
②TDEA(Triple Data Encryption Algorithm)
- DES를 3회 반복(3DES)
- DES의 짧은 키 길이로 인한 안정성 문제 해결
- DES보다 3배 정도 느림
③AES(Advanced Encryption Standard)🔸
- DES를 대신하는 새로운 표준
- 2001년 미국 NIST에서 공표(공모를 통해 Rijndael을 AES로 선정)
- 블록 암호 알고리즘
- 블록 크기: 128bits
- 키 길이: 128bits, 192bits, 256bits 중 택일
- SPN 구조
- AES 구성
- AES 암호화 과정
- 라운드 1 ~ 라운드 Nᵣ-1
- SubBytes: 비선형을 갖는 S-Box로 바이트 단위 치환
- ShiftRows: 행 단위로 순환 시프트
- MixColumns: 열 단위로 혼합
- AddRoundKey: 라운드 키를 XOR
- 라운드 Nᵣ (마지막 라운드)
- SubBytes
- ShiftRows
- AddRoundKey
- 라운드 1 ~ 라운드 Nᵣ-1
그 외의 대칭키 알고리즘
728x90
'KNOU > 컴퓨터보안' 카테고리의 다른 글
[컴퓨터보안] 2. 암호의 개념 (1) | 2023.05.21 |
---|---|
[컴퓨터보안] 1. 컴퓨터 보안의 개요 (0) | 2023.05.19 |