Contents I. Tổng quan về tính toán song song 2 1. Giới thiệu 2 2.Mục đích của tính toán song song 2 3. Mô hình máy song song 2 4. Lập trình song song 2 4.1. Mô hình lập trình song song 2_Toc374835291 4.2.Thiết kế các chương trình song song 2 II. Ứng dụng tính toán song song trong an toàn thông tin 2 I. Tổng quan về tính toán song song 1.Giới thiệu Ngày nay, khi khoa học kỹ thuật phát triển mạnh mẽ, có rất nhiều bài toán đặt ra với khối lượng tính toán lớn và cần phải được giải quyết để sao cho hiệu suất tính toán là cao nhất. Ví dụ như các bài toán xử lý ảnh 3D, dự báo thời tiết, tính toán thời gian thực,… Để giải quyết vấn đề này, có một số phương pháp được đưa ra: Phương pháp 1: Có thể cải tiến công nghệ nhằm làm tăng tốc độ xử lý của máy tính. Tuy nhiên, để thực hiện phương pháp này đòi hỏi nhiều thời gian, công sức và tiền của, nhưng tốc độ cũng chỉ đạt được đến một giới hạn nào đó. Phương pháp 2: Chia bài toán ra thành những công việc nhỏ để có thể thực hiện song song trên nhiều bộ xử lý. Phương pháp 3: Có thể kết hợp phương pháp 1 và 2. Áp dụng phương pháp 2 để giải quyết các bài toán lớn đã cho ra đời công nghệ tính toán song song.Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng thời và cùng tham gia giải quyết một bài toán. Nói chung xử lý song song đượcthực hiện trên những hệ thống đa bộ xử lý. Các tài nguyên tính toán có thể bao gồm một máy tính với nhiều bộ vi xử lý hoặc một tập các máy tính kết nối mạng hay là một sự kết hợp của hai dạng trên. Phân biệt xử lý song song với tuần tự: Trong tính toán tuần tự với một bộ xử lý thì tại mỗi thời điểm chỉ thực hiện được một phép toán.
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đề tài:
TÍNH TOÁN SONG SONG VÀ ỨNG DỤNG TRONG
AN TOÀN THÔNG TIN
GV hướng dẫn: PGS.TS Trịnh Nhật Tiến Người thực hiện: Nguyễn Thùy Linh
Hà Nội, tháng 12 năm 2013
Trang 2I Tổng quan về tính toán song song 1
1 Giới thiệu 1
2.Mục đích của tính toán song song 1
3 Mô hình máy song song 1
4 Lập trình song song 1
4.1 Mô hình lập trình song song 1_Toc374835291 4.2.Thiết kế các chương trình song song 1
II Ứng dụng tính toán song song trong an toàn thông tin 1
Trang 3I Tổng quan về tính toán song song
1.Giới thiệu
Ngày nay, khi khoa học kỹ thuật phát triển mạnh mẽ, có rất nhiều bài toán đặt
ra với khối lượng tính toán lớn và cần phải được giải quyết để sao cho hiệu suất tính toán là cao nhất Ví dụ như các bài toán xử lý ảnh 3D, dự báo thời tiết, tính toán thời gian thực,…
Để giải quyết vấn đề này, có một số phương pháp được đưa ra:
- Phương pháp 1: Có thể cải tiến công nghệ nhằm làm tăng tốc độ xử lý của máy tính Tuy nhiên, để thực hiện phương pháp này đòi hỏi nhiều thời gian, công sức
và tiền của, nhưng tốc độ cũng chỉ đạt được đến một giới hạn nào đó
- Phương pháp 2: Chia bài toán ra thành những công việc nhỏ để có thể thực hiện song song trên nhiều bộ xử lý
- Phương pháp 3: Có thể kết hợp phương pháp 1 và 2
Áp dụng phương pháp 2 để giải quyết các bài toán lớn đã cho ra đời công nghệ tính toán song song.Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng thời và cùng tham gia giải quyết một bài toán Nói chung xử lý song song đượcthực hiện trên những hệ thống đa bộ xử lý
Các tài nguyên tính toán có thể bao gồm một máy tính với nhiều bộ vi xử lý hoặc một tập các máy tính kết nối mạng hay là một sự kết hợp của hai dạng trên
Phân biệt xử lý song song với tuần tự:
- Trong tính toán tuần tự với một bộ xử lý thì tại mỗi thời điểm chỉ thực hiện được một phép toán
Trang 4Hình Minh họa tính toán tuần tự
- Trong tính toán song song thì nhiều bộ xử lý cùng kết hợp với nhau để giải quyết cùng một bài toán cho nên giảm được thời gian xử lý vì mỗi thời điểm
có thể thực hiện đồng thời nhiều phép toán
Hình Minh họa tính toán song song
Vấn đề xử lý song song liên quan trực tiếp đến: kiến trúc máy tính, phầnmềm
hệ thống (hệ điều hành), thuật toán và ngôn ngữ lập trình, v.v
Hệ thống tính toán song song: là một tập các bộ xử lý (thường là cùng một
loại) kết nối với nhau theo một kiến trúc nào đó để có thể hợp tác với nhau trong hoạt động và trao đổi dữ liệu
Trang 5Chúng ta dễ nhận thấy là độ phức tạp của xử lý song song sẽ lớn hơn xử lý tuần
tự rất nhiều, và tập trung chủ yếu ở phương diện trao đổi dữ liệu và đồng bộ các tiến trình
Hiện nay tính toán song song có 2 công nghệ chính:
Thứ nhất là sử dụng các siêu máy tính với rất nhiều bộ xử lý được tích hợp bên trong được thiết kế đồng bộ cả về phần cứng và phần mềm Các công nghệ được áp dụng trong các siêu máy tính thường là các công nghệ tiên tiến làm cho giá thành của
hệ thống siêu máy tính tăng rất cao.Vì thế các siêu máy tính thường được sử dụng trong các lĩnh vực mà vấn đề tính toán phức tạp, nhạy cảm và yêu cầu thời gian thực như mô phỏng thực hiện của các động cơ máy bay, quốc phòng, vũ trụ
Cách thứ hai là kết nối các máy tính lại với nhau và cùng thực hiện bài toán Hệ thống các máy tính kết nối này chính là hệ thống tính toán song song phân cụm Hệ thống này có ưu điểm là giá thành rẻ hơn rất nhiều so với siêu máy tính có cùng sức mạnh (do sử dụng các thiết bị thông thường) và tính linh hoạt của hệ thống (số nút, số
bộ xử lý, bộ nhớ, thiết bị mạng đều mang tính tuỳ biến cao) Sự phát triển mạnh mẽ của mạng máy tính, các công nghệ mạng hiện nay đã lấp đi hạn chế về truyền thông trong hệ thống máy tính song song phân cụm làm cho nó được phát triển rộng rãi Các lĩnh vực sử dụng hệ thống tính toán song song phân cụm thường yêu cầu tính toán không quá lớn, không yêu cầu thời gian thực như xử lý ảnh, nhận dạng vân tay, tính toán kết cấu công trình, mô phỏng các thí nghiệm
Trang 62 Mục đích của tính toán song song
Việc thực hiện tính toán song song nhằm:
Giải quyết được vấn đề lớn, phức tạp: Các vấn đề lớn tới nỗi nó không thể giải quyết chỉ trên một máy tính đơn đặc biệt khi bộ nhớ máy tính bị hạn chế như dự báo thời tiết, sóng thần; Máy tìm kiếm xử lý hàng triệu triệu giao dịch/s
Cung cấp tính đồng thời: Tài nguyên của máy tính đơn chỉ thực hiện được một lệnh tại một thời điểm còn tài nguyên của máy tính đa bộ xử lý có thể thực hiện nhiều lệnh đồng thời như việc truy cập lưới, cung cấp mạng toàn cục…
Sử dụng tài nguyên phi cục bộ: Sử dụng tài nguyên tính toán trên một trang mạng diện rộng hoặc thậm chí là internet khi tài nguyên tại nơi tính toán là khan hiếm, không đủ
3 Mô hình máy song song
Một hệ thống máy tính song song là một máy tính với nhiều hơn một bộ xử lý cho phép xử lý song song Định nghĩa này có thể bao quát được tất cả các siêu máy tính với hàng trăm bộ xử lý, các mạng máy tính trạm, hay các hệ thống nhúng …
Trong những năm gần đây các máy tính có vi xử lý áp dụng công nghệ mới multicore cho phép nhiều nhân trong một bộ xử lý cũng được coi là hệ thống máy tính song song
Dựa vào sự phân biệt ở kết nối giữa các bộ xử lý (hay thành phần xử lý), giữa
bộ xử lý và bộ nhớ mà có rất nhiều loại kiến trúc máy tính song song khác nhau
Dựa trên kiến trúc bộ nhớ của các máy tính song, Flynn phân kiến trúc máy tính song song thành 2 loại :
- SIMD (Single Instruction Multiple Data): đơn lệnh đa dữ liệu
SIMD là một kiểu máy tính song song có tất cả các bộ xử lý chỉ thực hiện một lệnh duy nhất Tuy nhiên lệnh này được thực hiện trên các bộ dữ liệu khác nhau ứng
Trang 7với từng bộ xử lý khác nhau.
Đơn chỉ thị: Tất cả các bộ vi xử lý p1 pn cùng thực thi cùng một chỉ thị tại một chu kỳ thời gian tại chu kỳ 1 n bộ xử lý thực hiện lệnh A, chu kỳ 2 cùng thực hiện lệnh B
Đa luồng dữ liệu: Mỗi bộ xử lý có thể hoạt động trên phần tử dữ liệu khác với
dữ liệu của bộ xử lý khác
Mô hình này có ưu điểm là đơn giản trong phần cứng cũng như phần mềm nhưng chỉ phù hợp để giải quyết các vấn đề tương đối đặc thù có tính cân đối cao trong xử lý như xử lý ảnh … Các giải thuật cho các đa máy tính thường chạy không hiệu quả trên các máy SIMD
- MIMD (Multiple Instruction Multiple Data): đa lệnh đa dữ liệu
Trang 8Máy tính loại MIMD còn gọi là đa bộ xử lý, trong đó mỗi bộ xử lý có thể thực hiện những luồng lệnh (chương trình) khác nhau trên các luồng dữ liệu riêng.Hầu hết các hệ thống MIMD đềua có bộ nhớ riêngvà cũng có thể truy cập vào được bộ nhớ chung(global) khi cần, do vậy giảm thiểu được thời gian trao đổi dữliệu giữa các bộ
xử lý trong hệ thống.Đây là kiến trúc phức tạp nhất, nhưng nó là mô hình hỗ trợ xử lý song songcao nhất và đã có nhiều máy tính được sản xuất theo kiến trúc này, ví dụ: BBN Butterfly, Alliant FX, iSPC của Intel, v.v
Các máy tính song song có bộ nhớ chia sẻ (shared memory) có nhiều bộ xử lý cùng được truy nhập đến một vùng nhớ tổng thể dùng chung Tất cả các sự thay đổi nội dung bộ nhớ do một bộ xử lý tạo ra sẽ được nhận biết bởi các bộ xử lý khác
Mô hình máy song song
4 Lập trình song song
Lập trình là song song hoá các chương trình tuần tự nhằm giải quyết một vấn
đề lớn hoặc làm giảm thời gian thực thi hoặc cả hai
Khi thiết kế giải thuật song song cần thực hiện phân chia dữ liệu cho các tác vụ, chỉ ra cách truy cập và chia sẻ dữ liệu, phân các tác vụ cho các tiến trình, và đồng bộ
Trang 9các tiến trình để nhận được kết quả cuối cùng Do đó, trước khi lập trình song cần phải biết được bài toán có thể được song song hoá hay không (có thể dựa trên dữ liệu hay chức năng của bài toán)
4.1 Mô hình lập trình song song
Hiện nay có rất nhiều mô hình lập trình song song: Chia sẻ bộ nhớ, Luồng, tiến trình (Threads), Truyền thông điệp (Message Passing), Song song dữ liệu (Data Parallel), Lai (Hybird)
Chia sẻ bộ nhớ (Shared Memory)
Trong mô hình lập trình chia sẻ bộ nhớ, các tác vụ chia sẻ với nhau một không gian địa chỉ chung, các tác vụ đọc ghi, đồng bộ
Có nhiều cơ chế như khóa, cờ hiệu được sử dụng để điều khiển truy cập bộ nhớ chia sẻ
Lợi thế được đem đến theo khía cạnh lập trình thì khái niệm “Sở hữu” dữ liệu là đang thiếu, do đó không nhất thiết phải định rõ việc truyền dữ liệu giữa các tác vụ này Lập trình sẽ đơn giản hơn
Nhưng lại khó khăn trong vấn đề hiệu năng
Việc lưu giữ liệu cục bộ cho bộ xử lý là việc trên đó, bộ xử lý này chiếm giữ bộ nhớ truy cập nên phải làm tươi liên tục khi có nhiều bộ xử lý dùng chung dữ liệu Lập trình cục bộ khó khăn và nhiều khi nằm ngoài tầm kiểm soát của người lập trình
Luồng, tiến trình (Thread)
Việc tạo lập và hủy bỏ tiến trình
Yêu cầu đầu tiên của xử lý song song là khả năng tạo ra một số tiến trình cần thiết cho bài toán và khả năng hủy bỏ tiến trình, khi phần việc xử lý song song kết thúc để giải phóng các tài nguyên cho những tiến trình khác sử dụng
Trang 10Giả sử có đoạn mã dùng để tạo các tiến trình và phân công công việc cho chúng:
id = create_process(N);
Switch (id) { Case 0 : … do NhiemVu 0 …; Break;
Case 1 : … do NhiemVu 1 …; Break;
Case 2 : … do NhiemVu 2 …; Break;
………
Case N : … do NhiemVu N …; Break;
} Vấn đề truy cập vào bộ nhớ chia sẻ phải có sự kết hợp chặt chẽ của các tiến trình Nếu có một tiến trình truy cập vào một vùng nhớ với chức năng cập nhật nó phải đảm bảo không có tiến trình nào khác truy cập vào vùng nhớ đó và sửa đổi cho đến khi nó kết thúc Sử dụng cơ chế lock() và unlock()
Trong mô hình lập trình song song dựa vào luồng, một tiến trình đơn có thể có nhiều cách thực hiện đồng thời
Công việc của một thread có thể được mô tả như một chương trình con trong chương trình chính Một thread có thể thực hiện chương trình con đồng thời với các thread khác
Truyền thông báo (Message Passing)
Đặc điểm của các mô hình truyền thông báo:
- Một tập các tác vụ sử dụng bộ nhớ riêng của chúng trong thời gian tính toán Nhiều công việc có thể nằm trên cùng một máy vật lý cũng như qua một số máy nào đó
- Các tác vụ trao đổi dữ liệu thông qua việc truyền thông điệp
Trang 11- Chuyển giao dữ liệu thường đòi hỏi sự hợp tác thực hiện bởi tiến trình Ví dụ hoạt động gửi sẽ kết hợp với hoạt động nhận
Song song dữ liệu (Data Parallel)
Đặc tính của mô hình dữ liệu song song
- Công việc song song tập trung vào thực hiện các thao tác trên một tập dữ liệu Tập dữ liệu được tổ chức thành cấu trúc chung như bảng, mảng hoặc khối
- Tập các tác vụ cùng làm trên cấu trúc dữ liệu giống nhau tuy nhiên mỗi tác vụ hoạt động trên phân vùng khác nhau của một cấu trúc dữ liệu
- Thực hiện thao tác giống nhau trên cùng một phân vùng công việc nào đó
- Trên các kiến trúc bộ nhớ chia sẻ, các tác vụ có quyền truy cập vào cấu trúc dữ liệu thông qua bộ nhớ toàn cục Trên các kiến trúc bộ nhớ phân phối cấu trúc
dữ liệu được phân ra và tồn tại như trong một “khối”
Hỗn hợp (Hy brid)
- Trong mô hình này có hai hay nhiều mô hình lập trình song song kết hợp lại Vấn đề quan trọng trong tính toán song sog là phải tận dụng được khả năng tính toán của các bộ xử lý Có 2 cách tiếp cận để tận dụng các bộ xử lý
4.2 Thiết kế các chương trình song song
- Song song hoá ngầm định (implicit parallelism): bộ biên dịch hay một vài chương trình khác tự động phân chia các công việc đến các bộ xử lý
- Song song hoá bằng tay (explicit parallelism): người lập trình phải tự phân chia chương trình của anh ta đế nó có thể thực thi song song
Ngoài ra trong lập trình song song, người lập trình viên cần phải tính đến yếu tố cân bằng tải (load balancing) trong hệ thống Phải làm cho các bộ xử lý thực hiện số công việc như nhau, nếu có một bộ xử lý có tải quá lớn thì cần phải di chuyển công
Trang 12việc đến bộ xử lý có tải nhỏ hơn Việc truyền thông giữa các bộ xử lý là một công việc không thể thiếu của lập trình song song Có hai kỹ thuật truyền thông chủ yếu là: dùng bộ nhớ chia sẻ (shared memory) hoặc truyền thông điệp (message passing)
Một mô hình lập trình song song là sử dụng một tập các kỹ thuật phần mềm để thể hiện các giải thuật song song và đưa ứng dụng vào thực hiện trong hệ thống song song Mô hình bao gồm các ứng dụng, ngôn ngữ, bộ biên dịch, thư viện, hệ thống truyền thông và vào/ra song song Trong thực tế, chưa có một máy tính song song nào cũng như cách phân chia công việc cho các bộ xử lý nào có thể áp dụng có hiệu quả cho mọi bài toán Do đó, người lập trình phải lựa chọn chính xác mô hình lập trình song song hoặc pha trộn các mô hình đó để phát triển các ứng dụng song song trên một hệ thống riêng biệt
Trang 13II.Ứng dụng tính toán song song trong an toàn thông tin
Ứng dụng tính toán song song trong giải mã các thông điệp Nếu việc giải mã chỉ được thực hiện trên máy tính riêng lẻ với tốc độ trung bình thì việc giải mã với những loại mã hóa mà thời gian dò khóa cực lớn thì hầu như là không thể Vậy việc áp dụng công nghệ tính toán song song đã phần nào giảm thiểu đi các vấn đề phức tạp này
Một số ví dụ cụ thể của việc ứng dụng tính toán song song trong an toàn thông tin
Thám mã một đối tượng trên bộ xử lý đồ họa (GPU)
Ý tưởng chung
Do các tiến trình phải được phân chia thành các blog, không gian mật khẩu cũng được chia thành các lô tương ứng Giả sử tại mỗi thời điểm, mỗi tiến trình GPU
có thể kiểm tra một mật khẩu và mỗi blok có tối đa p tiến trình, thì không gian mật khẩu có thể chia thành các lô không chứa quá p mật khẩu
Kiểm tra mật khẩu theo lô Tuy nhiên do mật khẩu thực chất là các xâu ký tự, việc phân chia đều không gian mật khẩu không đơn giản, cũng như không phù hợp với phương thức tính toán
Trang 14trên GPU Vì vậy ban đầu sẽ chia không gian mật khẩu theo độ dài của chúng, sau đó mới phân lô cho từng tập con này Không gian mật khẩu được định nghĩa như sau:
- S: là tập hợp tất cả các ký tự sinh mật khẩu (bảng chữ cái), n=|S| số các ký tự trong bảng chữ cái
- PWi: tập mật khẩu có độ dài I;
- k: độ dài tối đa của mật khẩu
- PW= PW1 U PW2 U….PWk : tập mật khẩu có độ dài tối đa là k
Việc phân lô được thực hiện cho từng lô Pwi Ví dụ tập ký tự S={a-z,0-9,A-Z}
có n=62 ký tự như vậy số luồng tiến trình tối đa cho mỗi lô là 1024 Như vậy nhóm 1 (tương ứng với mật khẩu có đôi dài là 1) có 62 mật khẩu, nhóm 2 có 3844 mật khẩu, nhóm 3 có 328238 mật khẩu
Giải thuật kiểm tra mật khẩu sẽ được cài đặt thành 1 kernel Mỗi lần kích hoạt kernel
này sẽ thực hiện kiểm tra cho một lô mật khẩu p như đã chia
Phân lô mật khẩu theo độ dài Giải thuật kiểm tra mật khẩu ứng cử được thực hiện song song, theo độ dài của mật khẩu Đầu tiên, giải thuật tính số lô cần thiết của một nhóm mật khẩu có độ dài xác định i Sau đó, với mỗi một lô p mật khẩu, giải thuật tính số thứ tự của các mật
Trang 15khẩu trong lô đó làm đầu vào cho hàm kiểm tra mật khẩu được thực hiện trên một tiến trình
ElcomSoft phát triển công cụ "Lightning Hash Cracker", cho phép hàng trăm hàmMD5 thực hiện song songtrên bộ xử lý đồ họa NVIDIA.Hiện nay, với công
cụ này, tốc độtạo và kiểm tra các phím là 274,5 MP / s (Triệumật khẩu mỗi giây) trên một thẻ 8800 GTX và 348,6Mp / s trên một thẻ 9800 GTX
Một công cụ khác là "MD5 GPUCrack " của Benjamin Vernoux phát triển (Titan) LGPLv3 Chương trình này giúp phục hồi mật khẩu MD5 rất nhanh nhờ việc sử dụng sự kết hợp giữa CPU và GPU điện (vớiGeForce 8800GT và CUDA API) Gần như hiện thực giải mã MD5 trên GPU được thực hiện trên một nút trang bịnhiều card đồ họa