앞서 설명드린 현대암호의 범주 안에서도 대칭키암호에 들어가는 블록암호에 대하여 알아보도록 하겠습니다.

블록암호의 정의에 대해 간단히 살펴보면,
평문(Plaintext : 암호화 되기 전의 원 정보)이 n 비트일때, 암호문(Ciphertext) n 비트는

K 가 고정되면 Ek( ) 가 bijective 함수 라던지,
키 사이즈가 log2 |K| = k 라는건 ... 기본(?) 이겠지요 ;;


어때요 ... 참 쉽죠 ?

텍스트큐브에서도 그랬지만 ... 티스토리도 수식은 안써지니 ...
(뭐 그래서 예전 블로그 그림을 그냥 그대로 가져왔지만서도요 ;;)


그림으로 간단히 표현하면 ... 이렇습니다 ...
(이것도 이전 블로그 포스트에 있던 그림입니다 ... 투철한 재활용 정신이랄까요 ;;)



블록암호는 그 구조에 따라 Feistel 구조와 SPN 구조 ... 으로 나뉩니다
(... 등에 신경쓰시면 안됩니다 ;; 사실 두 구조를 가장 많이 쓰지요 ...)

▶ Feistel 구조

Feistel 구조는 아래 그림과 같이 평문의 좌우를 나누어 키와 조합한 뒤, XOR 연산을 거쳐
좌우를 뒤집어주는 ... ... 구조입니다 ...



암호학에 있어 Shannon의 Confusion과 Diffusion 이 중요한데 ... (이건 다음에 다루기로 하지요 ...)
아무튼 반복 연산을 통하여 Confusion과 Diffusion을 만족시킵니다.

좌우를 뒤집어가면서 연산해야 하므로 병렬연산이 어렵고,

SPN 구조에 비교하여 동일한 Confusion/Diffuison을 만족시키려면,
SPN 구조의 두 배에 해당하는 반복연산이 필요하기 때문에
성능 측면에서는 효율적이지 못할지도 모르지만

암호화와 복호화 과정이 동일하기 때문에 별도의 복호화기가 필요 없습니다 ...

그게 매우 큰 장점이지요 ...
A xor B = C 일때, C xor B = A 라는 것을 생각해보시면 쉽개 아실 수 있을겁니다.


▶ SPN 구조

SPN은 .. Substitution - Permutation Network의 약자로

말 그대로 Substitution Layer와 Permuation Layer를 이용하여 Confusion과 Diffusion을 만족시켜주는 암호입니다.

간단하게 밑의 그림과 같이 단순합니다 ...


장점이라면, Feistel 구조와 반대로 병렬연산이 가능하며

단점이라면 복호화시 별도의 복호화 모듈을 구현해줘야 한다는 것이지요


▶  블록 암호의 종류

전 세계적으로 매우 많은 종류의 블록 암호가 있고, 많은 암호들이 사용중/ 혹은 보류(?) 상태 입니다.

우리나라의 경우 AES DES(T-DES) SEED ARIA 가 주로 사용되고
그 외의 알고리즘은 별로 사용되지 않는다고 보시는게 좋을 듯 싶습니다.

서론이 조금 길었지만 다시 ... 간단하게 블록암호의 종류에 대해 살펴보면,
블록암호는 앞서 Feistel 구조와 SPN 구조 등으로 나뉜다 볼 수 있다 하였습니다.
일반적인 경우 Feistel 구조와 SPN 구조를 가장 많이 쓰긴 합니다만,
경우에 따라 두 구조의 혼합 구조나 새로운 구조를 만들어 사용하기도 합니다.

▷ Feistel 구조
  - DES
  - SEED
  - FEAL
  - LOKI
  - BLOWFISH
  - KASUMI

▷ SPN 구조
  - AES
  - ARIA
  - SHARK
  - SAFER
  - SERPENT
  - CRYPTON
▷ 기타 구조

  - SKIPJACK
  - BEAR
  - LION
  - IDEA

간단하게 제가 알거나 가지고 있는 자료는 이정도 뿐이라 ...이정도 밖에 기술하지 못하지만
세상에는 이보다 더 많은 수의 블록암호가 존재합니다.

아직 언급하지 않은 알고리즘에 대해서는 다음에 기회가 되는대로 다시 언급하도록 하겠습니다.

출처 - http://reinliebe.tistory.com/

'Security > Cryptography' 카테고리의 다른 글

암호학 - Block Cipher :: AES C# 소스  (0) 2011.05.07
암호학 - Block Cipher :: AES  (0) 2011.05.07
암호학 - Block Cipher :: DES C# 소스  (0) 2011.05.07
암호학 - Block Cipher :: DES  (0) 2011.05.07
암호학 - Introduction  (0) 2011.05.07

+ Recent posts