암호화의 궁극적인 목적은 물론 공격자가 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
Posted by huammmm1
,