블록암호(Block Cipher)의 구조는 예전 포스트(http://reinliebe.tistory.com/76)에서 어급한바와 같이
크게 Feistel 구조와 SPN 구조로 나뉩니다.

Feistel 구조의 장점은 별도의 복호화기를 구현하지 않아도, 암호화기를 이용해 복호화를 할 수 있다는 장점이 있었고
반면 SPN 구조는 암호를 풀기 위해서는 별도의 복호화기를 필요로 한다고 했었습니다.

Involutional SPN 구조는 SPN 구조임에도 불구하고,
별도의 복호화기를 필요로 하지 않은 조금 특별한 구조의 블록암호입니다.

대표적인 Involutional SPN 구조의 암호 알고리즘으로는
국내표준암호알고리즘 ARIA(http://reinliebe.tistory.com/78)가 있습니다.

----------------------------------------------------------------------------------

간단하게 ARIA를 예로 Involutional SPN 구조에 대하여 설명을 하면,

일반적인 SPN 구조의 암호 알고리즘의 암호화 순서는 (한 라운드만 보면)
[평문] -> [치환계층] -> [확산계층] -> [암호문] 과 같은 구조가 됩니다.

반대로 복호화할때는
[암호문] -> [Inverse 확산계층] -> [Inverse 치환계층] -> [평문] 순으로 될것입니다.

ARIA의 각 라운드 함수를 보면 짝수 라운드와 홀수 라운드에서 치환계층이 서로 틀립니다.
게다가 짝수 라운드의 치환계층의 Inverse가 홀수라운드의 치환계층이 되는 구조로 되어있습니다.

또한 확산계층의 Matrix의 inverse가 자기 자신이 되는 구조입니다.

이런 구조적 특징을 이용하여 별도의 복호화기를 사용하지 않고도 복호화를 할 수 있는게 Involutional SPN 구조 입니다


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

+ Recent posts