728x90
해당 포스트는 정보보안기사 필기시험을 대비하기 위해 작성한 필기본이다.
## 암호기법의 분류
- 치환 암호(대치 암호) : 비트, 문자 또는 문자의 블록을 다른 비트, 문자 또는 블록으로 대체
- 전치 암호 : 비트, 문자 또는 블록이 원래 의미를 감추도록 재배열
- 블록 암호 : 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘을 총칭
- 스트림 암호 : 한 번에 1비트의 데이터 흐름을 순차적으로 처리해가는 암호 알고리즘을 총칭
- 링크 암호화 : 모든 정보는 암호화되고, 패킷은 라우터나 다른 중간에 있는 장비가 이 패킷을 다음에 어디로 보내야 하는지 알아야 하기 때문에 각 홉에서 해독됨
- 종단간 암호화 : 종단간 암호화에서는 헤더와 트레일러가 암호화되지 않기 때문에 패킷을 각 홉에서 해독하고 암호화할 필요가 없음
- 하드웨어 암호화 : 하드웨어로 실현하기 위해 컴퓨터와 통신기기의 내부 버스와 외부 인터페이스에 전용 암호처리용 하드웨어를 설치하여 데이터를 암호화
- 소프트웨어 암호화 : 소프트웨어에 의한 실현은 암호처리용 소프트웨어를 사용한 데이터 암호화
*** 블록 암호와 스트림 암호
구분 | 스트림 암호 | 블록 암호 |
장점 | 암호화 속도가 빠름, 에러 전파현상 없음 | 높은 확산, 기밀성, 해시함수 등 다양 |
단점 | 낮은 확산 | 느린 암호화, 에러 전달 |
사례 | LFSR, MUX generator | DES, IDEA, SEED, RC5, AES |
암호화 단위 | 비트 | 블록 |
주요 대상 | 음성, 오디오/비디오 스트리밍 | 일반 데이터 전송, 스토리지 저장 |
*** 링크 암호와 종단간 암호
구분 | 링크 암호화 | 종단간 암호화 |
특징 | - ISP나 통신업자가 암호화 - 헤더를 포함한 모든 데이터를 암호화 - 유저가 알고리즘 통제 불가 |
- 사용자가 암호화 - 헤더(라우팅정보)는 암호화하지 않음 - 알고리즘에 대한 통제는 사용자가 함 |
장점 | - User-transparent하게 암호화되므로 운영이 간단 - 트래픽분석을 어렵게 함 - 온라인으로 암호화 |
- 사용자 인증 등 높은 수준의 보안 서비스를 제공 가능 - 중간 노드에서도 데이터가 암호화문으로 존재 |
단점 | - 중간 노드에서 데이터가 평문으로 노출 - 다양한 보안 서비스를 제공하는데 한계 - 모든 노드가 암호화 장비를 갖추어야하므로 네트워크가 커지면 비용 과다 |
- 트래픽 분석이 취약 - 오프라인으로 암호화 |
## DRM 구성 요소
- 메타데이터(Metadata) : 콘텐츠 생명주기 범위 내에서 관리되어야 할 각종 데이터의 구조 및 정보
- 패키저(Packager) : 보호 대상인 콘텐프를 메타데이터와 함께 Secure Container 포맷으로 패키징 하는 모듈
- 시큐어 컨테이너(Secure ontainer) : DRM의 보호 범위 내에서 유통되는 콘텐츠의 배포 단위
- 식별자(Identifier) : 콘텐츠를 식별하기 위한 식별자
- DRM 제어기(DRM Controller) : 콘텐츠를 이용하는 사용자의 PC 또는 디바이스 플랫폼에서 콘텐츠가 라이선스에 명시된 범위 내에서 지속적으로 보호될 수 있도록 프로세스를 제어
- 클리어링하우스(Clearinghouse) : 디지털 허가를 소비자에게 발급해주고 콘텐츠 제공자에게 로열티 수수료를 지불하고, 배급자에게 해당되는 배급 수수료를 지불하는 재정적 거래를 취급
## 암호분석의 분류
- 암호문 단독 공격 : 단지 암호문 C만을 갖고 이로부터 평문 P이나 키 K를 찾아내는 방법으로 평문 P의 통계적 성질, 문장의 특성 등을 추정하여 해독하는 방법 (암호해독자에게는 가장 불리한 방법)
- 기지 평문 공격 : 암호문 C와 평문 P의 관계로부터 키 K나 평문 P를 추정하여 해독하는 방법 (암호문에 대응하는 일부 평문이 사용가능한 상황에서의 공격)
- 선택 평문 공격 : 암호기에 접근할 수 있어 평문 P를 선택하여 그 평문 P에 해당하는 암호문 C를 얻어 키 K나 평문 P를 추정하여 암호를 해독하는 방법 (평문을 선택하면 대응하는 암호문을 얻을 수 있는 상황에서의 공격)
- 선택 암호문 공격 : 암호 복화기에 접근할 수 있어 암호문 C에 대한 평문 P를 얻어내 암호를 해독하는 방법 (암호문을 선택하면 대응하는 평문을 얻을 수 있는 상황에서의 공격)
## 암호기술 평가
- 암호 알고리즘 평가 : 정보보호제품에 탑재된 암호 알고리즘에 대한 안전성 평가
- 암호모듈 평가 : 알고리즘 자체의 이론적 안정성과는 별도로 암호서비스 기능을 제공하는 암호모듈의 안전성에 대한 평가
- 정보보호제품 평가 : 암호모듈을 탑재한 정보보호 제품에 대한 안정성을 평가
- 응용시스템 평가 : 각 제품을 상호 연동하여 구성되는 시스템에 대한 안전성 평가
## 확산과 혼돈
### 확산
- 암호문과 평문 사이의 관계를 숨기는 것
- 암호문에 대한 통계 테스트를 통하여 평문을 찾고자 하는 공격자를 좌절시킴
### 혼돈
- 암호문과 키의 관계를 숨기는 것
- 암호문을 이용하여 키를 찾고자 하는 공격자를 좌절시킴
- 키의 단일 비트가 변하면 암호문의 거의 모든 비트가 변함
## 페이스텔과 SPN 구조
### Feistel
- 입력을 좌우 블록으로 분할하여 한 블록을 라운드 함수에 적용시킨 후의 출력 값을 다른 블록에 적용하는 과정을 좌우블록에 대해 반복적으로 시행하는 방식
- 강도를 결정짓는 요소는 평문 블록의 길이, 키의 길이, 라운드의 수
- 복호화 과정은 암호화 과정과 동일
- 3라운드 이상이며, 짝수 라운드로 구성
- DES, LOKI, CAST, Blowfish, MISTY, RC5, RC6, CAST256, E2, Twofish, Mars
### SPN
- Substitution Cipher와 Permutation Cipher를 중첩하는 형태로 개발한 암호
- S-box의 출력을 P-box로 전치(permutation)하는 과정을 반복하는 방식
- 병렬성을 제공
- SAFER, SHARK, Square, CRYPTON, Rijndael, SAFER+, Serpent, PRESENT
*** 스트림 암호의 구분
구분 | 특징 | 종류 |
동기식 | 키는 평문 or 암호문 독립적 | One time pad, FSR, LFSR, NLFSR, CFB 모드 |
비동기식 | 키는 평문 or 암호문 종속적 | CFB 모드 |
*** 대중적인 대칭키 암호 알고리즘의 비교
구분 | DES | Triple DES | AES |
평문 블록 크기(bits) | 64 | 64 | 128 |
암호문 블록 크기(bits) | 64 | 64 | 128 |
키 크기(bits) | 56 | 112 또는 168 | 128, 192, 또는 256 |
*** 블록 알고리즘 종류와 특징
구분 | 개발 국가 | 개발 년도 | 특징 | 블록 크기 | 키의 길이 | 라운드수 |
DES | 미국 | 1972 | NIST에서 표준으로 공표(1977년) | 64 | 56 | 16 |
IDEA | 유럽 | 1990 | PGP채택 | 64 | 128 | 8 |
Rijndael | 벨기에 | 1998 | 2000년 AES알고리즘으로 선정 | 128 | 128, 192, 256 | 10, 12, 14 |
SEED | 한국 | 1999 | 한국표준 블록암호 알고리즘 | 128 | 128, 256 | 16, 24 |
CRYPTON | 한국 | 1998 | AES 후보 중 하나 | 128 | 128, 192, 256 | 12 |
RC5 | 미국 | 1994 | 알고리즘이 간단, 속도가 빠름 | 32, 64, 128 | 0-2040 | 1-256 |
FEAL | 일본 | 1987 | S/W 구현에 적합 | 64, 128 | 64 | 4, 8, 32 |
MISTY | 일본 | 1996 | 차분/선형공격에 안전성 증명구조 | 64 | 128 | 8 |
SKIPJACK | 미국 | 1990 | Fortezza카드에 사용 | 64 | 80 | 32 |
*** 블록 암호모드 비교
이름 | 장점 | 단점 | 비고 |
전자 부호표 모드 (ECB 모드) |
- 간단 - 고속 - 병렬 처리 가능 (암호화, 복호화 양쪽) |
- 평문 속의 반복이 암호문에 반영된다. - 암호문 블록의 삭제나 교체에 의한 평문의 조작 가능 - 비트 단위의 에러가 있는 암호문을 복호화하면 대응하는 블록이 에러나 난다. - 재전송 공격이 가능 |
사용해서는 안된다. |
암호 블록 연쇄 모드 (CBC 모드) |
- 평문의 반복은 암호문에 반영되지 않는다. - 병렬 처리 가능(복호화만) - 임의의 암호문 블록을 복호화 가능 |
- 전송 도중 암호문 블록 Ci에서 한 비트 오류가 발생하면 평문 블록 Pi에는 대부분의 비트에서 오류가 발생되고, 평문 블록 Pi+1에서는 Ci의 오류비트와 같은 위치에서 한 비트 오류가 발생한다. - 암호화에서는 병렬 처리 불가능 |
Practical Cryptography 권장 |
암호 피드백 모드 (CFB 모드) |
- 패딩이 필요 없다. - 병렬처리 가능(복호화만) - 임의의 암호문 블록을 복호화 가능 |
- 암호화에서는 병렬 처리 불가능 - 전송 도중 암호문 블록 Ci에서 한 비트 오류가 발생하면 평문 블록 Pi에는 Ci의 오류비트와 같은 위치에서 한 비트 오류가 발생한다. 하지만 Ci의 비트는 시프트 레지스터에 오퓨가 존재하는 한 다음 평문 블록의 대부분의 비트에 오류가 발생한다.(확률젹으로 50%) - 재전송 공격이 가능 |
|
출력 피드백 모드 (OFB 모드) |
- 패딩이 필요 없다. - 암/복호화의 사전 준비 가능 - 암/복호화가 같은 구조 - 비트 단위의 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러가 난다. |
- 병렬 처리 불가능 - 적극적 공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다. |
|
카운터 모드 (CTR 모드) |
- 패딩이 필요 없다. - 암/복호화의 사전 준비 가능 - 암/복호화가 같은 구조 - 비트 단위의 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러가 난다. - 병렬 처리 가능(암/복호화 양쪽) |
- 적극적 공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전된다. | Practical Cryptography 권장 |
## 키 배송 문제 해결 방법
- 키의 사전 공유에 의한 해결 : 키 관리기관이 사전에 임의의 두 사용자에게 비밀 경로를 통하여 임의의 키를 선택하여 전달하는 방법
- 키배포 센터에 의한 해결(온라인 키 분배) : 암호 통신이 필요해질 때마다 통신용 키를 키배포 센터라는 신뢰받는 제3자에게 의뢰해서 개인과 키배포 센터 사이에서만 키를 사전에 공유하는 것
- Diffie-Hellman 키 교환에 의한 해결 : 공개키 암호방식의 개념을 이용하여 두 사용자 간에 공통의 암호화키를 안전하게 공유할 수 있는 방법을 제시(최초의 비밀키 교환 프로토콜)
- 공개키 암호에 의한 해결 : 송신자는 암호화키를 사용하여 메시지를 암호화하고, 수신자는 복호화키를 사용하여 암호문을 복호화함
*** ECC와 RSA 방싱의 비교
항목 | ECC 방식 | RSA 방식 |
기반구조 | WPKI(무선) | PKI(유선) |
속도 | 우수 | 느림 |
키 크기 | 상대적으로 적은 키 | ECC에 비해 큰 키 |
적용 | 소형 Mobile 환경 | 인프라가 다소 구현된 환경 |
*** 대칭키 방식과 비대칭키 방식
항목 | 대칭키 | 공개키 |
키의 상호관계 | 암호화키 = 복호화키 | 암호화키 ≠ 복호화키 |
안전한 키길이 | 128비트 이상 | 2048비트 이상 |
암호화키 | 비밀 | 공개 |
복호화키 | 비밀 | 비밀 |
비밀키 전송 | 필요 | 불필요 |
키 개수 | N(N-1)/2 | 2N |
암호화 속도 | 고속 | 저속 |
경제성 | 높다 | 낮다 |
제공 서비스 | 기밀성 | 기밀성, 부인방지, 인증 |
목적 | 데이터(화일) 암호화 | 대칭키 교환 |
전자서명 | 복잡 | 간단 |
단점 | 키교환 원리가 없다 | 중간자 공격에 취약 |
해당 알고리즘 | DES, 3DES, AES, IDEA | RSA, ECC, DSA |
## 일방향 해시함수
- 정의 : 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 출력하는 함수
- 특징 : (1) 임의 길이의 메시지로부터 고정 길이의 해시값을 계산 (2) 해시값을 고속으로 계산할 수 있어야 함 (3) 일방향성을 가짐 (4) 메시지가 다르면 해시값도 가름
## 해시함수가 가져야 할 기본 성질
- 프리이미지 저항성(역상 저항성) : 주어진 임의의 출력값 y에 대해 y=h(x)를 만족하는 입력값 x를 찾는 것이 계산적으로 불가능하다.
- 제2프리이미지 저항성(두 번째 역상 저항성, 약한 충돌 내성) : 주어진 입력값 x에 대해 h(x)=(x`), x≠x`을 만족하는 다른 입력값 x`을 찾는 것이 계산적으로 불가능하다.
- 충돌 저항성(강한 충돌 내성) : h(x)=h(x`)을 만족하는 임의의 두 입력값 x, x`을 찾는 것이 계산적으로 불가능하다.
*** SHA 해시 알고리즘 비교
구분 | SHA-1 | SHA-2 | |||
SHA-224 | SHA-256 | SHA-384 | SHA-512 | ||
MD 길이 | 160 | 224 | 256 | 384 | 512 |
최대 메시지 길이 | 2^64 - 1 | 2^64 - 1 | 2^64 - 1 | 2^128 - 1 | 2^128 - 1 |
블록 길이 | 512 | 512 | 512 | 1024 | 1024 |
워드 길이 | 32 | 32 | 32 | 64 | 64 |
단계 수 | 80 | 64 | 64 | 80 | 80 |
*** 주요 해시 알고리즘 비교
항목 | MD5 | SHA-1 | RIPEMD-160 |
다이제스트 길이 | 128비트 | 160비트 | 160비트 |
처리 단위 | 512비트 | 512비트 | 512비트 |
단계 수 | 64(16번의 4라운드) | 80(20번의 4라운드) | 160(16번의 5병행 라운드) |
최대 메시지 크기 | 무한(∞) | 2^64 - 1 비트 | 2^64 - 1 비트 |
앤디언 | Little-endian | Big-endian | Little-endian |
## 해시함수와 MAC 비교
### Hash (무결성 보장)
- 발신자는 메시지가 해시 함수를 거쳐 MD 값을 생성한다.
- 발신자는 메시지와 MD 값을 수신자에게 보낸다.
- 수신자는 메시지만 동일한 해시 알고리즘을 거치게 하여 독립적인 MD 값을 생성한다.
- 수신자는 두 MD 값을 비교한다. 두 값이 동일하다면 메시지를 수정되지 않은 것이다.
### HMAC (무결성, 인증 보장)
- 발신자는 메시지와 비밀키를 연접시켜 해시 함수를 거치게 한다. 이렇게 하여 MAC 값을 생성한다.
- 발신자는 MAC 값을 메시지에 첨부하여 수신자에게 보낸다.
- 수신자는 메시지만 취해 자신의 대칭키와 연접시키고, 해시함수를 이용하여 독립적인 MAC 값을 생성한다.
- 수신자는 두 MAC 값을 비교한다. 두 값이 동일하면 수신자는 메시지가 수정되지 않았다는 것과 어떤 시스템으로부터 왔는지를 알게 된다.
### CBC-MAC (무결성, 인증 보장)
- 발신자는 메시지를 CBC 모드에서 대칭 블록 알고리즘으로 암호화한다.
- 마지막 블록이 MAC으로 사용된다.
- 평문 메시지와 MAC이 수신자에게 보내진다.
- 수신자는 메시지를 암호화하고, 새로운 MAC 값을 생성한다. 두 값을 비교하여 같으면 수신자는 메시지가 수정되지 않았다는 것과 어떤 시스템으로부터 왔는지를 알게 된다.
### CMAC (무결성, 인증 보장)
- CMAC는 CBC-MAC와 동일한 방법으로 동작한다. 그러나 이것은 더 복잡한 논리 함수와 수학 함수에 기반을 두고 있다.
## 전자서명의 주요 기능
- 위조 불가(Unforgeable) : 합법적인 서명자만이 전자서명을 생성 가능해야 한다.
- 서명자 인증(User authentication) : 전자서명의 서명자를 불특정 다수가 검증할 수 있어야 한다.
- 부인 방지(Non-repudiation) : 서명자는 서명행위 이후에 서명한 사실을 부인할 수 없어야 한다.
- 변경 불가(Unalterable) : 서명한 문서의 내용릉 변경할 수 없어야 한다.
- 재사용 불가(Not reusable) : 전자문서의 서명을 다른 전자문서의 서명으로 사용할 수 없어야 한다.
### 특수 전자서명
- 부인방지 전자서명 : 서명을 검증할 때 반드시 서명자의 도움이 있어야 검증이 가능한 전자 서명 방식
- 의뢰 부인방지 서명 : 임의의 검증자가 부인 과정을 수행하지 못하고 특정한 자, 예를 들어 분쟁이 일어났을 때 해결해주는 사람 혹은 재판관만이 부인 과정을 수행
- 수신자 지정 서명 : 서명의 검증 시 특정 검증자만이 서명을 확인할 수 있도록 하되, 만일 그 서명이 문제가 되는 경우라도 검증자의 비밀서명 생성정보를 노출시키지 않고 제3자에게 서명의출처를 증명함으로써 분쟁해결 기능을 제공하는 서명 방식
- 은닉 성명(블라인드 서명) : 서명자가 서명문 내용을 알지 못하는 상태에서 서명토록 한 방식
- 위임 서명 : 위임 서명자로 하여금 서명자를 대신해서 대리로 서명할 수 있도록 구성한 서명 방식
- 다중 서명 : 동일한 전자문서에 여러 사람이 서명하는 것
## 공개키 기반 구성요소
### 인증기관
- 인증기관은 인증서를 발급해 주는 역할을 하며, 인증서는 최종 객체를 인증하는 전자 증명서 역할을 수행하여 사용자가 합볍적인 사용자임을 입증한다.
- 정책승인기관 : PKI 전반에 사용되는 정책과 절차를 생성하고 PKI 구축의 루트 CA 역할을 수행한다.
- 정책인증기관 : PAA 아래 계층으로 자신의 도메인 내의 사용자와 인증기관이 따라야 할 정책을 수립하고 인증기관의 공개키를 인증하고 인증서, 인증서 폐지 목록 등을 관리한다.
- 인증기관 : 공개키 인증서를 발급하고 또 필요에 따라 취소한다. 공개키를 사용자에게 전달, 인증서/인증서 취소목록 등을 보관한다.
### 등록기관
- 인증기관과 멀리 떨어져 있는 사용자들을 위해 인증기관과 사용자 사이에 등록기관을 두어 인증기관 대신 사용자들의 인증서 신청 시 그들의 신분과 소속을 확인하는 기능을 수행한다. 사용자들의 신분을 확인한 후, 등록기관은 인증서 요청에 서명하여 인증기관에 제출한다. 인증기관은 등록기관의 서명을 확인하여 사용자의 인증서를 발행한 후 등록기관에게 되록리거나 사용자에게 직접 전달한다.
- 인증 요청을 승인하고 정당성을 확인한다.
- 인증기관에게 인증 요청서를 전송한다.
- 디렉터리에서 인증서와 인증서 취소목록을 검색한다.
- 인증서 취소를 요청한다.
### 저장소
- 인증서와 사용자 관련 정보, 상호 인증서 쌍 및 인증서 취소 목록 등을 저장 및 검색하는 장소로 응용에 따라 이를 위한 서버를 설치하거나 인증기관에서 관리한다. 디렉터리를 관리하는 서버는 LDAP를 이용하여 디렉터리 서비스를 제공한다.
### 사용자
- PKI 내의 사용자는 사람뿐만 아니라 사람이 이용하는 시스템 모두를 의미한다.
- 자신의 비밀키와 공개키 쌍을 생성한다.
- 인증기관에 공개키 인증서를 요청하고 인증서를 받는다.
- 전자서명을 생성 및 검증한다.
- 특정 사용자의 인증서를 획득하고 그 상태를 확인한다.
- 인증 경로를 해석하고, 디렉터리를 이용하여 인증서를 타 사용자에게 제공한다.
- 인증서 취소목록을 이용하여 인증서 상태를 검증한다.
*** PKI 형태별 장단점
구분 | 계층적 구조 | 네트워크형 구조 |
장점 | - 정부와 같은 관료조직에 적합 - 인증경로 탐색이 용이함 - 모든 사용자가 최상위 CA의 공개키를 알고 있으므로 인증서 검증 용이 |
- 유연하며 실질적인 업무관계에 적합 - CA 상호인증이 직접 이루어지므로 인증경로 단순 - CA의 비밀키 노출 시 국소적 피해 |
단점 | - 최상위 CA에 집중되는 오버헤드 발생가능 - 협동업무 관계에는 부적합 - 최상위 CA의 비밀키 노출 시 피해 규모 막대함 |
- 인증경로 탐색이 복잡함 - 인증정책 수립 및 적용 어려움 |