이번 학습 주제는 스트림 암호화와 블록 암호화인데요-_-
보안 기사 공부를 하면서 느끼지만 외워야할 약자들이 참 많네요 ㅜㅜ
어쨌든 보안 기사를 취득하려면 열심히해야겠죠..
스트림(Stream) 암호화는 비트(Bit) 혹은 바이트(Byte) 단위로 암호화를 수행하는 것으로
키 스트림으로 암호화하는 사용자와 복호화하는 사용자가 동일한 키 스트림 생성기를 사용합니다
또한 고속으로 암호화할 수 있고 경량적이어서 무선 환경이나 고속으로 동작하는 시스템에서 사용하고
특히 하드웨어로 구현이 용이합니다
스트림 암호화는 동기식과 비동기식으로 나뉘는데
동기식 스트림 암호 방식은 Gilbert Vernam이 개발한 One Time Pad을 말하며
키 스트림을 생성할 때 랜덤(Random)하게 생성하고 이것을 송신자와 수신자가 교환하고
이를 암/복호화 키로 사용합니다
비동기식 스트림 암호는 키 스트림을 생성할 때
이전의 평문 및 암호문에 종속적으로 생성하는 방법입니다
스트림 암호화는 키 스트림이 암호화키가 되므로
암호화키가 유출되면 암호문이 복호화되는 문제가 있어
어떻게 키 스트림을 송신자와 수신자가 공유할 것인지가 중요한 문제가 되겠습니다
이해를 돕기 위해 LAN의 WEP에서 사용하는 RC4 암호화 기법을 살펴보겠습니다
RC4 스트림 암호화는 정적키에서 난수로 임의의 키를 선택해서 키 스트림을 생성합니다
난수를 선택할 때는 셔플링(Shuffling) 기법을 사용하고
셔플링 기법은 카드 게임에서 카드를 섞는 기법으로
256개의 바이트 수를 섞은 후 256 바이트 중 하나를 선택하는 것입니다
이제 키 스트림을 사전에 송/수신자가 교환해야하고
메시지를 비트(Bit)로 변환하고 키 스트림과 XOR 연산하여 암호화를 합니다
다음으로 블록 암호화에 대해 알아보겠습니다
블록 암호화 방법은 사전에 공유한 암호키를 사용해서
고정된 길이의 입력 블록을 고정된 길이의 출력 블록으로 변환하는 방법입니다
다시 말해서 암호화를 수행하기 위해서
평문을 고정된 블록으로 나누어 각각 암호화를 수행합니다
블록 암호화 알고리즘은 암호화한 방식을 그대로 역으로 수행해서 복호화할 수 있는 Feistel 구조와
역으로 수행해서 복호화할 수 없는 SPN(Substitution Permutation Network) 구조로 분류됩니다
그러면 블록 암호화 기법들을 살펴보겠습니다
먼저 ECB(Electronic Code Block) Mode는 가장 단순한 모드로
평문을 일정한 블록 단위로 나누어 순차적으로 암호화하는 구조입니다
블록의 단위는 알고리즘마다 다른데 DES는 64Bit, AES는 128Bit로 나눕니다
단위로 나눌 때 배수에 미치지 못하여 남는 Bit는
패딩(Padding)을 추가하여 크기를 맞춰주어야하고
각각의 블록은 독립적이어서 특정 블록의 에러가 다른 블록에 영향을 주지 않으며
한 개의 블록만 해독이 되면 나머지 블록 또한 해독되는 특징이 있습니다
다음으로 CBC(Cipher Block Chaining) Mode가 있는데
ECB Mode와 동일한 방법으로 평문을 일정한 블록 단위로 나누고
최초 키의 생성 버퍼로 IV(Initialization Vector)가 사용되어 첫 번째 블록과 XOR 연산을 통해 암호화합니다
IV는 나누어진 일정한 블록 중 하나가 되거나 단위 블록과 길이가 같은 임의의 값이 될 수 있습니다
블록 암호화 모드 중 보안이 가장 강력한 암호화 모드로 평가되며 가장 많이 사용되고 있는데
순차적으로 암호화 및 복호화를 하기 때문에 병렬 처리는 불가능합니다
다음으로 CFB(Cipher Feedback) Mode가 있습니다
CFB Mode는 앞서 ECB, CBC와 달리 패딩을 추가하지 않고
블록 단위 암호화를 스트림 암호화 방식으로 구성하여 Bit 단위로 암호화를 수행하기 때문에
평문과 암호문의 길이가 같다는 특징이 있습니다
CBC와 마찬가지로 IV가 사용되고, 암호화는 순차적으로 처리하고 복호화는 병렬 처리가 가능합니다
평문과 암호문의 길이가 같은 OFB(Output Feedback) Mode도 있는데
암호화 함수를 키의 생성시에만 사용하여 암호화와 복호화의 방법이 동일하고
암호문을 다시 암호화하면 평문이 나오는 구조입니다
암호문 한 개의 블록에서 에러 발생 시 현재 복호화되는 평문 블록에만 영향을 주므로
영상 데이터, 음성 데이터와 같은 디지털화된 아날로그(Digitized analog) 신호에 주로 사용됩니다
마지막으로 CTR(CounTeR) Mode에 대해 알아보고 마치겠습니다
CTR은 평문 블록과 키스트림을 XOR 연산하여 암호문을 생성하는데
키스트림이 암호화마다 1씩 증가하는 카운터를 암호화한 Bit열이 됩니다
블록의 암호화 순서가 임의의 순서가 될 수 있어 병렬로 처리 가능하며
OFB와 마찬가지로 암호문 블록 에러 발생 시 해당 블록만 영향을 줍니다
이것으로 오늘의 학습을 마치겠습니다
그럼 이만-_-
'Security' 카테고리의 다른 글
[Security] FTP(File Transfer Protocol) (0) | 2020.03.05 |
---|---|
[Security] 암호화 알고리즘 (0) | 2020.03.02 |
[Security] 암호화 개요 (0) | 2020.03.02 |
[Security] PMI(Privilege Management Infrastructure) (0) | 2020.02.26 |
[Security] PKI(Public Key Infrastructure) (0) | 2020.02.26 |