* 수동적 공격
- 전송되는 파일 도청 : 메시지를 도중에 가로채어 그 내용을 외부로 노출
- 트래픽 분석 : 메시지의 송신측과 수신측의 신원파악이 가능
* 능동적 공격
- 메시지 변조 : 메시지들의 순서를 바꾸거나 메시지 일부분을 다른 메시지로 대체
- 삽입공격 : 공격자가 정당한 송신자로 위장, 수신자에게 메시지 전송
- 삭제공격 : 서비스 방해 공격, 특정 수신자에게 전송하는 메시지의 일부 또는 전부를 삭제
- 재생공격 : 송/수신자간 통화했던 내용을 도청하여 보관하고 있다가 나중에 재생하여 전송하는 공격
* 암호 메시지에 대한 공격 유형
ㄱ. 암호문 단독 공격(COA : Ciphertext Only Attack)
- 암호문으로부터 평문이나 암호키를 찾아내는 방법
ㄴ. 알려진 평문 공격(KPA : Known Plaintext Attack)
- 이미 입수한 평문과 암호문의 관계를 이용하여 새로운 암호문을 해독하는 방법
ㄷ. 선택 평문 공격(CPA : Chosen Plaintext Attack)
- 평문을 선택하면 대응되는 암호문을 얻을 수 있는 상황에서 공격하는 방법
ㄹ. 선택 암호문 공격(CCA : Chosen Ciphertext Attack)
- 암호문을 선택하면 대응되는 암호문을 얻을 수 있는 상황에서 공격하는 방법
* 암호시스템 분류
ㄱ. 사용하는 키에 따른 분류
- 대칭키 암호시스템 : 암/복호화 키가 동일
- 공개키 암호시스템 : 암/복호화 키가 상이
ㄴ. 평문의 길이에 따른 분류
- 스트림 암호시스템 : 난수열을 생성하여 입력 평문 한 비트 또는 한 문자 단위로 XOR하여 암호화
- 블록 암호시스템 : 입력 평문 비트열을 일정한 크기의 블록으로 나누어 암호화
* 대칭키 암호시스템
ㄱ. 장점
- 키 크기가 상대적으로 작다
- 암호 알고리즘 내부 구조가 간단
- 암/복호화 속도가 빠르다
ㄴ. 단점
- 키 관리의 어려움(n명의 사용자 n(n-1)/2 개의 키 관리)
- 자주 키를 교환시 불편
- 디지털 서명 등의 기법에 적용하기 곤란
- 안전성 분석의 어려움
- 중재자 필요
ㄷ. 대칭키 암호화 알고리즘 종류 : DES, 3DES, Blowfish, IDEA, RC4, RC5, RC6, AES, SEED, ARIA
* 공개키 암호시스템
ㄱ. 장점
- 키 분배가 용이
- 확장 가능성
- 인증과 부인봉쇄 제공 가능(전자서명 및 사용자 인증에 사용)
- 범용적으로 사용 가능
ㄴ. 단점
- 큰 길이의 키 사용, 긴 암호화 처리 시간
- 공개키 배포에 대한 신뢰성 문제
ㄷ. 공개키 암호화 알고리즘 종류 : RSA, Rabin, ECC, Schnorr, Diffie-Hellman, El Gamal, DSA, KCDSA, Knapsack
* 스트림 암호 : 한번에 한 바이트씩 암호화되는 형식
- 가장 처음에는 초기값 필요
- 평문을 키생성 알고리즘 비밀키로 XOR 연산하여 암호화
- 원타임 패드를 실용적으로 구현할 목적으로 개발
- 다음에 출력 비트를 예측할 확률이 1/2이어야 안전
- 긴주기와 높은 선형복잡도가 요구
- 블록단위 암호화에 비해 암호화가 더 빠르다
- 주로 LFSR을 이용
- 블록암호의 CFB, OFB 모드는 스트림과 같은 역할
* 스트림 암호 기술
ㄱ. One Time Pad
- 암호화를 수행할 때마다 랜덤하게 선택된 키 스트림을 사용
- 매 평문마다 한번씩만 사용되는 랜덤 키 스트림(또는 난수열)을 생성한 후 XOR하여 암호화
- 최소한 평문 메시지 길이와 같거나 더 긴 길이의 키 스트림을 생성해야 함
ㄴ. FSR(Feedback Shift Register)
ㄷ. LFSR(Linear Feedback Shift REgister)
- LFSR에 의하여 생성된 키 스트림은 수열이 N비트 이후에 반복되는 의사 난수열
ㄹ. NFSR : LFSR이 선형적 공격에 취약하여 설계
* 스트림 암호의 활용
- RC4 : 네트워크 프로토콜에서 활용, 평문의 1바이트와 키 1바이트가 XOR되어 암호문 생성
- A5/1 : 휴대전화 통신을 위한 네트워크인 GSM에서 사용
- WEP : 무선랜 구간에서 전송되는 MAC 프레임들을 64비트의 키를 이용한 RC4 스트림 암호 방식으로 사용
* 블록 암호 : 비밀키를 이용하여 고정된 크기의 입력 블록을 고정된 크기의 출력블록으로 변형 (p.507)
- 혼돈(Confusion) : 평문의 작은 변화가 암호문에 어떤 변화를 가져올지 예측할 수 없는 성질. 비선형함수
- 확산(Diffusion) : 평문을 구성하는 각각의 비트들의 정보가 여러개의 암호문 비트들에 분산되는 성질. 전치와 치환. 선형함수
* Feistel 구조
- 평문 2w 평문과 키 k를 입력으로 구성
- 평문 LE0(w)와 RE0(w)로 나누어져서 n 라운드를 처리, LEn(w)와 REn(w) 생성, 더하면 암호문
- 16라운드, 라운드 수 증가시 보안 강화 가능
- 3라운드 이상이며 짝수라운드로 구성
- 라운드 함수와 관계없이 역 변환이 가능(암/복호화 과정 동일)
- 두 번의 수행으로 블록간의 완전한 확산
- 알고리즘 속도가 빠르고 하드웨어 및 소프트웨어 구현이 용이
- DES를 이용한 블록 암호시스템에 이용
* SPN 구조
- 라운드 함수가 역변환이 되어야 한다는 제약
- 많은 병렬성 제공으로 암/복호화 알고리즘 고속화
* 블록암호 운영모드
ㄱ. ECB모드(Electronic CodeBack)
- 평문블록단위로 바로 암호화
- 장점 : 암호화블록에서 발생한 오류가 다음 블록으로 전파되지 않는다
- 단점 : 반복공격에 취약, 블록 크기보다 작은 데이터에는 적용할 수 없다
- 병렬 암호화 가능 / 병렬 복호화 가능
ㄴ. CBC모드(Cipher Block Chaining)
- 초기화벡터(IV:Initialization Vector)와 평문블록을 XOR연산하여 암호화블록 생성
- 생성된 암호화블록과 다음 평문블록을 XOR연산하여 암호화블록 생성, 순차적 반복
- 장점 : 평문의 길이가 긴 경우에도 효과적
- 단점 : 암호문블록 한 개가 손상되면 해당 평문블록과 다음 단계 평문블록이 영향을 받는다
- 병렬 암호화 불가능 / 병렬 복호화 가능
ㄷ. CFB모드(Cipher FeedBack)
- 초기화벡터(IV)를 암호화해서 생성한 키스트림값을 평문블록과 XOR연산하여 암호화블록 생성
- 생성된 암호화블록을 사용하여 다음 키스트림값 산출, 암호문블록 생성 반복
- 장점 : 블록의 크기를 일정하기 유지하기 위한 패딩작업 불필요, 블록크기보다 작은 데이터에 적용 가능
- 단점 : 암호문블록의 재전송공격에 취약, 암호문블록 오류시 해당 평문블록과 다음 평문블록에 영향
- 병렬 암호화 불가능 / 병렬 복호화 가능
ㄹ. OFB모드(Output FeedBack)
- 초기화벡터(IV)값을 블록암호화해서 생성한 키스트림값을 평문블록과 XOR연산하여 암호화블록 생성
- 생성된 키스트림값을 다시 블록암호화하여 키스트림값 생성, 다음 평문 블록에 적용하여 암호화블록 생성
- 키스트림값 미리 생성 가능, 암호화 및 XOR연산 속도가 빠름, 암호문블록 오류시 해당 평문블록에만 영향
- 블록암호상 스트림암호 운영 가능
- 암/복호화 과정이 같은 구조이므로 프로그램으로 구현이 용이
- 병렬 암호화 불가능 / 병렬 복호화 불가능
ㅁ. CTR모드(Counter)
- 랜덤하게 생성된 Nonce값과 블록 암호화를 할 때마다 1씩 증가하는 카운터값을 합쳐서 초기값 생성
- 만들어진 초기값을 블록암호화하여 생성한 키스트림값을 평문블록과 XOR연산하여 암호문블록 생성
- 블록암호모드상 구현할 수 있는 암/복호화 구조가 동일한 스트림암호방식
- 블록의 순서에 상관없이 병렬처리 가능
- 암호문블록에서 1bit의 오류가 생겼을 경우 대응하는 평문블록의 1bit에만 영향
- 병렬 암호화 가능 / 병렬 복호화 가능
* 블록 암호시스템 종류
ㄱ. DES(Data Encryption Standard)
- 대칭키 암호, 16라운드 수행, 암/복호화 과정은 같으며 키의 적용만 거꾸로
- 각 평문의 길이 64비트, 키가 64비트(56bit : 키, 8bit : Parity bit. 검사용), 암호문이 64비트
- 처음과 마지막 순열을 제외하고 Feistel 구조를 따른다
ㄴ. 3DES(Triple DES)
- DES에 대한 전수공격으로 인해 나온 암호시스템
- 3개의 키 값을 사용, 48라운드 수행
ㄷ. IDEA(Internation Data Encryption Algorithm)
- 블록암호 알고리즘(평문, 암호문 64비트), 암/복호화 알고리즘 동일, 키 128비트, 8라운드 수행
- 상이한 대수로부터 3가지 연산을 혼합, 16비트 단위 연산 사용
ㄹ. SEED
- 한국인터넷진흥원이 개발
- 변형된 Feistel 구조
- 블록 길이만 128비트, 나머지는 DES와 같음
- 데이터 처리 단위는 8, 16, 32비트 모두 가능
ㅁ. AES(Advance Encryption Standard)
- 각 라운드는 비선형성을 갖는 S-box를 적용하여 바이트 단위로 치환을 수행
- 첫 번째 라운드 수행시 평문과 라운드 키의 XOR 연산 수행
- 라운드 키의 개수는 Nr+1개
- 가변길이의 블록과 가변길이의 키 사용이 가능(128, 192, 256)
'정보보안기사' 카테고리의 다른 글
전자 인증서 (0) | 2020.03.11 |
---|---|
정보 보호 일반(2) (0) | 2020.03.09 |
무선 랜 (0) | 2020.03.09 |
네트워크 보안(2) (0) | 2020.03.02 |
네트워크 보안 (1) (0) | 2020.03.02 |