<개요>
1. 암호기법 분류
1) 치환암호와 전치암호
- 치환 암호(Substitution Cipher)
비트, 문자, 문자의 블록을 다른 비트, 문자, 블록으로 대체한다.
치환은 평문에서 사용하는 문자의 집합과 암호문에서 사용하는 문자의 집합이 다를 수 있다.
치환암호란 평문의 문자를 다른 문자로 교환하는 규칙이다. 이때 교환규칙은 일대일 대응이 아니어도 상관없다.
- 전치 암호(Transposition Cipher)
원문을 다른 문서로 대체하지 않지만, 원문을 여기저기 움직이게 한다. 비트, 문자, 블록을 재배열한다.
전치는 평문에서 사용하는 문자의 집합이 암호문에서 사용하는 문자의 집합과 동일하다.
전치암호란 문자 집합 내부에서 자리를 바꾸는 규칙이고, 이는 일대일 대응이다.
2) 블록 암호와 스트림 암호
- 블록 암호(Block Cipher)
어느 특정 비트 수의 집합을 한번에 처리하는 암호 알고리즘을 총칭한다. 이 집합을 블록이라 하며, 블록의 비트 수를 블록 길이라고 한다. 평문을 일정한 크기의 블록으로 잘라낸 후 암호화 알고리즘을 적용하여 암호화한다.
장점 : 높은 확산, 기밀성, 해시함수 등 다양
단점 : 느린 암호화, 에러전달
- 스트림 암호(Stream Cipher)
한번에 1비트 혹은 1바이트의 데이터 흐름을 순차적으로 처리해가는 암호 알고리즘을 총칭한다.
암호화 방식은 평문과 키 스트림을 XOR하여 생성한다. XOR : 배타적 논리합 연산자
긴 주기와 높은 선형복잡도가 요구된다. 주로 실시간성을 중요시 여기는 곳에서 사용(OTP, LFSR, MUX generator)
장점 : 빠른 암호화 속도, 에러전파현상 없음
단점 : 낮은 확산
3) 위치에 따른 암호화
- 링크 암호화(Link Encryption)
모든 정보는 암호화되고, 패킷은 라우터나 다른 중간에 있는 장비가 이 패킷을 다음에 어디로 보내야 하는지 알아야 하기 때문에 각 홉(hop)에서 해독된다. hop은 패킷이 목적지 도달할 수 있도록 돕는 장비이다.
데이터 링크 또는 물리적 계층에서 일어난다.
특징 : ISP나 통신업자가 암호화, 헤더를 포함한 모든 데이터 암호화, 유저가 알고리즘 통제 불가
장점 : 운영이 간단, 트래픽 분석을 어렵게 한다. 온라인으로 암호화한다.
단점 : 중간노드에서 데이터가 평문으로 노출, 다양한 보안 서비스 제공에 한계, 네트워크 커지면 비용 과다
- 종단간 암호화(End-to-End Encryption)
헤더와 트레일러가 암호화되지 않기 때문에 패킷을 각 홉에서 해독하고 암호화할 필요없다.
애플리케이션 계층에서 암호화 이루어 진다.
특징 : 사용자가 암호화, 헤더(라우팅 정보)는 암호화하지 않음, 유저가 알고리즘 통제 가능
장점 : 높은 수준의 보안 서비스 제공가능, 중간노드에서 데이터가 암호문으로 존재
단점 : 트래픽 분석에 취약, 오프라인으로 암호화
4) 하드웨어와 소프트웨어 암호시스템
- 하드웨어 암호시스템
컴퓨터와 통신기기의 내부버스와 외부 인터페이스에 전용 암호처리용 하드웨어를 설치하여 데이터를 암호화
컴퓨터 CPU에 부담을 주지 않고 빠른 속도로 암호화 가능
- 소프트웨어 암호시스템
암호처리용 소프트웨어를 사용한 데이터 암호화, 저렴한 비용으로 실현 가능
2. 암호 분석
제3자가 암호문으로부터 평문을 찾으려는 시도를 암호 해독이라고 한다.
케르히호프 원리 : 암호해독자는 현재 사용되고 있는 암호방식을 알고 있다는 전제하에 암호해독 시도하는 것으로 간주
1) 암호문 단독 공격(COA, Cipher Only Attack)
단지 암호문 C만을 갖고 이로부터 평문 P나 키 K를 찾아내는 방법
평문 P의 통계적 성질, 문장의 특성 등을 추정하여 해독하는 방법
2) 기지 평문 공격(KPA, Know Plaintext Attak)
암호문 C와 평문 P의 관계로부터 평문 P나 키 K를 추정하여 해독하는 방법
암호문에 대응하는 일부 평문이 사용가능한 상황에서의 공격
3) 선택 평문 공격(CPA, Chosen Plaintext Attack)
평문 P를 선택하여 그 평문에 해당하는 암호문 C를 얻어 평문 P나 키 K를 추정하여 해독하는 방법
평문을 선택하면 대응하는 암호문을 얻을 수 있는 상황에서의 공격
ex) 평문 P와 키 K에 대하여 암호문 C = P xor K를 얻는 암호시스템이 주어져 있다는 것 -> 평문 선택하면 대응하는 암호문을 얻을 수 있는 상황을 말한다.
4) 선택 암호문 공격(CCA, Chosen Ciphertext Attack)
암호문 C에 대한 평문 P를 얻어내 암호를 해독하는 방법
암호문을 선택하면 대응하는 평문을 얻을 수 있는 상황에서의 공격
3. 암호 알고리즘 안전성 평가
1) 안전성 개념
암호시스템을 공격하기 위해 필요한 계산량이 매우 커 현실적으로 공격할 수 없는 경우, 계산적으로 안전하다.
무한한 계산능력이 있어도 공격할 수 없는 경우, 무조건적으로 안전하다.
2) 암호기술 평가
- 암호 알고리즘 평가
정보보호제품에 탑재된 암호 알고리즘에 대한 안전성 평가, 알고리즘 자체의 이론적 안전성만을 평가
- 암호모듈 평가
암호서비스를 제공하는 암호모듈의 안전성에 대한 평가
CMVP : 미국 NIST와 캐나다 주정부가 공동으로 개발, 암호기술 구현 적합성, 암호키 운용 및 관리, 물리적 보안 평가
- 정보보호제품 평가
암호모듈을 탑재한 정보보호제품에 대한 안전성 평가. CC
- 응용시스템 평가
각 제품을 상호 연동하여 구성되는 시스템에 대한 안전성 평가
4. 지적재산권 보호
1) 스테가노그래피(Steganography)
전달하려는 기밀 정보를 이미지 파일이나 MP3 파일 등에 암호화해 숨기는 심층암호 기술이다.
즉, 다른 무언가로 감추어 메시지 자체를 은폐하는 것을 의미한다.
2) 디지털 워터마킹(Digital Watermarking)
원본의 내용을 왜곡하지 않는 범위 내에서 혹은 사용자가 인식하지 못하도록 저작권 정보를 디지털 콘텐츠에 삽입하는 기술을 의미한다.
강한(강성) 워터마킹 : 공격을 받아도 쉽게 파괴되거나 손상입지 않음. 디지털 콘텐츠 불법유통시 저작권자의 정보 추출하여 해당 콘텐츠의 저작권 보호하는 기술
약한(연성) 워터마킹 : 고의로 내성이 약한 워터마크 삽입하여 원본 훼손 여부 알아내는 방법
3) 핑거프린팅(Fingerprinting)
디지털 콘텐츠를 구매할 때 구매자의 정보를 삽입하여 불법 배포 발견시 최초 배포자를 추적할 수 있게 하는 기술
판매되는 콘텐츠마다 구매자의 정보가 들어가게 된다. 구매자에 따라 콘텐츠가 조금씩 다르다. 따라서 다수의 구매자들이 공모하여 콘텐츠 비교하여 핑거프린팅 위치 파악되면 핑거프린팅 지우거나 변조할 수 있다. 이러한 공모공격에 취약
항목 | 스테가노그래피 | 워터마크 | 핑거프린트 |
트래킹 | 불가 | 가능 | 가능 |
불법예방 효과 | 하 | 중 | 상 |
저작권증명 효과 | 하 | 중 | 상 |
4) 디지털 저작권 관리(DRM, Digita Rights Management)
디지털 콘텐츠 소유자가 자신의 콘텐츠에 대한 접근을 자신 또는 위임자가 지정하는 다양한 방식으로 제어할 수 있게 하는 기술적인 방법을 의미한다.
- 기능
콘텐츠의 기밀성 제공, 저장된 콘텐츠의 보호 및 재배포 지원, 사용자 권한정보 생성 및 전달
- 구성요소
메타데이터(Metadata) : 콘텐츠 생명주기 범위 내에서 관리되어야 할 각종 데이터의 구조 및 정보
패키저(Packager) : 보호대상인 콘텐츠를 메타데이터와 함께 시큐어 컨테이너 포캣으로 패키징하는 모듈
시큐어 컨테이너(Secure Container) : DRM 보호범위 내에서 유통되는 콘텐츠의 배포단위
식별자(Idntifier) : 콘텐츠를 식별하기 위한 식별자
DRM 제어기(Controller) : 콘텐츠를 이용하는 사용자의 PC 또는 디바이스 플랫폼에서 콘텐츠가 라이센스에 명시된 범위 내에서 지속적으로 보호될 수 있도록 프로세스를 제어
- 모델
콘텐츠 제공자, 콘텐츠 배포자, 콘텐츠 소비자
클리어링 하우스 : 디지털 허가를 소비자에게 발급해주고 콘텐츠 제공자에게 로열티 수수료를 지불하며 배급자에게 배급 수수료를 지불하는 재정적 거래를 취급한다. 따라서 사용자에 대해 정책에 따라 사용권한을 결정하고, 부여된 사용권한에 따라 라이센스 발급 및 내역관리하는 시스템
- DRM 기술
MPEG-21, INDECS
PKI 기반 불법복제방지 기술 : 콘텐츠를 소비자의 암호화 키를 이용해 패키징함으로써 제3자가 이용할 수 없도록 하는 방식, 소비자에게 종속적인 암호화를 수행함에 따라 콘텐츠 배포 서버의 프로세스 부담이 가중, 디지털 콘텐츠 유통에 부적합
DOI 기반 저작권 보호기술 : 저작권 관리정보를 바탕으로 저작권 인증을 부여하는 기술, 불법복제 및 불법사용 방지기능이 제공되지 않아서 적극적인 저작권 보호는 하지 못한다.
DRM 템퍼방지 기술 : 복제방지 등 위조에 대한 저항성
<대칭키 암호(비밀키 암호)>
1. 현대 대칭키 암호
(1) 현대 블록 암호
1) 확산과 혼돈
- 확산(Diffusion)
암호문과 평문 사이의 관계를 숨기는 것. 평문의 통계적 성질을 암호문 전반에 퍼뜨려 숨긴다.
- 혼돈(Confusion)
암호문과 키의 관계를 숨기는 것. 키의 단일 비트가 암호문의 거의 모든 비트가 변한다.
2) P박스(전치요소)
구분 | 입력(n), 출력(m) | 역함수 | 비트 수 |
단순(straight) | n = m | O | |
축소(compression) | n > m | X | 줄이고자 |
확장(expansion) | n < m | X | 증가시키고자 |
3) S박스(치환요소)
n, m 달라도 된다. 역함수 존재할수도 있고 안할수도 있다.
단일 치환암호 해독방법은 빈도 분석법이 있다.
4) 합성 암호(Product Cipher)
- 라운드(Round) : 반복적으로 사용되는 합성암호
- 페이스텔(Feistal) 암호
입력을 좌우블록으로 분할하여 한 블록을 라운드 함수에 적용시킨 후의 출력값을 다른 블록에 적용하는 과정을 좌우블록에 대해 반복적으로 시행하는 방식
강도를 결정짓는 요소는 평문 블록의 길이, 키의 길이, 라운드의 수
암호화 과정과 복호화 과정은 동일(순서 역순), 3라운드 이상이며, 짝수 라운드로 구성
종류 : DES, MISTY, RC5, SEED, Blowfish
- SPN 구조
S박스의 출력을 P박스로 전치하는 과정을 반복하는 방식. 병렬성을 제공
종류 : AES(Rjindael), CRYPTON, ARIA
5) 블록암호에 대한 공격
- 차분 분석(Differential Cryptanalysis)
두 개의 평문 블록들의 비트차이에 대하여 대응하는 암호문 블록들의 비트차이를 이용하여 키 찾기 - CPA
- 선형 분석(Linear Cryptanalysis)
알고리즘 내부 비선형 구조를 적당히 선형화시켜 키 찾기 - KPA
ex) P(7,8,15,24,29)xorC(7,8,15,24,29)=K1(22)xorK3(22)를 만족하는 알려진 평문-암호쌍을 이용하여 해독
- 전수 공격법(Exhaustive key search)
암호화할 때 일어날 수 있는 가능한 모든 경우를 조사하는 방법
- 수학적 분석(Mathematical Analysis)
통계적인 방법을 포함하며 수학적 이론을 이용하여 해독하는 방법
(2) 현대 스트림 암호
1) 동기식 스트림 암호
암호문을 복호화하여 평문을 찾을때, 키 스트림과 암호문 사이에 동기가 필요한 시스템.
키는 평문 혹은 암호문과 독립적 -> 전송 도중 변조되어도 후속 암호문에 오류 영향 파급X
의도적인 변조가 복호화단계에서 검출되지 않음
종류 : OTP(One-Time-Pad), FSR(Feedback Shift Register), LFSR(Linear Feedback Shift Register), NLFSR
- OTP 특징 : 최소한 평문 메시지 길이와 같은 키 스트림 생성해야 한다. 암호화 키와 복호화 키가 동일, 키 배송이 먼저 이루어져야 한다.
2) 비동기식 스트림 암호(자기동기식 스트림 암호)
키는 평문 또는 암호문에 종속적, 전송 중 암호문의 비트가 손실 또는 변경되더라도 오류 전파가 유한
암호문의 전송 도중 변경되어도 동기화 가능
종류 : CFB 모드
2. DES(Data Encryption Standard)
(1) 개요
평문 길이 : 64비트(=암호문 길이), 키 길이 : 56비트(8비트의 parity), 라운드 횟수 : 16회, 라운드 키 길이 : 48비트
(2) DES 구조
두 개의 P박스와 16개의 Feistel 라운드 함수로 구성
DES 함수는 확장 P박스, 키 XOR, 8개의 S박스(안전성 담당), 단순 P박스로 구성
(3) 다중 DES
- 2개의 키를 갖는 3중 DES
암호화 과정의 중간 단계에서는 복호화 알고리즘을 사용, 복호화 과정에서는 암호화 알고리즘을 사용
키 크기 : 112비트
- 3개의 키를 갖는 3중 DES
키 크기 : 168비트
3. AES(Rjindael)
(1) 개요
평문 길이 : 128비트(=암호문 길이), 키 길이 : 128/192/256비트, 라운드 횟수 : 10/12/14, 라운드 키 길이 : 128비트
(2) 구조
SPN 구조를 사용, 하드웨어나 소프트웨어 구현시 속도나 코드 압축성 면에서 효율적, 스마트카드와 같은 응용에 적합
4. 기타 대칭키 암호 알고리즘(블록 알고리즘)
구분 | 개발국가(년도) | 특징 | 블록 길이 | 키 길이 | 라운드 수 |
IDEA | 유럽(1990) | PGP 채택 | 64 | 128 | 8 |
RC5 | 미국(1994) | 알고리즘 간단, 속도 빠름 | 32/64/128 | 0-2040 | 1-255 |
SKIPJACK | 미국(1990) | Fotezza카드에 사용 | 64 | 80 | 32 |
FEAL | 일본(1987) | S/W구현에 적합 | 64/128 | 64 | 4/8/32 |
MISTY | 일본(1996) | 차분/선형공격에 안전성증명 | 64 | 128 | 8 |
SEED | 한국(1999) | 한국표준 블록암호 알고리즘 | 128 | 128/256 | 16/24 |
CRYPTON | 한국(1998) | AES 후보 중 하나 | 128 | 128/192/256 | 12 |
ARIA | 한국 | 학계, 연구소, 정부기관 공동개발 | 128 | 128/192/256 | |
HIGHT | 한국 | 저전력, 경령화 | 64 | ||
LEA | 한국 | 저전력, 경령화, 대용량 처리 | 128 |
5. 현대 대칭키 암호를 이용한 암호화 기법(운영모드)
암호 알고리즘의 운영모드는 블록암호의 블록길이보다 긴 길이의 메시지를 암호화하기 위한 방법
블록암호모드 : ECB, CBC
스트림 암호방식의 블록암호모드 : CFB, OFB, CTR
(1) ECB(Electronic CodeBook) 모드
가장 간단한 모드, 평문은 N개의 n비트 블록으로 분할, 만약 평문 크기가 블록 크기의 배수가 아니라면 평문 마지막 블록에는 padding이 필요하다.
장점 : 간단, 고속, 병렬처리 가능
단점 : 평문 속의 반복이 암호문에 반영, 암호문 블록의 삭제나 교체에 의한 평문 조작 가능, 비트 단위의 에러가 있는 암호문을 복호화하면 대응하는 블록이 에러, 재전송 공격이 가능
(2) CBC(Cipher Block Chaining) 모드
각각의 평문 블록은 암호화되기 전에 이전 암호문 블록과 XOR된다. 초기 벡터(IV)값을 사용한다.
장점 : 평문의 반복은 암호문에 반영X, 병렬처리 가능(복호화만), 임의의 암호문 블록을 복호화 가능
단점 : 암호화에서 병렬처리 불가능, 전송 도중 암호문 블록의 한 비트 오류 발생하면 평문 해당 블록의 대부분 비트 오류 발생
(3) CFB(Cipher FeedBack) 모드
어떤 블록 암호도 스트림 암호로 바꿀 수 있다.
CBC는 초기벡터와 평문블록을 xor한 다음 암호화하지만, CFB는 초기벡터를 암호화한 뒤에 평문블록과 xor한다.
장점 : 패딩이 필요없다. 병렬처리 가능(복호화만), 임의의 암호문 블록을 복호화 가능
단점 : 암호화에서 병렬처리 불가능, 재전송 공격 가능, 전송 도중 암호문 블록의 한 비트 오류 발생하면 평문 해당 블록의 같은 위치에서 한 비트 오류 발생
(4) OFB(Output FeedBack) 모드
CBC모드와 CFB모드를 개선한 모드, 잡음이 있는 채널상의 스트림형 전송에 사용(ex 위성통신)
장점 : 패딩이 필요없다. 암복호화 사전준비 가능, 암복호화 같은 구조, 비트 단위의 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러발생
단점 : 병렬처리 불가능
(5) CTR(CounTeR) 모드
ATM 네트워크 보안, IPsec 등에 활용
장점 : 패딩이 필요없다. 암복호화 사전준비 가능, 암복호화 같은 구조, 비트 단위의 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러발생, 병렬처리 가능
구분 | 암호화 | 복호화 |
ECB | Ci = Ek(Pi) | Pi = Dk(Ci) |
CBC | C1 = Ek(P1 xor IV) Ci = Ek(Pi xor Ci-1) |
P1 = Dk(C1) xor IV Pi = Dk(Ci) xor Ci-1 |
CFB | Ci = Ek(Ci-1) xor Pi | Pi = Ek(Ci-1) xor Ci |
OFB | Ci = Pi xor Oi | Pi = Ci xor Oi |
CTR | Ci = Pi xor Ek(Ti) | Pi = Ci xor Ek(Ti) |
<비대칭키 암호(공개키 암호)>
1. 키 배송 문제
(1) 개요
A가 B에게 메시지를 전달하려고 할 때, 비밀키 암호방식은 A가 비밀키를 사용하여 암호화하고, B는 암호문을 키를 이용하여 복호화하여 전달받는다. 따라서 A가 B에게 키를 전달해야하는 문제가 있다.
(2) 키 사전 공유에 의한 해결
키 관리기관(TA)이 사전에 임의의 두 사용자에게 비밀 경로를 통하여 임의의 키 K를 선택하여 전달하는 방법
매우 복잡, 과다한 관리비용
(3) 키배포 센터에 의한 해결(온라인 키 분배)
키배포 센터(KDC)라는 신뢰받는 제3자에 의뢰해서 개인과 키배포 센터 사이에서만 키를 사전에 공유하는 방법
(4) Diffie-Hellman 키 교환에 의한 해결
공개키 암호방식의 개념을 이용하여 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 수 있는 방법을 제시
공유할 암호키를 계산하여 만들어낸다. 유한체상의 이산대수문제 어려움에 기반한다.
중간자 공격이나 재전송 공격에는 취약하다.
사용자 A, B가 합의하여 소수 p, 원시원소 g를 선택한 경우
K = (g^x mod p)^y mod p = (g^y mod p)^x mod p = g^xy mod p
(5) 공개키 암호에 의한 해결
A가 B에게 메시지를 전달하려고 할 때, A는 B의 공개키를 이용하여 암호화하고, B는 암호문을 자신의 개인키를 이용하여 복호화한다.
2. 공개키 암호
(1) 개요
비밀키 암호는 평문을 복잡한 형태로 변환해서 기밀성을 유지한다. 공개키 암호는 수학적으로 해결하기 곤란한 문제를 토대로 해서 기밀성을 유지한다. 공개키와 개인키는 서로 역수관계이다.
소인수분해 문제 기반 : RSA, Rabin
이산대수 문제 기반 : ElGamal, DSA, ECC
- 중간자 공격(man-in-the-middle attack)
공격자가 송신자와 수신자 사이에 들어가서 송신자에 대해서는 수신자처럼, 수신자에 대해서는 송신자처럼 행세하는 공격이다. 공개키 암호에서는 중간자 공격에 취약하다.
(2) RSA 암호시스템
1) 키 생성
p, q를 선택, p와 q는 모두 소수(p!=q)
N = p*q를 계산
k = (p-1)(q-1)을 계산
정수 e를 계산, gcd(k, e) = 1 -> k와 e는 서로소, 1<e<k
d를 계산, de mod k = 1 -> de를 k로 나누었을때 나머지가 1 (모듈러는 나머지를 의미)
공개키 {e, N}
개인키 {d, N}
암호화 C = P^e mod N
복호화 P = C^d mod N
전자서명 방식 : 서명자가 자신의 개인키 {d, N}으로 서명하고, 검증자가 서명자의 공개키 {e, N}을 이용하여 검증한다.
2) RSA에 대한 공격
- 수학적 공격(소인수분해 공격)
두 개의 소수 곱을 인수분해하고자 하는 노력, 개인키 d의 비트 수가 크면 클수록 안전
- 타이밍 공격
복호화 알고리즘의 실행 시간에 따라 달라진다. 소요시간이 드러나지 않게 막아 공격을 막을 수 있다.
- CCA 공격
최적 비대칭 암호화 패딩(OAEP, Optimal Asymmetric Encryption Padding)이라고 하는 프로시저를 사용하여 평문을 수정하여 공격을 대비할 수 있다.
3) 권장사항
N의 비트수는 적어도 1024비트가 되어야 한다. 즉 309자리 이상의 십진수가 되어야 한다.
p, q는 적어도 512비트가 되어야 한다. p, q가 거의 같은 크기의 소수이어야 한다.
p-1과 q-1은 커다란 소인수를 각각 가져야 한다. 최대공약수는 작은 수이어야 한다.
메시지는 OAEP를 사용하여 패딩되어야 한다.
(3) Rabin 암호시스템
RSA 암호시스템의 변형이다. RSA가 지수합동에 근거하고 있고, Rabin은 2차합동에 근거하고 있다.
연산은 오직 한번의 곱셈으로 이루어져 연산이 매우 빨리 수행된다.
따라서 성능 낮은 플랫폼에서 잘 활용될 수 있다.
(4) ElGamal 방식
Diffie-Hellman 알고리즘의 확장이다. 단점은 다른 알고리즘과 비교했을때 가장 느리다는 점이다.
평문이 암호문으로 될 때 순서쌍으로 표현되므로 암호문의 길이가 평문의 약 2배가 된다.
(5) 타원곡선암호(ECC)
유한체 위에서 정의된 타원곡선 군에서의 이산대수 문제에 기초한다. 전자상거래의 핵심기술이다.
160비트 ECC는 1024비트의 RSA키와 동일한 보안수준, 즉 적은 비트수로 높은 보안성능을 제공한다.
H/W, S/W 구현이 용이, 스마트카드나 무선통신 단말기 등과 같이 메모리와 처리능력이 제한된 응용분야에 효율적
항목 | RSA | ECC |
기반구조 | PKI(유선) | WPKI(무선) |
속도 | 느림 | 빠름 |
키 크기 | 상대적으로 큰 키 | 상대적으로 적은 키 |
적용 | 인프라가 다소 구현된 환경 | 소형 모바일 환경 |
3. 비밀키 암호와 공개키 암호 비교
항목 | 비밀키 | 공개키 |
안전한 키 길이 | 128비트 이상 | 2048비트 이상 |
키 배분 필요 | 필요 | 불필요 |
키 개수 | n*(n-1)/2 | 2n |
암호화 속도 | 고속 | 저속 |
경제성 | 높다 | 낮다 |
제공 서비스 | 기밀성 | 기밀성, 부인방지, 인증 |
전자서명 | 복잡(구현가능하나 100%부인방지불가) | 간단 |
단점 | 키 배분 문제 | 중간자 공격에 취약 |
다만, 현대사회에서 비밀키를 더 많이 사용하고 있다.
4. 하이브리드 암호시스템
대칭키 암호로 속도를 높이고 공개키 암호로 세션키를 보호한다.
세션키는 대칭키 암호 입장에서는 키이지만, 공개키 암호 입장에서는 하나의 평문이다.
<해시함수와 MAC>
1. 일방향 해시함수
(1) 개요
1) 정의
해시함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값을 출력하는 함수이다.
즉, 해시함수 h는 임의의 길이의 문자열을 고정된 길이의 n비트 문자열로 대응시킨다.
2) 특징
임의 길이 메시지로부터 고정 길이 해시값을 계산. 해시값을 고속으로 계산할 수 있다. 일방향성을 갖는다. 메시지가 다르면 해시값도 다르다. 해시값으로부터 원본 메시지 복원할 수 없다.
3) 응용(보안서비스)
무결성 중에서 가장을 제외하고는 검출가능, 소프트웨어 변경 검출, 메시지 인증코드(MAC), 전자서명
Lamport의 일회용 패스워드 안전성 근거
(2) 보안 요구사항
- 프리이미지 저항성(역상 저항성)
주어진 임의의 출력값 y에 대하여, y=h(x)를 만족하는 입력값 x를 찾는 것이 계산적으로 불가능하다. -> 약 일방향성
- 제2프리이미지 저항성(두번째 역상 저항성, 약한 충돌 내성)
주어진 입력값 x에 대하여, h(x)=h(x'), x!=x'를 만족하는 다른 입력값 x'를 찾는 것이 계산적으로 불가능하다. -> 강 "
- 충돌 저항성(강한 충돌 내성) - 약한 충돌 내성을 보장한다.
h(x)=h(x')을 만족하는 임의의 두 입력값 x, x'을 찾는 것이 계산적으로 불가능하다. -> 충돌 회피성
(3) 키가 없는 해시함수
1) 반복 해시함수 - Merkle-Damgard 구조
많은 암호학적 해시함수 구조의 기본 틀. 고정 길이 입력함수를 만들고 필요한 만큼 반복해서 사용하는 것
2) 전용 해시함수(처음부터 새로 만드는 것)
구분 | SHA-1 | SHA-224 | SHA-256 | SHA-384 | SHA-512 |
MD길이(해시값) | 160 | 224 | 256 | 384 | 512 |
블록길이(처리단위) | 512 | 512 | 512 | 1024 | 1024 |
단계 수 | 80 | 64 | 64 | 80 | 80 |
최대 메시지 길이 | 2^64 - 1 | 2^64 - 1 | 2^64 - 1 | 2^128 - 1 | 2^128 - 1 |
구분 | MD5 | SHA-1 (4개 기약논리함수) | RIPEMD-160 |
해시값 | 128비트 | 160비트 | 160비트 |
블록길이(처리단위) | 512비트 | 512비트 | 512비트 |
단계 수(해시충돌방지확률 2^n) | 64(16번의 4라운드) | 80(20번의 4라운드) | 160(16번의 5병행라운드) |
최대 메시지 길이 | 무한 | 2^64 - 1 비트 | 2^64 - 1 비트 |
- Tiger : 64비트 시스템에서 해시함수를 수행하기 위해 설계. MD5, SHA-1보다 속도 빠르다.
- HAVAL : 해시값이 128/160/192/224/256비트를 출력하는 가변 길이 해시 알고리즘. 블록길이는 1024비트
- HAS-160 : 한국형 전자서명 표준인 KCDSA에서 사용할 목적으로 개발. 블록길이 512비트. 해시값 160비트
3) 블록암호 기반 해시함수
반복 해시함수 안에 사용되는 압축함수 자리에 대칭키 블록암호를 사용할 수 있다.
4) 모듈연산 기반 해시함수
압축함수의 기반을 모듈연산의 반복수행에 두고 있는 해시함수. 하드웨어나 소프트웨어 자체에 내장된 모듈연산을 사용할 수 있다는 장점이 있고, 속도가 빠르지 않고 안전성 연구가 짧다는 단점이 있다.
(4) 해시함수에 대한 공격
- 비둘기집 원리
만약 kn+1마리의 비둘기가 n개의 비둘기집에 들어가 있다면 적어도 한 개의 비둘기집에는 k+1마리의 비둘기가 존재
- 생일 공격(생일 문제)
해시값은 뭐든지 괜찮으며, 어쨌든 같은 해시값을 생성하는 2개의 메시지를 구하는 것. 강한 충돌 내성을 깨고자 함
- 무차별 공격(n비트 해시값에 대한 공격 난이도)
프리이미지 저항성 | 2^n |
제2 프리이미지 저항성 | 2^n |
충돌 저항성 | 2^(n/2) |
- 일차블록 연쇄공격
새로운 메시지 M'를 사전에 다양하게 만들어 놓았다가 공격하고자 하는 메시지 M의 해시값 h(M)과 같은 해시값을 갖는 것을 골라 사용하는 공격
- 중간자 연쇄공격
해시 중간의 결과에 대한 충돌쌍을 찾는다. 특정 포인트를 공격대상으로 한다.
- 고정점 연쇄공격
메시지 블록과 연쇄변수 쌍을 얻게 되면 연쇄변수가 발생하는 특정 포인트에서 임의의 수의 동등한 블록들을 메시지 중간에 삽입해도 전체 해시값이 변하지 않는다.
- 차분 연쇄공격
압축함수의 입출력 차이를 조사하여 0의 충돌쌍을 주로 찾아내는 방법
2. 변경 감지 코드(MDC, Modification Detection Code)
메시지의 무결성을 보장하는 메시지 다이제스트(MD)이다. 키가 없는 해시함수에 속한다.
3. 메시지 인증 코드(MAC, Message Authentication Code)
(1) 개요
무결성을 확인하고, 메시지에 대한 인증을 하는 기술이다. 임의 길이 메시지와 송신자 및 수신자가 공유하는 키라는 2개의 입력을 기초로 해서 고정 길이의 MAC값을 출력하는 함수이다.
암호검사합(암호학적 체크섬)이라고도 불리며, 블록암호나 해시함수에 기반을 두기 때문에 전자서명보다 훨씬 빠르다.
MAC에서는 송신자 및 수신자가 키를 공유할 필요가 있다.
MAC에서는 제3자에 대한 증명, 부인방지가 불가능하다(전자서명으로는 가능). 메시지 유출여부 확인 불가
MAC값을 활용하면, 메시지에 대한 해시값만을 이용하는 경우 발생할 수 있는 메시지 내용과 해시값 동시에 변조되는 위협에 대응가능
수신자는 수신된 메시지에 동일키를 이용하여 새 MAC값 생성하여 비교
(2) 사례
종류 | 단계 |
축소MAC | MAC안전성을 높이기 위해 설계. 해시가 두단계로 이루어짐 |
HMAC | 일방향 해시함수를 이용. 발신자는 메시지와 비밀키를 연접시키고 해시함수 거치게 하여 MAC값 생성. 수신자는 메시지만 취해 자신의 대칭키와 연접시키고 해시함수 거치게 하여 MAC값 생성하여 서로 비교. |
CBC-MAC, CMAC | CBC모드와 유사한 방법. |
CCM | CBC+CTR+MAC. 동일한 키의 사용을 통해 기밀성, 무결성, 인증 제공 |
GCM | CTR모드에 인증 추가. 기밀성, 무결성, 인증 제공 |
- HMAC
관심 가지게 된 이유 : 사용되는 해시함수를 손쉽게 구할 수 있기 때문
설계목표 : 내장된 해시함수를 손쉽게 교체, 제공되는 해시함수를 목적에 맞게 변경하여 사용, 해시함수 원래 성능 유지
(3) MAC에 대한 공격 대비 - 재전송 공격 대비
- 순서번호
송신메시지에 매회 1회씩 증가하는 번호를 붙이기로 약속하고 MAC값의 계산에서도 순서번호를 메시지에 포함시키기.
유효하지만 통신상대마다 마지막 순서번호를 기록해두어야 한다는 번거로움 있다.
- 타임스탬프
송신메시지에 현재시각을 넣기로 약속. 송,수신자 사이에 시계를 일치시켜 두는 동기화를 해야한다.
- 비표
메시지를 수신하기에 앞서 수신자는 송신자에게 일회용 랜덤 값(비표)을 준다. 비표를 포함하여 MAC값 계산.
유효하지만 통신 데이터 양이 약간 증가하게 된다.
- 시도/응답
통신 상대방A는 B로부터 정당한 메시지를 기대하고 B에게 우선 난수를 송신한 다음, B로부터 수신되는 메시지가 정확한 난수 값을 포함할 것을 요구한다.
<전자서명과 PKI>
1. 전자서명
(1) 개요
- 형식
공개키 서명방식 : 공개키 암호방식 이용. 서명자의 검증정보를 공개하여 누구나 검증가능. 서명 생성 및 검증이 간편
중재 서명방식 : 관용 암호방식을 이용. 성질상 서명 생성 및 검증을 제3자가 중재하는 방식. 서명할 때마다 제3자 필요
- 과정
서명자는 자신의 개인키를 이용하여 문서에 서명하며, 서명 알고리즘을 사용한다. 검증자는 서명자의 공개키를 이용하여 문서를 검증하며, 검증 알고리즘을 사용한다.
긴 메시지의 경우 : 긴 메시지의 해시값을 생성, 이를 자신의 개인키로 전자서명
- 기능(기밀성은 보장X)
위조 불가 : 합법적인 서명자만이 전자서명 생성가능 -> 인증 보장
서명자 인증 : 서명자를 누구든지 검증할 수 있어야 한다.
부인방지 : 서명자는 서명행위 이후 서명사실을 부인할 수 없다.
변경 불가 : 서명한 문서의 내용은 변경할 수 없다. -> 무결성 보장
재사용 불가 : 전자문서의 서명을 다른 전자문서에 사용할 수 없어야 한다.
(2) 구조
알고리즘 | 암호/복호 | 디지털 서명 | 키 교환에 사용가부 |
RSA | Yes | Yes | Yes |
Diffie-Hellman | No | No | Yes |
DSS(전자서명표준) | No | Yes | No |
타원곡선(ECC, ECDSA) | Yes | Yes | Yes |
- DSS(DSA) : ElGamal 전자서명을 개량한 방식, 검증에 소요되는 계산량을 줄인 방식
- ECDSA : 타원곡선상에서 이산대수 문제를 이용하는 방식, 키 길이 짧지만 높은 안전성을 제공
- ElGamal 전자서명 : 실제로 거의 사용X, 이산대수 문제를 기반, 기밀성 기능없이 서명만을 위해 고안
- Schnorr 전자서명 : ElGamal에 기반, p-1의 소인수 q를 위수로 갖는 생성원 사용
- KCDSA 전자서명 : 국내표준전자서명. ElGamal 개선한 것이며 DSS 변형한 방식. 효율성 높이고 스마트카드 이용 편의
(3) 방식
1) 메시지 복원형 전자서명
공개키 암호방식. 메시지를 블록으로 나누어 각각 블록에 서명 요구되어 비효율적
2) 메시지 부가형 전자서명
해시 알고리즘 이용. 전송량 약간 늘었으나, 한번의 서명생성과정만 요구되어 효율적
3) 특수 전자서명
부인방지 전자서명 | 서명검증할 때 반드시 서명자의 도움이 있어야 검증가능 |
의뢰 부인방지 전자서명 | 특정한 자만이 부인 과정을 수행. ex) 재판관 |
수신자 지정 서명 | 특정 검증자만이 서명을 확인할 수 있도록 하되, 그 서명이 문제되는 경우 검증자의 비밀서명 생성정보를 노출시키지 않고, 제3자에게 서명 출처를 증명함으로써 분쟁해결기능을 제공 |
은닉 서명(블라인드 서명) | 서명자가 서명문 내용을 알지 못하는 상태에서 서명하는 방식 |
위임 서명 | 위임 서명자로 하여금 서명자를 대신해서 대리로 서명 |
다중 서명 | 동일한 전자문서에 여러 사람이 서명 |
이중 서명 | 지불정보와 주문정보 각각에 비밀성 보장위해 서명 |
(4) 전자서명의 응용
1) 전자투표
- 요구사항
완전성 : 모든 투표가 정확하게 집계되어야 한다.
익명성 : 투표결과로부터 투표자를 구별할 수 없어야 한다.
건정성 : 부정한 투표자에 의해 선거가 방해되는 일은 없어야 한다.
이중투표방지 : 정당한 투표자가 두번이상 투표할 수 없다.
정당성 : 투표에 영향을 미치는 것이 없어야 한다.
적임성 : 투표권한을 가진 자만이 투표할 수 있다.
검증 가능 : 누구라도 투표결과를 확인하여 검증할 수 있다.
구분 | 투표장치 | 선거관리 | 기술적 쟁점 | 내용 |
PSEV 방식 | 전자투표기 | 상 | 하 | 이미 정해져 있는 기존 투표소에서 투표기를 이용하여 투표 실시 후 전자식 투표기록장치를 개표소로 옮겨 컴퓨터로 집계 |
Kiosk 방식 | 전자투표기 | 중 | 중 | 비지정 임의 투표소에서 전자투표, 투표소와 개표소를 온라인으로 연결하여 투표결과가 자동적으로 개표소로 전송 |
REV 방식 | 모바일, TV, PC | 하 | 상 | 인터넷을 통해 투표 |
2) 전자입찰
- 문제점 : 네트워크상 메시지 유출, 공모
- 요구사항 : 독립성, 비밀성, 무결성, 공평성, 안정성
2. PKI(Public-Key Infrastructure) 공개키 기반 구조
(1) 개요
전자서명의 전제조건은 서명 검증을 할 때 이용하는 공개키가 진짜 송신자의 공개키일 것이라는 문제가 있다.
공개키 인증서는 공개키 위변조 방지를 위해 사용되는 기술이다.
제공 서비스 : 기밀성, 무결성, 인증, 부인방지, 접근제어
(2) 구성요소
인증기관 | 정책승인기관(PAA) : PKI 전반에 사용되는 정책과 절차를 생성 정책인증기관(PCA) : CA가 따라야 할 정책을 수립, 인증기관의 공개키를 인증, 인증서 및 인증서 폐지목록을 관리 인증기관(CA) : 공개키 인증서를 발급, 취소. 공개키를 사용자에게 전달. 인증서 및 인증서 취소목록을 보관 |
등록기관 | 사용자들의 인증서 신청시 그들의 신분과 소속을 확인하는 기능을 수행 ex) 은행에서 사용자 신분확인, 등록기능 담당 |
저장소 | 서버설치, 인증기관에서 관리. 디렉터리 관리서버는 LDAP이용하여 디렉터리 서비스 제공 |
사용자 | 자신의 공개키와 비밀키 쌍을 생성. 인증기관에 공개키 인증서 요청하고 인증서 받기. 전자서명 생성 및 검증. 특정 사용자의 인증을 확인. 디렉터리 이용하여 타 사용자에게 제공. 인증서 취소목록을 이용하여 인증서 상태 검증 사용자 등록 : 사용자 요청에 따라 사용자 정보를 전자인증서 관리시스템에 등록 |
(3) 형태
구분 | 계층적 구조(Root CA가 존재) | 네트워크형 구조 |
장점 | 정부와 같은 관료조직에 적합 인증경로 탐색이 용이 모든 사용자가 최상위 CA의 공개키를 알고 있으므로 인증서 검증이 용이 |
유연하며 실질적인 업무관계에 적합 CA 상호인증이 직접 이루어지므로 인증경로 단순 CA 비밀키 노출시 국소적 피해 |
단점 | 협동업무 관계에 부적합 최상위 CA에 집중되는 오버헤드 발생가능 최상위 CA의 비밀키 노출시 피해 극심 |
인증경로 탐색이 복잡 인증정책 수립 및 적용이 어려움 |
(4) 주요 관리 대상
1) 인증서(PKC, Public-Key Certificate)
공개키 인증서에는 이름이나 소속, 메일 주소 등 개인정보 및 그 사람의 공개키가 기재되고, CA의 개인키로 전자서명
기본영역 : 버전, 일련번호, 서명 알고리즘 식별자, 발행자 이름, 유효기간, 주체 이름, 주체 공개키 정보
확장영역 : 기관 키 식별자, 주체 키 식별자(고유 식별자 아닌거 주의), 인증서 정책, 키 용도
X.509 인증서 형식은 S/MIME, SSL/TLS 등에서 사용한다.
X.509는 PKI의 ITU-T 표준이다. X.509는 CRL 구현을 위한 표준도 포함한다.
2) X.509 인증서 폐지목록(CRL)
폐지사유 : 사용자 개인키 침해, CA가 사용자 더이상 인증X, CA의 개인키 침해, 부정한 방법으로 인증서 발급
폐지요청은 인증서 소유자 또는 대리인이 요청, CRL은 디렉터리에 공개되어야 한다.
폐지목록은 인증기관이 전저서명을 하여 발행
reason code : 인증서 폐지사유를 나타내기 위해 사용되는 코드
hold instruction code : 인증서 일시적인 유보를 지원하기 위해 사용되는 코드
certificate issuer : 인증서 발행자의 이름
invalidity date : 인증서 유효하지 않게 된 날짜와 시간에 대한 값
3) 온라인 인증서 상태 검증 프로토콜(OCSP)
실시간으로 인증서 상태 확인할 수 있는 효율적 방법. 구현되면 작업은 백그라운드에서 자동으로 수행
OCSP는 특정 CA기관과 사용계약을 맺어야 하고, 사용량에 따라서 추가비용 지불해야 한다.
- 작업순서
OCSP 응답 서명 인증서의 인증서 템플릿 및 발급 속성을 구성 -> 온라인 응답자를 호스팅할 컴퓨터에 대한 등록권한을 구성 -> Window Server 2003기반 인증기관인 경우에는 발급된 인증서에서 OCSP확장을 사용하도록 설정 -> CA의 기관정보 엑세스 확장에 온라인 응답자 또는 OCSP 응답자 위치를 추가 -> CA에 대한 OCSP 응답 서명 인증서 템플릿을 사용하도록 설정
<키, 난수>
- 세션 키와 마스터 키 : 통신할 때마다 한번만 사용되는 키를 세션 키, 반복적으로 사용되는 키를 마스터 키라고 한다.
- 난수의 성질 : 무작위성, 예측 불가능성, 재현 불가능성
- 암호키 저장방법의 예 : 암호키는 서버 또는 하드웨어 토큰에 저장가능, 웹서버 또는 DB서버와 물리적으로 분리되어 사용하는 것을 권고
- 하드웨어 토큰 : 저장된 정보가 위,변조 또는 외부로 노출되기 어려운 장치(ex 스마트카드, USB 토큰)
- 솔트(Salt) : 의사난수 생성기로 생성되는 랜덤한 수, 비밀번호와 분리하여 서버 또는 하드웨어 토큰에 저장, 사전공격 또는 레인보우 테이블 이용 공격 막기위해 존재
- 의사난수 생성기(PRNG, pseudo random number generator) : 소프트웨어만으로 진정한 난수 생성할 수 없기에 의사