암호화의 궁극적인 목적은 물론 공격자가 sender와 receiver가 주고 받는 message들을 알 수 없게 하는 것이겠지만,
이를 위해 암호화 알고리즘은 input에 대해 randomly permuted된 output을 만들어낼 수 있어야 한다. 좋은 암호화
알고리즘이 confusion 성질이니 diffusion 성질이니 하는 것들을 만족시켜야 하는 것도 궁극적으로는 들어온 input에
대해 암호화 알고리즘이 randomly permuted된 output을 만들어내야 하기 때문이다.
가장 확실한 방법은 n-bit의 input에 대해 n-bit의 output을 매핑시켜놓은 (2^n)!개의 unique한 테이블들을 만들어
놓고, 어떤 테이블을 사용할 것인지를(key에 해당) sender와 receiver가 합의하여 암호화 및 복호화를 그 테이블대로
따르는 것이겠지만, 이 방법은 n이 커질수록 구현이 infeasible 해지기 때문에, 이와 같이 randomly permuted된
predetermined 테이블과 동일한 output을 만들어내는 function(AES니 DES니 하는)을 사용하는 것이다.
참고)
n=2일때
input의 경우의 수는 00, 01, 10, 11 총 4가지
table의 entry가 00, 01, 10, 11일 때 table의 output의 경우의 수는 (2^2)! = 4! = 24가지가 된다.
즉 table의 가능한 mapping 갯수가 24가지. (entry가 4개인 table의 가능한 갯수가 24개)
어떤 mapping table을 사용하여 들어온 input에 대해 output을 만들어낼 것인가? 가 key에 해당.
'Security > 공개글' 카테고리의 다른 글
fail open과 fail closed에 대해서 (1) | 2016.03.17 |
---|---|
execve shellcode 제작 (0) | 2015.09.09 |
access control 관점에서 본 fine grained vs coarse grained (0) | 2015.03.02 |
ECB 모드가 취약한 이유? (0) | 2014.06.28 |
diffusion (0) | 2014.06.28 |