암호화 기본 내용

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의 값을 같이 보내서 서버에서 복호화할 수 있게 해야 한다