1. 암호화(Encryption)
암호화는 평문의 데이터를 암호화키를 사용해서 암호문으로 만들거나 암호문을 복호화키로 복호화해서 평문으로 만드는 일련의 과정을 말한다.
2. 스트림(Stream) 암호화
스트림 암호화는 비트 또는 바이트 단위로 암호화를 수행하며, 고속으로 암호화할 수 있고 경량적이어서 무선 환경이나 고속으로 동작하는 시스템에서 사용된다.
키 스트림이 암호화키가 되므로 암호화키가 유출되면 암호문은 복호화되어 문제 발생하기 때문에 송/수신자의 키 스트림 공유를 위해 동기식 스트림 암호와 비동기식 스트림 암호로 분류된다.
1) 동기식 스트림 암호
- 키 스트림을 생성할 때 랜덤하게 생성하는 One Time Pad
- 랜덤 번호를 생성해서 송신자와 수신자가 랜덤 키를 교환
- 랜덤 키를 암호화/복호화 키로 사용
2) 비동기식 스트림 암호
- 키 스트림을 생성할 때 이전의 평문 및 암호문에 종속적으로 생성
3. 블록 암호화
1) 블록 암호화 알고리즘 구조
- 사전에 공유한 암호키를 사용해서 고정된 길이의 입력 블록을 고정된 길이의 출력 블록으로 변환하는 알고리즘
- Feistel 구조: 암호화 방식을 역으로 수행하면 복호화 가능
- SPN 구조: 암호화 방식을 역으로 수행해도 복호화가 불가능
2) 블록 암호화 기법(Block Cipher)
(1) ECB(Electronic Code Book) Mode
- 가장 단순한 모드로, 평문을 일정한 블록단위로 나누어 순차적으로 암호화하는 구조
- 블록의 단위는 알고리즘에 따라 다름 (DES: 64Bit, AES: 128Bit)
- 각각의 블록은 독립적이므로 특정 블록의 에러가 다른 블록에 영향을 주지 않음
- 평문을 각각의 단위로 나눌 때, 배수에 미치지 못하여 남는 Bit는 패딩(Padding, 빈 데이터)을 추가하여 크기를 맞춤
- 한 개의 블록만 해독되면 나머지 블록 또한 해독되는 단점이 있음
(2) CBC(Cipher Block Chainging) Mode
- ECB 모드와 동일한 방법으로 평문을 일정한 블록단위로 나눔
- 최초 키의 생성 버퍼로 IV(Initialization Vector)가 사용되어 첫 번째 블록과 XOR 연산을 통해 암호화
- IV는 나누어진 일정한 블록 중 하나가 되거나 단위 블록과 길이가 같은 임의의 값이 될 수 있음
- 두 번째 블록부터는 첫 번째 블록의 암호화된 블록과 XOR 연산을 하여 암호화 진행
- 블록 암호화 모드 중 보안이 가장 강력한 암호화 모드로 평가되며 가장 많이 사용됨
- 암호문 한 개의 블록에서 에러 발생 시 현재 복호화되는 평문 블록과 다음 블록에 영향을 줌
(3) CFB(Cipher FeedBack) Mode
- 앞의 두가지 모드와 달리 평문과 암호문의 길이가 같음
- 패딩을 추가하지 않고 블록단위 암호화를 스트림 암호화 방식으로 구성하여 Bit 단위로 암호화 수행
- CBC와 마찬가지로 IV가 사용되고, 암호화는 순차적으로 처리하며 복호화는 병렬 처리가 가능
- 암호문 한 개의 블록에서 에러 발생 시 현재 복호화되는 평문 블록과 다음 블록에 영향을 줌
(4) OFB(Output FeedBack) Mode
- CFB Mode와 동일하게 패딩을 추가하지 않고 블록단위 암호화를 스트림 암호화 방식으로 구성
- 최초 키의 생성 버퍼로 IV 사용
- 암호문 한 개의 블록에서 에러 발생 시 현재 복호화되는 평문 블록에만 영향을 주므로 영상 데이터, 음성 데이터와 같은 Digitized analog(디지털화된 아날로그) 신호에 주로 사용
(5) CTR(CounTeR) Mode
- 평문 블록과 키스트림을 XOR 연산하여 암호문 생성
- 키스트림 암호화 시, 1씩 증가하는 카운터를 암호화하며, 암호화/복호화 방법이 동일하므로 구현이 간단
- OFB와 마찬가지로 암호문 블록의 에러 발생 시, 한 개의 평문블록에만 영향
- IV는 사용하지 않고 Counter 값 사용
4. Diffie-Hellman 키 교환 알고리즘
1) Diffie-Hellman 키 교환 알고리즘
- 공개키는 1개의 정수와 1개의 소수로 통신 직전에 상대방과 공유하며, 비밀키 전용 숫자는 양쪽에서 각각 보유
- 공개키의 수치를 사용해서 공통 암호키용 수치를 산출하는 방식
- IPSEC에서 IKE의 Default 키 교환 알고리즘으로 채택
2) Diffie-Hellman 키 교환 과정
3) 취약점
- Diffie-Hellman 키 교환은 단순히 키 교환에 의한 안전성에 의존하므로 단독으로 사용하기엔 부족
- 많은 프로토콜에서 사용되고 있지만 모두 인증, 무결성, 부인방지 등 추가적인 안정성을 더해서 사용
5. RSA(Rivest, Shamir, Adelman)
1) RSA
- 대표적인 공개키 암호화 방식으로, 소인수분해의 어려움을 기반으로 안정성 제공
- 암호화 및 디지털 서명 용도로 사용이 가능
2) RSA 암호화, 복호화
- 송신자는 수신자의 공개키로 암호화
- 수신자는 본인의 개인키로 복호화
3) RSA 전자서명
- 송신자는 본인의 개인키로 서명
- 수신자는 송신자의 공개키로 복호화
6. 해시 함수
1) 해시(Hash) 알고리즘
- 키가 없고 복호화가 불가능한 특징을 가지는 암호화 방식으로, 일방향 암호 기술
- 다양한 길이의 입력을 고정된 짧은 길이의 출력으로 변환하는 함수
- y=h(x)에서 x는 가변 길이의 메시지, y는 해시 함수를 통해서 생성, h는 해시값(Hash Code)
2) 해시 함수의 조건
조건 | 설명 |
압축 | - 임의 길이의 평문을 고정된 길이의 출력 값으로 변환함 |
일방향 (One Way Function, 선이미지 회피성) |
- 메시지에서 해시값(Hash Code)을 구하는 것은 쉬움 - 해시값에서 원래의 메시지를 구하는 것은 매우 어려움(역방향 계산 불가능) |
효율성 | - 메시지로부터 h(메시지)를 구하는데 많은 자원고 노력이 소요되지 않아야 함 |
충돌 회피 (Collision free, 강한 충돌회피성) |
- 다른 문장을 사용하였는데도 동일한 암호문이 나오는 현상 - h(M1) = h(M2)인 서로 다른 M1과 M2를 구하기는 계산상 불가능해야 함 |
2차 선이미지 회피성(약한 충돌 회피성) | - 어떤 블록 x에 대해서 H(y)=H(x)인 y!=x인 것을 찾는 것이 계산적으로 불가능해야 함 |
# 참고
해당 글은 '이기적 정보보안기사 필기 1권 이론서'을 읽으며 필요한 부분만 정리한 내용입니다.
'자격증 > 정보보안기사(필기)' 카테고리의 다른 글
정보보안기사(필기) - 정보보안 일반(전자서명) (0) | 2021.08.15 |
---|---|
정보보안기사(필기) - 정보보안 일반(접근 통제) (0) | 2021.08.15 |
정보보안기사(필기) - 정보보안 일반(보안 요소 기술) (0) | 2021.08.14 |
정보보안기사(필기) - 애플리케이션 보안(기타) (0) | 2021.08.02 |
정보보안기사(필기) - 애플리케이션 보안(전자상거래 보안) (0) | 2021.08.01 |