1. 암호학의 기본 개념

암호학(Crytolopy)

평문을 다른 사람이 알아볼 수 없는 형태의 암호문으로 만들고 특정한 비밀키를 알고 있는 사람만이 다시 평문으로 복원시킬 수 있도록 하는 암호기술과 이를 제3자(도청자)가 해독하는 방법을 분석하는 암호해독에 관하여 연구하는 학문이다

암호에서 사용되는 이름


암호학 프로토콜을 설명할 때 기호 대신 사용하는 명칭으로 사람 중심의 서사로 바꾸어 직관적으로 이해하기 위해 사용한다. 사용되는 주요한 이름은 아래와 같다

  • 앨리스와 밥: 일반적으로 앨리스는 메시지를 전송하고 밥이 수신하는 모델로 사용된다
  • 이브: 도청자(eavesdropper)로, 소극적인 공격자를 의미한다
  • 맬로리: 악의를 가진 공격자를 의미한다. 적극적 공격자를 의미한다
  • 트렌트: 신뢰할 수 있는 중재자이며, 중립적인 위치에 있는 제3자이다
  • 빅터: 검증인(verifier)이며, 의도된 거래나 통신이 실제로 발생했음을 검증할 때 등장한다

송신자, 수신자, 도청자


어떤 사람이 다른 사람에게 정보를 보낼 때, 보내는 사람을 송신자라고 부르고 받는 사람을 수신자라고 부른다. 또한 송신된 정보를 총칭해서 메시지라고 부른다.

도청자 이브는 반드시 사람만 의미하는 것이 아니다. 이브는 통신기기에 장치된 도청용 기계일 수도 있고 메일 소프트웨어나 메일 서버에 설치된 프로그램일 수도 있다

암호화와 복호화


암호화하기 전의 메시지를 평문(plaintext)이라고 하고, 암호화한 후의 메시지를 암호문(Ciphertext)라고 한다. 이때 키를 사용해서 암호화를 한다

키와 키 스페이스

키(key)는 데이터를 암호화 및 복호화하는 알고리즘에 사용되는 핵심 값이다. 키 스페이스는 암호화 알고리즘에서 사용하는 키값의 크기이다

그림 1. 암·복호화 과정

암호화와 복호화의 기호적 표현

  • 평문: P or M
  • 암호문: C
  • 암호 알고리즘: E
  • 복호화 알고리즘: D
  • 키: K

이들의 관계를 수식으로 나타내면 다음과 같다

  • : 평문 P를 키 K로 암호화하여(E) 암호문 C를 얻는다
  • : 암호문 C를 키 K로 복호화하여(D) 평문 P를 얻는다

키의 위치를 위와 같이 암호화와 복호화 알고리즘의 첨자로 나타내기도 하고 또는 라고 표현하기도 한다

암호 알고리즘과 키의 분리


암호 알고리즘의 변경 가능한 부분이 키에 해당된다. 암호 알고리즘과 키를 구분하여 생각함으로써 암호 알고리즘을 반복해서 사용하고 싶지만, 암호문이 반복되면 위험하다는 곤란한 상황을 없게 만든다

암호화 보안 상식


비밀 암호 알고리즘을 사용하지 말 것

  • 암호 알고리즘을 비밀로 해서 보안을 유지하려고 하는 행위는 일반적으로 숨기는 것에 의한 보안이라 부른다. 암호 알고리즘 자체를 비밀로 해서 기밀성을 유지하려고 하는 암호 시스템은 암호 알고리즘의 구조가 폭로되어 버리면 그것으로 끝이다

약한 암호는 암호화하지 않는 것보다 위험하다

  • 가장 큰 이유는 사용자가 암호라고 하는 말로 인해 잘못된 안심을 하기 때문이다. 그 결과 기밀성이 높은 정보를 소홀하게 취급할 위험이 있다

어떤 암호라도 언젠가는 해독된다

  • 암호문이 해독되기까지 들어가는 시간과 암호를 사용하여 지키고 싶은 평문의 가치와의 밸런스가 중요하다

암호는 보안의 아주 작은 부분이다

  • 한 시스템의 강도는 가장 약한 링크의 강도와 같기 때문에 모든 링크 부위가 골고루 강해야 해당 시스템의 보안성이 강해진다. 가장 약한 링크는 암호가 아니라 사람이다

2. 암호기법의 분류

치환 암호와 전치 암호


치환 암호(대치 암호, Substitution Clipher)

  • 비트, 문자 또는 문자의 블록을 다른 비트, 문자 또는 블록으로 대체한다
  • 치환 암호의 엄밀한 의미는 평문에서 사용하는 문자의 집합과 암호문에서 사용하는 집합이 다를 수 있다
  • 즉, 평문의 문자를 다른 문자로 교환하는 규칙이다. 이때 교환 규칙은 일대일 대응이 아니어도 상관없다

전치 암호(Transposition Cipher)

  • 원문을 여기저기 움직이게 한다. 그것은 비트, 문자 또는 블록이 원래 의미를 감추도록 재배열한다
  • 전치는 평문에서 사용하는 문자의 집합과 암호문에서 사용하는 문자의 집합이 동일하다
  • 따라서 전치 암호한 문자 집합 내부에서 자리를 바꾸는 규칙이고, 평문에 사용된 문자와 암호문에 사용된 문자가 일대일 대응 규칙을 갖는다는 점이 특징이다

블록 암호와 스트림 암호


블록 암호

  • 어느 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘의 총칭이다. 이 집합을 블록이라고 하며, 블록의 비트 수를 블록 길이라고 한다
  • 평문을 일정한 크기의 블록으로 잘라낸 후 암호화 알고리즘을 적용하여 암호화 한다. 일반적으로 블록의 크기는 8비트 또는 16비트에 비례한다
  • Round(동일한 암호 함수를 여러 번 반복 적용하는 기본 단위)를 사용하고, 반복적으로 암호화 과정을 수행해 암호화 강도를 높인다
그림 2. 블럭 암호

스트림 암호

  • 한 번에 1bit 혹은 1byte의 데이터 흐름(스트림)을 순차적으로 처리해가는 암호 알고리즘의 총칭이며, 암호화 방식은 평문과 스트림을 XOR하여 생성한다
  • 블록 암호는 블록 단위로 처리가 완료되므로 어디까지 암호화가 진행되었는가 하는 내부 상태를 가질 필요가 없다. 반면 스트림 암호는 데이터의 흐름을 순차적으로 처리하기 때문에 내부 상태를 가지고 있다
  • 군사 및 외교, 이동 통신 환겨에서 널리 사용되고 있다
그림 3. 스트림 암호화
구분스트림 암호블럭 암호
장점암호화 속도가 빠름, 에러 전파현상 없음높은 확산, 기밀성, 해시함수 등 다양
단점낮은 확산느린 암호화, 에러 전달
암호화 단위비트블록
주요 대상음성, 오디오/비디오 스트리밍일반 데이터 전송, 스토리지 저장

위치에 따른 암호화의 구분


링크 암호화

  • 통신 네트워크의 물리 계층 및 데이터 링크 계층에서 노드와 노드 사이, 즉 지점 간의 전송 데이터 전체를 암호화하는 보안 방식이다
  • 패킷은 다음 목적지로 전달되기 위해 라우터가 헤더의 라우팅 및 주소 정보를 확인해야 하므로 각 홉에서 복호화, 헤더 확인, 재암호화 과정을 거쳐 전달된다. 즉, 구간별 암호화 방식이다

종단간 암호화

  • 송신자와 수신자 사이에서만 암호화, 복호화가 이루어지는 방식으로, 애플리케이션 계층에서 수행된다
  • 라우팅을 위한 헤더 정보는 암호화되지 않으므로, 중간 장비는 이를 읽어 패킷을 전달할 수 있으며, 각 홉에서 복호화 및 재암호화 과정이 필요하지 않다. 즉, 통신 당사자 간 전체 구간을 보호하는 암호화 방식이다
구분링크 암호화종단간 암호화
특징- ISP나 통신업자가 암호화
- 헤더를 포함한 모든 데이터를 암호화
- 유저가 알고리즘 통제 불가
- 사용자가 암호화
- 헤더는 암호화하지 않음
- 알고리즘에 대한 통제는 사용자가 함
장점- User-transparent하게 암호화되므로 운영이 간단
- 트래픽 분석을 어렵게 함
- 온라인으로 암호화
- 사용자 인증 등 높은 수준의 보안 서비스를 제공 가능
- 중간노드에서도 데이터가 암호문으로 존재
단점- 중간 노드에서 데이터가 평문으로 노출
- 다양한 보안서비스를 제공하는데 한계
- 모든 노드가 암호화 장비를 갖추어야하므로 네트워크가 커지면 비용 과다
- 트래픽 분석이 취약
- 오프라인으로 암호화

하드웨어와 소프트웨어 암호시스템


하드웨어 암호 시스템

  • 하드웨어로 실현하기 위해 컴퓨터와 통신기기의 내부버스와 외부 인터페이스에 전용 암호처리용 하드웨어를 설치하여 데이터를 암호화한다
  • 전용 하드웨어로 암호화함으로써 컴퓨터 CPU에 부담을 주지 않고 빠른 속도로 암호하가 가능하다

소프트웨어 암호시스템

  • 소프트웨어에 의한 실현은 암호처리용 소프트웨어를 사용한 데이터 암호화로 가능하다
  • 저렴한 비용으로 실현이 가능하고, 허용범위 내에서 적당한 안전성과 처리속도를 얻는 것이 가능하다면 상당히 효과적이다
  • 최근 컴퓨터의 성능이 좋아져 소프트웨어에 의한 암호화를 행해도 처리속도가 문제되지 않기 때문에 주류를 이루고 있다

3. 주요 암호기술에 대한 개괄

대칭키 암호와 비대칭(공개키) 암호


대칭키 암호(symmetric cryptography)

  • 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 동일한 암호 알고리즘 방식이다
  • 비대칭에 비해 빠른 처리속도를 제공하고, 암호화 키의 길이가 공개키 암호화 방식보다 상대적으로 작아서 일반적인 정보의 기밀성을 보장하기 위한 용도로 사용되고 있다

비대칭키 암호(asymmetric crytopraphy)

  • 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 서로 다른 암호 알고리즘 방식이다
  • 공개키 방식은 데이터 암호화 속도가 대칭키 암호화 방식에 비해 느리기 때문에 일반적으로 대칭키 암호화 방식의 키 분배나 작은 크기의 데이터 암호화에 많이 사용되고 있다

하이브리드 암호

  • 대칭키 암호화 공개키 암호를 조합한 암호 방식을 하이브리드 암호 시스템이라고 한다. 하이브리드 암호 시스템은 둘의 장점을 조합한 것이다

일방향 해시함수


해시함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해시값 또는 해시 코드라 불리는 값을 생성하며, 동일한 입력 메시지에 대해 항상 동일한 값을 생성 하지만 해시값만으로 입력 메시지를 유추할 수 없어 비밀번호와 같이 복호화 없이 입력값의 정확성 검증이 필요한 경우에 사용되고 있다

메시지 인증코드


메시지 인증코드를 사용하면 그 메시지가 전송 도중에 변경되지 않았다는 것과 생각했던 통신 상대로부터 왔다는 것을 확인할 수 있다. 즉, 무결성과 인증을 제공하는 암호 기술이다

전자서명


전자서명이란 서명이나 도장 같은 개념을 온라인에 적용한 것이다. 거짓행세, 변경, 부인이라는 위협을 방지하는 기술이 전자서명이다. 전자서명은 무결성을 확인하고, 인증과 부인방지를 하기 위한 암호 기술이다

의사난수 생성기


의사난수 생성기는 난수열을 생성하는 알고리즘이다. 난수는 키 생성이라는 매우 중요한 역할을 담당하고 있다 여기서 의사난수란, 컴퓨터에 의해 만들어지는 난수, 어떤 유한 개수로 조립된 수의 주기성 없는 계열을 난수라고 하는데, 산술난수를 컴퓨터에 발생시키면 커다란 주기를 갖는다. 이와 같이 진정한 의미로는 난수가 아니지만 사용상 난수로 간주해도 지장이 없는 난수를 의사난수라고 한다

4. 암호 분석(해독)

개요


암호 방식의 저ㅓㅇ규 참여자가 아닌 제3자가 암호문으로부터 평문을 찾으려는 시도를 암호 해독 또는 공격이라 하며 암호 해독에 참여하는 사람을 암호 해독자, 제3자 또는 침해자라고 한다. 암호학에서 암호 해독자는 현재 사용되고 있는 암호 방식을 알고 있다는 전재하에 암호 해독을 시도하는 것으로 간주한다. 이를 케르히호프의 원리라 한다

케르히호프의 원리

암호 시스템의 안전성은 암호 알고리즘의 비밀을 지키는데 의존되어서는 안되거, 키의 비밀을 지키는데 의존되어야 한다는 원리이다

암호 분석의 분류


암호문 단독 공격(COA, Ciphertext Only Attack)

  • 암호해독자에게는 가장 불리한 방법이다. 암호해독자가 단지 암호문 C만 갖고 평문 P나 키 k를 찾아내는 방법으로, 평문 P의 통계적 성질, 문장의 특성 등을 추정하여 해독하는 방법이다

기지 평문 공격(알려진 평문 공격, KPA, Known Plaintext Attack)

  • 암호문에 대응하는 일부 평문이 사용가능한 상황에서의 공격이다. 암호해독자가 일정량의 평문 P에 대응하는 암호문 C를 알고 있는 상태에서 해독하는 방법으로, 암호문 C와 평문 P의 관계로부터 키 K나 평문 P를 추정하여 해독하는 방법이다

선택 평문 공격(CPA, Chosen Plaintext Attack)

  • 평문을 선택하면 대응하는 암호문을 얻을 수 있는 상황에서의 공격이다. 암호해독자가 암호기에 접근할 수 있어 평문 P를 선택하면 그 평문 P에 해당하는 암호문 C를 얻어 키 K나 평문 P를 추정하여 암호를 해독하는 방법이다
  • COA나 KPA와 달리 CPA 모형의 공격자는 단지 수동적으로 도청하는 것이 아니라 암호화 과정에 영향을 미친다는 점에서 능동적 공격자이다

선택 암호문 공격(CCA, Chosen Ciphertext Attack)

  • 암호문을 선택하면 대응하는 평문을 얻을 수 있는 상황에서의 공격이다. 암호해독자가 엄호 복호기에 접근할 수 있어 암호문 C를 선택하면 그 암호문 C에 대한 평문 P를 얻어내 암호를 해독하는 방법이다
  • 선택된 암호문을 복호화할 수 있는 능력을 갖추고 있는 기계를 일반적으로 복호 오라클이라고 부른다
  • 선택 암호문 공격에 견딜 수 있는 암호 알고리즘은 강한 알고리즘이라고 말할 수 있다

5. 암호 알고리즘의 안전성 평가

안전성 개념


암호시스템을 공격하기위해 필요한 계산량이 매우 커 현실적으로 공격할 수 없는 경우를 계산적으로 안전하다고 한다. 마한한 계산능력이 있어도 공격할 수 없는 경우를 무조건적으로 안전하다고 말한다. 암호 알고리즘 사용자가 해야 할 일은 다음 두 기준 중의 하나 또는 전부를 만족하는 알고리즘을 개발하는 것이다

  • 암호 해독 비용이 암호화된 정보의 가치를 초과
  • 암호 해독 시간이 정보의 유효 기간을 초과

암호기술 평가


평가 종류

  • 암호 알고리즘 평가
    • 정보보호제품에 탑재된 암호 알고리즘에 대한 안전성 평가이다
    • 이론적 안전성만을 평가한다
  • 암호모듈 평가
    • 암호 알고리즘을 이용하여 제공되는 암호서비스에 대한 안전성 평가이다
    • 이론적 안전성과는 별도로 암호 서비스 기능을 제공하는 암호모듈의 안전서에 대한 평가이다
  • 정보보호제품 평가
    • 암호모듈을 탑재한 정보보호 제품에 대한 안전성을 평가한다
  • 응용시스템 평가
    • 각 제품을 상호 연동하여 구성되는 시스템에 대한 안전성 평가이다