Trong khuôn khổ báo cáo, chúng em thực hiện tìm hiểu về các giải thuật mã hóa được ứng dụng phổ biến trên Internethiện nay, và xây dựng được một ứng dụng mã hóa minh họa... Mục tiêu của
Trang 1TỔNG QUAN VỀ ĐỀ TÀI 3
1 Bối cảnh và lý do thực hiện đề tài 3
2 Mục tiêu của đề tài 3
3 Phương pháp triển khai đề tài 3
4 Kết cấu của đồ án 3
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 4
1 Giới thiệu 4
2 Các thuộc tính yêu cầu 4
3 Kĩ thuật mã hoá chung 4
4 Các giải thuật mã hóa: 6
4.1 Giải thuật MD5 6
4.2 Giải thuật Triple-DES (3DES) 18
CHƯƠNG 2: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH 25
1 Mô tả chức năng 25
2 Phân tích các chức năng 25
3 Mô hình hệ thống 25
CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 26
1 Môi trường triển khai 26
2 Kết quả các chức năng của chương trình 26
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 28
DANH MỤC HÌNH VẼ
Trang 2Hình 1 Quá trình chứng thực của một User với Webserver 9
Hình 2 Quá trình mã hóa 10
Hình 3 Thực hiện nối dài các thông điệp mã hóa 10
Hình 4 Mã hóa Md5 vòng 1 13
Hình 5 Thao tác mã hóa Md5 13
Hình 6 Mã hóa Md5 vòng 2 13
Hình 7 Mã hóa Md5 vòng 3 14
Hình 8 Mã hóa Md5 vòng 4 14
Hình 9 Sơ đồ tạo khóa con của DES 22
Hình 10 Bảng trật tự khóa PC-1 22
Hình 11 Khóa yếu 24
Hình 12 Các bước mã hóa 3DES 25
Hình 13 Chương trình mã hóa, giải mã, crack Md5 28
Hình 14 Chương trình mã hóa, giải mã, crack 3DES 29
Trang 3LỜI MỞ ĐẦU
Ngày nay, nhu cầu bảo mật thông tin trên mạng là một nhu cầu cấp thiết.Cùng với sự phát triển của Internet, việc xâm nhập bất hợp pháp các thông tin mật,các chương trình và dữ liệu quan trọng, và phá hoại thông qua Internet cũng giatăng về số lượng, loại hình và kỹ thuật Do đó, song song với việc phát triển và khaithác các dịch vụ trên Internet, vấn đề đảm bảo an ninh trên mạng là một vấn đề rấtquan trọng
Các nội dung thông tin lưu trữ và lưu truyền trên mạng luôn là đối tượng đểtấn công, do người sử dụng luôn truy nhập từ xa, thông tin xác thực người sử dụngnhư mật khẩu, bí danh luôn phải truyền đi trên mạng Những kẻ xâm nhập tìm mọicách giành được những thông tin này và từ xa truy cập vào hệ thống Càng truy cậpvới tư cách người dùng có quyền điều hành càng cao thì khả năng phá hoại cànglớn
Để tránh những rủi ro có thể xảy ra và đảm bảo việc truyền dữ liệu được antoàn hơn, vừa đảm bảo thông tin luôn kết nối, vừa đảm bảo yếu tố bảo mật củathông tin thì phương pháp tốt nhất là mã hoá thông tin
Báo cáo sau đây trình bày về đề tài: “Tìm hiểu và xây dựng chương trình
thực hiện các giải thuật mã hóa trên mạng” Trong khuôn khổ báo cáo, chúng em
thực hiện tìm hiểu về các giải thuật mã hóa được ứng dụng phổ biến trên Internethiện nay, và xây dựng được một ứng dụng mã hóa minh họa
Trang 4TỔNG QUAN VỀ ĐỀ TÀI
1 Bối cảnh và lý do thực hiện đề tài
Với sự phát triển của Internet như hiện nay, thông tin trên mạng mang nhiềunguy cơ bị tấn công, xâm nhập bất hợp pháp Việc bảo mật thông tin trên môitrường Internet là rất cấp thiết Để vừa đảm bảo thông tin luôn kết nối, vừa đảm bảoyếu tố bảo mật của thông tin thì phương pháp tốt nhất là mã hoá thông tin Mã hóagiúp đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba, loại trừ việcnghe trộm những thông tin “nhạy cảm” khi nó được truyền qua Internet, dữ liệuphải được mã hoá để không thể bị đọc được bởi những người khác ngoài người gửi
và người nhận
Chính sự quan trọng của mã hóa, nên chúng em chọn đề tài này để tìm hiểu rõhơn về các giải thuật mã hóa hiện nay và cơ chế của việc mã hóa thông tin trênmạng
2 Mục tiêu của đề tài
Đề tài nhằm tìm hiểu được các giải thuật mã hóa MD5, 3DES,… Qua đó, xâydựng chương trình ứng dụng lập trình socket cho phép người dùng chọn mộtphương pháp mã hóa, gửi nội dung đã mã hóa qua môi trường mạng đến máyserver, tùy phương pháp mã hóa, máy server tiến hành giải mã và hiển thị lại nộidung đã được mã hóa ở phía client
3 Phương pháp triển khai đề tài
- Tìm hiểu các kỹ thuật mã hóa, giải thuật mã hóa MD5, 3DES,…
- Lập trình socket Client - Server
- Thiết kế và lập trình ứng dụng, xây dựng chương trình mã hóa trong mô hìnhclient – server
4 Kết cấu của đồ án
Đồ án gồm các phần:
- Cơ sở lý thuyết về các giải thuật mã hóa
- Thiết kế và xây dựng chương trình mã hóa
Trang 5- Kết quả thực hiện
Trang 6CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1 Giới thiệu
Mã hoá là một tiến trình biến đổi thông tin, sử dụng các thuật toán nhằm mụcđích không cho người khác có thể nắm bắt được nếu thiếu một vốn thông số nhấtđịnh (key) để dịch ngược Đi kèm với mã hoá là giải mã
Có rất nhiều loại thuật toán mã hoá cho dữ liệu máy tính, chúng được gọi têntheo thuật toán và có thể so sánh trực tiếp với nhau, ví dụ mã hoá 128-bit, Triple-DES, 2048-bit RSA,…
Mã hóa với mục đích làm cho dữ liệu không thể đọc được bởi bất cứ ai, ngoạitrừ những ai được cho phép đọc Mã hóa sử dụng thuật toán và khóa để biến đổi dữliệu từ hình thức đơn giản rõ ràng (plain hay cleartext), làm biến dữ liệu sang hìnhthức mật mã vô nghĩa (code hay ciphertext) Chỉ ai có thông tin giải mã thì mới giải
mã được và đọc được dữ liệu
2 Các thuộc tính yêu cầu
Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc.Các thuộc tính được yêu cầu là:
- Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thôngtin chứa đựng trong dạng đã mật mã hóa của nó Nói khác đi, nó không thểcho phép thu lượm được bất kỳ thông tin đáng kể nào về nội dung của thôngđiệp
- Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thayđổi trong quá trình truyền thông hay không
- Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xemngười gửi đó có thực sự gửi thông tin đi hay không
3 Kĩ thuật mã hoá chung
Các kĩ thuật mã hoá đều sử dụng các khoá (key) làm tác nhân thực hiện việckhoá mã, thông thường khoá được thể hiện bằng độ dài của khoá tính theo bit, số
Trang 7bits càng lớn thì tính bảo mật của phép mã hoá càng cao Thông thường, để an toànthì các khoá thường có độ dài 128bits, phương pháp tấn công vét cạn sẽ phải dò là
2128 trường hợp
Có 3 kĩ thuật mã hoá chính:
- Symmetric Encryption (Mã hóa đối xứng): Là phương pháp sử dụng cùng
một khóa để bảo mật dữ liệu, khóa này vừa dùng để mã hoá và giải mã dữ liệu luôn
Vì vậy khóa này phải được chuyển một an toàn giữa hai đối tượng giao tiếp, vì ai cóđược khóa này thì hoàn toàn có thể giài mã được thông tin Khóa có thể được cấuhình trong software hoặc hardware
Thuật toán mã hóa đối xứng nhìn chung thực hiện nhanh nhưng an toàn chưacao vì có thể bị lộ khóa Nên thuật toán này thường dùng cho việc mã hóa dữ liệu.Ngày nay có 3 thuật toán mã hóa đối xứng được sử dụng nhiều: DES, 3DES, AES
- Asymmetric Encryption (Mã hóa bất đối xứng): Là phương pháp sử dụng
hai khóa: public key và private key Trong đó public key được cho tất cả thiết bịkhác, còn private key thì giữ bí mật cho riêng mỗi thiết bị Hai khóa này là một cặp,
vì chỉ có private key mới giải mã được thông tin do public key mã hóa Thuật toán
mã hóa bất đối xứng rất an toàn nhưng xử lý chậm, do đó thuật toán này thườngdùng cho chứng nhận số và quản lý khóa
Sử dụng 2 thuật toán chính đó là: RSA và Diffiel-Hellman(DH), khi thiết lậpmột IPsec tunnel mới thì các thiết bị Cisco sử dụng hai thuật toán này RSA dùng
để chứng thực thiết bị ở xa, còn DH dùng để trao đổi khóa để phục vụ cho việc mãhóa
- Mã hóa một chiều (hàm băm): là phương pháp mà chuỗi mã hoá không thể
bị dịch ngược lại, mỗi chuỗi đã mã hoá chỉ có thể là ánh xạ của duy nhất một chuỗichưa mã hoá nhập vào Các thuật toán mã hoá một chiều được dùng nhiều trong quátrình xác thực, lưu mật khẩu, thông tin thẻ tín dụng… Nền tảng của loại này có thểxếp vào cùng loại với mã hoá đối xứng
Các thuật toán nổi tiếng được sử dụng nhiều nhất là MD-5 (Message-Digestalgorithm 5) và các thuật toán SHA (SHA-1, SHA-2) Mọi ứng dụng từ các forum
Trang 8như IPB, VBB cho đến Yahoo! đều ứng dụng trong việc mã hoá mật khẩu củausers.
4 Các giải thuật mã hóa:
a Giới thiệu giải thuật MD5
MD5 (viết tắt của tiếng Anh Message-Digest algorithm 5, giải thuật phân loạitin nhắn 5) là một hàm băm mật mã được sử dụng
phổ biến với giá trị băm dài 128-bit Là một chuẩn
Internet (RFC 1321), MD5 đã được dùng trong
nhiều ứng dụng bảo mật, và cũng được dùng phổ
biến để kiểm tra tính toàn vẹn của tập tin Một
bảng băm MD5 thường được diễn tả bằng một số
hệ thập lục phân 32 ký tự
MD5 được thiết kế bởi Ronald Rivest vào
năm 1991 để thay thế cho hàm băm trước đó, MD4 Vào năm 1996, người ta pháthiện ra một lỗ hổng trong MD5; trong khi vẫn chưa biết nó có phải là lỗi nghiêmtrọng hay không, những chuyên gia mã hóa bắt đầu đề nghị sử dụng những giảithuật khác, như SHA-1 (khi đó cũng bị xem là không an toàn) Trong năm 2004,nhiều lỗ hổng hơn bị khám phá khiến cho việc sử dụng giải thuật này cho mục đíchbảo mật đang bị đặt nghi vấn
Đặc điểm của MD5
1/ Việc tính MD5 đơn giản, có khả năng xác định được file có kích thướcnhiều Gb
2/ Không có khả năng tính ngược khi có mã MD5
3/ Do bản chất ngẫu nhiên của hàm băm và số lượng cực lớn các giá trị hash
có thể, nên hầu như không có khả năng hai bản tin phân biệt có cùng giá trị hash.4/ Giá trị MD5 phụ thuộc vào bản tin tương ứng
5/ Mỗi chuỗi chỉ có một hash tương ứng
Trang 96/ Giá trị MD5 phụ thuộc vào tất cả các bit của bản tin tương ứng.
Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối, trong khi hệđiều hành Windows sử dụng phần mềm của hãng thứ ba
2/ MD5 được dùng để mã hóa mật khẩu Mục đích của việc mã hóa này làbiến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đókhông thể nào lần trở lại mật khẩu Có nghĩa là việc giải mã là không thể hoặc phảimất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker)
Mục đích của MD5
Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn
mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu Có nghĩa làviệc giải mã là không thể hoặc phải mất một khoảng thời gian vô tận (đủ để làm nảnlòng các hacker)
Trang 10Hình 1 Quá trình chứng thực của một User với Webserver
b Thuật toán mã hóa MD5
MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước
cố định 128 bits Thông điệp đưa vào sẽ được cắt thành các khối 512 bits Thôngđiệp được đưa vào bộ đệm để chiều dài của nó chia hết cho 512 Bộ đệm hoạt độngnhư sau:
- Trước tiên, chèn bit 1 vào cuối thông điệp
- Tiếp đó là hàng loạt bit 0 cho tới khi chiều dài của nó nhỏ hơn bội số của
Trang 11Hình 2 Quá trình mã hóa
Chi tiết các bước thực hiện
Bước 1: Thêm cái bit vào chuỗi
Thực hiện nối dài các thông điệp
Hình 3 Thực hiện nối dài các thông điệp mã hóa
- Thêm bit 1 vào để đánh dấu thông điệp
- Thêm vào k bit ‘0’ sao cho (b bit + bit 1 + k bit 0)mod 512=448
- 64 bit tiếp theo sẽ được thêm vào biểu thị chiều dài của chuổi bit ban đầu
(B bit + bit ‘1’ + k bit ‘0’ + 64 bit chiều dài) mod 512 = 0
Ví dụ: Ta có chuỗi 384bit
Trang 12Bước 2: Khởi tạo bộ đệm
Một bộ đệm 4 word (A,B,C,D) được dùng để tính mã số thông điệp Ở đâymỗi A,B,C,D là một thanh ghi 32 bit Những thanh ghi này được khởi tạo theonhững giá trị hex sau ( các byte thấp trước ) :
word A : 01 23 45 67
word B : 89 ab cd ef
word C : fe dc ba 98
word D : 76 54 32 10
Bước 3: Xử lý thông điệp theo từng khối 16 word
Trước hết ta định nghĩa các hàm phụ, các hàm này nhận đầu vào là 3 word 32bit và tạo ra một word 32 bit
Với lần lượt là XOR, AND, OR, NOT
Quá trình thực hiện xử lý của 4 hàm F ở trên:
Quá trình này sử dụng một bảng có 64 giá trị T[1 64] được tạo ra từ hàm sin.Gọi T[i] là phần tử thứ i của bảng, thì T[i]là phần nguyên của 4294967296*|sin(i)| ,
i được tính theo radian
Thực hiện:
Trang 13/* Xử lý mỗi khối 16 word */
Trang 14Hình 5 Thao tác mã hóa Md5
Hình 6 Mã hóa Md5 vòng 2
Trang 15Hình 7 Mã hóa Md5 vòng 3
Hình 8 Mã hóa Md5 vòng 4
/*Sau đó làm các phép cộng sau ( Nghĩa là cộng vào mỗi thanh ghi giá trị của
nó trước khi vào vòng lặp )*/
A = A + AA
Trang 16Mã giả cho giải thuật MD5.
//Chú ý: Tất cả các biến đều là biến không dấu 32 bit và bao phủ mô đun
2^32 khi tính toán
var int[64] r, k
//r xác định số dịch chuyển mỗi vòng
r[ 0 15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}
r[16 31] := {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}
r[32 47] := {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}
r[48 63] := {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}
//Sử dụng phần nguyên nhị phân của sin của số nguyên làm hằng số:
for i from 0 to 63
k[i] := floor(abs(sin(i + 1)) × (2 pow 32))
//Khởi tạo biến:
var int h0 := 0x67452301
var int h1 := 0xEFCDAB89
var int h2 := 0x98BADCFE
var int h3 := 0x10325476
//Tiền xử lý:
append "1" bit to message
append "0" bits until message length in bits ≡ 448 (mod 512)
append bit (bit, not byte) length of unpadded message as 64-bit
little-endian integer to message
//Xử lý mẩu tin trong đoạn 512-bit tiếp theo:
for each 512-bit chunk of message
break chunk into sixteen 32-bit little-endian words w[i], 0 ≤ i ≤ 15
//Khởi tạo giá trị băm cho đoạn này:
var int a := h0
var int b := h1
var int c := h2
Trang 17(0 ≤ i ≤ 15): f := d xor (b and (c xor d))
(16 ≤ i ≤ 31): f := c xor (d and (b xor c))
Trang 18 Dictionary: là một kỹ thuật tấn công bằng cách thử nghiệm những trườnghợp mật khẩu có thể người khác đã sử dụng Hoạt động theo phương thứcthử nghiệm với tất cả các key trong danh sách cho sẵn: sử dụng một danhsách (được sắp xếp) các mật khẩu (hoặc hash password) có sẵn rồi thửđăng nhập (hoặc so mẫu với mật khẩu cần crack) Với phương pháp này,
dữ liệu thử được chia sẻ rất nhiều, không tốn quá nhiều thời gian và côngsức nhưng đôi khi đem lại hiệu quả khả quan Một số trang sử dụngphương pháp dictionary để crack md5: http://www.md5decrypter.co.uk/,http://md5crack.com/,
Brute Force: được sử dụng để crack plaintext hash password luôn thànhcông, chủ yếu dựa vào sức mạnh tính toán của máy tính: thử mọi trườnghợp xảy ra (brute force) bằng cách duyệt qua tất cả các hash password cóthể có được tạo nên từ bảng ký tự Hoạt động theo phương thức: tạo ra tất
cả các key có thể có và so sánh với key input Có rất nhiều công cụ thựchiện crack md5 bằng phương pháp brute force như md5brute, cain&able,BarsWF,…
Rainbow table: là một bảng tính toán được sử dụng trong việc đảo chiềucác hàm băm mật mã, thường được sử dụng rộng rải trong việc crack cácmật mã đã được băm Thường được sử dụng để khôi phục các mật khẩubằng các ký tự thô (plaintext) với một độ dài nhất định và có thể chứathêm một số các ký tự đặc biệt Đó là một hình thức cân bằng thời gian
bộ nhớ, sử dụng CPU ít hơn nhưng chi phí lưu trữ nhiều hơn và ngược lại
Có nhiều công cụ sử dụng rainbow table để crack MD5, nên sử dụng phầnmềm rainbowcrack
Trong khuôn khổ bài báo cáo này chúng em xin trình bày về phương phápDictionary và phương pháp Brute Force
Dictionary
Xây dựng 1 cơ sở dữ liệu ThongTin có bảng INFO bao gồm các trườngMD5(là mã MD5) và PASS (là mật khẩu người dùng nhập vào)
Trang 19Thuật toán
- Từ Client: nhập chuỗi MD5 cần được crack
- Server: kết nối cơ sở dữ liệu So sánh mã MD5 nhận được từ Client vớicác bản ghi ở trường MD5 cho đến khi nào giống nhau thì dừng lại và đưa ra kết quả
Bằng cách này ta có thể tìm được Pass nhanh chóng, tiết kiệm thời gian Nhưng phải mất nhiều công sức để nhập dữ liệu cho cơ sở dữ liệu