[네트워크 보안] Chapter 02. 암호학

15 분 소요

2.1 암호의 개념

1. 암호의 역사

  1. 고대 암호
    • BC 400~500년경 고대 그리스의 군사들은 스키테일(scytale) 암호라고 불리는 전치암호(Transposition Cipher, 문자의 위치를 서로 바꾸는 암호)를 사용한 기록이 있다.
    • BC 50년경 시저 암호 (치환암호 - substitution cipher)
  2. 근대 암호
    • 근대 암호의 이론적 기초가 된 논문은 1920년 프리드먼(Freidman)이 발표한 『일치 반복률과 암호 응용』과 1949년 섀넌(Shannon)이 발표한 『비밀 시스템의 통신이론』을 들 수 있다.
    • 2차대전 중 Enigma 암호
    • 코드북 암호
  3. 현대 암호
    • 1976년 스탠퍼드 대학의 디피(Diffie)와 헬만(Hellman)은 『암호의 새로운 방향』(Directions in Cryptography)이라는 논문에서 처음으로 공개키 암호의 개념을 발표
    • 이어 1978년 메사추세스 공과대학(MIT)의 리베스트(Rivest), 샤미르(Shamir), 아델먼(Adelman)이 소인수 분해 문제에 기반을 둔 RSA 공개키 암호를 개발
    • DES(Data Encryption Standard)는 1977년에 미국의 연방 정보처리 표준 규격(FIPS)으로 채택된 대칭 암호
    • AES(Advanced Encryption Standard) - DES를 대신한 새로운 표준 대칭 암호 알고리즘

2. 암호 시스템

  1. 암호 기술
    • 암호 기술은 평문을 해독 불가능한 형태로 변형하거나 또는 생성된 암호문으로부터 해독 가능한 형태로 변환하기 위한 원리, 수단, 방법 등을 취급하는 기술로 공개된 네트워크에서 불법적인 도청을 방지하기 위하여 사용한다.
    • 암호 기술은 사용하는 키의 종류에 따라 암호화키와 복호화키가 같은 대칭키 암호 알고리즘과 암호화키가 복호화키가 다른 공개키 암호 알고리즘으로 구분되며, 대칭키 암호 알고리즘은 변환하는 방법에 따라 블록 암호 알고리즘과 스트림 암호 알고리즘으로 구분된다.
  2. 암호 시스템 구성 요소
    • 암호화하고 복호화하는 일련의 과정에 필요한 요소를 모두 합쳐서 암호 시스템이라고 한다. 암호 시스템의 구성요소로는 평문(plaintext), 암호문(Ciphertext), 암호화(복호화) 알고리즘(encryption/decryption algorithm), 키(key)로 구성된다.
    • 암호 시스템은 일반적으로 다음과 같은 세 가지의 요건을 충족시켜야 한다.
      ① 암호화키에 의하여 암호화 및 복호화가 효과적으로 이루어져야 한다.
      ② 암호 시스템은 사용이 용이하여야 한다.
      ③ 암호화 알고리즘 자체보다는 암호 키에 의한 보안이 이루어져야 한다.
  3. 암호 기술의 미래 양자 암호(Quantum Cryptography)
    • 양자 암호는 안전한 통신을 위한 암호체계이다. 1984년 베넷(C. H. Benett)과 브라사드(G. Brassard)가 제안하였으며 기존에 있던 대부분의 암호체계가 수학적 복잡성에 기반을 두는데 비해, 양자 암호는 양자역학적 성질을 이용하여 암호에 사용되는 원 타임 패드를 생성하는 이상적인 방법 중 하나이다.
    • 양자 암호통신의 구성
    1. 양자채널을 이용하여 안전하게 키를 분배하고
    2. 일반 통신망을 통해 키를 이용하여 안전한 암호통신을 수행한다.

3. 암호 알고리즘

  • 암호화와 복호화 알고리즘
  • 대칭키 암호 알고리즘(블록 암호와 스트림 암호)

    구분 블록 암호 스트림 암호
    방식 블록이라 부르는 고정된 길이의 자료를 단위로 암호화하는 방식 평문과 같은 길이의 키 스트림을 생성하여 평문과 키 이진수열을 비트단위로 배타적 논리합(bitwise exclusive OR) 이진연산으로 결합하여 암호문 생성.
    한 비트씩 암호화 및 복호화 하는 방식
    장점 구현이 쉽다 오류확산의 위험이 없다.
    이동 통신 환경에서 구현이 용이
    단점 블록내의 오류 확산 위험이 있다.
    필요하지 않은 초기 값을 설정.
    시간이 많이 걸린다.

4. 암호 프로토콜

  1. 암호 프로토콜
    • 정보통신 환경에서 인증 및 무결성 문제를 해결하기 위한 보안 프로토콜
    • 기본 암호 프로토콜(개인 식별 및 인증, 전자서명 등)과 발전된 암호 프로토콜(전자화폐, 전자결제, 전자선거 등)로 분류할 수 있다.
  2. 암호 프로토콜에 대한 공격
    • 수동적 공격
      ①메시지 도청: 전송되는 메시지를 도중에 가로챔
      ②트래픽 분석: 암호화된 메시지 내용 파악을 못하더라도 송수신 측 신원 파악 가능
    • 능동적 공격
      ①메시지 변조: 전송되는 메시지들의 순서를 바꾸거나 일부분을 다른 메시지로 대체
      ②삽입 공격: 공격자가 정당한 송신자로 가장하여 특정 수신자에게 메시지를 전송
      ③삭제 공격: 정상적인 통신시설의 사용과 권리를 방해하는 DoS 공격으로 특정 수신자에게 전송하는 메시지의 전부 또는 일부를 삭제
      ④재전송 공격(replay): 공격자가 이전에 특정 송신자와 수신자간에 행해졌던 통화내용을 도청하여 보관하고 있다가 나중에 재생하여 전송
  3. 암호알고리즘에 대한 공격
    • 공격의 종류
      ①암호문 단독 공격(Ciphertext only attack): 암호 해독자는 단지 암호문 C만을 갖고 이로부터 평문 P이나 키 K를 찾아내는 방법으로 평문 P의 통계적 성질, 문장의 특성 등을 추정하여 해독하는 방법이다.
      ②기지 평문 공격(Known plaintext attack): 암호 해독자는 일정량의 평문 P에 대응하는 암호문 C를 알고 있는 상태에서 해독하는 방법으로 암호문 C와 평문 P의 관계로부터 키 K나 평문 P를 추정하여 해하는 방법이다.
      ③선택 평문 공격(Chosen plaintext attack): 암호 해독자가 사용된 암호기에 접근할 수 있어 평문 P를 선택하여 그 평문 P에 해당하는 암호문 C를 얻어 키 K나 평문 P를 추정하여 암호를 해독하는 방법이다.
      ④선택 암호문 공격(Chosen Ciphertext attack): 암호 해독자가 암호 복호기에 접근할 수 있어 암호문 C에 대한 평문 P를 얻어내 암호를 해독하는 방법이다.

5. 키 관리

  1. 개요
    • 아무리 견고한 암호 시스템이라 할지라도 만약 키 관리가 소홀하다면 그 암호 시스템은 무용지물이 될 수 있다.
    • 키 관리의 목적은 대칭키 암호 시스템 또는 공개키 암호 시스템에서 사용되는 암호학적 키들을 안전하게 다루기 위해 키의 생성, 등록, 확인, 분배, 설치, 저장, 파생, 보관, 취소, 말소, 폐기 등과 같은 일련의 절차를 제공하는 것이다.
  2. 대칭키와 공개키 비교
    • 대칭키는 암호화할 때와 복호화할 때의 키가 같은 것을 의미한다. 이때의 대칭키는 비밀키(secret key)와 같은 것을 말한다.
    • 비밀키라는 용어를 사용하는 암호화할 때와 복호화할 때 사용되는 키가 같기 때문에 암호문이 암호문으로서 효과를 가지기 위해서는 발신자와 수신자 사이의 키에 대한 정보가 비밀로 유지되어야 하기 때문이다.
    • 반면에 암호화할 때와 복호화할 때의 키가 다른 것은 비대칭키(공개키)라고 한다.
    • 대칭키 암호시스템과 공개키 암호시스템의 비교
    구분 대칭키 암호 시스템 공개키 암호 시스템
    키의 상호관계 암호화키=복호화키 암호화키≠복호화키
    암호화키 비밀키 공개키
    복호화키 비밀키 개인키
    대표적인 예 DES/AES RSA
    비밀키 전송 필요 불필요
    키 개수 n(n-1)/2 2n
    안전한 인증 어려움 쉬움
    암호화 속도 고속 저속
    경제성 높음 낮음
    전자서명 복잡 간단
    장점 암호화/복호화 속도가 빠름.
    키 길이가 짧음
    키의 분배가 용이함.
    사용자의 증가에 따라 관리할 키의 개수가 상대적으로 적음.
    여러 가지 분야에서 응용이 가능함
    단점 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많음.
    키 변화의 빈도가 높음
    암호화/복호화 속도가 느림.
    키의 길이가 김

2.2 대칭키 암호 시스템(Symmetric-key cryptosystem)

1. 대칭키 암호 방식 특징

  • 대칭키 암호(Symmetric-key cryptosystem) 방식에서는 암호화에 사용되는 암호화키와 복호화에 사용되는 복호화키가 동일하다는 특징이 있으며, 이 키를 송신자와 수신자 이외에는 노출되지 않도록 비밀히 관리해야 한다.
  • 우리가 일반적으로 사용하는 암호라는 의미로 ‘관용 암호’라고도 하며 키를 비밀히 보관해야 한다는 의미로 ‘비밀키 암호(Secret-key cryptosystem)’라고도 한다.
  • 대칭키 암호는 암호화 연산 속도가 빨라서 효율적인 암호 시스템을 구축할 수 있다.
  • 비밀키(대칭키) 암호시스템의 특징은
    ①오랜 역사를 지니고 있어 기존의 정보기술과 상호운용이 쉽다.
    ②데이터 처리량이 크다.
    ③암호화키의 크기가 공개키 암호시스템보다 상대적으로 작다.
    ④알고리즘 내부 구조가 간단하여 시스템 환경에 적절한 암호 알고리즘 개발이 용이하다.
    ⑤정보교환 당사자 간에 동일한 키를 공유해야 하므로 키 관리가 어렵다.

2. 블록 암호(Block Cipher) 알고리즘

  1. 개념
    • 암호문을 만들기 위해 평문을 일정한 단위로 나누어서 각 단위마다 암호화 과정을 수행하여 블록단위로 암호문을 얻는 대칭 암호화 방식이다.
    • 각 블록의 연산에는 동일한 키가 이용된다.
  2. 블록 암호 알고리즘 구조
    • 블록 암호의 이론적 토대는 전치와 치환을 반복함으로써 평문과 암호문으로부터 키에 대한 정보를 이끌어 내기 어렵게 하는 것
    1. 페이스텔 구조
      • 3라운드 이상이며, 짝수 라운드로 구성된다. 이러한 구조는 라운드 함수와 관계없이 역변환이 가능하며(즉, 암·복호화 과정이 같은), 두 번의 수행으로 블록간의 완전한 확산이 이루어지며 알고리즘의 수행속도가 빠르고, 하드웨어 및 소프트웨어 구현이 용이하고, 아직 구조상에 문제점이 발견되고 있지 않다는 장점을 지니고 있다. 대표적 암호로 DES(Data Encryption Standard)가 있다.
    2. SPN (Substitution Permutation Network) 구조
      • 치환과 순열을 반복적으로 사용하는 구조
      • 암호화 함수와 복호화 함수가 다름
      • 하드웨어나 소프트웨어 구현시 페이스텔 구조보다 비용이 큼
      • 대표적 암호로 AES(Advanced Enryption Standard)가 있음
  3. 블록 암호 요소의 특징
    • 블록 암호 알고리즘을 특징하는 요소로는 다음과 같은 것이 있으며, 이러한 요소에 의해 전체 블록 암호의 안전성이 결정된다.
      ①블록 크기: 입출력 블록의 비트수로, 일반적으로 더 클수록 안전하다고 보지만, 암·복호화 과정에서 시간이 더 걸린다. 주로 64비트가 널리 쓰였지만, 최근에는 128비트를 채택하고 있다.
      ②키 크기: 비밀키의 비트수로, 일반적으로 더 클수록 안전하지만 이 역시 라운드키를 생성할 때 시간이 더 걸린다.
      ③라운드키 생성: 비밀키로부터 각 라운드에 사용할 키를 생성하는 과정으로, 유사시에 라운드키가 누출되더라도 비밀키는 안전해야 한다.
      ④라운드 함수: 암·복호화를 수행하는 핵심함수로 다양한 암호분석을 거쳐 안전하게 만들어져야 한다.
      ⑤라운드 수: 한 번의 암·복호화를 위해 반복하는 라운드 함수의 횟수로, 많을수록 더 안전하다고 보지만 암·복호화 과정에서 시간이 더 걸린다.
      • 근본적으로 한 번의 라운드 함수로 충분한 안전성을 확보할 수는 없기에 라운드 함수에 대한 다양한 암호분석을 통해 충분한 안전성을 얻을 수 있도록 라운드 횟수를 결정한다.
  4. 블록 암호 알고리즘 종류
    ➊데이터 암호 표준(DES, Data Encryption Standard)
    › DES는 대칭키 암호 중 하나인 64비트 블록 암호이며 56비트 비밀키를 사용한다. 1977년에 미국 NBS(National Bureau of Standards, 현 NIST)에서 이 알고리즘을 미국 표준 블록 암호 알고리즘으로 채택하였다.
    ➋트리플 데이터 암호 표준(Triple DES)
    › DES에 대한 전수공격으로 인해 더 이상 안전하지 않다는 것이 증명되어 DES를 보완하기 위해 고안된 알고리즘이 Triple DES이다.
    › Triple DES는 3개의 키 값을 사용하고 DES 16라운드의 3배에 해당하는 48라운드를 수행하여 암호화 강도를 높였다.

    ➌고급 암호화 표준(AES, Advanced Encryption Standard)
    › AES는 미국 표준 블록 암호였던 DES의 안전성에 문제가 제기됨에 따라 2000년 새로운 미국 표준 블록 암호로 채택된 128-비트 블록 암호이다.
    › AES의 암호화 과정은 DES와 달리 SPN 구조 채택
    › 키의 비트 길이 - 128, 192, 256비트 길이
    ➍국제 데이터 암호화 알고리즘(IDEA, International Data Encryption Algorithm)
    › 스위스에서 1992년 세지아 레이(Xuejia Lai), 제임스 메시(James Messey)에 의해 제안된 처리 속도가 빠름
    › IDEA는 128비트 키, 8라운드, 64비트 블록
    › RSA와 더불어 PGP에 사용되는 방식
    ➎아리아(ARIA)
    › 아리아(ARIA)는 우리나라의 국가보안기술연구소에서 개발한 블록 암호 체계이다. ARIA라는 이름은 학계(Academy), 연구소(Research Institute), 정부 기관(Agency)이 공동으로 개발한 특징을 함축적으로 표현한 것이다.
    › 2004년 산업자원부의 KS 인증(KS X 1213:2004)을 획득하여 현재까지 우리나라의 국가 표준 암호 알고리즘으로 2010년 웹 표준 중 하나가 되었다.
    ➏시드(SEED)
    › 시드(SEED)는 전자 상거래, 금융, 무선 통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해 1999년 2월 한국정보보호진흥원(KISA)과 국내 암호 전문가들이 순수 국내 기술로 개발한 128-비트 블록 암호이다.
    › SEED128은 1999년 9월 정보통신단체표준(TTA)으로 제정되었으며, 2005년에는 국제 표준화 기구인 ISO/IEC에서 국제 블록 암호 표준으로 제정하였으며, IETF에서도 표준으로 제정되었다.
    ➐하이트(HIGHT, HIGh security and light weigHT)
    › HIGHT는 RFID, USN 등과 같이 저전력·경량화를 요구하는 컴퓨팅 환경에서 기밀성을 제공하기 위해 2005년 KISA, ETRI 부설 연구소 및 고려대가 공동으로 개발한 64-비트 블록 암호이다.
    › 이 알고리즘은 2006년 12월 정보통신단체표준(TTA)으로 제정되었으며, 2010년 ISO/IEC 국제 블록 암호 표준으로 제정되었다.
    ➑LEA(Lightweight Encryption Algorithm)
    › 2012년 국가보안기술연구소가 개발한 ‘128비트 경량 고속 블록 암호 알고리즘’
    › LEA는 현재 가장 많이 쓰이는 미국 연방 표준 알고리즘 AES(Advanced Encryption Standard)보다 1.5~2배 빠르다. 다양한 정보보호 서비스에서 대용량 데이터를 빠르게 처리하거나 스마트폰 보안, 사물인터넷(IoT) 등 저전력 암호화에 널리 쓸 수 있다.
    ➒블로피시(Blowfish)
    › 1993년 브루스 슈나이어가 설계한 개발한 대칭키 암호 알고리즘으로 가변적인 키 길이(32~448비트)를 가지며, 구현이 간단하고 알고리즘의 안전성을 분석하기 쉬우며,
    › 키의 크기가 가변적이므로 안전성과 성능의 요구에 따라 유연하게 사용이 가능하다.
  5. 블록 암호 모드
    • 긴 평문을 암호화하기 위해서는 블록 암호 알고리즘을 반복해서 사용하여 긴 평문 전부를 암호화할 필요가 있다. 이처럼 반복하는 방법을 블록 암호의 모드(mode)라고 함
    • ①ECB 모드: Electronic CodeBook mode
      • 간단, 고속, 병렬처리가 가능하나 암호문 블록의 삭제나 교체에 의한 평문의 조작이 가능하고 재전송 공격이 가능하여 사용을 하지 않는다.
    • ②CBC 모드: Cipher Block Chaining mode(암호 블록연쇄 모드)
      • 평문의 반복은 암호문에 반영되지 않고 임의의 암호문 블록을 복호화 할 수 있으나, 비트 단위의 에러가 있는 암호문을 복호화하면 1블록 전체와 다음 블록의 대응하는 비트가 에러가 되는 단점이 있다. SSL/TLC 등 보안프로토콜에 많이 사용된다.
    • ③CFB 모드: Cipher-FeedBack mode(암호 피드백 모드)
      • 패딩이 필요없고 복호화는 병렬 처리가 가능. 재전송 공격이 가능하다. 현재는 사용을 하지 않는다.
    • ④OFB 모드: Output-Feed Back mode(출력 피드백 모드)
      • 패딩이 필요없고 암호화/복호화의 사전 준비를 할 수 있으나, 병렬처리가 불가하고 적극적 공격자가 암호문 블록을 비트 반전시키면 대응하는 평문 블록이 비트 반전된다. CTR 모드를 사용하는 편이 낫다.
    • ⑤CTR 모드: CounTeR mode(카운터 모드)
      • 패딩이 필요없고 암호화/복호화의 사전준비를 할 수 있으며 병렬처리가 가능하다. 그러나 적극적 공격자가 암호 블록을 비트 반전시키면 대응하는 평문 블록이 비트 반전된다.
  6. 블록 암호 공격 기법
공격 기법 개념
차분공격
(Differential Cryptanalysis)
1990년 비함(Biham)과 샤미르(Shamir)에 의하여 개발된 선택된 평문공격법으로, 두 개의 평문 블록들의 비트의 차이에 대하여 대응되는 암호문 블록들의 비트의 차이를 이용하여 사용된 암호열쇠를 찾아내는 방법이다.
선형공격
(Linear Cryptanalysis)
1993년 마쓰이 미쓰루에 의해 개발되어 알려진 평문 공격법으로, 알고리즘 내부의 비선형 구조를 적당히 선형화시켜 열쇠를 찾는 방법이다.
전수공격법
(Exhaustive key search)
1977년 디피(Diffie)와 헬만(Hellman)이 제안한 방법으로 암호화할 때 일어날 수 있는 모든 가능한 경우에 대하여 조사하는 방법으로 경우의 수가 적을 때는 가장 정확한 방법이지만, 일반적으로 경우의 수가 많은 경우에는 구현 불가능한 방법이다.
통계적 분석
(Statistical analysis)
암호문에 대한 평문의 각 단어의 빈도에 관한 자료를 포함하는 지금까지 알려진 모든 통계적인 자료를 이용하여 해독하는 방법이다.
수학적 분석
(Mathematical analysis)
통계적인 방법을 포함하며 수학적 이론을 이용하여 해독하는 방법이다.

3. 스트림 암호(Stream Cipher) 알고리즘

  • 스트림 암호는 블록 단위로 암·복호화되는 블록 암호와는 달리 이진화된 평문 스트림과 이진 키스트림 수열의 XOR 연산으로 암호문을 생성하는 방식
  • GSM의 통신 암호화에 사용됨 (A5/1)
  • 대표적 스트림: RC4

2.3 공개키 암호 시스템(Public-key cryptosystem)

1. 대칭/공개키 암호

  1. 대칭 암호
    • 「암호화 키」와「복호화 키」 동일
  2. 공개 키 암호
    • 「암호화 키」와「복호화 키」 다르다
    • 「암호화 키」를 가지고 있는 사람이라면 누구든지 암호화 할 수 있음
    • 하지만 「암호화 키」를 가지고 있어도 복호화할 수는 없다
    • 복호화할 수 있는 것은 「복호화 키」를 가지고 있는 사람 뿐임
    • 암호화 키 → 공개키, 복호화 키 → 개인키
    • 대칭 암호에 비해 처리 속도가 매우 느림
    • 응용: 디지털 서명, 키 교환 등

2. 공개키 암호 알고리즘 종류

  1. RSA(Rivest, Shamir, Adleman)
    • RSA는 1978년 라이베스트(Rivest), 샤미르(Shamir) 그리고 애들먼(Adleman)에 의해 설계된 암호로서 디피(Diffie)와 헬만(Hellman)이 제안한 공개키 암호시스템에 대한 개념이 반영된 것으로, 소인수 분해의 어려움에 그 기반을 둔 공개키 암호이다.

      가. RSA에 의한 암호

      RSA에서는 평문도 키도 암호문도 숫자도 변환하여 실행한다.
      암호문 = (평문)E mod N
      (E, N): 공개 키
      E와 N이라는 한 쌍의 수를 알면 누구라도 암호화를 행할 수 있다.
      E와 N이 RSA 암호화에 사용되는 키
      E와 N은 면밀한 계산을 통해 생성

      나. RSA에 의한 복호화

      복호화도 간단한다.
      평문 = (암호문)D mod N
      (D, p, q): 개인 키
      p x q = N (p와 q는 매우 큰 소수)
      D도 면밀한 계산을 통해 생성
      E와 D는 밀접한 연관관계

  2. 엘가말(ElGamal)
    • 이산 대수의 문제의 어려움에 기반을 둔 최초의 공개키 암호 알고리즘인 엘가말(ElGamal)은 1984년 스탠퍼드 대학의 암호 학자 테하르 엘가말(Tehar ElGamal)에 의해 제안되었다.
    • 엘가말로 암호화하면 메시지의 길이가 두 배로 늘어나는 특징이 있다. 하지만 암호화할 때 난수를 이용하므로 같은 메시지에 대해 암호화하여도 암호화할 때마다 서로 다른 암호문을 얻게 되는데, 이것은 정보보호 측면에서 큰 장점이 된다.
  3. 타원 곡선 암호 시스템(ECC, EIIIPtic Curve Cryptosystem)
    • 1985년 코블로치, 밀러 등이 만든 공개키 암호화 방식이며 RSA 대안 암호화 방식으로 이산대수를 이용한다.
    • 타원곡선상의 이산대수 문제를 통해 제안된 암호 시스템으로 RSA 알고리즘보다 작은 비트 수를 가지고 동일한 암호의 강도를 지닐 수 있다. 스마트 카드나 휴대폰 등 키의 길이가 제한적인 무선 환경이나 작은 메로리를 가지고 있는 시스템에 적합하다.

2.4 해시 함수(Hash Function)

1. 해시 함수의 특징 및 성질

  1. 특징
    • 해시 함수는 임의의 길이를 갖는 메시지를 입력 받아 고정된 길이의 출력값으로 압축시키는 함수이다. 암호 알고리즘에는 키가 사용되지만, 해시 함수는 키를 사용하지 않으므로 같은 입력에 대해서는 항상 같은 출력이 나오게 된다.
    • 이러한 함수를 사용하는 목적은 입력 메시지에 대한 변경할 수 없는 증거 값을 뽑아냄으로써 메시지의 오류나 변조를 탐지할 수 있는 무결성을 제공하는 목적으로 주로 사용된다.
  2. 일방향 해시 함수의 성질
    ①일방향성: 해시 값을 이용해 원래의 입력 값을 추정하는 것은 계산상으로 불가능해야 함
    ②임의의 길이 메시지로부터 고정 길이의 해시 값을 계산한다
    ③메시지가 다르면 해시 값도 다르다
    ④해시 값을 고속으로 계산할 수 있다
    ⑤충돌내성: 충돌을 발견하기 어려워야 함

    약한 충돌 내성

    어느 메시지의 해시 값이 주어졌을 때, 그 해시 값과 같은 해시 값을 갖는 다른 메시지를 발견해 내는 것이 매우 곤란한 성질

    강한 충돌 내성

    해시 값이 일치할 것 같은, 서로 다른 2개의 메시지를 발견해 내는 것은 매우 곤란한 성질

2. 일방향 해시 함수의 응용 분야

  1. 소프트웨어의 변경 검출
  2. 패스워드를 기초로 한 암호화
  3. 메시지 인증 코드
  4. 전자서명
  5. 의사난수 생성기
  6. 일회용 패스워드

3. 해시 알고리즘 종류

  1. MD(Message Digest)4와 MD5
    • MD4

      Rivest가 1990년에 만든 일방향 해시 함수
      128비트의 해시 값
      Dobbertin에 의해 충돌 발견 방법이 발견됨
      현재는 안전하지 않다

    • MD5

      Rivest가 1991년에 만든 일방향 해시 함수
      128비트의 해시 값
      암호해독에 취약함을 보여주는 여러 가지 암호해독 방법들이 개발
      MD5가 완전히 뚫린 것은 아님
      사용을 권장하지 않는다

  2. SHA(Secure Hash Algorithm)
    • SHA-1

      SHA (Secure Hash Algorithm)
      1993년에 미국의 연방정보처리 표준
      160비트의 해시 값
      SHA-1
      1995년에 발표된 개정판
      메시지 길이 상한: 264비트 미만
      2005년에 강한 충돌내성이 깨짐

    • SHA-256

      256 비트의 해시 값
      메시지의 길이 상한 264비트 미만

    • SHA-384

      384 비트의 해시 값
      메시지의 길이 상한 2128비트 미만

    • SHA-512

      512 비트의 해시 값
      메시지의 길이 상한 2128비트 미만

  3. RIPEMD-160
    • RIPEMD-160은 1996년 한스 도버틴(Hans Dobbertin), 안톤 보셀라예(Antoon Bosselaers), 바르트 프레닐(Bart Preneel)에 의해 만들어진 160비트의 해시 값을 갖는 일방향 해시 함수이다.
  4. HAS-160
    • 국내에서 개발된 대표적인 해시 함수인 HAS-160은 2000년 12월 국내 해시 함수 표준(TTAS.KO-12.0011/R1)으로 채택되었다.
  5. Hash_DRBG
    • Hash_DRBG는 해시 함수를 이용하여 의사난수를 생성하는 난수발생기이다.
    • 난수는 암호학적으로 대칭키 암호 알고리즘의 비밀키, 스트림 암호 알고리즘의 초기화 벡터, 공개키 암호 알고리즘 RSA의 큰 소수 등을 생성할 때 사용되는 것으로 난수를 생성하는 과정의 안전성에 결함이 있다면 이는 암호 알고리즘 자체의 안전성에 영향을 미치게 된다.

2.5 메시지 인증

1. 메시지 인증 코드(Message Authentication Code) 특성

  • 메시지 인증이란 ‘메시지가 올바른 송신자로부터 온 것이다’ 라는 성질을 가리키는 것으로 메시지 인증 코드를 사용하면 변경과 거짓 행세를 찾아낼 수 있다.
  • 메시지 인증 코드란 무결성을 확인하고 메시지에 대한 인증을 하는 기술이다.
  • MAC은 임의 길이의 메시지와 송신자와 수신자가 키라는 2개의 입력을 기초로 해서 고정 비트 길이의 출력(MAC 값)을 계산하는 함수이다.

2. MAC의 구현

  • 일방향 해시 함수를 이용하여 메시지 인증 코드를 구현할 수 있다. 그 중 하나로 HMAC이 있다.
  • HMAC은 일방향 해시 함수로 메시지 인증 코드를 구성하는 방법이다
    (RFC2104). HMAC의 H는 Hash를 의미한다
  • HMAC에서는 사용하는 일방향 해시 함수를 단 한 종류로 한정하는 것은 아니다
  • 강한 일방향 해시 함수라면 뭐든지 HMAC에 이용할 수 있다

3. MAC으로 해결할 수 없는 문제

  • 제 3자에 대한 증명
  • 부인 방지

2.6 PKI 및 전자서명(Digital signature)

1. 전자서명 배경

  1. 전자서명 특성
    • 전자서명(digital signature)은 종래의 인감도장 혹은 서명(sign)처럼 개인의 고유성을 주장하고 인정받기 위해 전자적 문서에 서명하는 방법이다.
    • 또한 수신자가 받은 내용이 위조 또는 삭제되지 않았는지와 상대방의 신분 확인 등을 하는 방법이다.
    • 전자서명은 다음과 같은 특성(조건)을 만족하여야 한다

      ①위조 불가(unforgeable): 서명은 서명자 이외의 다른 사람이 생성할 수 없어야 한다.
      ②서명자 인증(authentic): 서명은 서명자의 의도에 따라 서명된 것임을 확인할 수 있어야 한다.
      ③부인 방지(non-repudiation): 서명자가 자신이 서명한 사실을 부인할 수 없어야 한다.
      ④변경 불가(unalterable): 서명한 문서의 내용을 변경할 수 없어야 한다.
      ⑤재사용 불가(not reusable): 하나의 문서의 서명을 다른 문서의 서명으로 사용할 수 없어야 한다.

  2. 전자서명 방법
    • 소개
    • 메시지에 직접 서명하는 방법
    • 메시지의 해시 값에 서명하는 방법

2. 전자서명 알고리즘

  1. RSA 전자서명
  2. ElGamal 전자서명
  3. DSS(Digital Signature Standard) 전자서명
    • DSS(Digital Signature Standard)는 1991년, NIST에서 제안한 전자서명 표준안으로 핵심 알고리즘으로 DSA(Digital Signature Algorithm)을 사용한다.
  4. Schnorr 전자서명
  5. KCDSA(Korean Certificate-based Digital Signature Algorithm) 전자서명
    • KCDSA는 1997년 한국 표준 디지털 서명으로 채택된 알고리즘이다.

3. 공개키 기반 구조(PKI, Public Key Intrastructure)

  1. PKI의 개념
    1. 정의
      공개 키의 소유자를 디지털 인증서를 통해 인증하는 시스템으로서
      공개 키를 효과적으로 운용하기 위해 정한 많은 규격이나 절차들의 총칭
    2. 공개키 기반구조(PKI)의 객체 구성
      ①공개키 인증서를 발급, 폐지하는 인증기관(CA)
      ②공개키와 인증서 소유자 사이의 관계를 확인하는 등록기관(RA)
      ③인증서를 발급받고, 전자문서에 서명하고 암호화를 할 수 있는 공개키 인증서의 소유자
      ④인증기관의 공개키를 사용하여 인증경로 및 전자서명을 검증하는 사용자
      ⑤공개키 인증서와 CRL을 저장하는 저장소
  2. 공인인증서(X.509)
    1. 개념
      • 공인인증서는 전자 서명의 검증에 필요한 공개키에 소유자 정보를 추가하여 만든 일종의 전자 신분증(증명서)으로 인증기관의 개인키를 사용하여 변조 불가능하게 한 개체의 데이터이다.
      • 공인인증서는 개인키와 한 쌍으로 존재한다.
      • 현재 가장 널리 쓰이는 디지털 인증서 형태는 X.509 인증서이다.
      • 인증서의 종류
        • 범용 공인인증서

          모든 분야에서 이용
          인터넷뱅킹, 온라인증권, 전자상거래, 전자정부 민원서비스, 국세청 홈텍스, 전자입찰/조달, 온라인교육, 예비군 등 다양한 분야에서 활용
          소정의 수수료

        • 용도제한 공인인증서

          은행 및 보험, 신용카드 업무, 정부 민원업무 등 특정분야에서만 이용
          해당 기관이 고객에게만 발급
          무료

    2. X.509
      ITU X.509(IETF RFC3280) 국제 표준
      인증서의 생성·교환을 수행할 때 사용
      많은 애플리케이션에서 지원
    3. X.509 인증서의 내용
  3. 전자서명 인증관리 체계
    • 우리나라는 1999년 전자서명법을 제정하고 공인전자서명 인증 체계(National Public Key Infrastructure, NPKI)와 2001년 전자정부법에 의해 정부 인증기관에서 발급하는 행정전자서명 인증체계(Government Public Key Infrastructure, GPKI)를 마련하였다.

4. 스테가노그래피, 디지털 워터마크와 DRM

  1. 스테가노그래피(Steganography)
    • 전달하려는 정보를 이미지, 오디오 등의 파일에 인간이 감지할 수 없도록 숨겨져 상대방에게 전달하는 기술의 총칭이다.
    • 기존의 암호화 방법은 메시지를 암호화하여 정보를 보호하는 반면에 스테가노그래피는 비밀정보를 매체에 은닉하여 그 정보의 존재 자체를 감추는 보안 기술이다.
  2. 디지털 워터마크(digital watermark)
    • 디지털 워터마크는 데이터 소유자의 저작권과 소유권을 보호하기 위해 영상에 특정한 코드나 유형 등을 삽입하는 기술을 말한다. 디지털 콘텐츠에 사용자만이 알 수 있는 아이디(ID) 또는 정보 등의 부호를 삽입하거나, 영상·음성 등의 신호에 특정한 코드나 유형 등을 삽입하는 기술을 말한다.
  3. DRM(Digital Rights Management)
    • 디지털 컨텐츠의 불법 복제와 유포를 막고 저작권 보유자의 익명과 권리를 보호해 주는 기술과 서비스를 말한다.

댓글남기기