현대 암호학

[현대 암호학] 02. 암호의 세계(1)

Uggjjini 2021. 6. 18. 13:16

1. 암호

암호에서 사용하는 이름

 

앨리스(Alice)(Bob)

일반적으로 앨리스는 메시지를 전송하고 밥이 수신을 하는 모델에 사용된다. 이 이름은 나중에 등장하게 될 비대칭 암호 시스템인 RSA를 만든 사람 중의 하나인 Ron Riverst1978년에 처음으로 사용하였다.

 

이브(Eve)

영어로 도청자(Eavesdropper)는 소극적인 공격자를 의미한다. 이브는 앨리스와 밥사이에 이루어지는 통신을 도청하기는 하지만 통신 중인 메시지를 수정하지는 못한다. 나중에 다루게 될 양자 암호에 있어서 이브는 통신환경을 나타내기도 한다.

 

맬로리(Mallory)

영어로 악의를 가진(Malicious) 공격자를 의미한다. 이브와는 다르게 멜로리는 메시지를 수정하고, 자신의 메시지로 대체하여 이전의 메시지를 재정송할 수 있는 능력을 가지고 있다. 이브의 공격을 막는 것보다. 맬로리의 공격을 막는 것이 휠씬 더 어렵다. 종종 Marvin이나 Mallet이라는 이름이 사용되기도 한다.

 

트렌트(Trent)

영어로 신뢰할 수 있는 중재자(Trusted Arbitrator)이며, 중립적인 위치에 있는 제3자이다. 사용되는 프로토콜에 따라 그 역할이 달라진다.

 

빅터(Victor)

영어명은 Verifier이며 Pat이나 Peggy라는 이름을 사용하기도 한다. 의도된 거래나 통신이 실제로 발생했다는 것을 검증할 때 등장한다.

 

 

암호화와 복호화

 

평문(Plaintext, P)

암호화하기 전의 메시지

 

암호문(Ciphertext, C)

암호화한 후의 메시지

 

암호기술(Encryption, Decryption, E/D)

중간에서 도청자가 암호문을 가로채어 갖게 된다고 하더라도, 특정 비밀값을 모른다면 암호문을 평문으로 복호화할 수 없도록 하는 기술

 

 

 

암호는 기밀성을 보장한다.

메일의 기밀성(Confidentiality 또는 비밀성)

  • 엘리스와 밥은 암호(Cryptography) 기술을 사용해서 메일의 내용을 비밀로 유지

 

 

해독

복호화

정당한 수신자가 암호문을 평문으로 바꾸는 것

 

암호 해독(Cryptanalysis)

수신자 이외의 사람이 암호문으로부터 평문을 복원 하려고 시도하는 것

 

암호 해독자(Cryptanalyst)

암호 해독을 하는 사람- 나쁜 의도를 가진 자- 암호 연구자

 

 


2. 암호화, 복호화의 기호적 표현

암호 시스템의 요소

  • 평문(Plaintext, P)
  • 암호문(Ciphertext, C)
  • 암호화 알고리즘(Encryption Algorithm, E)
  • 복호화 알고리즘(Decryption Algorithm, D)
  • (Key, K)

 

암호 시스템의 기호적 표현

 

C=Ek(P)

평문 P를 키 K를 이용하여 암호화하여(E) 암호문 C를 얻는다.

 

P=Dk(C)

암호문 C를 키 K를 이용하여 복호화하여(D) 평문 P를 얻는다.

 

다른 표현

C = Ek(P) = E(K,P)

P = Dk(C) = D(K,C)

 


3. 대칭 암호화 versus 공개키 암호화

 

대칭키 암호시스템 <=> 비대칭키 암호시스템

비밀키 암호시스템 <=> 공개키 암호시스템

 

 

암호 알고리즘(Encryption Algorithm)

 

암호화 알고리즘

평문을 암호문으로 만드는 절차

 

복호화 알고리즘

암호문을 평문으로 만드는 절차

 

암호 알고리즘

암호화 알고리즘 + 복호화 알고리즘

암호화와 복호화 알고리즘을 합한 알고리즘

 

 

(Key)

암호 알고리즘의 키는 다음과 같은 매우 긴 숫자

  • 203554728568477650354673080689430768
  • () (linux) $HOME/.ssh/known_hosts

2진화된 숫자로 변경하여 사용

 

암호 키의 안전

 

 

[참고] 암호의 안정성을 좌우는 하는 중요한 요소

 

* 암호화 키

* 암호화 키 랜덤하게 생성(큰수)

* 암호화 키 길이

 

 

 

대칭 암호(Symetric)와 비대칭(Asymetric) 암호

 

암호 시스템의 종류

1) 암호화 단위에 따른 분류

 

스트림 암호(Stream Chipher)

  • 스트림 암호(Stream Cipher)는 평문과 동일한 길이의 키스트림(key stream) 수열을 생성하여, 평문과의 XOR연산을 통하여 암ㆍ복호화를 수행한다.
  • 키스트림 수열을 생성할 때, 평문과 독립적으로 생성하는 경우를 동기식 스트림 암호라고 하며,
  • 반대로 평문이 키스트림 수열에 영향을 미치는 경우를 비동기식(혹은 자기동기) 스트림 암호라고 한다.
  • 구현 여건이 제약되는 환경에서 구현이 용이하며, 무선 통신 등의 환경에 주로 사용된다.
  • 암호화가 1비트 단위로 이루어지는 방식
  • 평문의 길이와 키의 길이가 동일한 one-time-pad 방식의 암호
  • : RC4, SEAL, A5/1, A5/2

 

블록 암호(Block Cipher)

  • 블록 암호(Block Cipher)는 평문을 고정된 크기의 블록단위로 암ㆍ복호화를 수행하며, 각 블록마다 동일한 키가 사용된다.
  • 블록 암호는 고정된 크기로 평문을 나누기 때문에, 원하는 길이를 맞추기 위하여 패딩(padding)이라는 기법을 이용한다.
  • 또한, 하나의 키로 여러 블록을 안전하게 처리하기 위하여 운용 방식(mode of operation)이라는 절차를 이용한다.
  • Shannon의 암호 이론에 의하면 전치와 환자를 반복시켜 평문의 통계적 성질이나 암호 키와의 관계가 나타나지 않아 안전한 암호를 구성할 수 있다.
  • 평문을 일정한 블록으로 나누고 블록 단위로 암호화 하는 방식
  • 예: DES(Data Encryption Standard), AES, SEED

 

 

2) 키의 형태에 따른 구분(/복호화 키가 같은지/다른지)

 

대칭 암호(Symmetric Cryptography)/비밀키 암호 시스템

  • 대칭키 암호(Symmetric-key Cryptography)는 암ㆍ복호화에 같은 암호 키를 사용하는 알고리즘이며, 송신자와 수신자는 암호 키가 노출되지 않도록 비밀로 관리해야 한다.
  • 대칭키 암호는 내부 구조가 간단한 치환과 전치의 조합으로 되어 있어 연산 속도가 빠르다는 장점이 있다.
  • 하지만, 송ㆍ수신자 간에 동일한 키를 공유해야 하므로 많은 사람들과의 정보 교환 시 많은 키를 관리해야 하는 어려움이 있다.
  • 암호화를 할 때 사용하는 키와 복호화할 때 사용하는 키가 동일한 암호 알고리즘
  • 이 키를 비밀키라고 한다.
  • (예) DES/3DES, AES, SEED, ARIA

 

비대칭 암호(Asymmetric Cryptography)/공개키 암호 시스템

  • 비대칭키 암호는 공개키 암호(Public-key Encryption)라고도 하며, 대칭키 암호와 달리 암,복호화에 서로 다른 키를 사용하는 알고리즘이다.
  • 송신자는 수신자의 공개키를 이용하여 암호화하며, 수신자는 자신의 공개키로 암호화된 암호문을 자신의 개인키로 복호화할 수 있다.
  • 공개키 암호는 수학적인 난제를 기반으로 설계되어 있고 암복호화에 복잡한 수학 연산을 사용하기 때문에, 대칭키 암호에 비해 효율성이 떨어질 수 있다.
  • 하지만, 여러 송신자가 하나의 공개키로 암호화를 수행하기 때문에 사용자가 많더라도 키를 관리하는 데에 유리하다.
  • 암호화를 할 때 사용하는 키와 복호화를 할 때 사용하는 키가 서로 다른 암호 알고리즘
  • 이 키를 개인키/공개키라고 한다.
  • (예) RSA 암호시스템, 타원곡선 암호시스템(ECC)

 

 

비대칭 암호에 대해서

비대칭 암호 요소

송신자: 한쌍의 키

수신자: 한쌍의 키

- 한쌍의 키(공개키, 개인키)

- 이 두 개의 키는 수학적으로 밀접한 연관

 

공개 키 암호(Public Key Cryptography)이름

공개 키는 공개를 하므로 이 암호 알고리즘을 공개키 암호라 한다.

 

 

[정리] 암호학

■ 대칭키 암호
* 스트림 암호
* 블록 암호
 
■ 비대칭키 암호
* 공개키 암호
* 공개키 서명
 
■ 해시 암호

 

 

하이브리드 암호 시스템(Hybrid Cryptosystem)

  • 대칭암호와 공개키 암호를 조합한 암호방식
  • 대칭암호와 공개키 암호의 장점을 조합

 


4. 그 밖의 암호기술

 

일방향 해시함수

  • 해시 함수(Hash Function)는 임의의 길이의 메시지를 입력으로 받아 고정된 길이의 해시 값을 출력하는 함수이다.
  • 해시 함수에는 암호 키가 사용되지 않기 때문에, 같은 입력에 대해서 항상 같은 해시 값을 얻을 수 있다.
  • 이러한 성질로 인해 입력 메시지에 대한 변경할 수 없는 증거 값을 만들어냄으로서, 주로 무결성을 제공하는 목적으로 사용된다.

 

해시값(Hash Value)이란?

  • 일방향 해시함수(One-way hash function)를 사용하여 계산한 값
  • 문서의 기밀성이 아니라 무결성(Integrity) 점검
  • (예) httpd.apache.org 사이트에서 제공되는 패키지의 해시값
  • (예) 리눅스에서 /etc/shadow 파일에 암호화된 암호 해시값

 

 

메시지 인증코드

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

  • 메시지가 생각했던 통신 상대로부터 온 것임을 확인하는 코드
  • (예) Ethernet Tailer 부분(CRC 코드) 비슷한 값

 

디지털 서명(Digital Signature)

  • 거짓 행세, 변경, 부인같은 위협을 방지하는 기술
  • (예) 이메일 서명

 

부인(Repudiation)

통신 사실을 나중에 아니라고 하는 것

 

 

의사난수 생성기(Pseudo Random Number Generator: PRNG)

난수열을 생성하는 알고리즘

  •  RNG : H/W RNG
  •  PRNG : S/W RNG

 


5. 암호학자의 도구상자

암호학자의 도구상자(Cryptographer’s Toolbox)

  • 대칭 암호
  • 공개키 암호
  • 일방향 해시함수
  • 메시지 인증코드
  • 디지털 서명
  • 의사 난수 생성기

 

보안 위협과 암호 기술에 의한 방지

 

기밀성(Confidentiality)

허락되지 않는 사용자 또는 객체가 정보의 내용을 알수 없도록 하는 성질

=> 암호화

 

무결성(Integrity)

허락되지 않는 사용자 또는 객체가 정보를 함부로 수정할 수 없도록 하는 성질

=> 일방향 해시함수

 

인증(Authentication)

사용자 또는 객체의 디지털 정체성을 식별

=> 메시지 인증코드

 

부인방지(Non-repudiation)

정보를 보낸 사람이 나중에 정보를 보냈다는 것을 부인하지 못하도록 함

=> 디지털 서명

 

 


6. 스테가노 그라피와 디지털 워터마킹

디지털 정보 은닉 방법들

 

크립토그래피(Cryptography)

  • 암호화 알고리즘을 작성해 상대방이 이해할 수 없도록 메시지를 작성하고 그 안에 비밀을 숨기는 기법.
  • 메시지를 읽지 못하게 함.

 

스테가노그래피(Steganography)

  • 메시지의 내용을 읽지 못하게 하는 것이 아니라, 메시지의 존재 자체를 숨기는 기법
  • 메시지를 숨겨 넣는 방법을 알게 되면 메시지의 내용은 금방 노출
  • 정상적으로 보이는 객체 안에 메시지를 숨김. 무해해 보이는 객체에 버젓이 비밀 메시지를 은릭해 전달하는 것

 

디지털 워터 마킹(Digital Watermarking), 디지털 워터마크(Digital Watermark)

  • 사진이나 동영상 같은 각종 디지털 데이터에 저작권 정보와 같은 비밀 정보를 삽입하여 관리하는 기술
  • 그림이나 문자를 디지털 데이터에 삽입하여 원본 출처 및 정보를 추적할 수 있음
  • 삽입된 워터마크는 재생이 어려운 형태로 보관

 

[참고] 인포섹(SK Infosec)이 꼽은 최고의 무료 스테가노그래피 도구들

 


7. 암호와 보안 상식

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

  • 비밀 암호 알고리즘을 만들어서 사용할 것이 아니라, 공개되어 있는 강한 암호 알고리즘을 사용해야 한다.
  • 암호알고리즘의 비밀은 반드시 폭로된다.
  • 강한 암호 알고리즘을 만드는 것은 매우 어렵다.

 

숨기는 것에 의한 보안
암호 알고리즘을 비밀로 해서 보안을 유지하려고 하는 행위
전문가가 볼 때 위험하고, 어리석은 행위로 간주

 

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

  • 사용자는 암호의 강도와는 상관없이 ‘암호화되어 있다’는 사실만으로 안심하는 경향
  • 약한 암호를 사용하려면 처음부터 암호 따위를 사용하지 않는 것이 좋다.

 

3. 어떤 암호라도 언젠가는 해독

  • 모든 키를 하나로 빠짐없이 시도해 봄으로서 언젠가는 반드시 해독
  • 암호문이 해독되기까지 시간과 암호를 사용하여 지키고 싶은 평문의 가치와의 밸런스(tradeoff)가 중요

 

일회용 패드
절대로 해독되지 않는 암호 알고리즘
현실적으로 활용하기에는 적합하지 않은 암호

 

 

4. 암호는 보안의 아주 작은 부분

  • 사회공학적인 공격방법은 암호의 강도 그 자체와는 아무런 관계가 없다.
  • 보안 시스템의 강도는 보안시스템을 구성하는 여러 링크 중 가장 약한 링크의 강도와 같다.
  • 가장 약한 링크는 암호가 아니라 사람