Stream cipher는 암호화에서 사용되는 symmetric key 암호화 기술중 하나이다. 이 기술은 평문과 비트 스트림으로 구성된 키를 사용하여 데이터를 암호화한다. 위 그림에 나와있듯이, stream cipher는 평문과 키를 XOR 연산으로 결합한다. 이를 통해 원본 데이터의 패턴이나 구조를 유지하면서 암호화할 수 있다. 이 암호는 길이가 n 인 키 K 를 가지며, 이를 통해 키스트림(Key Stream)을 생성한다. 이래서 스트림 암호라는 이름이 붙었나 보다. Stream cipher의 장점은 데이터가 스트림으로 처리되기 때문에 큰 데이터를 실시간으로 암호화할 수 있어서 block cipher보다 빠르다.다음으로, 키 하나를 만들어서 암호화시키면, 동일한 키로 암호문을 복호화시킬 수 있는 ..
AES(Advanced Encryption Standard)는 현재 가장 널리 사용되는 대칭 암호화 알고리즘 중 하나다. 이름에서부터 살짝 눈치챘듯이, 저번 포스팅에서 다뤘던 DES를 대체하는 알고리즘이며 128, 192, 256 비트 중 하나의 키를 선택하여 데이터를 암호화 및 복호화한다. 이러한 다양한 key size 중에서 128비트 key가 가장 널리 사용된다. 물론 각 bit size마다 필요한 round의 수가 다르고, 암호화 과정에서 substitution 및 permutation을 사용한다. (참고로 DES의 bit size는 64, key size는 56, round는 16라운드까지 있으며 feistal 구조를 사용한다.) 우리는 3가지 bit size 중 가장 널리 사용되는 128bit..
Block Cipher는 Symmetric Encryption의 일종으로 public key가 아닌 secret key를 사용한다.이름 그대로 큰 데이터를 블록 단위로 구분해서 암호화를 한다.여기서 사용한 key는 재사용이 가능하다.예를 들자면 Substitution cipher, Permutation, DES, AES 등에 사용된다. 이것과 대비되는 관계로 Stream Cipher가 있는데, Block Cipher는 블록 단위로 암호화를 한다면 Stream Cipher는 비트나 바이트별로 암호화를 한다.비트에 XOR 연산을 하며, Block Cipher는 한번에 하나의 블럭만 넣는다면 Stream Cipher는 연속적으로 byte를 집어넣는다.이러한 stream 암호화는 block cip..
vigenere cipher 각 문자마다 km만큼 문자를 이동하여 암호화시키는 방법이다.전에 배웠던 shift 와 비슷한데 다른점은 모든 문자마다 shift의 정도가 다 다르다는 것이다.Enc(K, x1, x2, ... ) = (x1 + k1, .... , xm + km) mod 26Dec(K, Y1, Y2, ...) = (Y1 - k1, ... , Ym - km) mod 26키값 K는 K = (k1, k2, ...., km)으로 표현한다.예를들어 key값이 (3,2,1)인 경우, hot 을 KQU로 암호화시킬 수 있다. 수많은 k 덕분에 비즈네르 암호는 키값을 알지 못하는 경우 attack이 불가능하다. permutation cipher 치환암호는 원문 문자열을 재배열하..