1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO THỰC TẬP-XÂY DỰNG ỨNG DỤNG MÃ HÓA MD5 & 3DES TRAO ĐỔI THÔNG TIN TRÊN MẠNG

20 850 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 341,5 KB

Nội dung

Tuy không còn được sử dụng nhưng ý tưởng của phương pháp này vẫn được tiếp tục trong những thuật toán hiện đại • Transposition hoán vị: phương pháp mã hóa trong đó các kí tự trong văn bả

Trang 1

BỘ MÔN MẠNG VÀ TRUYỀN THÔNG

ĐỒ ÁN LẬP TRÌNH MẠNG NGÀNH CÔNG NGHỆ THÔNG TIN

ĐỀ TÀI :

XÂY DỰNG ỨNG DỤNG MÃ HÓA MD5 & 3DES

TRAO ĐỔI THÔNG TIN TRÊN MẠNG

Sinh viên : Trần Văn Huynh

: Trần Văn Nghĩa

Cán bộ hướng dẫn : ThS Mai Văn Hà

Đà Nẵng 03/2013

Trang 2

Đề cương chi tiết

I.1 Mục tiêu của đề tài 4

I.2 Hướng giải quyết 4

I.3 Triển khai 4

CHƯƠNG II CƠ SỞ LÝ THUYẾT 4

I Khái niệm về mã hóa và giải mã 5

I.1 Giới thiệu 5

I.2 Các nguyên lý cơ bản của quá trình bảo mật và mã hóa 5

I.3 Khái niệm về chìa khoá 6

I.4 Thuật toán mã hóa 6

I.5 Hàm hash 7

II Tổng quan về lập trình mạng 8

II.1 Mô hình Client-Server 8

II.1.1 Dựa vào chức năng có thể chia thành các loại server như sau 9

II.1.2 Ưu điểm và nhược điểm của mô hình Client-Server 9

II.2 Kiến trúc mô hình Client-Server 10

II.2.1 Các chế độ giao tiếp 10

II.3 Socket 11

II.3.1 Khái niệm Sockets 11

II.3.2 Phân loại Sockets 12

II.4 Giao Thức TCP 12

II.4.1 Đặc điểm của giao thức TCP( có kết nối) 12

II.4.2 Hoạt động của giao thức TCP 13

II.4.3 Thiết lập kết nối 13

II.4.4 Truyền dữ liệu 13

II.4.5 Kết thúc kết nối 14

II.4.6 Cấu trúc gói tin TCP 14

III Thuật toán mã hóa MD5 15

III.1 Giới thiệu 15

III.2 Mô tả thuật toán MD5 16

III.3 Các bước mã hóa thông điệp 18

III.4 Ứng dụng của MD5 Trong thực tế 19

III.5 Tổng kết 19

IV Thuật toán mã hóa 3DES 19

IV.1 Giới thiệu 19

VI.2 Các mẫu hoạt động của 3DES 20

VI.3 Ưu và nhược điểm của 3DES 20

VI.4 Ứng dụng của thuật toán DES trong thực tế 20

CHƯƠNG III XÂY DỰNG CHƯƠNG TRÌNH 20

CHƯƠNG IV KẾT QUẢ 21

CHƯƠNG V KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

21 CHƯƠNG I TỔNG QUAN VỀ ĐỀ TÀI

Trang 3

I.1 Mục tiêu của đề tài

- Xây dựng được một chương trình mã hóa MD5 và 3DES

- Tìm hiểu về bảo mật trong java

- Tìm hiểu các hàm băm

- Tìm hiểu gói java lập trình mạng

I.2 Hướng giải quyết

- Tìm hiểu cơ chế hoạt động của thuật toán MD5 và 3DES

- Xây dựng chương trình bằng ngôn ngữ java

- Cài đặt các công cụ cần thiết hỗ trợ chương trình

- Từ đó tìm ra hướng giải quyết và viết chương trình mô phỏng cho bài toán

I.3 Triển khai

Chương trình mô phỏng mã hóa và giả mã hai thuật toán MD5 và 3DES trong mô hình Client – Server

CHƯƠNG II CƠ SỞ LÝ THUYẾT

Trang 4

I Khái niệm về mã hóa và giải mã

I.1 Giới thiệu

Mật mã và bảo mật trong hệ thống viễn thông là một lĩnh vực có nhiều thuật ngữ có thể làm cho nhiều người "ngơ ngác": như "hash function", "one-time pad" hay Rijndael Thread này nhằm giải thích các khái niệm thường dùng trong ngành mật mã học (cryptography) với

hy vọng có thể giúp ích cho những ai mong muốn tìm hiểu về lĩnh vực này

Trước tiên mật mã học (crypto) là một nghệ thuật nhằm giấu thông tin, bằng cách chuyển

đổi (encrypt) thông tin thành dạng thông tin không đọc được (cipher text) Chỉ có những

người giữ chìa khóa (key) bí mật mới có thể giải mã (decrypt) thông tin thành dạng thông tin

có thể hiểu được (plain text) Thông tin đôi khi bị giải mã mà không cần biết khóa bí mật

Ngành học nghiên cứu về việc bẻ khóa (attack/crack/hack) này còn gọi là cryptanalysis.

Hình 1:Sơ đồ mã hóa và giải mã.

I.2 Các nguyên lý cơ bản của quá trình bảo mật và mã hóa

 Tính bí mật (confidentiality/privacy): tính chất này đảm bảo thông tin chỉ được

hiểu bởi những ai biết chìa khóa bí mật

 Tính toàn vẹn (integrity): tính chất này đảm bảo thông tin không thể bị thay đổi

mà không bị phát hiện Tính chất này không đảm bảo thông tin không bị thay đổi, nhưng một khi nó bị nghe lén hoặc thay đổi thì người nhận được thông tin có thể biết được là thông tin đã bị nghe lén hoặc thay đổi Các hàm một chiều (one-way function) như MD5, SHA-1, MAC được dùng để đảm bảo tính toàn vẹn cho thông tin

 Tính xác thực (authentication): người gửi (hoặc người nhận) có thể chứng minh

đúng Người ta có thể dụng một password, một challenge dựa trên một thuật toán mã hóa hoặc một bí mật chia sẻ giữa hai người để xác thực Sự xác thực này

có thể thực hiện một chiều (one-way) hoặc hai chiều (multual authentication)

 Tính không chối bỏ (non-repudiation): người gửi hoặc nhận sau này không thể

chối bỏ việc đã gửi hoặc nhận thông tin Thông thường điều này được thực hiện thông qua một chữ ký điện tử (electronic signature)

Trang 5

 Tính nhận dạng (identification): người dùng của một hệ thống, một tài nguyên

sở hữu một chứng minh thư (identity) như là một chìa khóa ban đầu (primary key) identity này sẽ xác định những chức năng của người dùng, giới hạn cho phép của người dùng cũng như các thuộc tính liên quan (thường gọi chung là credential) Identity có thể là login, dấu vân tay, ADN, giản đồ võng mạc mắt,

âm thanh

I.3 Khái niệm về chìa khoá

 Password: mật khẩu, là một hay nhiều từ mà người dùng phải biết để được cấp

quyền truy cập Trong thực tế, mật khẩu do người dùng tạo ra thường không đủ độ

an toàn để được dùng trực tiếp trong thuật toán Vì vậy, trong bất cứ hệ thống mã hóa dữ liệu nghiêm túc nào cũng phải có bước chuyển đổi mật khẩu ban đầu thành chìa khóa có độ an toàn thích hợp Bước tạo chìa khóa này thường được gọi là key derivation, key stretching hay key initialization

 Key Derivation Function: là một hàm hash (sẽ giải thích rõ hơn ở phần sau) được

thiết kế sao cho chìa an toàn hơn đối với tấn công kiểu brute-force hay cổ điển Hàm này được thực hiện lại nhiều lần trên mật khẩu ban đầu cùng với một số ngẫu nhiên để tạo ra một chìa khóa có độ an toàn cao hơn Số ngẫu nhiên này gọi

là salt, còn số lần lặp lại là iteration

 Keylength (Keysize): Độ dài (hay độ lớn) của chìa khóa Nói một chìa khóa có độ

dài 128 bit có nghĩa chìa đó là một số nhị phân có độ dài 128 chữ số Một thuật toán có chìa khóa càng dài thì càng có nhiều khả năng chống lại tấn công kiểu brute-force

 Brute-force attack: (exhaustive key search): phương pháp tấn công bằng cách thử

tất cả những chìa khóa có thể có Đây là phương pháp tấn công thô sơ nhất và cũng khó khăn nhất Theo lý thuyết, tất cả các thuật toán hiện đại đều có thể bị đánh bại bởi brute-force nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thời gian dài Vì thế có thể coi một thuật toán là an toàn nếu như không còn cách nào khác để tấn công nó dễ hơn là brute-force Ngoài ra để chống lại tấn công này, chìa khóa bị mật được thay đổi một cách thường xuyên hơn

I.4 Thuật toán mã hóa

 Cổ điển(cái này ngày nay vẫn hay dùng trong trò chơi tìm mật thư).

Substitution (thay thế): phương pháp mã hóa trong đó từng kí tự (hoặc từng

nhóm kí tự) của văn bản ban đầu được thay thế bằng một (hay một nhóm) kí

tự khác Tuy không còn được sử dụng nhưng ý tưởng của phương pháp này vẫn được tiếp tục trong những thuật toán hiện đại

Transposition (hoán vị): phương pháp mã hóa trong đó các kí tự trong văn bản

ban đầu chỉ thay đổi vị trí cho nhau còn bản thân các kí tự không hề bị biến đổi

 Hiện đại

Trang 6

Symmetric cryptography (mã hóa đối xứng): Tức là cả hai quá trình mã hóa và

giải mã đều dùng một chìa khóa Để đảm bảo tính an toàn, chìa khóa này phải

được giữ bí mật Vì thế các thuật toán loại này còn có tên gọi khác là secret

key cryptography (hay private key cryptography), tức là thuật toán mã hóa

dùng chìa khóa riêng (hay bí mật) Các thuật toán loại này lý tưởng cho mục đích mã hóa dữ liệu của cá nhân hay tổ chức đơn lẻ nhưng bộc lộ hạn chế khi thông tin đó phải được chia sẻ với một bên thứ hai

Block ciphers (thuật toán khối): Trong đó từng khối dữ liệu trong văn bản ban

đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài Độ dài mỗi khối gọi là block size, thường được tính bằng đơn vị bit Ví dụ thuật toán 3-Way có kích thước khối bằng 96 bit Một số thuật toán khối thông dụng là: DES, 3DES, RC5, RC6, 3-Way, CAST, Camelia, Blowfish, MARS, Serpent, Twofish, GOST

 Stream ciphers (thuật toán dòng): trong đó dữ liệu đầu vào được mã hóa từng bit

một Các thuật toán dòng có tốc độ nhanh hơn các thuật toán khối, được dùng khi khối lượng dữ liệu cần mã hóa chưa được biết trước, ví dụ trong kết nối không dây Có thể coi thuật toán dòng là thuật toán khối với kích thước mỗi khối là 1 bit Một số thuật toán dòng thông dụng: RC4, A5/1, A5/2, Chameleon

 Mã hóa bất đối xứng(Asymmetric cryptography)

• Sử dụng một cặp chìa khóa có liên quan với nhau về mặt toán học, một chìa công khai dùng để mã hoá (public key) và một chìa bí mật dùng để giải mã (private key) Một thông điệp sau khi được mã hóa bởi chìa công khai sẽ chỉ

có thể được giải mã với chìa bí mật tương ứng Do các thuật toán loại này sử dụng một chìa khóa công khai (không bí mật) nên còn có tên gọi khác là

public-key cryptography (thuật toán mã hóa dùng chìa khóa công khai) Một số

thuật toán bất đối xứng thông dụng là : RSA, Elliptic Curve, ElGamal, Diffie Hellman

• Một trong những hạn chế của các thuật toán mã hóa bất đối xứng là tốc độ chậm, do đó trong thực tế người ta thường sử dụng một hệ thống lai tạp trong

đó dữ liệu được mã hóa bởi một thuật toán đối xứng, chỉ có chìa dùng để thực hiện việc mã hóa này mới được mã hóa bằng thuật toán bất đối xứng Hay nói một cách khác là người ta dùng thuật toán bất đối xứng để chia sẻ chìa khóa bí mật rồi sau đó dùng thuật toán đối xứng với chìa khóa bí mật trên để truyền thông tin

I.5 Hàm hash

 Hàm hash (hash function): là hàm một chiều mà nếu đưa một lượng dữ liệu bất kì

qua hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra

 Hai tính chất quan trọng của hàm này là:

Tính một chiều: không thể suy ra dữ liệu ban đầu từ kết quả, điều này tương

tự như việc bạn không thể chỉ dựa vào một dấu vân tay lạ mà suy ra ai là chủ của nó được

Trang 7

Tính duy nhất: xác suất để có một vụ va chạm (hash collision), tức là hai

thông điệp khác nhau có cùng một kết quả hash, là cực kì nhỏ

 Một số ứng dụng của hàm hash:

Chống và phát hiện xâm nhập: chương trình chống xâm nhập so sánh giá trị

hash của một file với giá trị trước đó để kiểm tra xem file đó có bị ai đó thay đổi hay không

Bảo vệ tính toàn vẹn của thông điệp được gửi qua mạng: Bằng cách kiểm tra

giá trị hash của thông điệp trước và sau khi gửi nhằm phát hiện những thay đổi cho dù là nhỏ nhất

Tạo chìa khóa từ mật khẩu.

Tạo chữ kí điện tử.

II.1 Mô hình Client-Server

Client-server là mô hình mạng trên đó có các máy chủ (server) và máy khách (client) giao tiếp với nhau theo 1 hoặc nhiều dịch vụ Ý tưởng của mô hình này là máy con (đóng vài trò

là máy khách) gửi một yêu cầu (request) để máy chủ (đóng vai trò người cung ứng dịch vụ), máy chủ sẽ xử lý và trả kết quả về cho máy khách

Hình 2: Mô hình client – server

Trong mô hình mạng khách-chủ có một hệ thống máy tính cung cấp các tài nguyên và dịch vụ cho cả hệ thống mạng sử dụng gọi là các máy chủ (server) Một hệ thống máy tính

sử dụng các tài nguyên và dịch vụ này được gọi là máy khách (client) Chương trình server

và client nói chuyện với nhau bằng các thông điệp (messages) thông qua một cổng truyền thông liên tác IPC (Interprocess Communication) Thực tế trong các ứng dụng của mô hình client/server, các chức năng hoạt động chính là sự kết hợp giữa client và server với sự chia

sẻ tài nguyên, dữ liệu trên cả 2 máy Vai trò của client Trong mô hình client/server, client được coi như là người sử dụng các dịch vụ trên mạng do một hoặc nhiều máy chủ cung cấp

Trang 8

và server được coi như là người cung cấp dịch vụ để trả lời các yêu cầu của các clients Điều quan trọng là phải hiểu được vai trò hoạt động của nó trong một mô hình cụ thể, một máy client trong mô hình này lại có thể là server trong một mô hình khác Máy client có thể sử dụng các hệ điều hành bình thường như Win9x, DOS, OS/2 Các server thường có cấu hình mạnh (tốc độ xử lý nhanh, kích thước lưu trữ lớn) hoặc là các máy chuyên dụng nên nó hoạt động sẽ tốt hơn nếu hệ điều hành của nó là đa nhiệm với các tính năng hoạt động độc lập song song với nhau như hệ điều hành UNIX, WINDOWS

II.1.1 Dựa vào chức năng có thể chia thành các loại server như sau

 File Server: phục vụ các yêu cầu hệ thống tập tin trong mạng

 Print Server: phục vụ các yêu cầu in ấn trong mạng

 Application Server: cho phép các ứng dụng chạy trên các server và trả về kết quả cho client

 Mail Server: cung cấp các dịch vụ về gởi nhận e-mail

 Web Server: cung cấp các dịch vụ về web

 Database Server: cung cấp các dịch vụ về lưu trữ, tìm kiếm thông tin

 Communication Server: quản lý các kết nối từ xa

II.1.2 Ưu điểm và nhược điểm của mô hình Client-Server

 Ưu điểm :

• Với mô hình client-server thì mọi thứ dường như đều nằm trên bàn của người

sử dụng, nó có thể truy cập dữ liệu từ xa (bao gồm các công việc như gửi và nhận file, tìm kiếm thông tin, ) với nhiều dịch vụ đa dạng mà mô hình cũ không thể làm được

• Có nhiều loại server như Mail Server, File Server, Web Server nên dữ liệu được phân tán rõ ràng và dễ quản lý hơn

• Dữ liệu được lưu trữ tập trung nên dễ dàng bổ sung hoặc nâng cấp server

• Tất cả các dữ liệu đều nằm trên máy chủ nên việc bảo mật được tốt hơn (máy chủ thường được bảo mật tốt hơn máy khách) Máy chủ có thể kiểm soát truy cập tài nguyên để đảm bảo rằng chỉ những máy khách được cho phép mới có quyền truy cập và thay đổi dữ liệu

• Mô hình client/server cung cấp một nền tảng lý tưởng cho phép tích hợp các

kỹ thuật hiện đại như mô hình thiết kế hướng đối tượng, hệ chuyên gia, hệ thông tin địa lý (GIS)

• Nhược điểm :

• Client-Server không phải là mô hình dữ liệu dùng chung nên các hệ thống con

có thể sử dụng các tổ chức dữ liệu khác nhau Do đó, việc trao đổi dữ liệu có thể không hiệu quả

Trang 9

• Các server chuyên dụng rất đắt tiền, và dữ liệu tập trung trên máy chủ nên cần được bảo mật, do đó: phải có nhà quản trị cho hệ thống

• Một khi số lượng các máy khách truy cập đồng thời quá nhiều, máy chủ có thể trở nên quá tải ảnh hưởng đến việc truy cập dữ liệu

• Do phải trao đổi dữ liệu giữa 2 máy ở 2 khu vực khác nhau cho nên dễ dàng xảy ra hiện tượng thông tin truyền trên mạng bị lộ

II.2 Kiến trúc mô hình Client-Server

Client/Server là mô hình tổng quát nhất, trên thực tế thì một server có thể được nối tới nhiều server khác nhằm làm việc hiệu quả và nhanh hơn Đầu tiên, client sẽ gởi một thông điệp yêu cầu (Request Message) mô tả về công việc muốn server thực hiện Khi nhận được 1 yêu cầu từ client, server tiến hành phân tích để xác định công việc cần phải thực thi Nếu việc thực hiện yêu cầu này có sinh ra kết quả trả về, server sẽ gởi nó cho client trong một thông điệp trả lời (Reply Message) Nếu không được thì server này có thể gửi tiếp yêu cầu vừa nhận được cho server khác để xử lý rồi trả kêt quả về cho client Dạng thức (format) và

ý nghĩa của các thông điệp trao đổi giữa client và server được qui định rõ bởi giao thức (protocol) của ứng dụng

II.2.1.

Các chế

blocked)

nghẽn:

Trong chế độ này, khi quá trình client hay server phát ra lệnh gởi dữ liệu, (thông thường bằng lệnh send) , sự thực thi của nó sẽ bị tạm dừng cho đến khi quá trình nhận phát ra lệnh nhận số dữ liệu đó (thường là lệnh receive)

Hình 3:quá trình yêu cầu và trả lời thông điệp

Trang 10

Hình 4: Chế độ ngẽn.

Tương tự cho trường hợp nhận dữ liệu, nếu quá trình nào đó, client hay server, phát ra lệnh nhận dữ liệu, mà ở thời điểm đó chưa có dữ liệu gởi đến, sự thực thi của nó cũng tạm dừng cho đến khi có dữ liệu gởi đến

 Chế độ không nghẽn

Hình 5: Chế độ không ngẽn.

II.3 Socket

II.3.1 Khái niệm Sockets

 Socket là một giao diện lập trình ứng dụng (API) mạng, thông qua giao diện này chúng ta có thể lập trình điều khiển việc truyền thông giữa hai máy sử dụng các giao thức mức thấp là TCP, UDP…

Ngày đăng: 02/06/2015, 16:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w