2011-1 네트워크보안 텀 프로젝트 1

주  제: 5장의 PGP 내용을 참고하여 PGP를 이용한 데이터 인증 및 보안 구현

제출일: 2011년 4월 27일까지 제출

개발 프로그래밍 언어: C 혹은 C++

제출방법: 모든 소스코드(소스코드내에 설명추가)를 지정된 site(추후공지)에 올려놓을 것 (제출 file들에 대한 설명 file을 추가하면 더욱 좋음)

* 제출 :  메일로 제출(ejcho@networking.khu.ac.kr)

메일 제목(네트워크보안_텀프_학번, ex) 네트워크보안_텀프_2010310649)

파일은 압축하여 첨부

* 절대로 타인의 프로그램을 카피하지 말 것. 확인후 관련된 학생 모두에게 불이익이 있음

Sender가 메시지 m을 receiver에게 전달하는 것으로 가정 (m은 문자열)

우선 sender는 m을 해쉬하여 m'를 구한뒤 sender의 비밀키(PR)로 암호화하여 E(m')PR을 계산한다. 그리고 원래 메시지 m과 E(m')PR을 합쳐 receiver에게 전달한다. 메시지를 수신한 receiver는 m과 E(m')PR을 분리한뒤 sender의 공개키를 이용하여 구한 m'와 자신이 가진 해쉬함수를 통해 생성한 m'를 비교하여 같을 경우 sender가 보낸 메시지로 인증한다.

암호화 알고리즘은 반듯이 비대칭키 방식을 사용!!

전체적인 흐름도

## 필요한 key나 Initial Vector등은 각자 임의의 값을 사용한다. 공개키와 비밀키는 공개 툴을 사용하여 생성하여도 무방, 해쉬함수는 SHA-1, MD5 중 사용

# sender

1. 메시지 m 입력

2. m으로 m의 해쉬값 m'를 계산.

3. m'를 sender의 비밀키를 이용해서 E(m')PR를 계산

4. m와 E(m')PR를 합쳐 receiver에게 전달

# Receiver

1. 수신한 데이터를 m과 E(m')PR 으로 분리

2. E(m')PR로부터 sender의 공개키를 이용하여 m'를 계산

3. 수신한 m을 해쉬함수를 통해 m'을 계산

4. 각각 계산한 m'이 같을 경우 sender가 보낸 메시지를 인증 완료하고 화면에 출력

위와 같은 프로그램을 만들고 각 단계에서 진행하는 encryption, decryption 그리고 hashing하는데 걸리는 시간을 측정하라.

(소스코드에는 의미 별로 구분되는 분기마다 주석을 달고,

또한 main, send, receive를 제외한 모든 함수에 함수의 기능, 입력인자의 의미, 반환값의 의미에 대해 주석을 달아야 한다.)

문의 사항

E-mail -  ejcho@networking.khu.ac.kr, simoon@networking.khu.ac.kr

전자정보관 352호 조응준, 문승일 조교에게 문의