본문 바로가기

암호학

[암호학] 대칭키 암호화 방식

암호화(Encryption)란?

평문(plaintext)을 암호문(ciphertext)으로 바꾸는 것
 
복호화(Decryption):암호문을 다시 평문으로 바꾸는 것
 

  • 암호화 방식

암호화 방식


암호화 과정

 
1. 평문 P를 작정한다.
 
2. 송신자는 평문 P를 암호화키 Ke와 암호 알고리즘을 적용시켜 암호문 C를 생성하여 수신자에게 전달
-이때 암호문 C는 그냥 읽었을 때 내용을 알 수 없다.
 
3. 수신자는 암호문 P를 수신하여 복호화키 Kp와 복호화 알고리즘을 적용시켜 평문 P로 복원
 


 
암호화방식에서 암호화 키와 복호화 키가 같은 경우 대칭키 암호화 방식이라 하고
C = E(K, P) or C = K(p)
 
암호화 키와 복호화 키가 다른 경우 비밀키 암호화 방식이라 한다.
C = E(Ke, P) , P = D(Kd, C) or C = Ke(P) , P = Kd(C)
 

대칭키 암호화 방식

 
위에서 설명한 대로 암호화와 복호화에 동일한 키를 사용하는 방식이다.
 
장점: 상대적으로 암호화&복호화 속도가 빠르다.
단점: 기밀성은 보장하지만 키를 공유하는 상황에서 문제가 발생할 수 있음(신뢰되지 않은 사람에게도 공유를 해야 하므로 안전하지 않을 수 있음.)
 
 

대칭키 암호 알고리즘의 형태

 
대칭키 암호 알고리즘 형태는 블록 암호 알고리즘과 스트림 암호 알고리즘으로 나뉜다.
 

  • 블록 암호 알고리즘

우리가 암호화하고자 하는 문서는 짧은 경우도 있지만 매우 큰 경우도 또한 존재한다.
 
이때 매우 큰 문서는 한 번에 암호화하기는 힘들어서(암호화 알고리즘의 기본 단위가 제한적)

평문을 블록 형식으로 쪼갬

블록 형태로 쪼개서 각각의 블록을 암호화한다.
 

  • Feistel 구조

블록 암호 알고리즘의 한 구조로 
 
암호화 과정과 복호화 과정이 동일한 방식이다.
 
아까 우리가 쪼갠 블록 중 첫 번째를 가져와보자
 

0번 블록

 
이 블록(보통 64bit)을 반으로 나눠서 왼쪽 반을 L0, 오른쪽 반을 R0로 정한다.
 

 
이 L0와 R0는 n 라운드마다 위치를 교환하면서 함수  F와 XOR 연산을 통해 암호화를 한다.
 

XOR 연산?

입력받은 두 개의 값이 같으면 0을, 다르면 1을 출력하는 방식이다.

ex) A = 0 , B = 1 -> A XOR B = 1


 
이때 키도 n개 필요한데(각 라운드마다 다른 키를 사용), 보통 DES에선 Master key를 입력하면 자동으로 n개의 키를 만들어준다.
 


암호화 과정

먼저 L0을 함수 F로 변환한 R0와 XOR 연산을 하고 나온 값은 L1이 된다.

L0 XOR F(R0) = R1

그리고 R0는 그대로 L1이 된다.

R0 = L1 

이를 n번 반복하면 암호화가 된다(이 과정을 모든 블록이 함).
 
이 과정은 반복되면 반복될수록 안전성이 높아진다.


복호화는 암호화를 역순으로 하면 된다.
 

  • SPN(Substitution Permutation Network) 구조 

 
이 구조를 알아보기 전에 우리가 먼저 알아놓아야 할 것이 있다.
 

Substitution (대체)

한 문자를 다른 문자로 변환함
ex) I -> O
 

Permutation

바이너리 숫자를 임의로 위치를 바꿈
ex) 1 0 0 0
->   0 1 1 0
 


암호화 과정

 
먼저 평문 16비트를 전치(Permutation) 한다.
 
다음 소블록으로 쪼개어 각각을 S-Box에 대입해 치환한다.
 
이를 계속 반복하여 암호화를 한다.
 


 

  • 스트림 암호 알고리즘

이진 수열 발생기를 사용하여 원래 평문과 XOR 연산하여 비트 또는 바이트 단위로 암호화하는 시스템이다.
 
장점: 블록 암호보다 하드웨어 구현에서 수행속도가 빠르며, 하드웨어 복잡도가 낮음
단점:쉽게 내용의 첨가 변경이 가능하다.
 

비교 표

 
 
 

'암호학' 카테고리의 다른 글

[암호학] 암호화 기반 인증기술  (1) 2024.10.30
[암호학] 키 관리와 해쉬 함수  (1) 2024.10.29
[암호학] 공개키 암호화 방식  (2) 2024.10.28
[암호학] DES란?  (1) 2024.10.25
[암호학] 암호학의 역사  (1) 2024.10.20