- HOME
- Post in | and so on
- Post at | 2015. 4. 23. 14:17 | by 밀크빵.
- View comment
암호화 기본 내용
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의 값을 같이 보내서 서버에서 복호화할 수 있게 해야 한다
'and so on' 카테고리의 다른 글
라이브러리 사용 시 프로젝트 속성 설정 (0) | 2015.04.15 |
---|---|
[windbg] kb 명령어 (0) | 2015.03.05 |
chapter01. 네트워크 프로그래밍과 소켓의 이해 (0) | 2014.12.09 |
상속 vs 포함 (포함 예제) (0) | 2014.12.03 |
상속 vs 포함 (0) | 2014.12.03 |