대칭키 암호화 알고리즘 : 암호화와 복호화에 필요한 키가 같은 암호화 알고리즘을 뜻한다.
비밀키 암호화라고도 한다.
대표적으로 대칭키 암호화 알고리즘으로는
DES, AES,ARIA,SEED(국내개발) 등이 있다.
또한 대칭키 암호화 알고리즘 구조는 대표적으로 2가지가 있다.
1. 스트림암호
일반적으로 스트림 암호는 1bit씩 난수를 생성하고 그 난수와 암호화할 평문과 xor 연산을 하여 자료를 얻는다.
스트림 암호에서도 2가지 방법으로 나뉘는데 동기적 스트림 암호화와 자기(비)동기적 스트림 암호화가 있다.
1) 동기적 스트림 암호화
동기식 스트림 암호는 후속암호문에 영향을 주는 스트림암호이다.
2) 자기(비)동기적 스트림 암호화
비동기식 스트림암호는 후속 암호문에 아무런 영향을 주지 않는 스트림 암호이다.
2. 블록암호
블록 암호는 특정한 길이의 블록 단위로 암호화 및 복호화가 이루어진다.
블록암호화는 블록을 어떻게 암호화할지에따라 운영방식으로 구분하는데 대표적으로 EBC,CBC,CFB방식이 있다.
1) EBC(electronic codebook)
가장 간단한 구조를 가지고 있으며
단순하게 블록을 같은키로 각각 암호화 하는 방식이다.
특징으로는 이전 암호화 블록이 다음 블록 암호화 과정에 영향을 주지 않는다.
2) CBC(cipher-block chaining)
각 블록이 암호화 되기 전에 이전 암호화 블록과 XOR연산을 하는 블록 암호화 방식이다.
첫 블록의 경우 초기 벡터를 사용하여 XOR연산을 진행 한 후 암호화가 이루어 진다.
단점으로는 이전 암호문이 필요하기 때문에 병렬로 암호화가 불가능하다. 하지만 복호화는 병렬로 복호화가 가능하다.
3) CFB(cipher feedback)
CFB는 CBC를 변형한 형태이다.
CFB는 초기벡터에 키를 이용하여 암호화를 진행 후 BCE(Block Cipher Encryption)을 만들고 BCE와 평문을 XOR연산 하여 암호문을 만든다.
다음으로 진행할때는 해당 암호문을 다시 키를 이용하여 암호화를 진행 후 BCE를 생성하고 평문과 XOR연산을 하여 암호문을 생성한다.
블록암호화를 비동기적 스트림 암호화로 바꾼다로 하는데 어떻게 그렇게 되는지 이해하기 어렵다.
4) OFB(output feedback)
CFB와 매우 유사하며 다른점은 다음 암호화에 필요한 요소가 암호문이 아닌 BCE를 넘져주어 새로운 BCE를 생성한다.
블록암호화를 동기적 스트림암호화로 바꾼다고 하는데 무슨 말인지 이해할 수 없다.
5) CTR(Counter)
1씩 증가하는 카운터를 암호화하여 BCE를 만들고 BCE와 XOR연산을 하는 구조이다.
앞에 암호화 과정이 뒤에오는 암호화 과정에 영향을 주지 않는다.
블록 암호 구조를 스트림 구조로 바꾸는 구조를 가진다.