1. 현대 대칭키 암호

(1) 현대 블록 암호

1) 현대 블록 암호의 구성요소

  • 개요 : 혼돈 (암호문과 키의 상관관계 숨김)  & 확산 ( 평문과 암호문의 상관관계를 숨김)
  • P박스 :
    • 축소 P 박스 : 입력 n 비트 > 출력 m 비트, n비트 중 특정 비트 소실 ,  비트 수 줄이고자
    • 확장 P 박스 : 입력 n 비트 < 출력 m비트 , 1개 이상의 출력비트와 연결, 비트 수 늘리고자
    • 단순 p박스 - 역함수 O           축소/확장P박스 - 역함수 X

2) S 박스

  • 입력 n 비트와 출력 m 비트 같을 필요 없음
  • 역함수 존재할 수도 있고 (존재시 n=m) , 존재하지 않을 수도 있음

3) 합성 암호 

  • 개요 :  치환, 전치 등 그 밖의 구성요소를 결합한 암호
  • 라운드 (round) : 반복적으로 사용되는 합성 암호

4) 두가지 종류의 합성 암호

  • Feistel 암호 / 페이스텔 암호
    • 평문 블록 길이 64 비트 이상
    • 키 길이 64비트 이상 (요즘은 128비트 이상)
    • 라운드 수 16회 이상
    • 복호화 과정은 암호화 과정의 입력 순서의 반대
  • 특징
    • L1 = R0
    • R1 = L0 xor F1(R0,K1)
  • SPN 구조 ( Substitution Permutation Network)
    • 여러 함수 중첩하면 보다 안전하다.
    • S-BOX 입력하여 대치 ,   P- BOX 로 전치

5)블록 암호에 대한 공격

  • 차분 분석 (차분 해독) : 선택 평문 공격법, 암호문 블록들의 비트 차이 혹은 암호문의 변화 형태 조사하여 해독
  • 선형 분석 (선형 해독) : 선형화하여 해독, 기지 평문 -> 선택 평문 공격 수행
  • 전수 공격법 : 경우의 수가 적을 때
  • 통계적 분석 : 평문의 빈도 이용
  • 수학적 분석 :  수학적 이론 이용

 

(2) 현대 스트림 암호

1) 개요 

  • 개념 : 암호화 복호화 모두 한번에 r 비트 생성
  • 스트림 암호 설계시 유의사항
    • 긴 주기
    • 난수 스트림과 비슷해야 함
    • 키 길이가 충분히 길어야 함

2) 동기식 스트림 암호

  • 개요 : 키스트림과 암호문의 독립성 
  • OTP (one-time pad) : 암호화를 수행할 때마다 랜덤하게 선택되는 키 스트림 /  암호화와 복호화 알고리즘 서로 역관계
  • 귀환 시프트 레지스터 (FSR) : 시프트 레지스터 + 피드백 함수
  • 선형 귀환 시프트 레지스터
  • 비선형 귀환 시프트 레지스터

3) 비동기식 스트림 암호

  • 키스트림이 평문 또는 암호문과 관계성 존재
  • 자기 동기식 스트림 암호
  • 암호문의 비트가 손실/ 변경 되어도 오류 전파 유한

 

2. DES

(1)개요

1) 역사  : 대표적인 대칭키 블록 암호

2)개관

평문 길이 암호문 길이 키 길이 라운드 횟수 서브 키 갯수
64  64 56 16 16
  • 복호화 과정 :  암호화 과정과 동일하게, 서브 키 K 뒤집어서

(2) DES 구조

1) 개요

  • 암호화 : 2개의 P 박스(초기, 최종) + 16개 라운드 함수
  • 라운드 키 : 48 비트

2) Round 함수

  • 16번의 라운드 함수
  • 요소 : 혼합기 (mixer) + 교환기 (swapper) - 역연산 가능

3) DES 함수

  • 32비트 출력값을 산출하기 위해 가장 오른쪽 32비트에 48비트 키 적용
  • 구성요소 (4) : 확장 P-BOX, 키 XOR, 8개의 S-BOX,  단순 P-BOX

4) 알고리즘

  • 라운드 키들은 역순으로 적용
  • 키 생성 과정
    • 암호화 키 (64비트) -> 8비트 패리티 피트로(-8) -> 남은 키 (58비트) -> 16개의 48비트로 쪼개짐

(3) DES 분석

1) 설계 기준

  • S-BOX : 혼돈 만족 위해, 비선형 함수, 입력 1비트가 바뀌면 - 출력은 2비트 이상 바뀜
  • P-BOX : 확산 만족 위해

2) DES 취약점

  • 쇄도효과 : 평문 / 키의 작은 변화가 큰 변화 만듬
  • 완비성 : 각 비트가 평문의 비트들에 크게 의존

(4) 다중 DES

1) 3중 DES

  • 개요 : 2개 키 갖는 3중 DES, 3개 키 갖는 3중 DES
  • 2 개의 키를 갖는 3중 DES
    • 두개의 키 : k1, k2
    • 평문 -> 암호화 (k1) -> 복호화 (k2) -> 암호화 (k1) -> 암호문
  • 3개의 키를 갖는 3중 DES
    • 3개의 키 : k1, k2, k3
    • 평문 -> 암호화 (k1) -> 복호화 (k2) -> 암호화 (k3) -> 암호문
  • 복호화 : k3-k2-k1 순으로 진행, 복호화 -> 암호화 -> 복호화
  • 키 크기 : 112, 168비트

3. AES

(1) 개요

평문 암호문 라운드  키 크기
128 128 10,12,14 128,192,256

 

(2) 암호

1) 개요

  • SPN 구조
  • 각 라운드 구성
    • SubByte() 
    • ShiftRows()
    • MixColumns()
    • AddRoundKey()
  • 마지막 라운드에서는 MixColumns    X 

4. 기타 대칭키 암호 알고리즘

(1) 국제 암호 알고리즘

  • IDEA(International Data Encryption Algorithm)
    • 키 길이 : 128비트
    • 블록 암호 길이 : 64비트
    • Feistel 구조
    • 라운드 횟수 : 8.5회
    • S-BOX 사용하지 않음
    • DES 보다 2배 빠른 속도 / 무차별 공격에 대응
  • RC5
    • 입출력 , 키 , 라운드 수 가변적
    • 블록 암호 길이 : 32  64  128
    • DES보다 10배 빠른 속도

(2) 국내 암호 알고리즘

  SEED ARIA HGIHT LEA
특징 개인정보 보호
대칭키 알고리즘
F-함수 (Feistel 구조)
학계/연구소/정부기관에서 공동 개발
국가 암호화 알고리즘
저전력 경량화
블록 암호
경량 / 고속/  블록 암호 알고리즘 
평문 길이 128 128 64  
암호문 길이 128 128 64  
키 길이 128   -> 256 확장 128 / 192 / 256    
라운드 키 길이 64      
라운드 횟수 16      

 

5. 현대 대칭키 암호를 이용한 암호화 기법

(1) 블록 암호의 사용 방식

1) 개요 

  • 임의의 길이인 평문을 암호화하기 위해 평문을 특정 길이로 분할하여 블록 암호에 입력시킨다.
  • 5가지 운영모드 ECB / CBC / CFB / OFB / CTR

 

2) ECB (Electronic Code Book)

  • 개요
    • 가장 간단함
    • N개의 n비트 블록으로 분할
    • 갯수가 맞지 않다면 크기를 맞춰주기 위해 덧붙이기 (Padding) 필요함 
  • 특징
    • 블록들 간 독립성
    • 암호화 / 복호화 병렬적 수행
    • 오류가 다른 블록에 영향 X
    • 평문과 암호문의 블록 패턴이 동일하게 유지되므로, 난수 발생 같은 경우에만 사용
  • 응용
    • 많은 DB 암호화할 때 병렬적 수행
    • 레코드가 중간에 수정되도 암호화 복호화 가능
  • 단점
    • 평문 블록이 동일하면 암호문도 동일
    •  

3) CBC(Cipher Block Chaining)

  • 개요
    • 각각 평문은 이전 암호문 블록과 XOR (메모리에 저장됨)
    • 첫번째 블록의 경우, 이전 암호문이 없음 -> 허구 블록 = 초기 벡터  XOR
  • 초기 벡터 :  송수신자 모두 알고 있음 , 해독자가 예측 불가
  • 특징
    • 초기 평문 블록이 바뀌면 암호문 블록 모두 변경
    • 암호문은 모든 평문의 영향을 받음 
  • 암호화 / 복호화
    • 암호문 블록은 현재 평문 블록 + 이전 평문 블록에  영향
    • 복호화시 암호문 블록 1개 에러시, 평문 2개만 영향 ( 그 다음 복호화 정상)
    • 단, 평문 블록에 오류시 모든 암호문에 영향 (오류 전파)
  • CBC 모드 활용 : IPsec

4) CFB(Cipher FeedBack)

  • 개요
    • 어떤 블록 암호도 스트림 암호로 변경 가능
    • 덧붙이기 (Padding) 필요 없음
    • 초기 벡터 존재
    • 실시간 사용 가능 
  • 암호화 / 복호화
    • 암호화/복호화에서 사용하는 암호 함수 : DES AES
    • 복호화시 암호화 함수 사용
  • 스트림 암호로서의 CFB 모드 : 블록 암호를 이용한 운영 모드 , 비동기식 스트림 암호

 

※CFB 와 CBC 모드 공통점 :  오류 전파

5) OFB(Output Feedback)

  • 개요
    • 암호기의 출력과 평문 XOR -> 암호기의 출력과 동시에 다음 암호문 전달 = 오류 전파 X
    • 송수신자 사이의 동기 조절 , 암호문 전달 시 비트 손실과 전달에 유의
    • 초기 벡터 사용
  • 특징
    • 초기치 변경 -> 모든 암호문 변경
    • 암호기 출력값 평문과 무관
    • 오류 전파 X
  • 스트림 암호로서의 OFB 모드 : 블록 암호를 기반으로 한 스트림 암호 , 동기식

6)CTR(counter) 

  • 개요
    • 암호화시 피드백 X
    • 키 스트림의 의사난수성 사용
    • 이전 암호문 블록과 독립적 키 스트림을 생성
    • 다른 평문 블록은 서로 다른 키로 xor
    • 평문 xor 카운터
  • 카운터 만드는 법 : 암호화 때마다 다른 값을 기초로 생성
  • 스트림 암호로서의 CTR 모드 :  실제 스트림 암호, 동기식 스트림 암호화 지원, 병렬처리 가능(ECB와 동일)

 

★헷갈리는 부분 "CFB와 CBC 모드 운영 방식 차이점"

CBC 모드는 암호문과 평문 사이에 XOR과 암호기 (암호 알고리즘) 둘다 적용

CFB 모드는 암호문과 평문 사이에 XOR 연산만 

 +) CFB 모드는 이전에 암호화된 암호문을 그대로 쓰는 것이 아니라 한번 더 (2번) 암호화를 진행하고 XOR 연산

 

 

 

 

 

 

 

 

+ Recent posts