Thám mã trong MS Office

Một phần của tài liệu Phân tích ảnh hưởng của trễ truyền thông đến hiệu năng của hệ thống tính toán song song (Trang 114)

6. Bố cục của luận án

4.4.2 Thám mã trong MS Office

a) Mật khẩu trong MS Office

Mật khẩu trong các ứng dụng của bộ Microsoft Office nói chung và mật khẩu trong MS Word nói riêng được sử dụng khá phổ biến để bảo mật tài liệu. Tuy nhiên, một thực tế là đôi khi người dùng quên mật khẩu này và mong muốn khôi phục lại chúng để có thể lấy lại tài liệu ban đầu. Về cơ bản, Microsoft đều sử dụng cơ chế mã hóa như nhau đối với cả Microsoft Word lẫn Excel (http://msdn.microsoft.com/en-

Mật khẩu P Tệp Word

E(P)

Vét cạn:

E(Si) = E(P)? Không gian khóa

S1,S2,…

Kết quả:

Password=Si

Hình 4.18 Quy trình khôi phục mật khẩu MS Word

102

us/library/dd910529(v=office.12).aspx), do vậy ở đây chỉ đề cập đến việc khôi phục mật khẩu cho MS Word phiên bản 2010, các ứng dụng còn lại có thể thực hiện theo cách tương tự.

Việc bảo mật các tài liệu MS Office có thể sử dụng một trong bốn cơ chế khác nhau. Với phiên bản Office 2000, 2003 mặc định dùng hệ mật mã RC4-40 bit( http://msdn.microsoft.com/en-us/library/dd922354(v=office.12).aspx), nhưng sang đến phiên bản Office 2007, 2010 thì MS lại dùng hệ mật mã Advanced Encryption Standard (AES) với giải thuật băm SHA-1 [4]. Đối với hệ mã AES thì tốc độ sinh khóa sẽ chậm hơn rất nhiều so với hệ RC4 [1,46] do phải thực hiện lặp liên tiếp trong SHA nhiều vòng.

b) Khôi phục mật khẩu trong MS Office 2010

Vì MS Office 2010 sử dụng hệ mã AES với độ dài khóa là 128, 192, 256 bit [4], nên việc giải mã là gần như không thể, thay vào đó luận án sẽ sử dụng phương pháp tấn công vét cạn (Brute force) để tìm ra mật khẩu ban đầu. Lý do của việc dùng phương pháp vét cạn là tận dụng sức mạnh tính toán song song và phân tán của các CPU đa lõi và hệ thống cụm máy tính. Đặc tả cấu trúc lưu trữ các thông tin liên quan đến bảo mật tài liệu trong phần mềm Office được Microsoft mô tả chi tiết trong (http://msdn.microsoft.com/en-us/library/office/cc313071(v=office.12).aspx) và để trích lọc, sau đó tính toán sinh ra khóa từ một xâu đầu vào có thể thực hiện theo Open source ( http://offcrypto.codeplex.com/). Ở đây, luận án đề xuất cách thức khôi phục mật khẩu bằng hệ thống tính toán song song theo quy trình sau (Hình 4.18):

Trong quy trình được mô tả ở hình 1, đầu tiên người dùng sẽ đặt mật khẩu P cho tài liệu và MS Word sẽ thực hiện mã hóa mật khẩu này theo trang web ở trên, sau đó lưu vào trong tệp. Mật khẩu sau khi được mã hóa, ta gọi là E(P). Việc giải mã mật khẩu P từ E(P) là vô cùng khó và có thể nói là không khả thi.

Tấn công vét cạn trên hệ thống cụm máy tính để xử lý song song có sử dụng đa lõi được mô tả như trong Hình 4.19.

Master Chia không

gian khóa Slave 1 Slave 2 Slave i Slave n Core #2 Core # j Core #m Core #1 Thread Thread Thread Thread Infor Infor Infor Infor Hình 4.19 Mô hình xử lý song song sử dụng CPU đa lõi và cụm

103

Thực tế, mật khẩu có thể gồm chữ thường, chữ hoa, số, ký tự đặc biệt… Tuy nhiên, theo thói quen của đa số người dùng thì thường chỉ sử dụng các ký tự chữ cái hoa và thường (gồm 52 ký tự) và đôi khi có thể kèm thêm chữ số (10 ký tự). Do vậy, không gian khóa của xâu có độ dài k khi đó sẽ là: 62k+62k-1+…+621

.

Bảng 4.12 Số lượng khóa theo độ dài xâu

Độ dài xâu k Số lượng khóa

1 62 2 3.906 3 242.234 4 15.018.570 5 931.151.402 6 57.731.386.986

Như vậy, đối với các máy tính đơn lẻ như trước đây thì việc thử hết không gian khóa này sau đó đem so sánh với E(P) chỉ có thể thực hiện được với k rất nhỏ, chỉ khoảng tối đa là 5 hoặc 6 ký tự. Tuy nhiên, nếu ta tận dụng sức mạnh của công nghệ vi xử lý đa lõi, cộng thêm với các bộ xử lý đồ họa GPU và/hoặc xử lý phân tán trên

Hình 4.20 Chia không gian khóa cho các lõi và nút xử lý

AAAA... H999…. …… AAAA… g9999… IAAA... Q999…. ZAAA... g999…. hAAA... o999…. …… pAAA... w999…. 5AAA... 9999…. hAAA… 9999…. Kh ông gian k h óa Core #1 Core #1 Core #n Processor #2 ……. Core #1 Core #1 Core #n Processor #1 …….

104

cụm máy tính có nhiều trạm tham gia thì thời gian tìm ra khóa có thể giảm đi hàng chục, thậm chí hàng trăm, hàng ngàn lần tùy thuộc vào quy mô của cụm máy tính. Khi đó, độ dài khóa mà hệ thống có thể xử lý lên tới 8, 9 thậm chí là 10 ký tự.

c) Khôi phục mật khẩu sử dụng hệ thống tính toán song song với CPU đa lõi.

Để tận dụng hết sức mạnh tính toán của hệ thống tính toán, luận án đề xuất sử dụng đồng thời công nghệ đa lõi trên các CPU hiện đại (thường gồm 2, 4, 8 lõi) và thực hiện song song trên các máy tính nối mạng với nhau.

Như vậy, sẽ cần phải giải quyết 2 việc chính, đó là:

1) Phân tải công việc trên các máy tính trong cụm máy tính

2) Phân tải công việc cho mỗi lõi (Core) trong máy tính thuộc cụm máy tính đó.

Đối với công việc 1), sẽ dùng một chương trình chính, gọi là “Master”, chạy trên một máy tính riêng để thực hiện tính toán và phân chia nhiệm vụ (chia không gian khóa) cho các máy trạm (gọi là “Slave”). Master và Slave sẽ truyền thông với nhau qua giao thức UDP (User Data Protocol).

Đối với công việc 2), sau khi Slave nhận được công việc (Không gian khóa được chia nhỏ) thì tiếp tục phân chia nhỏ hơn đến các lõi để tiến hành so sánh tìm ra mật khẩu ban đầu. Việc chia các công việc chạy trên các lõi có thể thực hiện khá dễ dàng bằng cơ chế lập trình đa tuyến (Multi Threading) vì mặc định, mỗi tuyến sẽ được hệ điều hành thực thi trên một lõi riêng (xem Hình 4.19).

Trong quá trình thực hiện so sánh từng xâu vào để tìm mật khẩu, các Slave sẽ thường xuyên gửi thông tin xử lý (ví dụ số password đã thử) về cho Master qua giao thức UDP để tổng hợp thông tin cho người dùng. Quá trình này chỉ dừng khi có một tuyến nào đó tìm thấy mật khẩu hoặc tất cả các tuyến không thể tìm thấy sau khi vét cạn hết không gian khóa được chỉ định.

Một phần của tài liệu Phân tích ảnh hưởng của trễ truyền thông đến hiệu năng của hệ thống tính toán song song (Trang 114)