1. Trang chủ
  2. » Công Nghệ Thông Tin

Thám mật khẩu các file word

70 302 0

Đ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 70
Dung lượng 1,92 MB

Nội dung

Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD 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ã Tôi xin gửi lời cảm ơn đến Trung tâm Tính toán Hiệu cao – Đại học Bách Khoa Hà Nội Trung tâm hỗ trợ nhiều mặt chuyên môn 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 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD MỤC LỤC LỜI CẢM ƠN DANH MỤC HÌNH VẼ DANH MỤC BẢNG .6 DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ CHƯƠNG 1- GIỚI THIỆU CHUNG 1.1 Tổng quan mật mã học 1.2 Giới thiệu toán thám mật cho file word 1.2.1 Những thách thức việc thám mật cho file word 1.2.2 Sơ lược định dạng DOCX 10 1.3 Mục tiêu luận văn 10 1.4 Cấu trúc luận văn 11 CHƯƠNG – CẤU TRÚC MÃ HÓA VĂN BẢN TRONG MICROSOFT OFFICE 12 2.1 Giới thiệu 12 2.1.1 Chú giải vài thuật ngữ 12 2.1.2 Data space 12 2.1.3 Quản lý quyền thông tin Data space 14 2.1.4 Mã hóa 15 2.1.5 Tính chống chỉnh sửa 16 2.1.6 Chữ ký số 16 2.1.7 Sắp xếp byte 16 2.1.8 Mã hóa chuỗi ký tự 16 2.1.9 Mã hóa đường dẫn file hợp OLE 16 2.1.10 Các đối tượng chuẩn Pseudocode 17 2.1.11 Các trường vendor mở rộng 17 2.2 Cấu trúc mã hóa 17 2.2.1 EncryptionHeaderFlags 18 2.2.2 EncryptionHeader 18 2.2.3 EncryptionVerifier 20 2.2.4 Mã hóa Văn ECMA-376 22 2.2.5 Mã hóa RC4 CryptoAPI Văn Office 33 2.2.6 Mã hóa RC4 Văn Office 35 2.2.7 Kỹ thuật gây rối XOR 36 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD 2.3 Định dạng file DOCX 36 2.3.1 Định dạng 37 2.3.2 Quan hệ với OOXML 37 CHƯƠNG –THÁM MẬT KHẨU CÁC FILE WORD 38 3.1 Phương pháp vét cạn 38 3.2 Phương pháp phân tích cấu trúc mật 39 3.2.1 Đặt vấn đề 39 3.2.2 Tìm hiểu nghiên cứu thói quen người dùng 40 3.2.3 Nguồn liệu phương pháp phân tích 40 3.2.4 Phân tích 41 3.2.5 Không gian mật 42 3.2.6 Từ điển 43 3.2.7 Cấu trúc mật 43 3.2.8 Sinh không gian mật từ cấu trúc mật từ điển 44 CHƯƠNG –THỬ NGHIỆM VÀ ĐÁNH GIÁ 48 4.1 Các liệu cần trích xuất 48 4.1.1 Sinh khóa Mã hóa Văn ECMA-376 (Mã hóa chuẩn) 48 4.1.2 Sinh mật xác thực (Mã hóa chuẩn) 49 4.1.3 Xác thực mật (Mã hóa chuẩn) 49 4.1.4 Sinh khóa mã (Mã hóa nhanh) 49 4.1.5 Sinh vectơ khởi tạo (Mã hóa nhanh) 50 4.1.6 Sinh PasswordKeyEncryptor (Mã hóa nhanh) 50 4.1.7 Sinh DataIntegrity (Mã hóa nhanh) 52 4.1.8 Sinh khóa Mã hóa RC4 CryptoAPI 53 4.1.9 Luồng mã hóa (Mã hóa RC4) 54 4.1.10 Sinh mật xác thực (Mã hóa RC4) 55 4.1.11 Tiến trình xác thực mật (Mã hóa RC4) 55 4.1.12 Thu khóa mã 56 4.1.13 Sinh mật xác thực (Mã hóa mở rộng) 56 4.1.14 Xác thực mật (Mã hóa mở rộng) 57 4.1.15 Kỹ thuật gây rối XOR 57 4.2 Thử nghiệm 63 4.2.1 Mô hình thử nghiệm 63 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD 4.2.2 Dữ liệu thử nghiệm 68 4.2.3 Môi trường thử nghiệm 68 4.2.4 Kết thử nghiệm 68 4.3 Đánh giá 68 CHƯƠNG - KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 69 5.1 Kết luận 69 5.2 Hướng phát triển 69 TÀI LIỆU THAM KHẢO 70 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD DANH MỤC HÌNH VẼ Hình 2.1 Các mối quan hệ luồng DataSpaceMap, kho DataSpaceInfo, kho TransformInfo nội dung bảo mật 13 Hình 2.2 Xử lý văn ECMA-376 áp dụng cấu trúc IRMDS 14 Hình 2.3 Cấu trúc EncryptionHeaderFlags 18 Hình 2.4 Cấu trúc EncryptionHeader 19 Hình 2.5 Cấu trúc EncryptionVerifier 21 Hình 2.6 Luồng \EncryptedPackage 23 Hình 2.7 Luồng \EncryptionInfo 23 Hình 2.8 Cấu trúc luồng \EncryptionInfo 25 Hình 2.9 Cấu trúc luồng \EncryptedPackage 29 Hình 2.10 Cấu trúc header Mã hóa RC4 CryptoAPI 33 Hình 2.11 Cấu trúc EncryptedStreamDescriptor RC4 CryptoAPI 34 Hình 2.12 Luồng mã hóa giản lược RC4 CryptoAPI 35 Hình 2.13 Cấu trúc header Mã hóa RC4 36 Hình 3.1 Phân bố xác suất thói quen đặt mật người dùng 41 Hình 4.1 Sơ đồ mô hình thử nghiệm 63 Hình 4.2 Đọc lấy thông tin dkLen, salt verifier 65 Hình 4.3 Giải thuật kiểm tra mật 66 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD DANH MỤC BẢNG Bảng 2.1 Bảng giá trị lựa chọn số nguyên định thuật toán mã hóa 19 Bảng 2.2 Bảng giá trị trường Flags tương ứng 19 Bảng 2.3 Bảng giá trị định thuật toán băm 20 Bảng 2.4 Bảng giá trị định số bit khóa mã tương ứng 20 Bảng 2.5 Bảng giá trị bổ sung 20 Bảng 2.6 Bảng giá trị trường EncryptionHeader (mã hóa chuẩn) 24 Bảng 2.7 Bảng giá trị trường EncryptionHeader (mã hóa mở rộng) 25 Bảng 2.8 Bảng thể EncryptionData 26 Bảng 2.9 Bảng ký tự định thuật toán mã hóa 29 Bảng 2.10 Bảng giá trị dùng CipherAlgorithm 29 Bảng 2.11 Bảng ký tự định thuật toán băm 29 Bảng 2.12 Báng giá trị trường EncyptionHeader (Mã hóa RC4 CryptoAPI) 34 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ TỪ VIẾT TẮT CHÚ GIẢI SHA Là năm thuật giải dùng để chuyển đoạn liệu định thành đoạn liệu có chiều dài không đổi với xác suất khác biệt cao Năm thuật giải SHA SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 Bốn thuật giải sau thường gọi chung SHA-2 AES Thuật toán mã 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 ECMA-376 Một chuẩn mở quốc tế phê duyệt dành cho tài liệu xử lý văn bản, trình diễn bảng tính, áp dụng hoàn toàn tự nhiều ứng dụng hệ thống Các phiên Microsoft Office từ 2007 trở áp dụng chuẩn khuôn dạng lưu trữ mặc định IRMDS Cấu trúc quản lý quyền thông tin vùng liệu dùng để gắn sách quản lý quyền cho văn RC4 Hệ mã đối xứng, nhiên có nhiều điểm yếu nên sử dụng hệ thống ngày PBKDF2 Giải thuật sinh mã từ mật ban đầu có giá trị salt ngẫu nhiên GPU Bộ xử lý đồ họa Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD CHƯƠNG 1- GIỚI THIỆU CHUNG 1.1 Tổng quan mật mã học Mật mã học (tiếng Anh Cryptography Cryptology) ngành khoa học nghiên cứu kỹ thuật toán học liên quan tới khía cạnh an toàn thông tin Trước thời kỳ đại, mật mã học tập trung tới tính bí mật tin – tức gắn liền với mã hóa, trình chuyển đổi thông tin thông thường (bản rõ) dạng nhận thức thành dạng khó nhận thức trực tiếp Muốn đọc cần phải có “khóa” dùng để giải mã cho tin Việc mã hóa dùng để đảm bảo tính bí mật thông tin lưu trữ thông tin liên lạc, chẳng hạn công tác tình báo, quân sự, ngoại giao kinh tế, thương mại Trong thập niên gần đây, lĩnh vực mở rộng vượt mối quan tâm tính bí mật bao gồm kỹ thuật khác kiểm tra tính toàn vẹn 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ữ, thời kỳ đại, thuật ngữ cryptography dùng để nhắc đến việc sử dụng thực hành kỹ thuật mật mã hóa Nhiều người sử dụng thuật ngữ cryptography cryptology hoán đổi cho tiếng Anh Tuy vậy, theo chuyên gia mật mã cryptology dùng để nghiên cứu kết hợp mật mã hóa (cryptography) thám mã (cryptanalysis) Thám mã (tiếng Anh Cryptanalysis) – khoa học nghiên cứu phương pháp lấy lại ý nghĩa thông tin bị mã hóa, mà không cần truy xuất tới thông tin dùng để thực mã hóa Thông thường, điều liên quan đến hiểu biết cách hệ thống làm việc tìm khóa bí mật Mục tiêu thám mã (phá mã) tìm điểm yếu không an toàn phương thức mật mã hóa Thám mã thực kẻ công mục đích xấu, nhằm làm hỏng hệ thống; người thiết kế hệ thống với mục đích đánh giá độ an toàn hệ thống Khoa học thám mã với khoa học mật mã suốt chiều dài lịch sử mật mã học – thuật toán mã hóa thiết kế để thay thiết kế cũ bị hỏng, kỹ thuật thám mã đưa để phá vỡ đề án cải thiện Hai nhánh nghiên cứu xem hai mặt vấn đề an toàn an ninh thông tin: phát triển nhánh thúc đẩy phát triển nhanh ngược lại Trong lịch sử phát triển, phát triển vượt trước nhánh so với nhánh lại mang đến lợi ích to lớn cho đời sống, chí định vận mệnh đất nước Ví dụ thành công việc thám mã Zimmermann Telegram chiến thứ kéo Hoa Kỳ vào chiến, hay việc thám mã thành công hệ mã German đánh giá góp phần rút ngắn chiến thứ hai vài tháng Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD 1.2 Giới thiệu toán thám mật cho file word 1.2.1 Những thách thức việc thám mật cho file word Đối với file word 2003 trở trước dùng phương pháp vét cạn Nhưng từ word 2007 trở lên mật mã hóa AES 128bit kết hợp SHA1 Với hệ mã mạnh AES (hệ mã sử dụng phổ biến phiên Microsoft Word) việc công vét cạn không khả thi AES, tiêu chuẩn mã hóa tiên tiến, thuật toán mã hóa khối AES làm việc với khối liệu 128-bit (4x4 bytes) khóa có độ dài 128, 192 256 bit AES dễ dàng thực với tốc độ cao phần mềm phần cứng không đòi hỏi nhiều nhớ Là hệ thống mã hóa mạnh, AES-128/AES-256 với kích thước khóa 128/256 bit có đến 2128/2256 khả phải thử để tìm mật ban đầu Một số nghiên cứu gần giải thuật XSL cho phép giảm không gian khóa từ 2128 khả xuống khoảng 2100 khả Tuy nhiên, việc thử hết tất khả không chấp nhận hệ thống tính toán thông dụng Cách tiếp cận để xuất không trực tiếp công không gian khóa AES Thay vào đó, khóa cho hệ mã file word sinh từ mật người dùng thông qua hàm băm công bố phần đặc tả file Không gian mật lớn tính khả thi cho việc thámfile dựa không gian mật cao nhiều so với thám mã dựa không gian khóa Hơn nữa, kết hợp với việc phân tích cấu trúc mật dựa thói quen người dùng (phương pháp công từ điển) không gian mật thu hẹp lại nhiều làm tăng hiệu suất thám mã Đối tượng nghiên cứu cụ thể luận văn file dạng word với đuôi DOCX (viết tắt file DOCX) mã hóa giải thuật AES-128 Thông tin quan trọng cho việc khôi phục xác mật cho file DOCX bảo vệ nhờ quy trình giải mã Trong phân tích mật mã bảo mật máy tính, công từ điển kỹ thuật phá mã vượt qua chế xác thực cách thử khóa mã hay mật miền tiềm Kỹ thuật công từ điển công mục tiêu cách thử tất từ danh sách dài gọi từ điển (được chuẩn bị trước) Khác với kiểu công vét cạn, phần lớn không gian khóa tìm kiếm cách hệ thống, công từ điển thử vùng có nhiều khả thành công nhất, thường xuất phát từ danh sách từ tạo dựa thông tin người sử dụng từ điển (vì mà có thuật ngữ "tấn công từ điển") Nói chung, thành công công từ điển chủ yếu dựa xác suất từ hay cụm từ mà nhiều người dùng có xu hướng lựa chọn, chẵng hạn chọn mật ngắn (7 ký tự hơn), từ đơn tìm thấy từ điển, từ đơn giản, dễ dự đoán biến thể từ (như viết hoa chữ, hay thêm vào chữ số)… Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD 1.2.2 Sơ lược định dạng DOCX DOCX phần mở rộng file Microsoft Word Open XML Định dạng xử lý văn giới thiệu Microsoft Word 2007 Các file DOCX khác với chương trình Microsoft Word trước sử dụng file DOC, nghĩa file DOC sử dụng văn định dạng nhị phân để lưu trữ tài liệu, file DOCX lại dựa XML sử dụng công nghệ nén ZIP để có kích thước file nhỏ Nói cách khác, file DOCX tập hợp file XML nén Zip Sự cần thiết thay đổi từ định dạng file nhị phân trở thành định dạng XML nhận định dạng trước đáp ứng thách thức di chuyển liệu ứng dụng khác thu thập thông tin từ chúng Bây với XML, người dùng dễ dàng làm việc với file word ứng dụng có hỗ trợ Hơn nữa, mối lo ngại bảo mật giảm thiểu tối đa XML dễ dàng qua tường lửa Việc gửi nhận trở nên dễ dàng file DOCX nhỏ gọn mạnh mẽ nhiều Các thuật toán mã hóa phụ thuộc vào thuật toán truy cập thông qua hàm API (giao diện lập trình ứng dụng) hệ điều hành Windows Hiện nay, Word 2013 việc trì hỗ trợ hàm mã hóa API (CryptoAPI), hỗ trợ CNG (CryptoAPI Next Generation), chúng sử dụng Microsoft Word 2007 Service Pack (SP2) với file DOCX Để thuận tiện cho người dùng, khóa bí mật hàm mã hóa sinh từ mật người gửi nhập vào thông qua hàm băm để mã hóa tài liệu Sau mật người gửi chuyến đến cho người nhận qua kênh an toàn khác để người nhận sử dụng cho trình giải mã Bài toán thám mật file word đặt là: cho file word, cụ thể định dạng DOCX, có mật bảo vệ tạo người biết, xác định mật để mở file 1.3 Mục tiêu luận văn Luận văn có mục đích nghiên cứu sau: - Nghiên cứu chế mã hóa file DOCX - Nghiên cứu cấu trúc mật dựa thói quen chung người dùng việc đặt mật để làm sở thực thám mật - Xây dựng ứng dụng thử nghiệm Đối tượng nghiên cứu bao gồm: - File word tạo từ phần mềm Microsoft Office, cụ thể phần mềm Microsoft Word từ phiên 2007 trở - Cấu trúc mật Phạm vi nghiên cứu luận văn giới hạn file DOCX 10 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD Luồng giải mã RC4 không thiết lập lại hai trình giải mã rõ bước 4.1.12 Thu khóa mã Khóa mã cho Mã hóa RC4 Văn Office sinh theo phương thức sau: Cho H() thuật toán băm MD5, Hn liệu băm lần lặp thứ n, dấu "+" thể móc nối Mật phải cung cấp chuỗi ký tự Unicode Giới hạn độ dài mật ký tự dùng cho mật phụ thuộc việc thực Trừ có quy định khác, độ dài mật tối đa phải 255 ký tự Unicode Băm mật ban đầu sinh sau: H0 = H(password) Salt phải sinh cách ngẫu nhiên phải có kích thước 16 byte Salt phải lưu trường Salt cấu trúc Header Mã hóa RC4 Sau băm tính kỹ thuật sau: Cho TruncatedHash byte H0 Cho IntermediateBuffer đệm 226 byte Thiết lập đệm 21 byte cách móc nối TruncatedHash salt Khởi tạo IntermediateBuffer cách chép đệm 21 byte vào IntermediateBuffer tổng cộng 16 lần Dùng sau: H1 = H(IntermediateBuffer) Sau thu băm cuối cùng, khóa mã phải sinh cách sử dụng byte liệu băm cuối số block mà cung cấp ứng dụng Thuật toán mã hóa phải RC4 Phương thức dùng để sinh liệu băm đầu vào cho thuật toán dò khóa sau: - Cho TruncatedHash byte H1 - Dùng sau: Hfinal = H(TruncatedHash + block) Số block phải giá trị không dấu 32 bit cung cấp ứng dụng 128 bit Hfinal phải dùng khóa mã dò 4.1.13 Sinh mật xác thực (Mã hóa mở rộng) Mật xác thực sử dụng cấu trúc BinaryRC4EncryptionHeader Trường Salt mật xác thực phải salt tạo suốt trình sinh khóa mật Xác thực 16 byte bổ sung băm cách dùng thuật toán băm MD5 mã hóa cách dùng khóa sinh mục 4.1.12, với số block 0x00000000 Luồng giải mã RC4 không thiết lập lại giải mã EncryptedVerifier EncryptedVerifierHash 56 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD 4.1.14 Xác thực mật (Mã hóa mở rộng) Tiến trình xác thực mật rõ qua bước sau: Sinh khóa mã nói mục 4.1.12, sử dụng số block 0x00000000 Giải mã trường EncryptedVerifier cấu trúc Header Mã hóa RC4 để thu giá trị Verifier Giá trị Verifier trả phải mảng 16 byte Giải mã trường EncryptedVerifierHash cấu trúc Header Mã hóa RC4 để thu băm giá trị Verifier Số byte dùng băm Verifier mã hóa phải 16 Tính toán giá trị băm MD5 kết bước So sánh kết bước Nếu hai giá trị băm không khớp mật sai Luồng giải mã RC4 không phép thiết lập lại giải mã EncryptedVerifier EncryptedVerifierHash 4.1.15 Kỹ thuật gây rối XOR Kỹ thuật gây rối XOR hỗ trợ cho khả tương thích ngược định dạng file cũ 4.1.15.1 Tìm nguồn xác thực mật văn OfficePhương thức Phương pháp CreatePasswordVerifier_Method1 rõ làm cách để xác thực mật 16 bit thu thập từ chuỗi ký tự mật ASCII Xác thực mật dùng kỹ thuật gây rối XOR vấn để bảo mật soạn văn Phương pháp CreatePasswordVerifier_Method1 có tham số sau: - Password: Một chuỗi ký tự ASCII định mật sử dụng sinh xác thực FUNCTION CreatePasswordVerifier_Method1 PARAMETERS Password RETURNS 16-bit unsigned integer DECLARE Verifier AS 16-bit unsigned integer DECLARE PasswordArray AS array of 8-bit unsigned integers SET Verifier TO 0x0000 SET PasswordArray TO (empty array of bytes) SET PasswordArray[0] TO Password.Length APPEND Password TO PasswordArray FOR EACH PasswordByte IN PasswordArray IN REVERSE ORDER IF (Verifier BITWISE AND 0x4000) is 0x0000 SET Intermediate1 TO ELSE SET Intermediate1 TO ENDIF 57 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD SET Intermediate2 TO Verifier MULTIPLED BY SET most significant bit of Intermediate2 TO SET Intermediate3 TO Intermediate1 BITWISE OR Intermediate2 SET Verifier TO Intermediate3 BITWISE XOR PasswordByte ENDFOR RETURN Verifier BITWISE XOR 0xCE4B END FUNCTION 4.1.15.2 Khởi tạo mảng XOR văn OfficePhương thức Phương pháp CreateXorArray_Method1 rõ làm cách để mảng gây rối XOR 16 byte khởi tạo Phương pháp có tham số sau: - Password: Một chuỗi ký tự ASCII định mật sử dụng để mã hóa liệu Mật phải dài 15 ký tự SET PadArray TO ( 0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00 ) SET InitialCode TO ( 0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139,xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3 ) SET XorMatrix TO ( 0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4 ) 0x2A09, 0x8AC6, 0x1BA8, 0xAA7A, 0xEB23, 0x0F6D, 0x377B, 0x6A10, 0xED68, 0xA9A1, 0x06E6, FUNCTION CreateXorArray_Method1 PARAMETERS Password RETURNS array of 8-bit unsigned integers DECLARE XorKey AS 16-bit unsigned integer DECLARE ObfuscationArray AS array of 8-bit unsigned integers SET XorKey TO CreateXorKey_Method1(Password) SET Index TO Password.Length SET ObfuscationArray TO (0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) IF Index MODULO IS SET Temp TO most significant byte of XorKey SET ObfuscationArray[Index] TO XorRor(PadArray[0], Temp) DECREMENT Index SET Temp TO least significant byte of XorKey SET PasswordLastChar TO Password[Password.Length MINUS 1] SET ObfuscationArray[Index] TO XorRor(PasswordLastChar, Temp) END IF WHILE Index IS GREATER THAN to 58 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD DECREMENT Index SET Temp TO most significant byte of XorKey SET ObfuscationArray[Index] TO XorRor(Password[Index], Temp) DECREMENT Index SET Temp TO least significant byte of XorKey SET ObfuscationArray[Index] TO XorRor(Password[Index], Temp) END WHILE SET Index TO 15 SET PadIndex TO 15 MINUS Password.Length WHILE PadIndex IS greater than SET Temp TO most significant byte of XorKey SET ObfuscationArray[Index] TO XorRor(PadArray[PadIndex], Temp) DECREMENT Index DECREMENT PadIndex SET Temp TO least significant byte of XorKey SET ObfuscationArray[Index] TO XorRor(PadArray[PadIndex], Temp) DECREMENT Index DECREMENT PadIndex END WHILE RETURN ObfuscationArray END FUNCTION FUNCTION CreateXorKey_Method1 PARAMETERS Password RETURNS 16-bit unsigned integer DECLARE XorKey AS 16-bit unsigned integer SET XorKey TO InitialCode[Password.Length MINUS 1] SET CurrentElement TO 0x00000068 FOR EACH Char IN Password IN REVERSE ORDER FOR iterations IF (Char BITWISE AND 0x40) IS NOT SET XorKey TO XorKey BITWISE XOR XorMatrix[CurrentElement] END IF SET Char TO Char MULTIPLIED BY DECREMENT CurrentElement END FOR END FOR RETURN XorKey END FUNCTION FUNCTION XorRor PARAMETERS byte1, byte2 RETURNS 8-bit unsigned integer RETURN Ror(byte1 XOR byte2) END FUNCTION FUNCTION Ror PARAMETERS byte RETURNS 8-bit unsigned integer SET temp1 TO byte DIVIDED BY SET temp2 TO byte MULTIPLIED BY 128 59 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD SET temp3 TO temp1 BITWISE OR temp2 RETURN temp3 MODULO 0x100 END FUNCTION 4.1.15.3 Biến đổi liệu XOR văn OfficePhương thức Dữ liệu biến đổi Biến đổi liệu XOR văn Phương thức để mã hóa rõ phương pháp EncryptData_Method1 Phương pháp có tham số sau: - Password: Một chuỗi ký tự ASCII định mật dùng để mã hóa liệu - Data: Một mảng số nguyên bit không dấu định liệu mã hóa - XorArrayIndex:Số nguyên không dấu định số đầu mảng gây rối XOR sử dụng FUNCTION EncryptData_Method1 PARAMETERS Password, Data, XorArrayIndex DECLARE XorArray as array of 8-bit unsigned integers SET XorArray TO CreateXorArray_Method1(Password) FOR Index FROM TO Data.Length SET Value TO Data[Index] SET Value TO (Value rotate left bits) SET Value TO Value BITWISE XOR XorArray[XorArrayIndex] SET DATA[Index] TO Value INCREMENT XorArrayIndex SET XorArrayIndex TO XorArrayIndex MODULO 16 END FOR END FUNCTION Dữ liệu biến đổi Biến đổi liệu XOR văn OfficePhương thức để giải mã rõ phương pháp DecryptData_Method1 Phương pháp có tham số sau: - Password: Một chuỗi ký tự ASCII định mật dùng để giải mã liệu - Data: Một mảng số nguyên bit không dấu định liệu mã hóa - XorArrayIndex: Một số nguyên không dấu định số đầu mảng gây rối XOR sử dụng FUNCTION DecryptData_Method1 PARAMETERS Password, Data, XorArrayIndex DECLARE XorArray as array of 8-bit unsigned integers SET XorArray TO CreateXorArray_Method1(Password) FOR Index FROM SET Value SET Value SET Value to TO TO TO Data.Length Data[Index] Value BITWISE XOR XorArray[XorArrayIndex] (Value rotate right bits) 60 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD SET Data[Index] TO Value INCREMENT XorArrayIndex SET XorArrayIndex TO XorArrayIndex MODULO 16 END FOR END FUNCTION 4.1.15.4 Tìm nguồn xác thực mật văn OfficePhương thức Phương pháp CreatePasswordVerifier_Mothod2 rõ làm cách để xác thực mật 32 bit thu thập từ chuỗi ký tự byte mà biến đổi từ chuỗi Unicode Xác thực mật dùng kỹ thuật gây rối XOR Tồn hai kỹ thuật khác cho việc xử lý trước chuỗi ký tự mật để biến đổi từ Unicode thành ký tự byte: - Sử dụng LCID (language code identifier) biến đổi đầu vào Unicode thành chuỗi ký tự ASCII Cắt bớt chuỗi ký tự trả thành 15 ký tự byte - Mỗi ký tự Unicode đầu vào, chép byte quan trọng vào chuỗi ký tự byte, ngoại trừ byte quan trọng 0x00 Nếu byte quan trọng 0x00 chép byte quan trọng Cắt bớt chuỗi ký tự trả thành 15 ký tự Khi ghi file kỹ thuật thứ hai sử dụng Khi đọc file tất phương thức thử, mật phải xem xét cách xác kết phù hợp Phương pháp CreatePasswordVerifier_Mothod2 có tham số sau: - Password: Một chuỗi ký tự byte định mật dùng để mã hóa liệu Mật không dài 15 ký tự Mật phải biến đổi từ Unicode thành ký tự byte cách dùng phương thức nêu mục FUNCTION CreatePasswordVerifier_Method2 PARAMETERS Password RETURNS 32-bit unsigned integer DECLARE Verifier as 32-bit unsigned integer DECLARE KeyHigh as 16-bit unsigned integer DECLARE KeyLow as 16-bit unsigned integer SET KeyHigh TO CreateXorKey_Method1(Password) SET KeyLow TO CreatePasswordVerifier_Method1(Password) SET most significant 16 bits of Verifier TO KeyHigh SET least significant 16 bits of Verifier TO KeyLow RETURN Verifier END FUNCTION 4.1.15.5 Khởi tạo mảng XOR văn OfficePhương thức Phương pháp CreateXorArray_Method2 rõ làm cách để mảng gây rối XOR 16 byte khởi tạo Phương pháp có tham số sau: 61 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD - Password: Một chuỗi ký tự byte định mật dùng để mã hóa liệu Mật không dài 15 ký tự Mật phải biến đổi từ Unicode thành ký tự byte cách sử dụng phương thức nêu mục 4.1.15.4, với kết phù hợp với xác thực mật FUNCTION CreateXorArray_Method2 PARAMETERS Password RETURNS array of 8-bit unsigned integers DECLARE DECLARE DECLARE DECLARE SET SET SET SET Verifier as 32-bit unsigned integer VerifierHighWord as 16-bit unsigned integer KeyHigh as 8-bit unsigned integer KeyLow as 8-bit unsigned integer Verifier TO CreatePasswordVerifier_Method2(Password) VerifierHighWord TO 16 most significant bits of Verifier KeyHigh TO most significant bits of VerifierHighWord KeyLow TO least significant bits of VerifierHighWord SET PadArray TO (0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00) SET ObfuscationArray TO (0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) SET Index TO WHILE Index IS LESS THAN Password.Length SET ObfuscationArray[Index] TO Password[Index] INCREMENT Index END WHILE WHILE Index IS LESS THAN 16 SET ObfuscationArray[Index] TO PadArray[Index Password.Length] INCREMENT Index END WHILE MINUS SET Index TO WHILE Index IS LESS THAN 16 SET Temp1 TO ObfuscationArray[Index] BITWISE XOR KeyLow SET ObfuscationArray[Index] TO Ror(Temp1) INCREMENT Index SET Temp1 TO ObfuscationArray[Index] BITWISE XOR KeyHigh SET ObfuscationArray[Index] TO Ror(Temp1) INCREMENT Index END WHILE RETURN ObfuscationArray END FUNCTION 4.1.15.6 Biến đổi liệu XOR văn OfficePhương thức Dữ liệu biến đổi Biến đổi liệu XOR văn OfficePhương thức mang kết trình XOR byte đầu vào chuỗi liên tục mảng gây rỗi XOR 16 byte mà khởi tạo trình bày mục 4.1.15.2, ngoại trừ byte đầu vào 0x00 XOR nhị phân đầu vào 62 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD thành tố mảng gây rối 0x00, trường hợp byte đầu vào không thay đổi Khi chạy hết mảng gây rối XOR bắt đầu lại từ đầu 4.1.15.7 Mật xác thực Tính toán mật xác thực cho phương thức tìm nguồn xác thực mật ứng dụng, nêu mục 4.1.15.1 mục 4.1.15.4, phụ thuộc vào loại văn So sánh mật xác thực tìm mật xác thực lưu file Nếu hai không khớp mật sai 4.2 Thử nghiệm 4.2.1 Mô hình thử nghiệm phương pháp vét cạn Bảng ký tự, độ dài ký tự Sinh không gian mật phân tích cấu trúc mật File DOCX Từ điển, định nghĩa cấu trúc Trích giá trị salt verifier Sinh không gian mật Sinh mật ứng cử Kiểm tra mật hàm API cách nhận dạng rõ Hình 4.1 Sơ đồ mô hình thử nghiệm Ở bước mã hóa, người dùng nhập mật vào để bảo vệ file DOCX, hệ thống Office sử dụng giải thuật để sinh khóa mã hóa Ban đầu sinh giá trị ngẫu nhiên salt, giá trị có độ dài tương ứng 8, 12, 16 byte tùy theo lựa chọn người dùng mã hóa AES-128 bit/ AES-192 bit AES256 bit Giá trị salt độ dài khóa dkLen lưu liệu file DOCX dạng liệu rõ (dữ liệu không mã hóa) Khóa mã hóa sinh lần hàm băm chiều, sử dụng thời điểm mã hóa sau hủy không lưu Ngoài salt dkLen, lưu giá trị kiểm tra mật Verifier mã xác thực (10byte) – Authentication Code (AC) 63 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD Giá trị salt sử dụng để trộn với mật file, dùng để chống công tính toán trước, giúp tăng tính bảo mật Salt dkLen lưu lại file DOCX, giúp hệ thống Office sinh lại khóa từ mật người dùng nhập vào cần xem nội dung file bảo vệ Muốn sinh lại khóa từ mật khẩu, ta cần gọi lại giải thuật điều chế khóa, với đầu vào salt, dkLen mật Giá trị Verifier cho phép loại bỏ mật thử chắn mật file DOCX, cách giúp cho hệ thống Office thực trình giải mã, giải nén tốn thêm chi phí Tuy nhiên điều lại điểm yếu công lên không gian mật với hệ thống tính toán mạnh chẳng hạn tính toán xử lý đồ họa GPU Giá trị Authentication Code giúp phát xác mật người dùng Với mật thử cho giá trị Verifier trùng khớp với giá trị Verifier lưu file DOCX, khóa sinh dùng thực trình giải mã, giải nén cho giá trị Authentication Code Nếu giá trị trùng với Authentication Code lưu file DOCX mật Ngoài ra, AC giúp phát liệu file DOCX trao chuyển qua đường mạng có bị thay đổi nội dung hay không Nếu bị thay đổi, giá trị AC không trùng với giá trị AC lưu file DOCX Sơ đồ chương trình thực lấy thông tin dkLen, salt, verifier bên file: 64 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD Hình 4.2 Đọc lấy thông tin dkLen, salt verifier 65 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD Sau xác thực mật thử có phải mật ứng cử hay không Giải thuật mô sau: Hình 4.3 Giải thuật kiểm tra mật Các bước chi tiết thực giải thuật - Nếu dkLen > (232 – 1)*hLen, đầu “độ dài khóa lớn” dừng chương trình - Đặt l số khối hLen khóa sinh ra, l = CEIL(dkLen / hLen) Ở đây, kí hiệu CEIL(x) hàm làm tròn, số nguyên lớn nhỏ x - Với khối vậy, gọi thực hàm băm HMAC-SHA1 ngàn lần, cho đầu T_k, k chạy từ đến l 66 Luận văn Thạc sĩ THÁM MẬT KHẨU CÁC FILE WORD - Ghép T_1 đến T_l, lấy hai byte vị trí dkLen*2 dkLen*2 + làm giá trị TestVerifier, byte từ vị trí đến dkLen -1 làm khóa mã hóa Giá trị TestVerifier đem so sánh với giá trị Verifier lưu file DOCX, trùng khớp chứng tỏ mật thử có khả mật Tập mật gọi tập mật ứng cử Tổng quan trình khôi phục mật cho file word qua bước sau: - Bước 1: Hình thành không gian mật hiệu - Bước 2: Với mật không gian mật kiểm tra xem có phải mật ứng cử - Bước 3: Với mật ứng cử, thực giải mã, giản nén nhận dạng rõ để tìm lại mật cho file Chi phí tính toán chủ yếu tập trung bước 2, MS Office sử dụng số lượng vòng lặp lớn (1,000 vòng) hàm băm HMAC-SHA1, mục đích gia tăng độ phức tạp chống công brute-force Một ngàn vòng lặp HMAC-SHA1 thực song song có giàng buộc liệu – liệu đầu vào vòng sau sử dụng liệu đầu vòng trước Ta đánh giá sơ lược độ phức tạp hàm băm nói riêng toán khôi phục mật tệp tin nói chung Trước tiên, chọn công trực tiếp lên không gian khóa AES với kích thước dkLen, cần phải duyệt trường hợp xấu 2dkLen khóa, đảm bảo tìm khóa Vậy độ phức tạp toán O(2dkLen) – hàm số mũ với mũ kích thước khóa Chẳng hạn với khóa AES – 128 bit, số lượng khóa 2128 ~= 3.4e10+38 Nếu siêu máy tính thực kiểm tra 1,000 tỷ khóa / giây phải chừng 10e+10 năm Còn thực công vét cạn không gian mật khẩu, với số lượng kí tự sở k, n độ dài tối đa mật sinh ra, toán cần phải sinh số lượng khóa ~ kn, kn = 2nlog2(k) , độ phức tạp toán thám mã O(kn) = O(2nlog2(k)) hàm số mũ, tăng nhanh Với cách làm công lên không gian mật khẩu, người ta mong nlog2(k)

Ngày đăng: 26/07/2017, 21:06

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[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/ Link
[8] Tài liệu kĩ thuật, Trung tâm tính toán hiệu năng cao - Truờng Đại Học Bách Khoa Hà Nội http://hpcc.hut.edu.vn Link
[9] RFC1951 - DEFLATE Compressed Data Format Specification [10] AES projecthttp://www.gladman.me.uk/cryptographytechnology/fileencrypt/ Link
[12] Aes encrytion info http://www.winzip.com/aes info.htm Link
[14] Word Extensions to the Office Open XML (.docx) File Format https://msdn.microsoft.com/en-us/library/ Link
[1] F. I. P. S. P. 197. Advanced encryption Standard (aes), 2001 Khác
[3] E. F. Foundation. Cracking DES: Secrets of Encryption Research, Wiretap Politics and Chip Design. O’Reilly & Associates, Inc, 1998 Khác
[4] D. Kahn. The Codebreakers - The Story of Secret Writing. 1967 Khác
[5] A. Klein. Attacks on the rc4 stream cipher. Des. Codes Cryptography, 48(3):269-286, 2008 Khác
[13] RFC 2898 - Password-Based Cryptography Specification Version 2.0 Khác
[15] [MS-OFFCRYPTO]: Office Document Cryptography Structure Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w