Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 95 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
95
Dung lượng
2,84 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LÊ ĐỨC HÙNG LÊ ĐỨC HÙNG CÔNG NGHỆ THÔNG TIN NGHIÊN CỨU MỘT SỐ THUẬT TOÁN THÁM MÃ SỬ DỤNG CÔNG NGHỆ TÍNH TOÁN SONG SONG TRÊN CÁC BỘ XỬ LÝ ĐỒ HỌA LUẬN VĂN THẠC SĨ KHOA HỌC CÔNG NGHỆ THÔNG TIN KHOÁ 2009-2010 Hà Nội – 2011 LỜI CAM ĐOAN Tôi – Lê Đức Hùng – xin cam đoan: Luận văn tốt nghiệp Thạc sĩ công trình nghiên cứu thân dƣới hƣớng dẫn Tiến sĩ Nguyễn Hữu Đức Các kết Luận văn tốt nghiệp trung thực, chép toàn văn công trình khác Hà Nội, ngày tháng 11 năm 2010 Lê Đức Hùng LỜI CẢM ƠN Tôi xin gửi lời cảm ơn sâu sắc tới Tiễn sĩ Nguyễn Hữu Đức, thầy trực tiếp hƣớng dẫn trình thực luận văn Thầy ngƣời đƣa ý tƣởng hỗ trợ nhiều việc định hƣớng tìm hiểu, triển khai giải thuật thám mã công nghệ GPU Tôi xin gửi lời cảm ơn chân thành tới Phó giáo sƣ, Tiến sĩ Nguyễn Thanh Thủy, thầy hỗ trợ mặt ý tƣởng định hƣớng cho đề tài từ bắt đầu Tôi xin gửi lời cảm ơn đến Trung tâm Tính toán Hiệu cao – Trường Đại học Bách Khoa Hà Nội, nơi làm việc Trung tâm hỗ trợ nhiều mặt chuyên môn nhƣ sở vật chất để thực luận văn Tôi xin gửi lời cảm ơn đến thành viên Trung tâm Tính toán Hiệu cao giúp đỡ lúc khó khăn, thảo luận làm việc với tinh thần hăng say nhiệt huyết suốt thời gian qua Cuối cùng, xin cảm ơn gia đình động viên giúp đỡ suốt trình học tập nhƣ làm luận văn MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN DANH MỤC HÌNH VẼ DANH MỤC BẢNG DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ CHƢƠNG - GIỚI THIỆU CHUNG 10 1.1 Tổng quan mật mã học 10 1.2 Giới thiệu toán thám mã tệp nén Zip thám mã MD5 11 1.2.1 Bài toán thám mã tệp nén Zip 11 1.2.2 Giới thiệu toán thám mã MD5 12 1.3 GPGPU – Giải pháp cho toán thám mã 13 1.4 Mục tiêu luận văn 14 1.5 Cấu trúc luận văn 14 CHƢƠNG - TỔNG QUAN VỀ NÉN VÀ MÃ HÓA TRONG TỆP TIN ZIP 16 2.1 Thông tin mã hóa AES tệp nén ZIP 16 2.1.1 Phƣơng thức nén cờ mã hóa 16 2.1.2 AES extra data field 16 2.1.3 Định dạng liệu mã hóa 17 2.2 Hàm băm sinh khóa cách kiểm tra mật ứng cử 19 2.3 Phƣơng thức nén giải nén 21 2.3.1 Nén (deflate) 21 2.3.2 Giải nén (inflate) 31 2.4 Phƣơng thức mã hóa giải mã 32 2.4.1 Mã hóa 33 2.4.2 Giải mã 34 CHƢƠNG - TỔNG QUAN VỀ MÃ HÓA MD5 35 3.1 Bài toán thám mã MD5 vấn đề hiệu 35 3.2 Mã hóa MD5 36 3.3 Tổng kết mã MD5 41 3.4 Các ứng dụng MD5 41 3.5 Thám mã MD5 42 CHƢƠNG - GPU VÀ CÔNG NGHỆ TÍNH TOÁN ĐA DỤNG GPGPU 44 4.1 Các xử lý đồ họa đa lõi Nvidia 44 4.2 Kiến trúc GPU Tesla 46 4.3 Môi trƣờng phát triển ứng dụng cho GPU – CUDA 50 4.3.1 Khả mở rộng CUDA 50 4.3.2 Các khái niệm 52 4.3.3 Lập trình không đồng 59 4.3.4 Khả tính toán 61 4.4 Hệ thống GPU-Cluster 61 4.4.1 Phần cứng 61 4.4.2 Phần mềm 62 4.5 Giao diện lập trình 63 4.5.1 Biên dịch với NVCC 64 4.5.2 CUDA C 64 4.6 Tổng kết 65 CHƢƠNG HỌA KHÔI PHỤC MẬT KHẨU CHO TỆP NÉN ZIP TRÊN BỘ XỬ LÝ ĐỒ 66 5.1 Tiếp cận theo phƣơng pháp vét cạn 66 5.2 Tiếp cận theo phƣơng pháp phân tích cấu trúc mật 69 CHƢƠNG - THÁM MÃ MD5 TRÊN CÁC BỘ XỬ LÝ ĐỒ HỌA 73 6.1 Giải thuật 73 6.2 Cài đặt module chƣơng trình 75 6.3 Thực giải thuật nhiều GPU 76 CHƢƠNG - THỬ NGHIỆM VÀ ĐÁNH GIÁ 79 7.1 Thiết lập môi trƣờng thử nghiệm 79 7.2 Thử nghiệm đánh giá toán thám mã tệp nén Zip 81 7.2.1 Thử nghiệm 81 7.2.2 Đánh giá 83 7.3 Thử nghiệm đánh giá toán thám mã MD5 84 7.3.1 Thử nghiệm 84 7.3.2 Đánh giá 85 CHƢƠNG - KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 86 8.1 Kết luận 86 8.2 Hƣớng phát triển 86 TÀI LIỆU THAM KHẢO 88 PHỤ LỤC 89 Phụ lục A Cấu trúc tệp nén ZIP 89 Phụ lục B Một số hàm thông dụng CUDA 93 DANH MỤC HÌNH VẼ Hình 1.1 Mã hóa, giải mã tệp nén Zip 11 Hình 2.1 Giải thuật kiểm tra mật có phải ứng cử 20 Hình 2.2 Ví dụ nén liệu sử dụng giải thuật LZ77 23 Hình 2.3 Ví dụ giải nén liệu sử dụng giải thuật LZ77 23 Hình 2.4 Mã hóa AES chế độ CTR 33 Hình 3.1 Một thao tác MD5 37 Hình 4.1 GPU dành nhiều transistor CPU để xử lý liệu 44 Hình 4.2 Số phép tính dấu phẩy động giây băng thông nhớ CPU GPU 45 Hình 4.3 Kiến trúc Tesla 47 Hình 4.4 CUDA đƣợc thiết kế để hỗ trợ nhiều ngôn ngữ API khác 50 Hình 4.5 Khả tự mở rộng 52 Hình 4.6 Lƣới block 55 Hình 4.7 Phân cấp nhớ 59 Hình 4.8 Lập trình không đồng 60 Hình 4.9 Các nút mô hình GPU Cluster 62 Hình 6.1 Kiểm tra mật theo lô 73 DANH MỤC BẢNG Bảng 2.1 Cấu trúc tƣờng extra 17 Bảng 2.2 Bảng mã cho ký tự length 28 Bảng 2.3 Bảng mã cho ký tự distance 29 Bảng 2.4 Mã Huffman cố định cho Literal/length 29 Bảng 4.1 Ví dụ Makefile trộn mã CUDA + MPI 63 Bảng 7.1 Thời gian xác định tập mật ứng cử CPU GPU 81 Bảng 7.2 Tốc độ sinh khóa GPU 82 Bảng 7.3 Thời gian khôi phục mật GPU theo tiếp cận 82 Bảng 7.4 Bảng tốc độ sinh duyệt khóa so sánh cách tiếp cận 83 Bảng 7.5 Thời gian khôi phục mật GPU theo tiếp cận 83 Bảng 7.6 Minh hoạ tốc độ kiểm tra khóa MD5 CPU GPU 84 Bảng 7.7 minh hoạ hiệu thực công việc thám mã MD5 CPU GPU 85 DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ TỪ VIẾT TẮT NGHĨA TIẾNG ANH MD5 Message-Digest algorithm Giải thuật băm mật mã với độ dài mã 128-bit (thay cho MD4) PKZip Phil Katz Zip Giải thuật nén sử dụng tệp tin Zip LZMA Lempel–Ziv–Markov chain algorithm Giải thuật nén sử dụng tệp tin Zip DES Data Encryption Standard Hệ mã đối xứng mã hóa liệu Có nhiều điểm yếu AES Advanced Encryption Standard Thuật toán mã hóa khối, mã hóa liệu cải tiến hệ mã mạnh, có kích thƣớc khóa 128-bit, 192-bit 256-bit RC4 Rivest Cipher Hệ mã đối xứng GPU Graphic Processing Unit Bộ xử lý đồ họa GPGPU General-purpose computing on graphics processing units Tính toán đa dụng xử lý đồ họa CUDA Compute Unified Device Architecture Ngôn ngữ lập trình cho xử lý đồ họa hãng NVIDIA Password-Based Key Derivation Function Giải thuật sinh mã từ mật ban đầu có giá trị salt ngẫu nhiên PVV Password Verify Value Giá trị kiểm tra mật có kích thƣớc byte MSB Most significant bit Bit cao SM Streaming Multiprocessors Đa xử lý dòng lệnh CWD Compute Work Distribution Đơn vi phân phát công việc tính toán Scalar Processor Xử lý vô hƣớng PBKDF2 SP CHÚ GIẢI Đơn vị chức đặc biệt, dành cho tính toán siêu việt SFU Special Function Unit SIMT Single-Instruction, Multiple- Đơn dòng lệnh, đa tiến trình Thread Chương – Thử nghiệm đánh giá Một card đồ hoạ kép NVIDIA GeForce GTX 295 (tổng cộng GPU) Một card đồ họa NVIDIA Tesla C1060 Hệ điều hành Centos OS 5.3 Máy 2: Bộ xử lý Intel Core Quad Q8400 2.66 Ghz (4 core) 8GB RAM Hai card đồ hoạ kép NVIDIA GeForce GTX 295 (tổng cộng GPU) Hệ điều hành Centos OS 5.3 Bộ công cụ phát triển phần mềm Bộ công cụ phát triển CUDA NVIDIA gồm có thành phần: - Driver CUDA - Một Toolkit CUDA bao gồm: - nvcc C compiler - CUDA FFT and BLAS libraries for the GPU - Profiler - gdb debugger for the GPU - CUDA runtime driver (also available in the standard NVIDIA GPU driver) - CUDA programming manual - Bộ ví dụ mẫu GPU_Computing_SDK Bộ công cụ Download tại: http://www.nvidia.com/object/cuda_get.html Quy trình cài đặt Sau đáp ứng đủ yêu cầu phần cứng, hệ điều hành Chúng ta tiến hành cài đặt phát triển công cụ CUDA theo thứ tự nhƣ sau: 80 Chương – Thử nghiệm đánh giá CUDA Driver CUDA Toolkit CUDA SDK Code Samples Chú ý trình cài đặt CUDA Driver CUDA Toolkit phải đƣợc thực trƣớc chạy biên dịch đoạn mã nguồn 7.2 Thử nghiệm đánh giá toán thám mã tệp nén Zip 7.2.1 Thử nghiệm Toàn pha toán khôi phục mật tệp nén Zip bao gồm giải thuật sinh xâu kiểm tra mật ứng cử cho pha 1, giải thuật xác định mật cho pha đƣợc xây dựng triển khai thử nghiệm Trung tâm Tính toán Hiệu cao trƣờng Đại học Bách khoa Hà Nội Luận văn tiến hành thử nghiệm theo hai cách tiếp cận hình thành không gian mật phƣơng pháp vét cạn phân tích cấu trúc mật Hiệu toán đƣợc đánh giá theo khía cạnh: - Số lƣợng khóa AES đƣợc sinh (chính số lƣợng mật ứng cử đƣợc sinh ra) Tốc độ khôi phục mật ban đầu tệp nén ZIP đƣợc mã hóa (chính toàn toán, sau ghép pha thứ toán vào) 7.2.1.1 Tiếp cận vét cạn Đầu vào tập ký tự chữ hoa, chữ thƣờng chữ số S = {a − z, A − Z, − 9} số tiến trình chạy song song (hay số mật kiểm tra lúc) p = 32768 Các giải thuật song song đƣợc cài đặt môi trƣờng phần cứng nhƣ cho thấy tốc độ sinh khóa kiểm tra khóa tăng rõ rệt so với việc thực tiến trình CPU Bảng 7.1 minh hoạ hiệu thực công việc xác định tập mật ứng cử CPU GPU Độ dài mật Số lƣợng mật 62 3906 242234 15018570 CPU 4s 8m 2.25h 5.25d 1GPU 2GPU 4GPU 22s 22s 22s 45s 45s 45s 3m 1m30s 1m31s 2h55m 1h28m 45m Bảng 7.1 Thời gian xác định tập mật ứng cử CPU GPU 81 Chương – Thử nghiệm đánh giá Bảng 7.2 cho thấy số lƣợng khóa AES sinh giây GPU Số lƣợng CPU/GPU 1GPU 2GPU 4GPU Số lƣợng khóa sinh 1s 1,536 khóa/1s 3,072 khóa/1s 6,144 khóa/1s Bảng 7.2 Tốc độ sinh khóa GPU Kết hợp thêm pha thực GPU, ta có bảng thời gian khôi phục mật cho toán đặt nhƣ sau Độ dài mật Số lƣợng mật 62 3906 242234 15018570 1GPU 23s 47s 4m55s 3h5m 2GPU 23s 47s 2m30s 1h 32m 4GPU 23s 47s 1m34s 45m48s Bảng 7.3 Thời gian khôi phục mật GPU theo tiếp cận Thời gian bảng đƣợc đo với giả thiết, tất mật ứng cử đƣợc giải mã, giải nén nhận dạng rõ Nhƣ xét trung bình, thời gian để khôi phục mật nửa thời gian 7.2.1.2 Tiếp cận phân tích cấu trúc mật Đầu vào cần có hai loại từ điển: Một loại từ điển chuyên dụng, gồm mật thực để thống kê xác suất xuất cấu trúc mật kí tự chữ số kí tự đặc biệt Tuy nhiên, việc có đƣợc mật thực nhƣ điều không dễ dàng lý an toàn an ninh Do thử nghiệm này, luận văn tạo số cấu trúc dạng base với xác suất kí tự chữ số, đặc biệt cấu trúc dạng base, để từ sinh cấu trúc dạng pre_terminal theo thứ tự xác suất giảm dần Dạng từ điển thứ hai từ điển gồm từ có nghĩa, nhóm sử dụng từ điển dic-0294.txt chứa 869229 từ Đây đƣợc coi từ điển có số từ lớn Với cách thức tự đề xuất luật nhƣ vậy, không ảnh hƣởng tới hiệu đánh giá tổng quát chƣơng trình (*) việc sinh cấu trúc pre-terminal độc lập Bảng 7.4 so sánh kết thu đƣợc hai tiếp cận sinh không gian mật Giả sử mật 6class$$4, có độ dài 9, dung phƣơng pháp vét cạn phải duyệt 13,76.1015 ( ~ 621+ 622 + … + 629) khóa có hy vọng tìm đƣợc mật đúng, rõ ràng điều không thực tế Nhƣng tiếp cận giải đƣợc với cấu trúc mật 82 Chương – Thử nghiệm đánh giá 6L5$$4, cấu trúc có thứ tự xác suất thứ 6, dùng từ điển dic-0294.txt, để sinh mật 6class$$4 tổng số khóa phải duyệt 469,332 khóa Số lƣợng GPU/CPU Số khóa(1) Thời gian(2) CPU/GPU (TC1) 13,76.1015 khóa Không tìm mật thời gian cho phép 1GPU/TC2 469,332 khóa 5m 22s 2GPU/TC2 469,332 khóa 2m 57s 4GPU/TC2 469,332 khóa 1m 32s Bảng 7.4 Bảng tốc độ sinh duyệt khóa so sánh cách tiếp cận Khi bổ sung thêm công đoạn xác định mật làm toán dừng mà không cần phải duyệt phần lại không gian mật khẩu, bảng sau so sánh thời gian khôi phục mật hai mật có xác suất xuất cao (cấu trúc preterminal có thứ tự 6) xác suất xuất thấp (cấu trúc pre-terminal có thứ tự 20) Số CPU/GPU Số khóa(1) Thời gian(2) Số khóa(3) Thời gian(4) CPU 469,332 1h 28m 1,482,632 4h 21m 1GPU 469,332 5m 22s 1,482,632 27m 42s 2GPU 469,332 2m 57s 1,482,632 14m 3s 4GPU 469,332 1m 32s 1,482,632 7m 10s Bảng 7.5 Thời gian khôi phục mật GPU theo tiếp cận 7.2.2 Đánh giá Kết cho thấy hiệu kiểm tra mật ứng cử tăng đáng kể (xấp xỉ 48 lần cho GPU 170 lần cho hệ thống GPU) thực GPU Giá trị 48 đến 170 lần so sánh tổng thời gian tìm đƣợc toàn mật ứng cử Mặc dù chƣa thử Số lƣợng khóa phải duyệt cấu trúc có thứ tự Thời gian tƣơng ứng để duyệt số khóa (mật khẩu) cấu trúc có thứ tự Số lƣợng khóa phải duyệt cấu trúc thứ tự 20 Thời gian tƣơng ứng để duyệt số khóa(mật khẩu) cấu trúc có thứ tự 20 83 Chương – Thử nghiệm đánh giá nghiệm đƣợc với không gian mật có độ dài lớn, thử nghiệm cho thấy khả ứng dụng cao GPU toán khôi phục mật tệp nén Ta nhận thấy thời gian khôi phục mật toán (thực pha pha 2) so với thời gian sinh tập mật ứng cử (thực pha 2) không chênh lệch nhiều, hai lý do: - - Thứ nhất, chi phí tính toán tập trung chủ yếu pha – nơi có hàm băm với độ phức tạp lớn, pha 2, việc thực chiếm chi phí tổng chi phí giải mã, giải nén phần nhỏ tệp tin ZIP Thứ hai, lần kích hoạt kernel ta kiểm tra đƣợc p mật đồng thời (p = 32768) Số lƣợng mật ứng cử có lô nhƣ không nhiều theo lý thuyết sử dụng giá trị kiểm tra mật PVV giảm đƣợc không gian mật xuống 65536 lần 7.3 Thử nghiệm đánh giá toán thám mã MD5 7.3.1 Thử nghiệm Giải thuật sinh kiểm tra mật nhƣ đề cập đƣợc cài đặt thử nghiệm Trung tâm Tính toán hiệu cao – ĐHBKHN Kết với đầu vào tập ký tự chữ hoa, chữ thƣờng chữ số S = {a − z, A − Z, − 9}, với số tiến trình block threads = 128, số block blocks = 256 (16x16) Các giải thuật song song đƣợc cài đặt môi trƣờng phần cứng nhƣ cho thấy tốc độ sinh kiểm tra mật đạt đƣợc 678,091,868 khóa /1s Bảng 7.6 thể tốc độ sinh khóa CPU GPU Số lƣợng CPU/GPU CPU GPU GPU GPU Số lƣợng khóa kiểm tra 1s 1.436.192 khóa/1s 194.379.500 khóa/1s 352.468.356 khóa/1s 678.091.868 khóa/1s Bảng 7.6 Minh hoạ tốc độ kiểm tra khóa MD5 CPU GPU 84 Chương – Thử nghiệm đánh giá Độ dài mật tối đa Số lƣợng mật GPU 2GPU 4GPU 62 3.906 242.234 15.018.571 931.151.403 57.731.386.987 3.579.345.993.195 221.919.451.578.091 0.33ms 0.65ms ms 76 ms 5s 318s 5h 7m 13d 5h 0.28ms 0.58ms 1.4ms 47ms 2.9s 194s 2h 49m 7d 7h 0.25ms 0.44ms 0.88ms 22ms 1.4 s 91 s 1h 28m 3d 19h Bảng 7.7 minh hoạ hiệu thực công việc thám mã MD5 CPU GPU Kết cho thấy hiệu sinh kiểm tra mật tăng đáng kể (xấp xỉ 135 lần cho GPU 472 lần cho hệ thống GPU) thực GPU Kết thử nghiệm cho thấy khả ứng dụng cao GPU toán thám mã MD5 Với hệ thống thử nghiệm tại, toán thám mã MD5 khả thi với mật có độ dài tối đa 7, đƣợc xây dựng từ tập ký tự sinh có 62 ký tự 7.3.2 Đánh giá Với mục tiêu ban đầu đặt khôi phục mật cho mã MD5, kết nghiên cứu đạt đƣợc mục tiêu Và kết cho thấy tốc độ thực giải thuật song song cho hiệu lớn đáng kể (135 lần cho hệ thống GPU 472 lần cho hệ thống GPU) so với giải thuật CPU 85 CHƯƠNG - KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 8.1 Kết luận Mục tiêu ban đầu đặt luận văn toán khôi phục mật cho tệp nén Zip giải toán thám mã MD5 Luận văn trình bày đƣợc kết tìm hiểu, nghiên cứu ứng dụng công nghệ GPU để giải toán thám mã cụ thể Đối với toán khôi phục mật tệp nén Zip, kết nghiên cứu hoàn thành đƣợc hai pha toán Đặc biệt với cách tiếp cận phân tích cấu trúc mật để hình thành không gian mật nhỏ hơn, không phụ thuộc vào độ dài mật bao gồm mật có chất lƣợng nhiều lần so với tiếp cận vét cạn Công đoạn xác đinh mật hoàn thành cho phép xác định mật chƣơng trình duyệt phần không gian mật lại Nếu mật rơi vào vùng có xác suất xuất cao thời gian khôi phục mật cho toán chấp nhận đƣợc Các kết cho thấy tốc độ thực giải thuật song song cho hiệu lớn đáng kể (48 lần cho hệ thống 1GPU 170 lần cho hệ thống 4GPU) so với giải thuật CPU Đối với toán thám mã MD5, kết nghiên cứu triển khai giải đƣợc toán dựa hệ thống máy tính đa lõi Các kết cho thấy tốc độ thực giải thuật song song cho tốc độ kiểm tra mã MD5 6.587.882 khóa/1s so với 1.642.676 khóa/1s giải thuật CPU, nhanh gấp lần 8.2 Hướng phát triển Bài toán xác định mật cho tệp nén Zip có kết song nhiều vấn đề cần đƣợc cải tiến Trong pha thứ hai – pha giải mã, giải nén nhận dạng rõ áp dụng cho phƣơng thức mã hóa nén mặc định WINZIP AES – 128/256 DEFLATE, hạn chế kỹ thuật nhận dạng rõ nhận dạng qua signature số định dạng thông dụng nhƣ PDF, DOC Do hƣớng 86 Chương – Kết luận hướng phát triển phát triển bổ sung thêm phƣơng thức nén, mã hóa, nhận dạng thêm định dạng khác để hoàn thiện pha Đối với toán thám mã MD5, ta nhận thấy có nhiều kỹ thuật khác áp dụng để cải thiện giải thuật đề xuất Hiện giải thuật sinh mật sử dụng phƣơng pháp vét cạn Khi số kí tự bảng chữ cở sở tăng lên độ dài mật cần kiểm tra tăng lên, số lƣợng mật tăng lên nhanh kéo theo tính khả thi giải pháp thấp Hơn nữa, việc sinh xâu độc lập nhau, coi xác suất xuất xâu tƣơng đƣơng Nhƣng thực tế, xâu sinh khác nhau, xác suất mật ngƣời dùng khác nhau, dựa nghiên cứu nhớ mật thói quen ngƣời dùng Trong khâu sinh xâu mật song song, ta áp dụng kỹ thuật phân tích cấu trúc mật [9], ƣu tiên duyệt cấu trúc mật có khả xuất cao, từ cải thiện đƣợc tốc độ tìm kiếm mật xác đồng nghĩa với việc tăng tính khả thi toán Để giảm thời gian thực thi toán, việc tăng cƣờng lực tính toán hệ thống giải pháp đáng quan tâm Giải pháp cụm tính toán GPU (GPUcluster), kết chùm máy tính có cài đặt GPU, đáng đƣợc quan tâm cho việc mở rộng lực tính toán 87 TÀI LIỆU THAM KHẢO [1] F I P S P 197 Advanced encryption standard (aes), 2001 [2] N T Courtois and J Pieprzyk Cryptanalysis of block ciphers with overdefined systems of equations, 2002 Preprint is available at http://eprint.iacr.org/2002/044/ [3] E F Foundation Cracking DES: Secrets of Encryption Research, Wiretap Politics and Chip Design O‟Reilly & Associates, Inc, 1998 [4] D Kahn The Codebreakers - The Story of Secret Writing 1967 [5] A Klein Attacks on the rc4 stream cipher Des Codes Cryptography, 48(3):269–286, 2008 [6] A Narayanan and V Shmatikov Fast dictionary attacks on passwords using time space tradeoff In CCS05: Proceedings of the 12th ACM conference on Computer and communications security, pages 364–372, New York, NY, USA, 2005 ACM [7] NVIDIA http://www.nvidia.com/object/cuda_home_new.html [8] PKWARE Zip file format specification, 2007 [9] M Weir, S Aggarwal, B d Medeiros, and B Glodek Password cracking using probabilistic context-free grammars In SP09: Proceedings of the 2009 30th IEEE Symposium on Security and Privacy, pages 391–405, Washington, DC, USA, 2009 IEEE Computer Society [10] R L Rivest, The MD5 Message Digest Algorithm, Request for Comments (RFC)1321, Internet Activities Board, Internet PrivacZ Task Force, April 1992.3RIPEMD-1281 [11] Tài liệu kĩ thuật, Trung tâm tính toán hiệu cao - Trƣờng Đại Học Bách Khoa Hà Nội http://hpcc.hut.edu.vn [12] RFC1951 - DEFLATE Compressed Data Format Specification [13] AES project http://www.gladman.me.uk/cryptography_technology/fileencrypt/ [14] Zlib library http://www.zlib.net/ [15] Aes encrytion info http://www.winzip.com/aes_info.htm [16] RFC 2898 - Password-Based Cryptography Specification Version 2.0 [17] CUDA Reference Manual phiên Có sẵn địa chỉ: http://developer.download.nvidia.com/compute/cuda/3_0/toolkit/docs/CudaReferenceManual.pdf 88 PHỤ LỤC Phụ lục A Cấu trúc tệp nén ZIP Định dạng file ZIP (tài liệu [8]) định dạng archive nén liệu Một file ZIP chứa nhiều file, file đƣợc nén để giảm thiểu kích thƣớc lƣu trữ đơn Một ƣu điểm file ZIP trƣờng hợp định, chúng đƣợc bảo vệ mật khẩu, theo cách ngƣời biết mật unzip đƣợc file Hiện WinZip đƣợc xem phần mềm zip/unzip phổ biến các môi trƣờng DOS/Window Cấu trúc tổng quan tệp nén ZIP đƣợc minh họa nhƣ sau [local file header 1] [file data 1] main file record [data descriptor 1] [local file header n] [file data n] main file record n [data descriptor n] [central directory 1] [central directory n] [end of central directory record] Hình A.1 Cấu trúc tổng quan file ZIP Các công cụ ZIP tạo hai ghi cho file: main file central directory, main file đƣợc nối central directory đƣợc nối nhau, cuối trƣờng End-of-Archive đánh dấu kết thúc file ZIP Local file header Mỗi local file header có cấu trúc nhƣ sau: 89 Phụ lục Kích thước Mô tả theo byte local file header signature version needed to extract general purpose bit flag compression method last modification time last modification date CRC-32 Compressed size Uncompressed size File name length Extra field length variable size File name variable size Extra field Hình A.2 Cấu trúc ghi local file header Ý nghĩa số trƣờng quan trọng: - Compression method Giá trị byte biểu diễn phƣơng thức nén đƣợc sử dụng để nén file, Bảng sau cho thấy giải thuật nén liệu mà Winzip hỗ trợ Option Compression Method Description Zip Zipx Superfast Enh.Deflate BZIP2 LZMA PPMd 14 12 14 98 The file is Deflated LZMA (EFS) The file is Deflated Enhanced Deflating using Deflate64(tm) File is compressed using BZIP2 algorithm LZMA (EFS) PPMd version I, Rev Bảng A.3 Các phƣơng thức nén mà Winzip hỗ trợ - mặc định Deflate (compress method =8) 90 Phụ lục Đặc tả ZIP làm tài liệu chi tiết cho phƣơng thức nén sau: stored (không nén), Shrunk, Reduced (methods 1-4), Imploded, Tokenizing, Deflated, Deflate64, BZIP2, LZMA (EFS), WavPach,PPMD Phƣơng thức nén thông dụng DEFLATE - - - Crc-32 checksum giá trị đƣợc tính toán liệu tệp nhờ giải thuật CRC-32 với „magic number‟ 0xdebb20e3 (lƣu trƣ̃ da ̣ng little endian) Compressed size Kích thƣớc liệu sau nén Nế u tê ̣p nén đƣơ ̣c đinh ̣ dạng ZIP64, trƣờng này là 0xffffffff và đô ̣ dài đƣơ ̣c lƣu trƣ̃ trƣờng extra filed Uncompressed size Kích thƣớc liệu trƣớc nén Nế u tê ̣p nén đƣơ ̣c đinh ̣ dạng ZIP64, trƣờng này là 0xffffffff và đô ̣ dài đƣơ ̣c lƣu trƣ̃ trƣờng extra field File modification time Thời gian tê ̣p đƣơ ̣c chỉnh sƣ̉a lầ n cuố i , đƣơ ̣c lƣu trƣ̃ dƣới đinh ̣ da ̣ng chuẩ n MS -DOS File modification date Ngày tệp đƣợc chỉnh sửa lầ n cuố i, đƣơ ̣c đinh ̣ da ̣ng theo chuẩ n MS - DOS File name length đô ̣ dài của trƣờng file name Extra field length đô ̣ dài của trƣờng extra field File name Tên của tê ̣p bao gồ m mô ̣t đƣờng dẫn tƣơng đố i tùy cho ̣n Tấ t cả dấ u sổ đƣờng dẫn cầ n phải là „/‟ Extra field Đƣợc sử dụng để lƣu trữ thông tin thêm Trƣờng này bao gồ m mô ̣t chuỗi các că ̣p header và data , header có byte đinh ̣ danh và mô ̣t trƣờng kić h thƣớc dƣ̃ liê ̣u là byte File data Theo sau local file header liệu nén liệu lƣu trữ file Chuỗi [locafile header][file data][data descriptor] lặp lại cho file archive ZIP nhƣ minh họa hình 6-1 Data descriptor Data descriptor tồn bit thứ trƣờng general purpose bit flag local file header đƣợc set Khi có cấu trúc dạng nhƣ sau: crc-32 bytes compressed size bytes uncompressed size bytes 91 Phụ lục Lúc thông tin trƣờng CRC-32, compressed size, uncompressed size local file header chƣa đƣợc biết, muốn có thông tin ta phải đọc Data desriptor Central directory Central directory mở rộng local file header, cấu trúc nhƣ sau: Kích thước theo Mô tả byte central file header signature (0x02014b50) version needed to extract general purpose bit flag compression method last modification time last modification date CRC-32 Compressed size Uncompressed size File name length Extra field length file comment length disk number start internal file attributes external file attributes relative offset of local header variable size file comment variable size File name variable size Extra field Hình A.3 Cấu trúc central directory 92 Phụ lục End-of-Archive Sau central directory End-of-Archive đánh dấu kết thúc file ZIP Bytes 2 2 4 variable size Mô tả End of central directory signature = 0x06054b50 Number of this disk Disk where central directory starts Number of central directory records on this disk Total number of central directory records Size of central directory (bytes) Offset of start of central directory, relative to start of archive ZIP file comment length ZIP file comment Hình A.4 Cấu trúc end of ZIP archive Phụ lục B Một số hàm thông dụng CUDA cudaError_t cudaMalloc(void ** devPtr, size_t size) Hàm cấp phát vùng nhớ tuyến tính kích thƣớc size byte nhớ thiết bị (GPU), devPtr trỏ giữ địa vùng nhớ Trong trƣờng hợp cấp phát không thành công hàm trả lại giá trị cudaErrorMemoryAllocation Các tham số: devPtr – trỏ tới vùng nhớ thiết bị size – kích thƣớc vùng nhớ cần cấp phát Trả về: cudaSuccess cudaErrorMemoryAllocation cudaError_tcudaMemcpy(void ** dst, const void ** src, size_t count, enumcudaMemcpyKind kind) Sao chép count byte từ vùng nhớ đƣợc trỏ src tới vùng nhớ đƣợc trỏ dst, kind kiểu thực hiện, cudaMemcpyHostToHost, 93 Phụ lục cudaMemcpyHostToDevice, cudaMemcpyDeviceToHost, cudaMemcpyDeviceToDevice Yêu cầu vùng nhớ không đƣợc chồng lên Các tham số: dst địa vùng nhớ đích src địa vùng nhớ nguồn count kích thƣớc để copy tính theo byte kind kiểu truyền liệu Trả về: cudaSuccess, cudaErrorInvalidValue, cudaErrorInvalidMemcpyDirection cudaErrorInvalidDevicePointer, cudaError_tcudaFree(void ** devPtr) Giải phóng không gian nhớ đƣợc trỏ devPtr, trỏ lời gọi hàm cấp phát trƣớc cudaMalloc() cudaMallocPitch() Nếu giá cudaFree(devPtr) đƣợc gọi trƣớc đó, có lỗi trƣờng hợp có lỗi cudaFree() trả lại giá trị cudaErrorInvalidDevicePointer Các tham số: devPtr – trỏ tới vùng nhớ thiết bị cần giải phóng Trả lại: cudaSuccess, cudaErrorInvalidDevicePointer, cudaErrorInitializationError 94 ... giải pháp hiệu để áp dụng rộng rãi lĩnh vực tính toán nói chung thám mã nói riêng Công nghệ sử dụng card đồ họa cho mục đích tính toán đời tạo hƣớng cho công nghệ tính toán song song, đƣợc phát triển... nghiên cứu nhƣ sau: - Nghiên cứu phƣơng pháp thám mã cho đối tƣợng tệp nén Zip đƣợc bảo vệ mật Nghiên cứu giải thuật mã hóa MD5 Nghiên cứu công nghệ lập trình song song CUDA để phục vụ toán thám. .. 36 3.3 Tổng kết mã MD5 41 3.4 Các ứng dụng MD5 41 3.5 Thám mã MD5 42 CHƢƠNG - GPU VÀ CÔNG NGHỆ TÍNH TOÁN ĐA DỤNG GPGPU 44 4.1 Các xử lý đồ họa đa lõi Nvidia