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

주  제: DES를 이용한 Message 암호화 및 MAC의 동작원리 프로그래밍

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

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

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

담당: 조응준 연구원 (B08호) <-- 질의사항 문의

* 제출 : www.kthard.com (계정 : netpublic 암호 : kthard.com)

올리기 전용 폴더내에 네트워크보안 텀 프로젝트 폴더에 제출

파일 형식은 학번_이름.zip ex) 20000000_아무개.zip

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

Sender가 receiver에게 메시지를 보낸다.

Sender는 send(...)함수를 사용하여 메시지를 전송한다고 가정하고 그 뒤 receiver는 receive(...)함수를 호출하여 메시지를 수신한다고 가정하자.

(main함수에서 sender(...), receiver(...)를 순차적으로 실행한다.) 이 때 송수신하는 메시지는 DES를 이용하여 암호화하며, md5를 이용해 Digest Message를 만든다.

전체적인 흐름도

## 필요한 key나 Initial Vector등은 각자 임의의 값을 사용한다.

# sender

1. message(M) 입력.

2. M으로 Digest Message(DM)를 만든다.

3. M과 DM을 encryption(E(...))하여 packet을 만든다. Packet = E(M||DM)

4. packet을 송신한다.

# Receiver

1. 수신한 packet을 decryption(D(...))하여 M과 DM으로 구분한다.

M||DM = D(packet)

2. 수신한 DM과 비교하기 위해, 수신한 M으로 새로이 DM을 만든다.

3. 수신한 DM과 새로 생성한 DM을 비교하여 M의 무결성을 확인한다.

4. 수신한 Message를 화면에 출력한다.

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

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

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