정보보호개론 2장 암호프로토콜의 개요
프로토콜 : 어떤 목적을 달성하기 위해 2명 이상이 참여하는 유한한 일련의 단계
홀로 어떤 목적을 달성하기 위해 수행하는 일련의 단계를 알고리즘이라 함
프로토콜의 특성
- 사전에 알고 있어야 함
- 참여자 간에 동의하고 있어야 함
- 모호하지 않아야 함
- 완전성 : 완전해야 함
프로토콜 수행 : 프로토콜 임의의 단일 실행
암호 프로토콜 : 암호 기술을 사용하고 있는 프로토콜
암호 기술을 사용하는 목적 : 프로토콜의 각 메시지의 의미를 보장하고, 참여자 또는 제 3자가 부정을 하지 못하게 함
일반 프로토콜과의 차이점 : 공격자의 존재를 가정함
암호프로토콜 : 완전성 + 안전성
참여자 : 실제 사용자일 수도 있고 사용자가 참여하는 장치 또는 소프트웨어 일수도 있음
참여자는 크게 일반 참여자와 TTP(제3의 신뢰기관)으로 구분됨
- 일반 참여자는 프로토콜을 통해 얻고자 하는 것이 있는 이해당사자를 말하며
- TTP는 프로토콜의 실행 결과에 대한 어떤 이해관계가 없고 어떤 참여자와도 특별한 관계가 아니지만 수행을 원활하게 수행하기 위한 참여자를 말함
신뢰한다는 것은 프로토콜에서 정한 규칙대로 프로토콜을 수행한다는 것임 = 중재자
TTP의 종류
- 인라인 TTP: 프로토콜의 모든 과정에 항상 참여해야 하는 TTP( 모든 메시지는 항상 TTP를 경유함)
- 온라인 TTP : 프로토콜의 일부 과정에서 참여해야 함
- 오프라인 TTP : 실제 프로토콜 수행과정에서 참여하지 않지만 사전에 또는 사후에 필요에 따라 참여하는 TTP를 말함
암호프로토콜의 분류
- 자체 강화 프로토콜 : 중재자가 필요없는 프로토콜
- 중재 프로토콜 : 중재자가 프로토콜에 항상 참여함
- 판결 프로토콜 : 분쟁이 발생한 경우에만 중재자가 참여함
단일 실패점 : 중재자가 동작하지 않거나 중재자와 다른 참여자간에 통신이 중단되면 프로토콜 자체를 실행할 수 없음
표기법
암호화의 용도
- 비밀성을 보장하기 위해 사용
- 인증을 위해 사용
- 메시지의 구성요소를 바인딩하기 위해 사용
암호알고리즘은 암호프로토콜의 각 종 요구사항을 충족시키기 위해 사용하는 가장 기본적이며 핵심인 도구임.
암호프로토콜을 설계할 때는 이상적인 암호알고리즘의 존재를 가정함
키확립프로토콜 : 두 사용자가 대칭 알고리즘을 사용하여 원격에서 메시지를 비밀스럽게 교환하고 싶음. 그리고 키를 네트워크상에서 교환하고 싶음. 이것을 해주는 암호프로토콜을 키 확립 프로토콜이라 함
키 확립 프로토콜을 통해 얻어지는 비밀키는 단일 세션에 사용하기 위한 세션키임
세션키를 사용하는 이유
- 같은 키로 암호화된 암호문을 제한하기 위해
- 키가 노출되었을 때 누설되는 정보의 양을 제한하기 위해
- 키 저장에 관한 안전성 문제를 해결하기 위해
- 세션 간에 또는 응용 프로그램간에 독립성을 만들기 위해
키 확립 프로토콜의 요구사항
- 참여자는 의도한 다른 참여자들과 사용할 수 있는 새로운 키를 얻어야 함
- - 의도한 참여자 : 참여자가 인증되어야 함
- - 키의 용도를 확인할 수 있어야 함
- - 키 확인 : 다른 참여자들도 나와 같은 키를 가지고 있다는 것을 확인할 수 있어야 함
- - 키의 최근성 : 키가 최근에 생성되었다는 것을 알 수 있어야 함
- 새로운 키는 의도된 참여자외에 다른 참여자는 얻을 수 없어야 함
프로토콜에 대한 가정
- 참여자에 대한 가정 : 보통 일반 참여자들은 서로를 신뢰하지 않음
- 이상적인 암호알고리즘을 사용한다고 가정
- 공격자에 대한 가정
- 1. 공격자는 프로토콜을 통해 교환되는 모든 메시지를 도청할 수 있음
- 2. 공격자는 프로토콜의 진행을 막을 수 있음
- 3. 공격자는 프로토콜에 정상적으로 참여하고 있는 참여자일 수 있으며 제 3자일수도 있음
- 4. 오래된 세션키는 공격자들에게 노출될 수 있음
여분정보
일반적으로 암호문 내에 여분정보를 포함하면 복호화하였을 때 올바른 키를 사용하였는지 판단할 수 있음
분류
- 명백한 여분 정보 : 누구나 알 수 있는 정보
- 함축적 여분 정보 : 오직 송신자와 수신자만 알고있는 정보
명명기법
메시지의 의미를 명확하게 하기 위해 참여자의 식별자를 암호문 내에 포함하는 기법
앨리스는 이 메시지만 보면 Kab를 누구와 함께 사용할 암호키인지 알 수 없음
키 서버S가 앨리스와 밥간에 사용할 세션키 Kab를 앨리스에게 전달하는 방법(대칭키를 사용할 경우)
비대칭알고리즘을 사용하는 경우.
메시지의 최근성/시기적절성
암호프로토콜에서 메시지를 수신하면 다음에 정해진 행동을 취하기 위해 여러가지 검사를 하게됨
이때 보통 메시지의 최근성을 검사함.
메시지의 최근성은 메시지의 구성요소로부터 유추되어야 하며 어떤 메커니즘을 사용하던지 간에 재전송 메시지에는 포함될 수 없거나 재전송 메시지와 현재 메시지를 구별할 수 없어야 함.
메시지의 최근성을 보장하기 위한 식별자로 가장 널리 사용되는 것은 타임스템프와 넌스임
- 타임스템프 기반 기법 : 시간적 관계를 통해 메시지의 최근성을 보장하는 기법
- 난스 기반 기법 : 인과 관계를 통해 메시지의 최근성을 보장하는 기법
관계를 형성하는 과정에는 다음과 같은 세 종류의 참여자가 관여함
- 제공자 : 식별자를 제공하는 참여자
- 입증자 : 제공된 식별자를 메시지를 포함하시키는 참여자
- 검증자 : 메시지를 포함된 식별자를 통해 메시지의 최근성을 확인하는 참여자
타임스템프의 장점
제공자와 입증자가 동일인물이며 일방향 통신으로 최근성을 보장할 수 있음
타임스템프의 단점
- 입증자를 신뢰할 수 있어야 함
- 시스템간의 클럭 동기화가 요구됨
타임스템프 기법의 안전성을 결정하는 요인 : 클럭 동기화, 입증자의 정직성, 입증자의 능력
선행 메시지 : 수신자의 클럭이 송신자의 클럭보다 상대적으로 앞서있다고 가정하자.송신자가 보낸 메시지를 수신자는 유효한 메시지임에도 거부하게 됨. 그래서 클럭동기화를 해야함
사후 메시지 : 송신자 클럭이 수신자 클럭보다 상대적으로 앞서있다. 공격자는 이 사실을 알고있음. 송신자가 수신자에게 타임스템프된 메시지를 전송하면 공격자는 이 것을 가로채어 보관했다가 해당 타임스템프가 유효하게되면 이것을 전송하여 공격함
난스
난스란 특정한 순간을 증명하기 위해 생성된 값을 말함
보통 시도-응답 기법을 사용
시도-응답기법: 메시지 M에 대한 응답 메시지는 오직 M의 내용을 알고있는 경우에만 생성할 수 있도록 하는 기법으로써 다음과 같은 용도로 사용됨
1. 응답메시지의 최근성 확인
2. 응답자가 최근에 응답을 하였다는 것을 확인
3. 응답자 인증
난스 기법에는 최소한 두 개의 메시지가 필요함
카운터
카운터의 사용은 쌍방간에 동기화된 카운터의 존재를 가정하며 실제 사용은 타임스템프와 차이가 없음
장점 : 실제시간과 독립적으로 동기화 가능
단점 : 모든 사용자간에 동기화된 별도의 카운터가 필요함
암호프로토콜의 안전성
- 암호프로토콜은 그것의 보안 요구사항을 모두 충족하였을 때 안전한 프로토콜이라 함.
보안 모델: 프로토콜의 안전성을 논하기 위해 세우는 가정들의 집합을 말하며 이와 같은 공격중에 가장 중요한 것은 공격자의 능력임.
공격자의 능력
1. 모든 참여자간에 통신을 제어할 수 있음
2. 지난 프로토콜 수행을 통해 확립된 세션키를 얻을 수 있음.
3. 공격자가 참여자의 장기간 키를 알고 있음
공격자의 분류
1. 악의적인 내부자 존재 : 프로토콜의 적법한 참여자가 악의적인 행동을 할 수 있음
2. 정직한 내부자 : 적법한 참여자는 항상 적직하게 행동함. 보통 종류 1의 공격자를 가정하고 프로토콜의 안전성을 논함
프로토콜의 효율성
- 계산효율성 : eg) 공개키 암호알고리즘은 비밀키 암호알고리즘에 비해 상대적으로 많은 비용이 필요함
- 통신효율성 : 메시지의 수와 크기에 따라 변경됨(필요한 라운드 수를 줄이는 게 중요함)
- - 프로토콜의 한 라운드는 한 시점에서 병렬로 전달할 수 있는 모든 메시지를 포함한다.
'컴퓨터 공학' 카테고리의 다른 글
2장. 객체지향 개발 절차와 UML (0) | 2015.11.27 |
---|---|
객체지향개발론 1장 객체지향 프로그래밍 개념 재검토 (0) | 2015.11.27 |
정보보호개론 (0) | 2015.11.27 |
컴파일러 1장 (0) | 2015.11.27 |
Virtualbox 해상도 변경하는 법 (0) | 2015.11.27 |