위 이전 관련글들에 이미 있는 내용이긴 하지만 다시 생각이 나서... 보충 좀 더 해본다.


블록 암호화 알고리즘에는 모드(Mode)라는 개념이 있는데,

간단하게 말하자면 각 블록의 암호화/복호화를 무엇을 이용해서 어떻게 하겠다는 것에 대한 정의다.

(블록Block이란 암호화/복호화를 연산하기 위한 최소 단위 비트 집합을 말하며 보통 64비트, 128비트 단위다.)



>> 참고(영문): http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

>> 참고(한글): http://ko.wikipedia.org/wiki/블록_암호_운용_방식



보통 초기화 벡터(IV)가 최초 암호화/복호화를 할 때 사용되는데

ECB와 CTR 모드는 각 블록이 독립적으로 암호화/복호화되기 때문에 초기화 벡터가 필요하지 않고,

CFB와 OFB 모드는 초기화 벡터만을 이용해서 암호화한다는 점이 특징이다.

그리고 ECB와 CTR 모드를 제외한 모든 모드에서 각 평문과 암호문은 암호화/복호화 전후 단계에 이 초기화 벡터(또는 앞 블록 연산의 결과값)과 논리합(XOR)으로 연산을 하여 다음 블록 암호화/복호화에 사용된다.


가장 특이한 것은,

CFB와 OFB 모드는 복호화할 때도 Encryption 함수를 사용하여 "암호화"를 한다는 점이 되겠다.


그리고

실제 공인 인증서나 기타 등등에 가장 많이 사용되는 모드는... 역시 CBC 모드다.




이러한 특징들을 잘 보여주는 아래 그림들만 퍼 와봤다.



[CBC 모드]







[CFB 모드]








[ECB 모드]





[OFB 모드]










[PCBC 모드]







[CTR 모드]







Posted by 🐮Thermidor™ 떼르미

댓글을 달아 주세요

  1. 페라카스 2014.04.18 16:52  댓글주소  수정/삭제  댓글쓰기

    잘 보고 가요~~~ 덕분에 제가 만든 암호화 라이브러리에 위 모드 다 만들어 넣었어요.. ^^



자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]