Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 1.. Mục đích nội dung của ĐATN Ứng dụng c
Trang 1Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1 Thông tin về sinh viên
Họ và tờn sinh viờn: Dương Nhật Từn
Điện thoại liờn lạc: 0914.775.336 Email: dn tan7388@gmail com
Lớp: Hệ thống thông tin B - K50 Hệ đào tạo: Đại học- Chính quy
Đồ ỏn tốt nghiệp được thực hiện tại:
Trung từm tớnh toỏn hiệu năng cao – Trường đại học Bỏch khoa Hà Nội
Thời gian làm ĐATN: Từ ngày 01/03/ 2010 đến 30/05/ 2010
2 Mục đích nội dung của ĐATN
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
3 Cỏc nhiệm vụ cụ thể của ĐATN
- Tìm hiểu bài toán thám mã cho đối tượng là các tệp nén ZIP được bảo vệ bởi mật khẩu, đưa ra các phương án thám mã cho bài toán
- Nghiên cứu quy trình mã hóa, giải mã và nén, giải nén của các công cụ tạo file ZIP như Winzip
- Nghiên cứu công nghệ tính toán song song CUDA , vận dụng vào bỏi toỏn đề ra
- Xây dựng chương trình song song khôi phục mật khẩu dựa vào kết quả đó nghiờn cứu
- So sỏnh hiệu năng giải quyết bài toỏn trờn GPU với CPU, kết luận khả năng ứng dụng của GPU vào lĩnh vực thỏm mó
4 Lời cam đoan của sinh viờn:
Tôi –Dương Nhật Từn - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của T S Nguyễn Hữu Đức.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác
Hà Nội, ngày 26 thỏng 5 năm2010
Tỏc giả ĐATN
Dương Nhật Từn
Trang 2Dương Nhật Từn – Lớp HTTT – K50 71
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
phộp bảo vệ:
Hà Nội, ngày thỏng năm 2010
Giỏo viờn hướng dẫn
T.S Nguyễn Hữu Đức
TểM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Bảo vợj dữ liợju bằng mựjt khừ̉u như trong cỏc tợjp tài liợju DOC, PDF hay tợjp nén RAR, ZIP đã được minh chứng là yờ́u dưới những từ́n cụng dạng từ điển Tuy nhiên thời gian khụi phục mọrt khõ̉u cho các tợjp này phụ thuụ ̣c nhiờju vào hai yếu tố: kích thước của không gian tìm kiờ́m mọrt khõ̉u và sức mạnh của hợj thụ́ng tính toán Trong đồ án này đưa
ra cách tiờ́p cọrn sử dụng năng lực tính toán song song rṍt lớn của các bụ ̣ xử lý đụj họa(GPU) trong việc khôi phục mật khẩu cho các tệp nén ZIP Trước hết, sử dụng GPU để thu hẹp từ tập không gian tìm kiếm mật khẩu rất lớn, thành một không gian mật khẩu nhỏ hơn rất nhiều gồm các mật khẩu ứng cử trong đó chứa mật khẩu đúng.Sau đó tiến hành giải mã giải nén và nhận dạng trên một phần của bản rõ để xác định mật khẩu đúng Các kờ́t quả thực nghiợjm cho thṍy tụ́c đụ ̣ sinh khóa tăng khoảng từ 48 đờ́n 170 lừjn (phụ thuộc vào số lượng GPU) so với chươngtrình tuừjn tự thực thi trên bụ ̣ xử lý Intel Core 2Quad Q8400 2 66 Ghz Các kờ́t quả này minh chứng khả năng ứng dụng của cụng nghợj tính toán trên các bụ ̣ xử lý đụj họa trong lĩnh vực thám mã
ABSTRACT OF THESIS
Protecting data by passwords in documents such as DOC, PDF or RAR, ZIP archives has been demonstrated to be weak from dictionary attacks Time for recovering the passwords of such documents mainly depends on two factors: the size of the password search space and the computational power of the underline
Trang 3Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
processing units (GPUs) as the computing device for finding lost passwords of ZIP archives I first use GPUs toreduce the large password search space to a much smaller one including candidate passwords that containing the original password, and then perform decrypting, decompressing, and recognizing a part of plaintext to identify the correct password.The experimental results showed that the password verification speed increases about from 48 to 170 times (depends on the number of GPUs) compared to sequentialexecutionontheIntelCore2QuadQ84002.66Ghz.Theseresultshavedemonstratedt hepotentialapplicabilityofGPUsinthiscryptanalysisfield
Lời cảm ơn
Em xin gửi lời cảm ơn sừu sắc tới T.S Nguyễn Hữu Đức,Phó Giỏm đốc Trung Từm
Tớnh Toỏn Hiệu Năng Cao, Trường Đại Học Bỏch Khoa Hà Nội, thầy là người đó tận tình hướng dẫn em trong suốt thời gian thực tập tốt nghiệp cũng như giai đoạn làm đồ ỏntốt nghiệp, đồng thời cho em những lời khuyờn quý bỏu để hoàn thành đồ ỏn này
Em xin bày tỏ lòng biết ơn chừn thànhPGS.TS Nguyễn Thanh Thuỷ,Giỏm đốc Trung
Từm Tớnh Toỏn Hiệu Năng Cao, Trường Đại Học Bỏch Khoa Hà Nội, người đã tạo cho
em cơ hội được học tập và nghiên cứu trong một môi trường khoa học lý tưởng
Em xin cảm ơn KS Phạm Hồng Phongvà cỏc anh cỏn bộ hướng dẫn ở trung từmKS Đào Quang Minh, KS Lê Đức Tùng, KS Lê Đức Hùng đã chỉ bảo, giúp đỡ em rất
nhiều trong suốt quá trình thực tập và làm đồ án
Mình xin gửi lời cảm ơn tới các bạn thành viên cùng nhóm MCGPhan Đức Dũng, Tạ Minh Ngọc, Nguyễn Duy Linh cùng các bạn sinh viên K50 tại Trung từm Tớnh toỏn
hiệu năng cao – Trường đại học Bỏch Khoa Hà Nội, đã sát cánh giúp đỡ nhau vượt qua những khó khăn trong quá trình thực tập, hoàn thành đồ án
Hà Nội, thỏng 5 năm
2010
Sinh viờn : Dương
Nhật Từn
Lớp : Hệ thống thông tin K50
Dương Nhật Từn – Lớp HTTT – K50 3
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
Đại học Bỏch Khoa Hà Nội
Trang 4Mục lục
Lời cảm ơn 3
Chương 1 GIỚI THIỆU CHUNG 9
1.1 Tổng quan về mật mã học 9
1.2 Giới thiệu bài toán thám mã tệp nén ZIP và đề xuấtgiải pháp 10
1.3 Nhiệm vụ của đồ án 12
1.4 Tổng kết 13
Chương 2SƠ LƯỢC VỀ NÉN VÀ MÃ HÓA TRONG TỆP ZIP 13
2.1 Thông tin mã hóa AES trong tệp nén ZIP 13
2.2 Hàm băm sinh khúa và cỏch kiểm tra một mật khẩu ứng cử 16
2.3 Phương thức nộn và giải nộn 18
2.3.1 Nộn (deflate) 18
2.3.2 Giải nộn (inflate) 27
2.4 Phương thức mó hỳa và giải mó 28
2.4.1 Mó hỳa 29
2.4.2 Giải mó 29
Chương 3GPU VÀ CÔNG NGHỆ TÍNH TOÁN ĐA DỤNG GP-GPU 30
3.1 Các bộ xử lý đồ họa đa lõi của Nvidia 30
3.2 Kiến trúc của GPU Tesla 33
3.3 Môi trường phát triển ứng dụng cho GPU - CUDA 36
3.2.1 Khả năng mở rộng của CUDA 37
3.2.2 Các khái niệm chính 39
3.2.3 Lập trình không đồng nhất 45
3.2.4 Khả năng tính toán 46
3.3 Giao diện lập trình 46
3.3.1 Biên dịch với NVCC 47
3.3.2 CUDA C 47
3.4 Tổng kết 48
Chương 4KHÔI PHỤC MẬT KHẨU CHO TỆP NÉN ZIP TRÊN BỘ XỬ LÝ ĐỒ HỌA 49
Trang 5Chiến lược 49
4.2 Sinh và kiểm tra mật khẩu song song trên GPU 50
4.3 Xác định mật khẩu đúng trên GPU 55
4.4 Giải thuật thực hiện 56
Chương 5 THỬ NGHIỆM VÀ ĐÁNH GIÁ 61
5.1 Thử nghiệm 61
5.2 Đánh giá 64
Chương 6KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64
6.1 Kết luận 64
6.2 Hướng phỏt triển 65
Tài liệu tham khảo 65
Phụ Lục 66
Phụ lục A Cấu trúc của một tệp nén ZIP 66
Phụ lục B Một số hàm thông dụng trong CUDA 70
Dương Nhật Từn – Lớp HTTT – K50 8
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP Danh mục bảng Lời cảm ơn 3
Chương 1GIỚI THIỆU CHUNG 9
1.1 Tổng quan về mật mã học 9
1.2 Giới thiệu bài toán thám mã tệp nén ZIP và đề
xuấtgiải pháp 10
1.3 Nhiệm vụ của đồ án 12
1.4 Tổng kết 13
Chương 2SƠ LƯỢC VỀ NÉN VÀ MÃ HÓA TRONG TỆP ZIP 13
Chương 3GPU VÀ CÔNG NGHỆ TÍNH TOÁN ĐA DỤNG GP-GPU 30
3.2.2 Các khái niệm chính 39
3.2.3 Lập trình không đồng nhất 45
3.2.4 Khả năng tính toán 46
3.3 Giao diện lập trình 46
3.3.1 Biên dịch với NVCC 47
Trang 63.3.2 CUDA C 47
3.4 Tổng kết 48
Chương 4KHÔI PHỤC MẬT KHẨU CHO TỆP NÉN ZIP TRÊN BỘ XỬ LÝ ĐỒ HỌA 49
4.1 Chiến lược 49
4.2 Sinh và kiểm tra mật khẩu song song trên GPU 50
4.3 Xác định mật khẩu đúng trên GPU 55
4.4 Giải thuật thực hiện 56
Chương 5THỬ NGHIỆM VÀ ĐÁNH GIÁ 61
5.1 Thử nghiệm 61
5.2 Đánh giá 64
Chương 6KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64
6.1 Kết luận 64
6.2 Hướng phỏt triển 65
Tài liệu tham khảo 65
Phụ Lục 66
Phụ lục B Một số hàm thông dụng trong CUDA 70
Dương Nhật Từn – Lớp HTTT – K50 8
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP Danh mục hình vẽ Lời cảm ơn 3
Chương 1GIỚI THIỆU CHUNG 9
1.1 Tổng quan về mật mã học 9
1.2 Giới thiệu bài toán thám mã tệp nén ZIP và đề
xuấtgiải pháp 10
1.3 Nhiệm vụ của đồ án 12
1.4 Tổng kết 13
Chương 2SƠ LƯỢC VỀ NÉN VÀ MÃ HÓA TRONG TỆP ZIP 13
Chương 3GPU VÀ CÔNG NGHỆ TÍNH TOÁN ĐA DỤNG GP-GPU 30
Trang 73.2.2 Các khái niệm chính 39
3.2.3 Lập trình không đồng nhất 45
3.2.4 Khả năng tính toán 46
3.3 Giao diện lập trình 46
3.3.1 Biên dịch với NVCC 47
3.3.2 CUDA C 47
3.4 Tổng kết 48
Chương 4KHÔI PHỤC MẬT KHẨU CHO TỆP NÉN ZIP TRÊN BỘ XỬ LÝ ĐỒ HỌA 49
4.1 Chiến lược 49
4.2 Sinh và kiểm tra mật khẩu song song trên GPU 50
4.3 Xác định mật khẩu đúng trên GPU 55
4.4 Giải thuật thực hiện 56
Chương 5THỬ NGHIỆM VÀ ĐÁNH GIÁ 61
5.1 Thử nghiệm 61
5.2 Đánh giá 64
Chương 6KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64
6.1 Kết luận 64
6.2 Hướng phỏt triển 65
Tài liệu tham khảo 65
Phụ Lục 66
Phụ lục B Một số hàm thông dụng trong CUDA 70
Cỏc ký hiệu, từ viết tắt và ý nghĩa Dương Nhật Từn – Lớp HTTT – K50 8
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
Trang 8Dương Nhật Từn – Lớp HTTT – K50 71
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
định dạng zlib, gzip, zip
của nhiều máy tính để tạo ra một máy có hiệu năng lớn hơn
GPU
Chương 1 GIỚI THIỆU CHUNG
Chương 1 giới thiệu tổng quan về mật mó học và bài toỏn thỏm mó tệp nộn ZIP, chỉ rahướng nghiờn cứu của đề tài
1.1 Tổng quan về mật mã học
Mật mó học (tiếng Anh là Cryptography hoặc Cryptology) là ngành khoa học nghiờn
cứu về cỏc kỹ thuật toán học liên quan tới các khía cạnh an toàn thông tin Trước thời kỳ hiện đại, mật mó học chỉ tập trung duy nhất tới tính bí mật của bản tin – tức là gắn liền với sự mã hóa, đó là quá trình chuyển đổi các thông tin thông thường (bản rõ) ở dạng có thể nhận thức được thành một dạng không thể nhận thức được, làm cho thông tin không thể đọc được nếu như không có các kiến thức bí mật (được gọi là khúa dùng để giải mã cho bản tin đó) Việc mã hóa được dùng để đảm bảo tính bí mật của thông tin trong lưu trữ cũng như trong thông tin liên lạc, chẳng hạn trong công tác tình báo, quân sự, ngoại giao hay là kinh tế, thương mại.Trong những thập niờn gần đừy, lĩnh vực này đó được
mở rộng vượt ra ngoài cỏc mối quan từm về tính bí mật và bao gồm các kỹ thuật khác như kiểm tra tính toàn vẹn của thông điệp, xác thực định danh người gửi/nhận, chữ ký số, chứng thực khúa công khai
Về mặt thuật ngữ, cho đến thời kỳ hiện đại, thuật ngữ cryptographyđược dùng để nhắc đến việc sử dụng và thực hành các kỹ thuật mật mã húa Nhiều người sử dụng thuật ngữ cryptography và cryptology hoán đổi cho nhau trong tiếng Anh Tuy vậy,
Trang 9Dương Nhật Từn – Lớp HTTT – K50 9
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
theo cỏc chuyờn gia về mật mó cryptology dùng để chỉ sự nghiên cứu kết hợp của mật
mó hỳa (cryptography) và thỏm mó (cryptanalysis)
Thỏm mó(tiếng Anh là Cryptanalysis) – là khoa học nghiờn cứu về các phương pháp lấy
lại ý nghĩa của các thông tin đã bị mã hóa, mà không cần truy xuất tới các thông tin bí mật mà thường làcần phải có để có thể làm được điều đó Thông thường, điều này liờn quan đến hiểu biết về cỏch hệ thống làm việc và tìm ra một khúa bí mật Mục tiêu của thám mã (phá mã) là tìm những điểm yếu hoặc không an toàn trong phương thức mật mã hóa Thám mã có thể được thực hiện bởi những kẻ tấn công mục đích xấu, nhằm làm hỏng hệ thống; hoặc bởi những người thiết kế ra hệ thống (hoặc những người khỏc) với ý định đỏnh giỏ độ an toàn của hệ thống
Khoa học thám mã luôn đi cùng với khoahọc mật mó trong suốt chiều dài lịch sử của mật
mó học – một thuật toỏn mó hỳa mới được thiết kế để thay thế những thiết kế cũ bị hỏng,
và cỏc kỹ thuật thỏm mó mới được phỏt minh để phỏ vỡ cỏc đề ỏn cải thiện này.Hai nhánh nghiên cứu này được xem như hai mặt của cùng vấn đề antoàn an ninh thông tin:
sự phát triển của một nhánh luôn thúc đẩy sự phát triểncủa nhỏnh kia và ngược lại Trong lịch sử phỏt triển, sự phỏt triển vượt trước của một nhỏnh so vớiTrong lịch sử phát triển,
sự phát triển vượt trước của một nhánh so với Trong lịch sử phát triển, sự phát triển vượt trước của một nhánh so vớinhánh còn lại đôi khi mang đến những lợi ích to lớn cho đời sống, thậm chí cònquyết định vận mệnh của cả một đất nước Ví dụ như sự thành công trong việcthỏm mó Zimmermann Telegram trong thế chiến thứ nhất đó kộo Hoa Kỳ vàocuộc chiến, hay việc thám mã thành công hệ mã German được đánh giá góp phần rút ngắn thế chiến thứ hai đi vài tháng [4]
1.1 Giới thiệu bài toán thám mã tệp nén ZIP và đề
xuấtgiải pháp
Nguyờn thủy, cỏc phươngpháp nén như PKZip, Deflate, LZMA được sử dụng nhằm giảm thiểu kích thướcdữ liệu, từ đó giúp cho việc lưu trữ cũng như trao đổi chúng được hiệu quả
Doviệc bảo mật thông tin thường luôn đi kèm với các kỹ thuật lưu trữ và trao đổithông tin nên bên cạnh các giải thuật nén hiệu quả, những công cụ nén phổbiến như WinZip hay WinRar thường tích hợp khả năng mã hoá thôngtin nộn,thông thường là sử dụng những
hệ mã đối xứng phổ biến như DES hay AES Để thuận tiện cho người dùng, khoá bí mật
Để thuận tiện cho người dùng, khoá bí mật cho các hệ mã này được sinh ra từmột mật khẩu do người gửi nhập vào thông qua một hàm băm và được sử dụngđể mã
Trang 10Dương Nhật Từn – Lớp HTTT – K50 10
Ứng dụng công nghệ tính toán đa dụng trên các bộ xử lý đồ họa trong bài toán khôi phục mật khẩu tệp nén ZIP
Huffman của bộ Code Length
HDIST + 1 cỏc chiều dài mó cho bộ alphabet distance, được mó hỳa theo mó Huffman của bộ Code Length
Tiếp tiếp theo là dữ liệu nộn thực sự của block, được mó hỳa sử dụng cỏc mó Huffman của cỏc bộ alphabet literal/ length và distance
Ký hiệu 256 của literal/ length (hết dữ liệu) , được mó hỳa sử dụng mó Huffman cho literal/ length
3 bit
header
HLIT –
257
HDIST – 32
HCLEN -4
Code Length codes
Literal/
Length codes
Distance codes
Data_
compressed
End-of-block
2.1.1 Giải nộn (inflate)
Trong tất cả các trường hợp, giải thuật giải nén có dạng như sau:
do (Lặp cho đến khi hết dữ liệu hoặc gặp block cuối)
Đọc header của block từ dữ liệu vào;
if (block không nén)
Bỏ qua các bit còn lại trong byte hiện tại;
Đọc LEN và NLEN;
Copy LEN byte dữ liệu tới output;
else
if (block nộn với mó Huffman động)
Đọc biểu diễn cỏc cừy mó Huffman;
do
Giải mó giỏ trị value từ input;
if value < 256
Copy value tới output;
else
if value = end - of - block (256)
break;
else
Giải mó distance từ input data;
Dịch về sau distance byte trong outputvà copy length byte từ vị trí đó tới output;
while (chưa hết block đang xột);
while (chưa hết dữ liệu) hoặc (chưa phải là block cuối);