[KOR] 대칭키 암호(Symmetric-Key Algorithm) - feistel vs SPN



대칭키 블록 암호(Symmetric-Key Block Cipher)

구성요소




plaintext와 ciphertext 사이의 관계를 숨겨버리는 확산(diffusion)과 ciphertext와 key 사이의 관계를 숨기는 혼돈(confusion)과 같은 성질을 만족시키기 위해 설계됨.




P-box(Permutation box) 

1. Straight P-box : 단순 n=m
2. Expansion P-box : 확장 n<m
3.Compression P-box : 축소 n>m
(n-number of input bit // m-number of output bit)
(보통 p-box는 치환하고 다음단계에서 비트수 확장을 위해 쓰임)
(역함수 존재x)





S-box(Substitution box)

n=m or n<>m(즉, 역함수 존재할수도 안할수도 있음)
(수학적 관계의 S-box)
1. shift
2. swap
3. split
4. combine
5. exclusive-OR
포함






Product Cipher 합성암호
확산(diffusion) + 혼돈(confusion) 두가지 성질을 커버하기 위해 암호의 구성요소들을 복합적으로 결합한 암호

1. Feistel Cipher 

input bit를 두 집합으로 나누어 일만 하는 개미 집합,
일은 안하고 XOR 후 SWAP으로 넘겨만 주는 배짱이 집합, 
하지만 다음 라운드로 넘어가면 둘의 운명은 바뀌는 형식
(암호화과정=복호화과정)
DES,SEED사용
ROUND>=3 + 짝수 라운드

Image result for feistel

대칭 블록 암호 구현이 고려할 사항
Block size : 128bit 이상
Key size : 128bit
number of rounds : 16회 이상
Subkey Generation Algorithm
Round Function





2. SPN NETWORK 
(Substitution-Permutation Network)

input값을 여러 블럭으로 나눈후, S-box처리후
처리된 여러 S-box 값을 permutation(p-box)처리 
(암호화과정<>복호화과정)
AES,ARIA 사용
병렬처리가능
Image result for substitution permutation network






💁블록암호에 대한 공격

1. 차분공격 (differential Cryptanalysis)
평문의 일부를 변경하면 암호문이 어떻게 별화할까?를 기본으로 진행하는 CPA공격
Chosen plaintext attack 이용


2. 선형공격(Linear Cryptanalysis)
Masui 개발로 plaintext와 ciphertext 비트를 몇 개정도 XOR 진행후 0이 되는 확률 조사 
즉, KPA(known plaintext attack)
xor 진행 후 0이 되는 확률은 1/2일 것이다.
1/2로 부터 크게 벗어나는 비트의 개수를 분석하여 정보얻는 방법
선형 해독법의 경우 근사 선형 관계성을 찾았다면, 
이를 통해 KPA에서 CPA로 전환할 수 있다.


3. 전수공격법(exhaustive key search)
4. 통계적 분석(statistical analysis)
5. mathematical analysis






스트림 암호(stream cipher)

1. 동기식 스트림 암호 

키 스트림은 평문 혹은 암호문 스트림과 독립적
키 비트사이에 plaintext or ciphertext 전혀 관계 없음
ex)
👀 OTP(one time pad) 
shannon에 의해 해독 불가능하다는 것이 수학적으로 증명. 
말그대로 일회용 패드, 임호화를 수행할때마다 랜덤하게 선택되는 키스트림에 
unconditionally secure(무조건 안전)하며 이론적으로도 해독 불가능.
암호화 알고리즘과 복호화 알고리즘은 서로 exclusive OR 이용 (서로 역관계)


👀FSR(Feedback Shift Register) 귀환 시프트 레지스터

👀LFSR(Linear Feedback Shift Register) 선형 귀환 시프트 레지스터

👀NLFSR(Non-Linear Feedback Shift Register) 비선형 귀환 시프트 레지스터









2. 비동기식 스트림 암호

키 스트림은 평문 혹은 암호문 스트림과 종속적
블록암호에서 다른 운영 모드를 생성하기 위해 사용되는 한가지 방법인 CFB(cipher feedback mode)는 실제로 스트림 암호를 생성한다. 







강력한 스트림 암호의 특징
1. 키스트림 값 내부에서 장기간 동안 반복되는 값이 없음(진난수이용)
2. 키 스트림은 키와 선형적인 관계에 있지 않다. ==> (키 스트림값을 알아냈다는 것이 키 값을 안다는 것을 의미하지 않는다)





스트림 암호 설계 시 고려사항
1. 암호화의 연속은 긴 주기를 가져야 한다.
==> 의사 난수 생성기는 언젠가는 반복되는 비트 스트림을 생산하는 함수를 사용.
반복 주기가 길다는 것은 암호를 해독하는 것이 그만큼 어렵다는 것.

2. 키 스트림은 진 난수 스트림과 최대한 비슷

3. 전사적 공격에 대응하기 위해서 키가 충분히 길어야된다.











Comments

Popular posts from this blog

[EN] DES, 3DES, AES

[KOR] 암호기법의 분류