1. 암호학의 기본 개념

암호학(Cryptology)

평문을 다른 사람이 알아볼 수 없는 암호문으로 변환하고, 정당한 키를 가진 사람이 이를 다시 평문으로 복원하는 암호기술과, 제3자가 암호의 안전성을 분석하고 평문이나 키를 알아내려는 암호해독을 연구하는 학문이다

송신자, 수진자, 도청자

정보를 보내는 사람을 송신자, 받는 사람을 수신자라고 하며, 송신되는 정보를 통틀어 메시지라고 한다. 도청자는 통신 내용을 몰래 획득하려는 주체다. 반드시 사람만을 의미하지 않으며, 다음과 같은 장치나 프로그램일 수도 있다

암호에서 사용되는 이름

이름역할설명
앨리스(Alice)송신자일반적으로 메시지를 보내는 사람
밥(Bob)수신자일반적으로 앨리스가 보낸 메시지를 받는 사람
이브(Eve)소극적 공격자통신 내용을 도청하는 사람
맬러리(Mallory)적극적 공격자메시지를 수정하거나 자신의 메시지로 대체하고, 이전 메시지를 재전송할 수 있는 악의적인 공격자
트렌트(Trent)신뢰할 수 있는 제3자중립적인 위치에서 중재하는 신뢰받는 주체
빅터(Victor)검증자(Verifier)의도한 거래나 통신이 실제로 이루어졌는지 등을 검증하는 역할

1.1 암호화와 복호화

암호화(Encryption)

**평문(Plaintext)**을 인가되지 않은 사람이 내용을 알아볼 수 없는 형태로 변환하는 과정이다. 암호화한 결과를 **암호문(Ciphertext)**이라고 한다

복호화(Decryption)

암호화되어 알아볼 수 없게 바뀐 암호문을 원래의 평문으로 되돌리는 과정이다

1.1.1 키와 키 공간

키(Key): 데이터를 암호화하거나 복호화하는 알고리즘에 사용되는 핵심 값이다

키 공간(Key Space): 암호 알고리즘에서 사용할 수 있는 모든 가능한 키의 집합이다. 키 공간의 크기는 가능한 키의 개수를 뜻한다

  • 키 길이: 키를 표현하는 비트 수
  • 키 공간의 크기: 가능한 키의 개수
  • 모든 비트 조합을 키로 사용할 수 있다면, 키 길이가 n비트일 때 키 공간의 크기는 이다
그림 1. 암, 복호화 과정

1.1.2 암호화, 복호화의 기호 표현

기호의미
M 또는 P평문
C암호문
E암호화 알고리즘
D복호화 알고리즘
K키
암호화
  • 평문 P를 키 K로 암호화하여 암호문 C를 얻는다. 다음과 같이 표현할 수도 있다

복호화

  • 암호문 C를 키 K로 복호화하여 평문 P를 얻는다. 다음과 같이 표현할 수도 있다

위 수식은 같은 키 K를 사용하는 기본적인 설명이다. 비대칭키 암호에서는 암호화 키와 복호화 키를 구분한다

1.2 암호 알고리즘의 키의 분리

암호 알고리즘에서 변경 가능한 입력값에 해당하는 것이 키다. 암호 알고리즘과 키를 분리하면 알고리즘 자체를 매번 바꾸지 않고도, 키를 변경하여 암호화 결과를 달라지게 할 수 있다. 이를 통해 알고리즘은 반복해서 사용하면서 비밀값은 별도로 관리할 수 있다

그림 2. 암호 알고리즘과 키의 분리

그림은 알고리즘을 재사용하면서 키를 바꿀 수 있다는 점을 나타낸다. 다만 모든 암호화에서 키를 매번 변경해야 한다는 의미는 아니다

1.3 암호화 보안 상식

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

  • 암호 알고리즘을 숨기는 것만으로 보안을 유지하려는 방식을 은닉에 의한 보안이라고 한다. 알고리즘 자체의 비밀성에만 의존하는 암호시스템은 구조가 공개되면 안전성이 무너질 수 있다. 따라서 알고리즘이 알려져도 키의 비밀성에 의해 안전성이 유지되어야 한다

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

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

*해독에 필요한 시간과 정보의 가치를 함께 고려한다

  • 암호문을 해독하는 데 필요한 시간, 비용과 보호하려는 평문의 가치, 유효 기간 사이의 균형이 중요하다

암호는 전체 보안의 일부다

  • 시스템의 보안 수준은 가장 약한 연결 고리에 의해 제한될 수 있다. 따라서 암호뿐만 아니라 시스템을 구성하는 모든 부분을 고르게 보호해야 한다





2. 암호기법의 분류

2.1 치환 암호와 전치 암호

변환 방식에 따른 분류이다

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

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

평문의 비트, 문자, 문자 블록을 다른 비트, 문자, 블록으로 바꾸는 방식이다. 기본적인 문자 단위 치환에서는 문자의 위치를 유지하면서 문자 자체를 바꾼다

평문에 사용하는 문자 집합과 암호문에 사용하는 문자 집합은 서로 다를 수 있다.

전치 암호(Transposition Cipher)

전치 암호(Transposition Cipher)

평문 문자의 형태는 그대로 유지하면서 문자들의 위치나 순서만 바꾸는 방식이다. 사용하는 문자의 종류는 바뀌지 않고 배치만 달라진다

평문과 암호문에 사용되는 문자 집합이 동일하며, 각 문자의 출현 횟수도 유지된다. 전치에서 일대일 대응하는 것은 평문의 각 위치와 암호문의 각 위치다

2.2 블록 암호와 스트림 암호

처리 단위에 따른 분류이다

블록 암호

블록 암호

일정한 비트 수로 이루어진 데이터 집합을 한 번에 처리하는 암호 알고리즘이다. 이 데이터 집합을 블록, 블록을 구성하는 비트 수를 블록 길이라고 한다

평문을 일정한 크기의 블록으로 나누고, 각 블록에 암호화 알고리즘을 적용한다. 블록 길이는 알고리즘에 따라 정해지며, 예를 들어 AES의 블록 길이는 128비트, 즉 16바이트다

Round

암호 내부에서 반복하는 처리의 기본 단위다

많은 블록 암호는 라운드 함수를 여러 번 적용하여 암호화 강도를 높인다. 각 라운드에서는 서로 다른 라운드 키를 사용할 수 있다

그림 3. 블럭 암호

스트림 암호

스트림 암호

데이터를 비트 또는 바이트 등의 단위로 순차적으로 처리하는 암호 알고리즘이다. 대표적인 방식은 키에서 생성한 **키 스트림(Key Stream)**과 평문을 XOR하여 암호문을 만든다

같은 키 스트림을 암호문과 XOR하면 원래 평문을 복원할 수 있다

그림 4. 스트림 암호화

아래는 블럭암호와 스트림 암호에 대한 비교이다

구분스트림 암호블록 암호
장점순차 처리에 적합하며 빠른 처리가 가능함. 동기식 XOR 방식에서는 비트 오류가 다른 비트로 전파되지 않음높은 확산을 제공하도록 설계됨. 기밀성 보호 외에 해시 함수 등의 구성 요소로도 활용 가능
단점단순 XOR 방식은 확산이 낮음알고리즘·구현에 따라 처리 부담이 크며, 운용 모드에 따라 오류가 전파될 수 있음
암호화 단위비트·바이트 등고정 길이 블록
주요 활용 대상음성, 오디오·비디오 스트리밍 등일반 데이터 전송, 스토리지 저장 등

2.3 암호화 위치에 따른 분류

2.3.1 링크 암호화

링크 암호화

통신 네트워크에서 인접한 노드 사이의 전송 구간을 보호하는 암호화 방식이다. 전통적으로 물리 계층이나 데이터 링크 계층에서 구현하며, 해당 구간에서 헤더와 데이터를 폭넓게 보호한다

패킷을 다음 목적지로 전달하려면 중간 장비가 라우팅 및 주소 정보를 확인해야 한다. 따라서 링크 암호화에서는 중간 노드에서 다음과 같은 처리가 이루어진다

  1. 수신한 데이터를 복호화한다
  2. 헤더의 라우팅 및 주소 정보를 확인한다
  3. 다음 링크에 맞게 다시 암호화하여 전달한다 즉, 구간별 암호화 방식이다

2.3.2 종단간 암호화(End-to-End Encryption)

종단간 암호화(End-to-End Encryption)

송신 측에서 암호화한 데이터를 중간 노드에서도 암호문 상태로 유지하고, 의도한 최종 수신 측에서만 복호화하는 방식이다. 통신 당사자 사이의 전체 구간에서 데이터 내용을 보호한다

애플리케이션 계층에서 구현하는 방식이 대표적이지만, 종단간 암호화의 개념 자체가 특정 계층에만 한정되는 것은 아니다. 라우팅에 필요한 외부 헤더 정보는 중간 장비가 읽을 수 있어야 하므로, 중간 장비는 보호된 메시지 내용을 복호화하지 않고도 패킷을 전달할 수 있다.

구분링크 암호화종단간 암호화
특징- ISP나 통신업자가 암호화
- 헤더를 포함한 모든 데이터를 암호화
- 유저가 알고리즘 통제 불가
- 사용자가 암호화
- 헤더는 암호화하지 않음
- 알고리즘에 대한 통제는 사용자가 함
장점- User-transparent하게 암호화되므로 운영이 간단
- 트래픽 분석을 어렵게 함
- 온라인으로 암호화
- 사용자 인증 등 높은 수준의 보안 서비스를 제공 가능
- 중간노드에서도 데이터가 암호문으로 존재
단점- 중간 노드에서 데이터가 평문으로 노출
- 다양한 보안서비스를 제공하는데 한계
- 모든 노드가 암호화 장비를 갖추어야하므로 네트워크가 커지면 비용 과다
- 트래픽 분석이 취약
- 오프라인으로 암호화

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

구현 방식에 따른 분류이다

하드웨어 암호시스템

컴퓨터나 통신기기의 내부 버스 또는 외부 인터페이스에 전용 암호처리 하드웨어를 설치하여 데이터를 암호화하는 방식이다. 전용 하드웨어가 암호 연산을 담당하므로, 범용 CPU의 연산 부담을 줄이면서 빠르게 처리할 수 있다

소프트웨어 암호시스템

암호처리용 소프트웨어를 사용하여 데이터를 암호화하는 방식이다. 상대적으로 저렴한 비용으로 구현할 수 있으며, 요구하는 안전성과 처리 속도를 만족한다면 효과적으로 활용할 수 있다






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

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

키 사용 방식에 따른 암호기술이다

3.1.1 대칭키 암호

대칭키 암호(Symmetric Cryptography)

암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 동일한 암호 알고리즘 방식이다

  • 일반적으로 비대칭키 암호보다 처리 속도가 빠르다
  • 비슷한 보안 강도를 기준으로 대표적인 공개키 방식보다 키 길이가 짧다
  • 일반적인 데이터의 기밀성을 보호하는 데 사용한다

3.1.2 비대칭키 암호

비대칭키 암호(Asymmetric Cryptography)

암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 서로 다른 암호 알고리즘 방식이다

  • 일반적으로 대칭키 암호보다 데이터 암호화 속도가 느리다
  • 대칭키의 안전한 전달·설정이나 작은 크기의 데이터 암호화 등에 활용한다
  • 모든 공개키 알고리즘이 직접적인 데이터 암호화 기능을 제공하는 것은 아니다

3.1.3 하이브리드 암호

하이브리드 암호

대칭키 암호와 공개키 암호를 조합한 방식이다. 대칭키 암호의 빠른 데이터 처리와 공개키 암호의 키 전달·설정상의 장점을 함께 활용한다

3.2 해시 함수

해시 함수(Hash Function)는 임의 길이의 데이터를 입력받아 고정 길이의 해시 값으로 변환하는 알고리즘이다

3.2.1 일방향 해시 함수

일방향 해시 함수(One-Way Hash Function)

입력으로부터 해시 값을 계산할 수 있지만, 주어진 해시 값에 대응하는 입력을 찾는 것은 계산적으로 매우 어렵도록 설계된 함수다

비밀번호 검증처럼 원래 값을 복호화하지 않고 입력값이 맞는지 확인해야 하는 경우에 활용된다. 다만 비밀번호 저장에는 일반적인 고속 해시를 단독으로 사용하는 대신, 솔트와 적절한 비용 설정을 적용한 비밀번호 전용 해싱 방식을 사용한다

3.3 메시지 인증코드

메시지 인증 코드(Message Authentication Code, MAC)

메시지가 전송 도중 변경되지 않았는지, 그리고 공유 비밀키를 알고 있는 통신 상대가 생성한 메시지인지를 확인하는 암호기술이다. 무결성과 메시지 출처 인증을 제공한다

3.4 전자서명

전자서명(Digital Signature)

서명이나 도장의 역할을 디지털 환경에 적용한 암호기술이다. 메시지의 무결성 확인, 서명자 인증, 부인방지를 지원한다

전자서명은 다음과 같은 위협에 대응한다

  • 가장: 다른 사람인 것처럼 행세하는 행위
  • 변경: 메시지 내용을 변조하는 행위
  • 부인: 자신이 서명한 사실을 나중에 부정하는 행위

3.5 의사난수(pseudo random number) 생성기

의사난수 생성기는 난수처럼 보이는 수열을 생성하는 알고리즘이다. 난수는 암호에서 키 생성이라는 중요한 역할을 담당한다

의사난수

컴퓨터의 결정적인 계산 절차로 생성하지만, 사용 목적에 맞게 난수처럼 보이도록 만든 값이다. 진정한 난수와는 다르며, 유한한 내부 상태를 사용하는 생성기는 결국 반복되는 주기를 갖는다

다만 주기가 길다는 이유만으로 암호학적으로 안전한 것은 아니다. 키 생성에는 예측이 어렵도록 설계된 암호학적으로 안전한 의사난수 생성기와 적절한 초기 입력이 필요하다






4. 암호 분석(암호 해독)

암호해독(Cryptanalysis)

암호 방식의 정당한 참여자가 아닌 제3자가 암호문과 이용 가능한 정보를 분석하여 평문이나 키를 알아내려는 시도다. 이러한 시도를 암호에 대한 공격이라고도 한다

암호해독에 참여하는 사람을 암호해독자, 제3자, 침해자 또는 공격자라고 한다

케르크호프스의 원리(Kerckhoffs’s Principle)

암호시스템의 안전성은 암호 알고리즘을 비밀로 유지하는 데 의존해서는 안 되며, 키의 비밀성에 의존해야 한다는 원리다

암호 분석는 다음 분류로 나누어진다

4.1 공격자가 이용할 수 있는 정보에 따른 분류

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

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

공격자가 암호문 C만 가지고 평문 P나 키 K를 알아내려는 공격이다

  • 아래 네 가지 공격 모델 중 공격자에게 제공되는 정보가 가장 적다
  • 평문의 통계적 성질이나 문장의 특성 등을 추정하여 해독한다
  • 이러한 의미에서 공격자에게 가장 불리한 조건이다

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

기지 평문 공격(Known-Plaintext Attack, KPA)

공격자가 일정량의 평문 P와 그에 대응하는 암호문 C를 알고 있는 상태에서 수행하는 공격이다. 알려진 평문 공격이라고도 한다

알고 있는 평문과 암호문의 관계를 분석하여 키 K나 다른 암호문의 평문을 추정한다

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

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

공격자가 평문 P를 선택하고, 그에 대응하는 암호문 C를 얻을 수 있는 상황에서 수행하는 공격이다

  • 공격자는 암호화 장치나 기능에 접근하여 선택한 평문의 암호화 결과를 얻는다
  • 선택한 평문과 암호문의 관계를 이용하여 키나 다른 메시지의 평문을 추정한다
  • COA나 KPA와 달리 단순히 수동적으로 도청하는 것이 아니라 암호화할 입력을 선택한다는 점에서 능동적 공격 모델이다

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

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

공격자가 암호문 C를 선택하고, 그에 대응하는 평문 P를 얻을 수 있는 상황에서 수행하는 공격이다

공격자는 복호화 장치나 기능을 이용하여 선택한 암호문의 복호화 결과를 얻고, 이를 바탕으로 암호를 분석한다

복호 오라클

  • 공격자가 선택한 암호문에 대해 복호화 결과를 제공하는 장치나 기능이다. 선택 암호문 공격에 대한 안전성은 강한 보안 요구다. 다만 실제 안전성은 암호 알고리즘뿐만 아니라 암호화 방식과 프로토콜의 구성에도 달려 있다. 또한 보안 모델에서는 일반적으로 해독 목표인 암호문 자체를 복호 오라클에 그대로 질의하는 것을 허용하지 않는다





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

5.1 안전성의 개념

계산적 안전성(Computational Security)

암호시스템을 공격하는 데 필요한 계산량이 매우 커서, 현실적으로 이용 가능한 시간과 자원으로는 공격에 성공하기 어려운 성질이다

무조건적 안전성(Unconditional Security)

공격자가 무한한 계산 능력을 갖더라도, 주어진 정보만으로는 보호 대상 정보를 알아낼 수 없는 성질이다. 공격자의 계산 능력에 제한을 두지 않고 안전성을 논한다

5.1.1 실용적인 안전성 판단 기준

암호 알고리즘을 개발하거나 선택할 때는 다음 기준 중 하나 또는 모두를 만족하는지 고려한다

  • 암호해독 비용이 암호화된 정보의 가치를 초과한다
  • 암호해독 시간이 정보의 유효 기간을 초과한다 알고리즘 개발자는 안전한 방식을 설계하고, 사용자는 자신의 요구에 맞는 알고리즘을 선택, 사용해야 한다

5.2 암호기술 평가

암호 알고리즘 평가

  • 정보보호제품에 탑재되는 암호 알고리즘 자체의 안전성을 평가한다
  • 이론적 안전성만을 평가한다

암호 모듈 평가

  • 암호 알고리즘을 이용하여 암호 서비스를 제공하는 모듈의 안전성을 평가한다
  • 알고리즘의 이론적 안전성과 별도로, 암호 서비스 기능을 실제로 제공하는 모듈이 안전하게 구현되었는지 평가한다

정보보호제품 평가

  • 암호 모듈을 탑재한 정보보호제품의 안전성을 평가한다

응용 시스템 평가

  • 각 제품을 상호 연동하여 구성한 전체 응용 시스템의 안전성을 평가한다