암호화 기본 내용

AES는 암호화 복호화 과정에서 동일한 키를 사용하는 대칭 키 알고리즘이다.

 

대칭 키 암호는 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘을 의미한다.

대칭 키 암호에서는 암호화를 하는 측과 복호화를 하는 측이 같은 암호 키를 공유해야 한다. 이러한 점은 공개 키 암호에서 공개 키와 비밀 키를 별도로 가지는 것과 구별된다. 대신, 대부분의 대칭 키 암호는 공개 키 암호화 비교하여 계산 속도가 빠르다는 장점을 가진다

 

대칭 키 암호는 암호화하는 단위에 따라 스트림 암호화 블록 암호로 나눌 수 있다.

-       스트림 암호는 연속적인 비트/바이트를 계속해서 입력 받아, 그에 대응하는 암호화 비트/바이트를 생성하는 방식이다.

-       블록 암호는 정해진 한 단위(블록)를 입력 받아 그에 대응하는 암호화 블록을 생성하는 방식이다.

 

DES나 AES가 블록 암호의 대표적 알고리즘이다.

 

블록 암호는 암호화할 때 블록을 어떻게 사용하느냐에 따라 4가지의 모드로 나눠진다

 

-       ECB(Electric CodeBook)

-       CBC(Cipher Block Chaining)

-       CFB(Cipher FeedBack)

-       OFB(Output FeedBack)

 

블록 암호에서 중요한 것은 암호화할 평문을 일정 길이의 블록으로 나눈다는 것이다.

만약 평문이 일정 길이의 블록으로 나눠지지 않는다면 ‘패딩(padding’이라고 하는 빈 데이터를 마지막에 덧붙인다.  그리고 나눠진 각각의 블록을 하나씩 키로 암호화한 후 생성된 암호 블록들을 하나로 합친다. 끝으로 패딩은 제거한다

 

CBC 모드는 XOR 연산 과정이 추가된 것이다. CBC 모드에서는 블록의 XOR 연산을 하기 때문에 초기 연산 블록으로 사용되는 IV(initiation Vector)가 필요하다.

이 IV는 블록 중의 하나를 선택하거나 블록 길이와 같은 길이의 임의의 데이터를 사용한다

 

 

키는 고정하고

Iv의 값을 같이 보내서 서버에서 복호화할 수 있게 해야 한다