제 8장 메시지 인증 코드 메시지가 보낸 그대로 왔는가?.

Slides:



Advertisements
Similar presentations
정보의 공유와 보호 정보의 공유와 관리 2. 정보 보호 기술과 지식 재산권.
Advertisements

최성락 최인석 나주한. 특징 : 공개키 n, g 를 사용하여 키 분배가 가능. (g 는 Zn 의 primitive element) Discrete logarithm 에 기반. 두 명 이상의 경우에도 적용가능. 키 교환 없이도.
HTTPS Packet Capture Tutorial
제 14장 SSL/TLS 안전한 통신을 위해.
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
재료수치해석 HW # 박재혁.
인터넷의활용.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
최윤정 Java 프로그래밍 클래스 상속 최윤정
Ch.07-5 xml-rpc 사용하기 김상엽.
Chapter 3 Symmetric Key Crypto
Secure Socket Layer.
컴퓨터 프로그래밍 기초 [Final] 기말고사
교과목 소개 정보보호.
암호학 응용 Applied cryptography
30장 메시지 보안, 사용자 인증과 키 관리 30.1 메시지 보안 30.2 전자서명 30.3 사용자 인증 30.4 키 관리
File Depender 중간 발표.
제10장 메시지 인증과 해쉬 함수 Message Authentication and Hash Functions
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Error Detection and Correction
10 장 데이터 링크 제어(Data Link Control)
제 12장 난수 예측 불가능성의 원천.
상관함수 correlation function
TCP/IP Socket Programming…
P2P시스템에 대해서 (peer to peer)
프로그래밍 개요
웹어플리케이션보안 암호프로그래밍, crypto-js
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
자바스크립트 암호 프로그래밍 Javascript Cryptography Programming
8장. 상호 배타적 집합의 처리.
전자서명의 형태 수기서명 디지털서명. 전자서명의 형태 수기서명 디지털서명 전자서명의 필요성.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
보고서 (due 5/8) 다음과 같은 방식으로 문제를 해결하시오. 문제 분석 알고리즘 작성 프로그램 작성 테스트 및 검증
8장. spss statistics 20의 데이터 변환
16 장 네트워크 보안 : 방화벽과 VPN 16.1 개요 16.2 기밀성 16.3 전자 서명 16.4 인터넷 보안
KERBEROS.
ARM Development Suite v1.2
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
제 13장 PGP 암호 기술을 조합하는 기술.
10 장 데이터 링크 제어(Data Link Control)
10 장 데이터 링크 제어(Data Link Control)
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
화상대화 매뉴얼 한국지역정보개발원.
제 Ⅲ부 키, 난수, 응용 기술.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
7주차: Functions and Arrays
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
9 장 오류 검출 및 오류 정정 9.1 오류 종류 9.2 검출 9.3 오류 정정 9.4 요약.
공인인증로그인 매뉴얼.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
함수, 모듈.
9 브라우저 객체 모델.
상관계수.
공인인증로그인 매뉴얼.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
암호 시스템 (Crypto system) 신효철
CCIT 네트워크 발표 정보보호학과 평문 사이트와 SSL 사이트, SSL strip과 데이터 변조를 이용한 로그인 취약점
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
제 1장 서론 1.#.
C++ Espresso 제15장 STL 알고리즘.
6 객체.
공인인증로그인 매뉴얼.
Presentation transcript:

제 8장 메시지 인증 코드 메시지가 보낸 그대로 왔는가?

8.1 주요 내용 이 장에서는 메시지 인증 코드에 대해 설명하도록 한다. 메시지 인증 코드를 사용하면 자신에게 도착한 메시지가 송신자가 보낸 그대로 인지를 확인할 수 있다.

메시지 인증으로 막을 수 있는 두 가지 위협

8.2 메시지 인증 코드

8.2.1 올바른 송금 의뢰 앨리스와 밥은 사람이 아니라 양쪽 모두가 은행이라고 해보자. 즉, 은행 이름이 하나는 앨리스이고 다른 한 은행의 이름은 밥이다. 어느 날 앨리스 은행으로부터 밥 은행에 네트워크를 통해서 송금 의뢰가 도착했다. 밥 은행이 읽어 보니, 계좌 Alice-7317에서 계좌 Bob-8282로 1000만 원을 송금할 것 이라는 내용이었다.

믿을 수 있는가? 이 송금 의뢰는 정말로 앨리스 은행이 보낸 것일까? 앨리스 은행은 송금 의뢰 같은 것은 하지도 않았는데, 적극적 공격자 맬로리가 앨리스 은행인 것처럼 거짓 행세를 하며 송금 의뢰를 한 것인지도 모른다.

메시지의 무결성과 인증 지금 필요한 것은 송금 의뢰(메시지)의 「무결성」과 「인증」이라는 2개의 성질이다. 메시지의 무결성(integrity)이란, 「메시지가 변경되지 않았다」는 성질을 가리킨다. 메시지 인증(authentication)이란 「메시지가 올바른 송신자로부터 온 것이다」라는 성질을 가리킨다.

8.2.2 메시지 인증 코드란 기술은 메시지에 붙여지는 작은 데이터 블록을 생성하기 위해 비밀키를 이용하는 방법이다. 이 기술을 이용하면 전송되는 메시지의 무결성을 확인하여, 메시지에 대한 인증을 할 수 있다. 이 코드를 보통 첫 글자를 따서 MAC이라 부른다.

메시지 인증코드 MAC 메시지 인증 코드는, 임의 길이의 메시지와 송신자와 수신자가 공유하는 키라는 2개의 입력을 기초로 해서, 고정 비트 길이의 출력을 계산하는 함수이다. 이 출력을 MAC 값이라 부른다.

일방향 함수와 메시지 인증코드 일방향 해시 함수로 해시 값을 계산할 때는 키를 사용하지 않았다. 메시지 인증 코드에서는 송신자와 수신자가 공유하는 키를 사용한다.

일방향 해시 함수와 메시지 인증 코드의 비교 메시지 일방향 해시 함수 해시 값 메시지 인증코드 MAC 값 키

8.2.3 메시지 인증 코드를 이용한 인증 순서 (1) 송신자 앨리스와 수신자 밥은 사전에 키를 공유해 둔다. (2) 송신자 앨리스는 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용). (3) 송신자 앨리스는 수신자 밥에게 송금 의뢰 메시지와 MAC 값을 보낸다. (4) 수신자 밥은 수신한 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).

(5) 수신자 밥은 앨리스로부터 수신한 MAC 값과 계산으로 얻어진 MAC 값을 비교한다.

메시지 인증 코드의 이용 순서 = ≠ 메시지 인증코드 계산된 수신된 송신자 앨리스 은행 수신자 밥 은행 송금의뢰 메시지 MAC 값 공유키 수신된 비교 인증 성공 인증 실패 = ≠ 송신자 앨리스 은행 수신자 밥 은행 전송 MAC

8.2.4 메시지 인증 코드의 키 배송 문제 메시지 인증 코드에서는 송신자와 수신자가 키를 공유할 필요가 있다. 이 키는 적극적 공격자 맬로리에게 넘어가서는 안 된다. 만약 이 키가 맬로리의 손에 들어간다면, 맬로리도 MAC 값을 계산할 수 있기 때문에, 자유롭게 변경이나 거짓 행세를 하는 것이 가능해진다.    실제로 대칭 암호 때의 「키 배송 문제」와 같은 문제가 메시지 인증 코드에도 일어난다.

8.3 메시지 인증 코드 이용 예 메시지 인증 코드가 실제 세계에서 사용되고 있는 예를 소개해보자.

8.3.1 SWIFT SWIFT는 Society for Worldwide Internet Financial Telecommunication(국제은행간 통신협회)의 약자로 국제적인 은행 간의 송금을 안전하게 행하기 위해 1973년에 설립된 단체이다. SWIFT에서는 무결성을 확인하고 메시지를 인증하기 위해서, 메시지 인증 코드를 사용하고 있다.

8.3.2 IPsec IPsec은 인터넷 기반의 통신 프로토콜인 IP(Internet Protocol)에 보안 기능을 첨가한 것이다. IPsec에서는 통신 내용의 인증과 무결성을 확인하기 위해 메시지 인증 코드를 이용하고 있다.

8.3.3 SSL/TLS SSL/TLS는 우리가 웹에서 온라인 쇼핑을 할 때 사용되는 통신 프로토콜이다.

TCP/IP 프로토콜 계층에서 보안장치의 상대적 위치

8.4 메시지 인증 코드의 실현 방법 메시지 인증 코드를 이용하는 방법은 여러 가지가 있다

8.4.1 일방향 해시 함수를 써서 실현 첫 번째로 메시지 다이제스트는 대칭 암호를 이용해서 암호화 할 수 있다 두 번째로 메시지는 공개키를 이용하여 암호화 할 수 있다 비밀 값을 이용하여 메시지 다이제스트를 생성하는 경우도 있다.

일방향 해시 함수를 이용한 메시지 인증

일방향 해시 함수를 이용한 메시지 인증

일방향 해시 함수를 이용한 메시지 인증

8.4.2 블록 암호를 이용한 인증코드 트리플 DES나 AES와 같은 블록 암호를 사용해서 메시지 인증 코드를 실현할 수 있다.   블록 암호의 키를 메시지 인증 코드의 공유 키로 사용하고, CBC 모드(제 4장 참조)를 써서 메시지 전체를 암호화한다. 메시지 인증 코드에서는 복호화를 할 필요가 없으므로 마지막 블록만 제외하고 나머지 블록들은 모두 폐기한다. 이렇게 얻어진 마지막 블록을 MAC 값으로 이용한다.

블록 암호를 이용한 인증코드

8.4.3 기타 인증코드 만들기 스트림 암호나 공개 키 암호 등을 사용해서 메시지 인증 코드를 실현할 수 있다. 코드를 생성하는 알고리즘에는 여러 가지가 있다. NIST 명세 FIPS PUB 113 에서는 DES 사용을 권장한다. DES 를 이용해서 메시지를 암호화 하고 암호문의 끝부분에 있는 여러 비트들을 코드로 사용한다. 16 비트 혹은 32 비트 코드가 전형적인 크기이다.

8.5 HMAC

8.5.1 HMAC란 최근에 SHA-1 같은 암호알고리즘을 이용하여 출력한 해시 값으로부터 MAC 을 만드는 기술에 관심이 집중

관심을 가지게 된 이유 암호기술이 첨가된 해시 함수는 일반적으로 대칭 암호 알고리즘인 DES보다 소프트웨적으로 속도가 빠르다. 암호기술이 포함된 해시 함수에 대한 코드들을 쉽게 구할 수 있다. 대칭 암호 알고리즘이나 MAC 에서 사용하는 대칭 암호 알고리즘까지 수출 규제를 받고 있는 데 반해 암호적 해시함수에 대해서는 미국이나 다른 나라들이 수출 규제를 하고 있지 않다.

HMAC(Hashed MAC) HMAC은 일방향 해시 함수를 이용해서 메시지 인증 코드를 구성하는 방법인데, HMAC에서는 사용하는 일방향 해시 함수를 단 한 종류로 정해 놓고 있는 것은 아니다. 강한 일방향 해시 함수라면 뭐든지 HMAC에 이용할 수 있다. 장래 새로운 일방향 해시 함수가 고안된다면 그것을 사용할 수도 있다. 이와 같은 형태로 만들어진 알고리즘을 모듈형 알고리즘이라고 한다.

8.5.2 HMAC 설계 목표 수정하지 않고 쓸 수 있는 해시 함수들을 만든다. 특히 소프트웨어에서 잘 돌아가고 코드를 무료로 제공하고 널리 쓰일 수 있도록 한다. 더 빠르고 더 안전한 해시함수가 있거나 필요하다면 기존의 해시함수를 쉽게 교환할  수 있도록 한다. 심각하게 기능저하를 유발하지 않고 해시함수의 원래 성능을 유지하도록 한다. 키들을 보다 쉽게 다루고자 한다. 내장된 해시 함수가 충분히 강하다면 인증 메커니즘의 강도에 대한 암호해독의 정도를 확실히 파악할 수 있도록 한다.

8.5.3 HMAC의 순서 HMAC에서는 다음 순서로 MAC 값을 계산한다

일방향 해시 함수를 사용한 메시지 인증 코드의 예(HMAC)

8.6 메시지 인증 코드에 대한 공격

8.6.1 재전송 공격 송신자 앨리스 은행 수신자 밥 적극적 공격자 맬로리 재전송 공격 재전송 도청・보존 도청・보존해 둔 입금 의뢰 메시지 앨리스에 의한 바른 MAC값 적극적 공격자 맬로리 재전송 공격 도청・보존해 둔 메시지와 MAC값을 반복 송신 재전송 도청・보존

재전송 공격을 막을 수 있는 방법 순서 번호(sequence number) 타임스탬프(timestamp) 비표(nonce) 송신 메시지에 매회 1씩 증가하는 번호 타임스탬프(timestamp) 송신 메시지에 현재 시각을 넣는다 비표(nonce) 메시지를 수신하기에 앞서 수신자는 송신자에게 일회용의 랜덤한 값(비표)을 건네준다.

8.6.2 키의 추측에 의한 공격 메시지 인증 코드에 대해서도 전사공격과 생일 공격이 가능하다. 공격자에 의해 송수신에서 사용된 키를 추측당해서는 안 된다. 메시지 인증 코드에서 사용하는 키를 생성할 때에는 암호학적으로 안전하고 강한 의사난수 생성기를 사용해야 한다.

8.7 메시지 인증 코드로 해결할 수 없는 문제 메시지 인증 코드로는 해결할 수 없는 사항 제3자에게 증명하기 부인 방지

8.7.1 제삼자에 대한 증명 앨리스로부터 메시지를 받은 밥이 「이 메시지는 앨리스가 보낸 것이다」라는 것을 제삼자인 검증자 빅터에게 증명하고 싶다고 하자. 그러나 메시지 인증 코드로 그 증명을 행할 수는 없다.

8.7.2 부인 방지 밥이 MAC 값이 딸린 메시지를 받았다고 하자. 밥은 「이 메시지는 앨리스로부터 온 것이다」라고 알 수 있다. 그러나 위에서 말한 것처럼 그것을 검증자 빅터에게 증명할 수는 없다.

8.7.2 부인 방지 즉, 송신자 앨리스는 의도적으로 혹은 자신이 불리하게 될 가능성 등을 고려하여 「나는 밥에게 그런 메시지를 보내지 않았어」라고 빅터에게 주장할 수도 있다는 것이다. 이와 같은 주장을 부인(repudiation)이라고 한다.