보안

암호 (2) - 대칭 암호화 방식(Key, DES/3DES, AES, 블록 암호 모드)

oose. 2023. 4. 27. 23:55

1. 대칭 암호화 방식
 1) 대칭키(Symmetric key) 암호화 방식
 – 암호화 키와 복호화 키가 같은 암호화 방식
 – 암·복호화에 걸리는 시간이 짧으며, 비교적 간단한 방식으로 구현 가능
 – 현대에 가장 많이 사용되는 암호 방식 중 하나
 
2. KEY
 – 암호화, MAC, 전자서명 등 암호기술에 반드시 필요한 number
 – 가능한 키의 bit길이가 길수록 brute force 공격에 강함
 – 키는 평문과 같은 가치를 가짐
 – 종류
  • 재사용 여부
   - 세션키: 통신 때마다 한 번만 사용되는 키(SSL/TLS 암호화 통신)
   - 마스터키: 반복적으로 사용되는 키
  • 암호화 대상
   - CEK(Contents Encrypting Key)
   - KEK(Key Encrypting Key)
 – 의사난수생성기(PRNG, pseudo random number generator) • 키 생성에 필요한 값(난수)을 만들어 냄
 
3. DES
 – DES(Data Encryption Standard)
  • 1997년 미국의 연방정보처리의 표준 암호로 채택됨
  • 64bit 평문을 64bit 암호문으로 암호화
  • DES는 64bit의 블록 암호화 알고리즘
  • 키의 크기: 56bit(오류 검출을 위해 8bit가 사용)
  • Brute force 공격으로 DES의 해독이 가능해짐에 따라 1998년 11월 이후 공식적 사용을 중단했으나 아직도 여러 응용 프로그램에서 많이 사용됨
 – 암호화 과정 개요 
  • Pre-Processing 단계: 초기치환(Initial Permutation) 실행
  • 16번의 중간 라운드 (Round) 수행
  • Post-Processing 단계: 최종치환(Final Permutation) 실행

 – Pre-processing
  • 입력: 64bit 단위로 나눈 평문의 조각
  • 각 평문(64bit)의 비트위치를 규칙에 의해 바꿈(Initial-permutation)
  • 왼쪽 L(32bit)과 오른쪽 R(32bit)로 나눔

 – 1~16 라운드
  • 입력: 이전 라운드에서 만들어진 L과 R
  • L1= R0 , R1 = L0 ⊕ f(R0 ,K1 )
  • ⊕: 배타적 논리합
 

 – Post-processing
  • 입력: 이전 라운드에서 만들어진 L과 R
  • 최종적으로 계산된 L과 R을 합쳐서 하나의 블록으로 만듦
  • 초기치환의 역치환 IP-1 적용(Final-permutation)

 
 
4. 트리플 DES(Triple DES, 3DES)
 – DES의 대안으로 제시된 DES의 암호화 강도를 높인 대칭키 암호 방식
 – DES를 3번 연속 실행해서 3DES라고도 불림
  • 2번의 DES 암호화 중간에 DES 복호화가 1번 실행됨
  • 2개의 키, 혹은 3개의 키를 사용
  • 기존 DES와의 호환성 유지 목적(모든 키를 동일하게 하는 경우) 
 – 수학적으로 DES 알고리즘보다 2배의 암호화 강도를 가짐
  • 충분한 암호 강도가 아니기 때문에 AES가 권장됨

트리플 DES의 암호화 과정

 

트리플 DES의 복호화 과정

5. AES(Advanced Encryption Standard)
 – 1997년 미국 NIST의 암호 공모에서 새로운 대칭 암호의 표준으로 채택된 대칭키 암호 방식(Rijndael)
 – 암호 공모 조건
  • 안전성(Security)
  • 비용(Cost)
  • 구현 효율성(Implementation)
 – 특징
  • 128bit 평문을 128bit 암호문으로 암호화
  • 키의 길이: 128, 192, 256bit
  • 라운드(Round)회수: 10, 12, 14

AES의 암호화 과정

 – AES의 각 라운드 구성연산
  • SubBytes: byte 단위 substitution 수행
  • ShiftRows: row 단위로 cyclic shift 수행
  • MixColumns: 높은 diffusion을 위해 column 단위로 mixing
  • AddRoundKey(마지막 연산): round key와 state를 XOR

AES의 각 라운드 과정

6. 그 밖의 대칭 암호
 1) SEED
  • 국산 128bit 블록 암호 알고리즘
  • 한국인터넷진흥원과 국내 암호 전문가들이 순수 국내 기술로 개발
  • 전자상거래, 금융, 무선통신 등에서 전송되는 중요정보 보호 목적
  • SEED 128(128bit key), SEED 256(256bit key)
 
 2) ARIA
  • 국산 128bit 블록 암호화 알고리즘
  • 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발
  • AES와 마찬가지로 128/192/256bit 암호화 키를 지원
 
 3) IDEA
  • 유럽에서 많이 사용
  • 128bit key를 사용하여 64bit 평문을 8라운드를 거쳐 64bit 암호문으로 만드는 방식
  • 모든 연산이 16bit 단위로 이루어지도록 하여 16bit 프로세서에서 구현이 용이하며 주로 키 교환에 쓰임
 
4) RC5
  • 미국 RSA 연구소에서 개발
  • RC5(Ron’s Code 5) 알고리즘
  • 비교적 간단한 연산으로 빠른 암호화와 복호화 기능을 제공하며 모든 하드웨어에 적합함
  • 입출력, 키, 라운드 수가 가변인 블록 알고리즘
  • RC5는 32, 64 또는 128bit 키가 사용되며 속도는 DES의 약 10배
 
 5) Skipjack
  • 미국 국가안보국(NSA)에서 개발한 클리퍼 칩에 내장된 블록 알고리즘으로, 비밀로 유지되던 알고리즘의 형태와 구조가 1998년에 공개됨
  • 64bit 입출력, 80bit 키를 이용하여 총 32라운드의 암호화 과정을 수행함 
 
 6) LEA
  • 고속 환경 및 모바일 기기 등의 경량 환경에서 confidentiality를 제공하기 위해 국내에서 개발된 암호화 알고리즘으로 AES 대비 1.5~2배 빠름
  • 128bit 데이터 블록으로 128, 192, 256bit 비밀 키를 사용할 수 있음