Tuy nhiên, với sự phát triển của khoa học, việc ứng dụng mô hình xử lý phân tán MapReduce để giải quyết một số bài toán về mã hóa và thám mã là mục tiêu chính của luận văn này.. Mô hình
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
NGUYỄN THANH PHONG
GIẢI QUYẾT MỘT SỐ BÀI TOÁN MÃ HÓA
VÀ THÁM MÃ TRÊN MÔI TRƯỜNG XỬ LÝ PHÂN TÁN
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Đà Nẵng - 2018
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
NGUYỄN THANH PHONG
GIẢI QUYẾT MỘT SỐ BÀI TOÁN MÃ HÓA
VÀ THÁM MÃ TRÊN MÔI TRƯỜNG XỬ LÝ PHÂN TÁN
Chuyên ngành: KHOA HỌC MÁY TÍNH
Trang 3- Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của PGS.TS Nguyễn Tấn Khôi
- Mọi tham khảo dùng trong luận văn được trích dẫn rõ ràng và trung thực về tên tác giả, tên công trình, thời gian và địa điểm công bố
- Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, tôi xin chịu hoàn toàn trách nhiệm
Tác giả luận văn
NGUYỄN THANH PHONG
Trang 4LỜI CAM ĐOAN
MỤC LỤC
TÓM TẮT LUẬN VĂN
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC CÁC BẢNG
DANH MỤC ĐỒ THỊ
DANH MỤC CÁC HÌNH
MỞ ĐẦU……… 1
1 Tính cấp thiết và lý do chọn đề tài 1
2 Mục tiêu và nội dung nghiên cứu 2
2.1 Mục tiêu 2
2.2 Nội dung nghiên cứu 2
3 Đối tượng và phạm vi nghiên cứu 2
3.1 Đối tượng nghiên cứu 2
3.2 Phạm vi nghiên cứu 2
4 Phương pháp nghiên cứu 2
4.1 Phương pháp lý thuyết 2
4.2 Phương pháp thực nghiệm 3
5 Dự kiến kết quả đạt được 3
5.1 Về lý thuyết 3
5.2 Về thực nghiệm 3
6 Ý nghĩa khoa học và thực tiễn 3
6.1 Ý nghĩa khoa học 3
6.2 Ý nghĩa thực tiễn 3
7 Bố cục của luận văn 3
CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 4
1.1 Khái niệm về mã hóa và thám mã 4
1.2 Phân loại mã hóa dữ liệu 6
1.2.1 Phân loại theo phương pháp 6
1.2.2 Phân loại theo số lượng khóa 7
1.3 Một số ứng dụng của mã hóa dữ liệu 7
1.4 Mã hóa đối xứng 7
1.5 Mã hóa một chiều 8
1.6 Mã hóa bất đối xứng 13
1.7 Kết chương 14
CHƯƠNG 2 MÔ HÌNH XỬ LÝ PHÂN TÁN MAPREDUCE 15
Trang 52.1.1 Hệ thống tập tin phân tán Hadoop 15
2.1.2 Thành phần của Hadoop 16
2.1.3 Các tiến trình nền của Hadoop 17
2.1.4 Cấu trúc mạng của Hadoop 19
2.1.5 Nguyên tắc hoạt động Hadoop MapReduce 20
2.2 Mô hình xử lý phân tán MapReduce 21
2.2.1 Tổng quan về MapReduce 21
2.2.2 Nguyên lý hoạt động của MapReduce 22
2.2.3 Quá trình xử lý của MapReduce 22
2.2.4 Hadoop MapReduce 25
2.2.5 Nhận xét đánh giá MapReduce 27
2.3 Kết chương 27
CHƯƠNG 3 TRIỂN KHAI MỘT SỐ THUẬT TOÁN MÃ HÓA TRÊN NỀN TẢNG MAPREDUCE 28
3.1 Hàm băm MD5 và thám mã trên nền tảng MapReduce 28
3.1.1 Ứng dụng của MD5 29
3.1.2 Thuật toán mã hóa 29
3.1.3 Tấn công hàm băm MD5 33
3.1.4 Thám mã MD5 trên nền tảng MapReduce 34
3.1.5 Kết quả thám mã MD5 trên môi trường MapReduce 37
3.2 Mã hóa công khai RSA và thám mã trên nền tảng MapReduce 39
3.2.1 Thuật toán sinh khóa 41
3.2.2 Thuật toán mã hóa 41
3.2.3 Thuật toán giải mã 42
3.2.4 Chuyển đổi văn bản rõ 43
3.2.5 Tấn công mã hóa RSA 50
3.2.6 Thám mã RSA trên nền tảng MapReduce 53
3.2.7 Kết quả thám mã RSA trên môi trường MapReduce 55
3.3 Đánh giá kết quả 56
3.3.1 Kết quả MapReduce RSA, thuật toán tuần tự RSA với giá trị n nhỏ 60
3.3.2 Kết quả MapReduce RSA với giá trị n lớn 60
3.3.3 So sánh CPU RSA giá trị n nhỏ với MapReduce RSA giá trị n lớn 61
3.4 Kết chương 62
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 63
1 Kết luận 63
2 Hướng phát triển 63
TÀI LIỆU THAM KHẢO 64
Trang 6Học viên: Nguyễn Thanh Phong Chuyên ngành: Khoa học máy tính
Mã số: 60480101 Khóa: K33 Trường Đại học Bách khoa – Đại học Đà Nẵng
Tóm tắt – Bảo mật thông tin luôn là vấn đề quan trọng hàng đầu trong các lĩnh vực tình báo,
quân sự, … Bảo mật thông tin đang được nhiều người tập trung nghiên cứu, tìm mọi giải pháp
để đảm bảo an toàn, an ninh và bảo mật hệ thống Việc bảo mật an toàn thông tin, dữ liệu là vấn đề có liên quan đến nhiều lĩnh vực Đặc biệt, trong khoảng vài mươi năm trở lại đây với
sự ra đời của máy tính điện tử cùng sự phát triển nhanh chóng của công nghệ thông tin, thì lý thuyết về các giải thuật mã hóa và phương pháp thám mã ngày càng được quan tâm nhiều hơn Trong khi mã hóa là một trong những phương pháp hữu hiệu nhằm đảm bảo tính bảo mật, toàn vẹn dữ liệu thì thám mã là một hình thức tấn công mật mã để thu được dữ liệu cần thiết, có thể phục vụ cho bước tấn công tiếp theo Trong thực tế một số bài toán khi ứng dụng giải thuật mã hóa, thám mã có độ phức tạp tính toán cao, thời gian xử lý lâu Tuy nhiên, với
sự phát triển của khoa học, việc ứng dụng mô hình xử lý phân tán MapReduce để giải quyết một số bài toán về mã hóa và thám mã là mục tiêu chính của luận văn này
Từ khóa – MapReduce
Abstract – Information security is always a top priority in the fields of intelligence, military,
Information security is being concentrated in many research and find solutions to ensure safety, security and security of the system Securing information security, data is a topical issue related to many fields In particular, in the last few decades with the advent of electronic computers and the rapid development of information technology, the theory of cryptographic algorithm and method cryptanalysis has become increasingly interested While encryption is one of the most effective methods to ensure data security and integrity, cryptanalysis is a form
of cryptography attack to obtain the necessary data that can serve the next attack step In fact, some mathematical problems when using cryptographic algorithm and cryptanalysis have high computational complexity, long processing time However, along with the development
of science, the application of the Mapreduce dispersal processing model to solve some problems of cryptographic and cryptanalysis is the main objective of this thesis
Key words – MapReduce
Trang 7Từ viết tắt Từ đầy đủ Diễn giải
HDFS Hadoop Distributed File System Hệ thống file lưu trữ của Hadoop
Authentication Code
Xác thực thông báo mật mã
MIT Massachusetts Institute of
Technology
Viện Công nghệ Massachusetts
NP Nondeterministic Polynomial time Độ phức tạp tính toán
Implementation
Thiết kế và triển khai hệ điều hành
Trang 8Bảng 3.3 So sánh thuật toán tuần tự và MapReduce với nguyên tố nhỏ (163
Đồ thị 3.5 Biểu diễn thuật toán tuần tự RSA, MapReduce RSA, so sánh tốc độ 60
Đồ thị 3.6 MapReduce RSA với giá trị lớn của n (n = 1063 * 631) 61
Đồ thị 3.7 So sánh thuật toán tuần tự (nguyên tố nhỏ), MapReduce (nguyên tố
lớn)
62
Trang 9Số hiệu
Trang 10Hình 3.13 Tổng độ lớn của khoảng sàng lọc 54
Trang 11MỞ ĐẦU
1 Tính cấp thiết và lý do chọn đề tài
Công nghệ thông tin là ngành khoa học về xử lý, lưu trữ và truyền tải dữ liệu máy tính Bảo mật và toàn vẹn dữ liệu là vấn đề cơ bản, quan trọng luôn luôn được chú tâm nghiên cứu, phát triển
Mã hóa và thám mã là hai mặt luôn tồn tại và phát triển song hành, có mã hóa thì
sẽ có thám mã Trong khi mã hóa là một trong những phương pháp hữu hiệu nhằm đảm bảo tính bảo mật và toàn vẹn dữ liệu thì thám mã là một hình thức tấn công mật
mã hay bẻ khóa để thu được dữ liệu cần thiết, có thể phục vụ cho bước tấn công tiếp theo Mật mã cùng thuật toán mã hóa ngày càng phức tạp, đa dạng thì thám mã cũng ngày càng tinh vi, hiệu quả và luôn là thử thách của những nhà mật mã học
Để có được những giải pháp phòng chống, ngăn chặn triệt để các hành vi thám
mã thì người quản trị phải tiếp cận và hiểu biết tường tận các cách thức tấn công bẻ khóa Hơn nữa, nhờ tiếp cận, phân tích những quá trình tấn công của cracker, mật mã càng trở nên tiến bộ, những thuật toán mã hóa thường được cộng đồng phân tích kỹ lưỡng, trao đổi và khắc phục những lỗi thiết kế Do đó, những cố gắng thám mã khai thác điểm yếu của thuật toán thường không hiệu quả Gần như chỉ còn cách thám mã dựa trên vét cạn khóa là khả dĩ Tuy nhiên, lường trước điều này, các khóa thường được khuyến cáo phải có đủ độ dài cần thiết để các máy tính thông thường trong một thời gian nhất định không thể tìm ra được Điều này đồng nghĩa sẽ có trường hợp người thám mã sử dụng hệ thống máy tính để triển khai phương pháp vét cạn trên môi trường xử lý phân tán để rút ngắn thời gian bẻ khóa
Cùng với sự phát triển của công nghệ đã đặt ra cho chúng ta nhiều thách thức Trong đó phải kể đến công nghệ tính toán phân tán Ý tưởng chính của việc tính toán phân tán là chia bài toán thành những bài toán con và giải quyết trên các máy riêng biệt nhau được kết nối trong một cluster Chúng ta có thể thấy sự thành công của các công ty như Google, Facebook trong thời đại bùng nổ về công nghệ hiện nay Đằng sau sự thành công đó có sự đóng góp không nhỏ của một mô hình lập trình được đưa
ra bởi Google – đó là mô hình lập trình phân tán MapReduce [16][18]
MapReduce là một mô hình lập trình phân tán, bao gồm hai giai đoạn chính là Map và Reduce Mô hình lập trình MapReduce được dùng để xử lý dữ liệu lớn dựa trên lý thuyết của mô hình tính toán song song và mô hình xử lý dữ liệu phân tán trên những cụm máy tính MapReduce có các ưu điểm nổi bật như: Xử lý tốt bài toán với lượng dữ liệu lớn có các tác vụ phân tích và tính toán phức tạp; Có thể tiến hành chạy song song trên các máy phân tán một cách chính xác và hiệu quả Không cần quan tâm đến sự trao đổi dữ liệu giữa các cluster với nhau vì chúng hoạt động một cách độc lập;
Trang 12Có thể thực hiện mô hình MapReduce trên nhiều ngôn ngữ (Java, C/ C++, Python, Perl, Ruby) với các thư viện tương ứng
Trong thực tiễn, có nhiều bài toán mã hóa và thám mã với yêu cầu xử lý dữ liệu lớn, thời gian xử lý ngắn hơn Do đó hướng ứng dụng MapReduce để giải quyết một
số bài toán mã hóa và thám mã là mục tiêu mà tôi lựa chọn để thực hiện luận văn:
“GIẢI QUYẾT MỘT SỐ BÀI TOÁN MÃ HÓA VÀ THÁM MÃ
TRÊN MÔI TRƯỜNG XỬ LÝ PHÂN TÁN”
2 Mục tiêu và nội dung nghiên cứu
2.1 Mục tiêu
Xây dựng mô hình lập trình phân tán MapReduce trên nền tảng Hadoop để giải quyết một số bài toán mã hóa và thám mã có khối lượng tính toán lớn
2.2 Nội dung nghiên cứu
- Tìm hiểu lý thuyết về mã hóa dữ liệu RSA, MD5
- Tìm hiểu lý thuyết về thám mã dữ liệu
- Tìm hiểu lý thuyết về nền tảng tính toán Hadoop
- Tìm hiểu lý thuyết về mô hình xử lý phân tán MapReduce
- Xây dựng thuật toán mã hóa, thám mã dùng ngôn ngữ lập trình Java
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
- Cấu trúc Framework, Hadoop, Kiến trúc HDFS
- Các bài toán giải thuật mã hóa
- Tìm hiểu xây dựng các hàm Map, hàm Reduce
- Triển khai mô hình hệ thống
3.2 Phạm vi nghiên cứu
- Mô hình xử lý phân tán trên nền tảng Hadoop
- Ứng dụng mô hình xử lý phân tán MapReduce để giải quyết một số bài toán
Trang 13- Các bài toán về bảo mật dữ liệu
- Giải thuật xử lý phân tán
4.2 Phương pháp thực nghiệm
- Xây dựng sơ đồ, các thuật toán bảo mật dữ liệu
- Lập trình ứng dụng bằng ngôn ngữ Java
- Xây dựng chương trình thử nghiệm
5 Dự kiến kết quả đạt được
5.1 Về lý thuyết
- Hiểu được lý thuyết về hệ xử lý phân tán và nền tảng Hadoop
- Hiểu được các thuật toán bảo mật dữ liệu
5.2 Về thực nghiệm
- Xây dựng bài toán mã hóa và thám mã trên mô hình xử lý phân tán MapReduce
- Xây dựng và triển khai hệ thống
6 Ý nghĩa khoa học và thực tiễn
6.1 Ý nghĩa khoa học
Xây dựng được giải thuật giải bài toán mã hóa và thám mã từ giải thuật tuần
tự sang xử lý song song
6.2 Ý nghĩa thực tiễn
Ứng dụng mô hình phân tán khi giải các bài toán về mã hóa và thám mã với
số lượng dữ liệu lớn nhằm tăng hiệu suất và giảm thời gian tính toán
7 Bố cục của luận văn
Ngoài phần mở đầu và phần kết luận, nội dung chính của luận văn được trình bày gồm 3 chương chính sau:
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI
CHƯƠNG 2: MÔ HÌNH XỬ LÝ PHÂN TÁN MAPREDUCE
CHƯƠNG 3: TRIỂN KHAI MỘT SỐ THUẬT TOÁN MÃ HÓA TRÊN NỀN TẢNG MAPREDUCE
Trang 14CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI
Chương này trình bày tổng quan khái niệm về mã hóa và thám mã, giới thiệu về
mã hóa đối xứng, mã hóa bất đối xứng Trình bày sơ lược sơ đồ mã hóa và giải mã, sơ
đồ chữ ký hàm băm
1.1 Khái niệm về mã hóa và thám mã
Mã hóa là phương pháp xử lý thông tin (văn bản, phim ảnh, hình ảnh, ) từ định dạng bình thường sang dạng thông tin không thể hiểu được nếu không có phương pháp giải mã
Mã hóa là khoa học ứng dụng toán học vào việc biến đổi thông tin thành một dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã hóa Đây là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng phổ biến hơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng , cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng
Hình 1.1 Sơ đồ mã hóa và giải mã
Thuật toán Cryptography đề cập tới ngành khoa học nghiên cứu về mã hóa và giải mã thông tin Là nghiên cứu các cách thức chuyển đổi thông tin từ dạng rõ (clear text) sang dạng mờ (cipher text) và ngược lại Đây là một phương pháp hỗ trợ tốt cho việc chống lại những truy cập bất hợp pháp tới dữ liệu được truyền đi trên mạng, việc
áp dụng mã hóa sẽ khiến cho nội dung thông tin được truyền đi dưới dạng mờ và không thể đọc được đối với bất kỳ ai cố tình muốn lấy thông tin đó Mã hóa được áp dụng như một biện pháp nhằm giúp chúng ta tự bảo vệ chính mình cũng như những thông tin mà chúng ta gửi đi Bên cạnh đó, mã hóa còn có những ứng dụng khác như đảm bảo tính toàn vẹn, tính bí mật, tính xác thực và tính không thể chối bỏ của dữ liệu Thám mã là công việc phân tích bản tin mã hóa để nhận được bản tin rõ trong điều kiện không biết trước khóa mã Thông thường, đây là hành vi của một kẻ tấn công
Trang 15khi muốn xâm nhập vào một hệ thống đã được bảo vệ bằng mật mã Theo nguyên tắc mật mã, để lấy được thông tin gốc, thì tác nhân giải mã phải có được 3 thành phần:
thông tin mật (ciphertext), khóa (secret key) và thuật toán giải mã (decryption algorithm) Kẻ tấn công thường không có đầy đủ 3 thông tin này, do đó, thường cố
gắng để giải mã thông tin bằng hai phương pháp sau:
- Phương pháp phân tích mã (cryptanalysis): dựa vào bản chất của thuật toán
mã hóa, cùng với một đoạn thông tin gốc hoặc thông tin mật có được, kẻ tấn công tìm cách phân tích để tìm ra toàn bộ thông tin gốc hoặc tìm ra khóa, sau đó thực hiện việc giải mã toàn bộ thông tin mật
- Phương pháp thử tuần tự (brute-force): bằng cách thử tất cả các khóa có thể,
kẻ tấn công có khả năng tìm được khóa đúng và do đó giải mã được thông tin mật Thông thường, để tìm được khóa đúng thì cần phải thử một số lượng khóa bằng khoảng một nửa số khóa có thể có của hệ thống mã Ví dụ, nếu khóa có chiều dài là 8 bit thì sẽ có tất cả là 28 = 256 khóa khác nhau Vậy, để chọn được khóa đúng thì kẻ tấn công phải thử trung bình khoảng 256/2 = 128 lần Việc thử này thường được trợ giúp bởi các máy tính có hiệu suất cao và phần mềm chuyên nghiệp
Hai thành phần đảm bảo sự an toàn của một hệ thống mật mã là thuật toán mã hóa (bao gồm thuật toán mã hoá và thuật toán giải mã) và khóa
Trong thực tế, công việc thám mã gặp nhiều khó khăn hơn khi không biết rõ hệ mật mã nào được sử dụng Tuy nhiên, để đơn giản hóa, chúng ta giả sử người thám mã
đã biết rõ hệ mật mã được sử dụng khi tiến hành phân tích mã (nguyên lý Kerckhoff) Mục đích là thiết kế được một hệ mật mã an toàn bảo mật
Một cách tổng quát, chiều dài khóa càng lớn thì thời gian cần thiết để dò ra khóa càng lớn, do vậy khả năng phát hiện khóa càng thấp Bảng 1.1 sau đây liệt kê một số khóa với độ dài khác nhau và thời gian cần thiết để dò ra khóa
Bảng 1.1 Quan hệ giữa độ dài khóa và thời gian dò khóa
Trang 161.2 Phân loại mã hóa dữ liệu
1.2.1 Phân loại theo phương pháp
1.2.1.1 Mã hóa đối xứng
Mã hóa đối xứng (Symetric cryptography): mã hóa đối xứng còn có một số tên gọi khác như Secret Key Cryptography hay (Private Key Cryptography), sử dụng cùng một khóa cho cả hai quá trình mã hóa và giải mã
Trong hệ thống mã hóa đối xứng, trước khi truyền dữ liệu, hai bên gửi và nhận phải thỏa thuận về khóa dùng chung cho quá trình mã hóa và giải mã Sau đó, bên gửi
sẽ mã hóa bản rõ (Plaintext) bằng cách sử dụng khóa bí mật này và gửi thông điệp đã
mã hóa cho bên nhận Bên nhận sau khi nhận được thông điệp đã mã hóa sẽ sử dụng chính khóa bí mật mà hai bên thỏa thuận để giải mã và lấy lại bản rõ (Plaintext)
Mã hóa đối xứng có thể chia thành 2 loại:
▪ Loại tác động lên bản rõ theo từng nhóm bits: từng khối dữ liệu trong văn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài Đối với các thuật toán ngày nay thì kích thước chung của một khối là 64 bits
▪ Loại tác động lên bản rõ theo từng bit một: dữ liệu của văn bản được mã hóa từng bít một Các thuật toán mã hóa dòng này có tốc độ nhanh hơn các thuật toán mã hóa khối và nó thường được áp dụng khi lượng dữ liệu cần
mã hóa chưa biết trước
Một số thuật toán trong mã hóa đối xứng là: DES, Triple DES (3DES), RC4, AES,…
1.2.1.2 Mã hóa một chiều
Mã hóa một chiều là loại mã hóa mà chỉ có thể mã hóa từ một thông điệp thành một thông điệp rút gọn mà không thể giải mã để trở lại thông điệp ban đầu Mã hóa một chiều gồm có các loại như: SHA1, MD5,…
1.2.1.3 Mã hóa bất đối xứng
Mã hóa bất đối xứng (Asymetric Cryptography) hay còn gọi mã hóa công khai (Public Key Cryptography), được thiết kế sao cho khóa sử dụng trong quá trình mã hóa khác biệt với khóa được sử dụng trong quá trình giải mã Điển hình cho loại này là
mã hóa RSA
Ứng rõ ràng nhất của mật mã hóa khóa bất đối xứng là bảo mật: văn bản được
mã hóa bằng khóa công khai của một người sử dụng thì chỉ có thể giải mã với khóa bí mật của người đó
Các thuật toán tạo chữ ký số khóa bất đối xứng có thể dùng để xác thực Một người sử dụng có thể mã hóa văn bản với khóa bí mật của mình Nếu một người khác
Trang 17có thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn bản thực sự xuất phát từ người gắn với khóa công khai đó.
1.2.2 Phân loại theo số lượng khóa
- Mã hóa khóa bí mật (Private Key Cryptography): là một dạng mã hóa mà khi
mã hóa người dùng trao đổi thông tin với nhau không cần trao đổi khóa bí mật, nhưng khi nhận được thông điệp gửi đến thì không thể xác nhận chính xác người gửi cũng như nội dung có bị thay đổi hay không
- Mã hóa khóa công khai (Public Key Cryptography): là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó Điều này được thực hiện bằng cách sử dụng một cặp khóa
có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật)
1.3 Một số ứng dụng của mã hóa dữ liệu
- Securing Email (bảo mật email)
- Authentication System (việc xác thực hệ thống)
- Secure E-commerce (an toàn trong thương mại điện tử)
- Virtual Private Network (bảo mật mạng riêng ảo)
- Tạo chìa khóa từ mật khẩu
- Là nền tảng của kỹ thuật chữ ký điện tử, hệ thống PKI (hạ tầng khóa công khai)…
an toàn trong bảo mật thông tin Do đó, Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa
Kỳ (National Institute of Standards and Technology - NIST) đã quyết định chọn một chuẩn mã hóa mới với độ an toàn cao nhằm phục vụ nhu cầu bảo mật thông tin liên lạc của chính phủ Hoa Kỳ cũng như trong các ứng dụng dân sự Thuật toán Rijndael do Vincent Rijmen và Joan Daeman đã được chính thức chọn trở thành chuẩn mã hóa nâng cao (Advanced Encryption Standard - AES) từ tháng 10 năm 2000
Ví dụ: Thông điệp nguồn được mã hóa với mã khóa k được thống nhất trước giữa người gửi A và người nhận B Người A sẽ sử dụng mã khóa k để mã hóa thông điệp x
Trang 18thành thông điệp y và gửi y cho người B người B sẽ sử dụng mã khóa k để giải mã thông điệp y này Vấn đề an toàn bảo mật thông tin được mã hóa phụ thuộc vào việc giữ bí mật nội dung mã khóa k.Nếu người C biết được mã khóa k thì C có thể “mở khóa” thông điệp đã được mã hóa mà người A gửi cho người B
Hình 1.2 Mô hình hệ thống mã hóa đối xứng
1.5 Mã hóa một chiều
Mã hóa một chiều hiểu đơn giản theo đúng nghĩa của nó, tức là một khi đã mã hóa rồi thì không thể giải ngược lại được nữa Đây là phương thức giúp bảo vệ tuyệt đối dữ liệu, thường dùng để lưu mật khẩu vào cơ sở dữ liệu
Xác thực mẩu tin liên quan đến các khía cạnh sau khi truyền tin trên mạng như:
▪ Bảo vệ tính toàn vẹn của mẩu tin: bảo vệ mẩu tin không bị thay đổi hoặc có các biện pháp phát hiện nếu mẩu tin bị thay đổi trên đường truyền
▪ Kiểm chứng danh tính, nguồn gốc: xem xét mẩu tin có đúng do người xưng tên gửi không hay một kẻ mạo danh nào khác gửi
▪ Không chối từ bản gốc: trong trường hợp cần thiết, bản thân mẩu tin chứa các thông tin chứng tỏ chỉ có người xưng danh gửi, không một ai khác có thể làm điều đó => Người gửi không thể từ chối hành động gửi, thời gian gửi và nội dung của mẩu tin
Các yêu cầu bảo mật khi truyền mẩu tin là tìm các biện pháp cần thiết để chống đối lại các hành động phá hoại như sau:
▪ Để lộ bí mật: giữ bí mật nội dung mẩu tin, chỉ cho người có quyền biết
▪ Thám mã đường truyền: không cho theo dõi hoặc làm chậm việc truyền tin
▪ Giả mạo: lấy danh nghĩa người khác để gửi tin
▪ Sửa đổi nội dung: thay đổi, cắt xén, thêm bớt thông tin
Mã hóa
Khóa bí mật
Trang 19▪ Thay đổi trình tự các gói tin nhỏ của mẩu tin truyền
▪ Sửa đổi thời gian: làm trì hoãn mẩu tin
▪ Từ chối gốc: không cho phép người gửi từ chối trách nhiệm của tác giả mẩu tin
▪ Từ chối đích: không cho phép người nhận phủ định sự tồn tại và đến đích
của mẩu tin đã gửi
Hàm băm (Hash function) là một hàm mà nó nhận vào một chuỗi có độ dài bất
kì, và sinh ra một chuỗi kết quả có độ dài cố định (gọi là chuỗi hash), dù hai chuỗi dữ liệu đầu vào, được cho qua hàm băm thì cũng sinh ra hai chuỗi hash kết quả khác nhau rất nhiều
Hàm băm là các thuật toán không sử dụng khóa để mã hóa, nó có nhiệm vụ băm thông điệp được đưa vào theo một thuật toán h một chiều nào đó, rồi đưa ra một bản băm – văn bản đại diện – có kích thước cố định Do đó người nhận không biết được nội dung hay độ dài ban đầu của thông điệp đã được băm bằng hàm băm Giá trị của hàm băm là duy nhất, và không thể suy ngược lại được nội dung thông điệp từ giá trị băm này
Hàm băm h là hàm một chiều (one-way hash) với các đặc tính:
▪ Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất
▪ Nếu dữ liệu trong thông điệp x thay đổi để thành thông điệp x’ thì h(x’) <> h(x) => Hai thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng khác nhau
▪ Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm => Với thông điệp x thì dễ dàng tính được z = h(x), nhưng lại không thể (thực chất
là khó) suy ngược lại được x nếu chỉ biết giá trị hàm băm h
Vai trò hàm băm trong mật mã hiện đại:
▪ Được dùng để xác thực tính nguyên vẹn dữ liệu
▪ Được dùng trong quá trình tạo chữ kí số trong giao dịch điện tử
Các hàm băm lấy một thông báo đầu vào và tạo một đầu ra được xem như là:
▪ Mã băm (hash code),
▪ Kết quả băm (hash result),
▪ Hoặc giá trị băm (hash value)
Vai trò cơ bản của các hàm băm mật mã là một giá trị băm coi như ảnh đại diện thu gọn, đôi khi gọi là một dấu vết (imprint), vân tay số (digital fingerprint), hoặc tóm
Trang 20lược thông báo (message digest) của một xâu đầu vào, và có thể được dùng như là một định danh duy nhất với xâu đó Các hàm băm thường được dùng cho toàn vẹn dữ liệu kết hợp với các lược đồ chữ kí số Một lớp các hàm băm riêng được gọi là mã xác thực thông báo (MAC) cho phép xác thực thông báo bằng các kĩ thuật mã đối xứng
Việc sử dụng các hệ mật mã và các sơ đồ chữ ký số, thường là mã hóa và ký số trên từng bit của thông tin, sẽ tỷ lệ với thời gian để mã hóa và dung lượng của thông tin
Thêm vào đó có thể xảy ra trường hợp: Với nhiều bức thông điệp đầu vào khác nhau, sử dụng hệ mật mã, sơ đồ ký số giống nhau (có thể khác nhau) thì cho ra kết quả bản mã, bản ký số giống nhau (ánh xạ N-1: nhiều – một) Điều này sẽ dẫn đến một số rắc rối về sau cho việc xác thực thông tin
Với các sơ đồ ký số, chỉ cho phép ký các bức thông điệp (thông tin) có kích thước nhỏ và sau khi ký, bản ký số có kích thước gấp đôi bản thông điệp gốc Chẳng hạn, với sơ đồ chữ ký chuẩn DSS chỉ ký trên các bức thông điệp có kích thước 160 bit, bản ký số sẽ có kích thước 320 bit
Trong khi đó trên thực tế, ta cần phải ký các thông điệp có kích thước lớn hơn nhiều, chẳng hạn vài chục MB Hơn nữa, dữ liệu truyền qua mạng không chỉ là bản thông điệp gốc, mà còn bao gồm cả bản ký số (có dung lượng gấp đôi dung lượng bản thông điệp gốc), để đáp ứng việc xác thực sau khi thông tin đến người nhận
Một cách đơn giản để giải bài toán (với thông điệp có kích thước vài chục MB) này là chia thông điệp thành nhiều đoạn 160 bit, sau đó ký lên các đoạn đó độc lập nhau Nhưng biện pháp này có một số vấn đề trong việc tạo ra các chữ ký số:
▪ Thứ nhất: với một thông điệp có kích thước a, thì sau khi ký kích thước của chữ ký sẽ là 2a (trong trường hợp sử dụng DSS)
▪ Thứ hai: với các chữ ký “an toàn” thì tốc độ chậm vì chúng dùng nhiều phép tính số học phức tạp như số mũ modulo
▪ Thứ ba: vấn đề nghiêm trọng hơn đó là kết quả sau khi ký, nội dung của thông điệp có thể bị xáo trộn các đoạn với nhau, hoặc một số đoạn trong chúng có thể bị mất mát, trong khi người nhận cần phải xác minh lại thông điệp Ta cần phải bảo vệ tính toàn vẹn của thông điệp
Giải pháp cho các vấn đề vướng mắc đến chữ ký số là dùng “hàm băm” để trợ giúp cho việc ký số
Các thuật toán băm với đầu vào là các bức thông điệp có dung lượng, kích thước tùy ý (vài KB đến vài chục MB…), các bức thông điệp có thể là dạng văn bản, hình ảnh, âm thanh, file ứng dụng v.v…và với các thuật toán băm: MD2, MD4, MD5, SHA
Trang 21cho các bản băm đầu ra có kích thước cố định: 128 bit với dòng MD, 160 bit với SHA1 Như vậy, bức thông điệp kích thước tùy ý sau khi băm sẽ được thu gọn thành những bản băm được gọi là các “văn bản đại diện” có kích thước cố định (128 bit hoặc
160 bit)
Với mỗi thông điệp đầu vào chỉ có thể tính ra được một văn bản đại diện – giá trị băm tương ứng – duy nhất
Hai thông điệp khác nhau chắc chắn có hai văn bản đại diện khác nhau Khi đã
có văn bản đại diện duy nhất cho bức thông điệp, áp dụng các sơ đồ chữ ký số ký trên văn bản đại diện đó
Giả sử A muốn gửi cho B thông điệp x A thực hiện các bước sau:
(1) A băm thông điệp x, thu được bản đại diện z = h(x) – có kích thước cố định
128 bit hoặc 160 bit
(2) A ký số trên bản đại diện z, bằng khóa bí mật của mình, thu được bản ký số y
= sig(z)
(3) A gửi (x, y) cho B
Hình 1.3 Sơ đồ chữ ký số sử dụng hàm băm
Ký số (sử dụng các cơ đồ ký số RSA, DSS)
Sig k (z)
Băm thông điệp (sử dụng thuật toán MD5 hoặc SHA)
h(x)
Độ dài cố định 128 với MD5 và 160 với
SHA
Bảng băm (văn bản đại điện)
Trang 22Khi B nhận được (x, y) B thực hiện các bước sau:
(4) B kiểm tra chữ ký số để xác minh xem thông điệp mà mình nhận được có phải được gửi từ A hay không bằng cách giải mã chữ ký số y, bằng khóa công khai của
Băm thông điệp (sử dụng thuật toán MD5 hoặc SHA)
Khóa công khai
của người A
z ≠ h(x)
Trang 23Hàm băm thường kết hợp với chữ ký số để tạo ra một loại chữ ký điện tử vừa an toàn hơn (không thể cắt/dán) vừa có thể dùng để kiểm tra tính toàn vẹn của thông điệp Hàm băm được ứng dụng rất mạnh trong vấn đề an toàn thông tin trên đường truyền Các ứng dụng có sử dụng hàm băm không chỉ đảm bảo về mặt an toàn thông tin, mà còn tạo được lòng tin của người dùng vì họ có thể dễ dàng phát hiện được thông tin của mình có còn toàn vẹn hay không, họ biết rằng thông tin của mình chắc chắn được bí mật với phía các nhà cung cấp
1.6 Mã hóa bất đối xứng
Mật mã hóa khóa công khai là một dạng mật mã cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật)
Hình 1.5 Nguyên lý cơ bản của mã hóa khóa công khai
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật mã hóa khóa công khai mặc dù hai khái niệm không hoàn toàn tương đương Có những thuật toán mật mã khóa bất đối xứng không có tính chất khóa công khai và bí mật như đề cập ở trên mà cả hai khóa (mã hóa và giải mã) đều cần phải giữ bí mật
Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
▪ Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được
▪ Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một
Khóa công khai
Trang 24khóa bí mật nào đó hay không
▪ Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên
Thông thường, kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán nhiều hơn kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang
lại khiến cho chúng được áp dụng trong nhiều ứng dụng
Ưu điểm
- Thuật toán được viết một lần, công khai cho nhiều lần dùng, cho nhiều người dùng, họ chỉ cần giữ bí mật khóa riêng của mình
- Khi biết các tham số ban đầu của hệ mã hóa, việc tính ra cặp khoá công khai
và bí mật phải là “dễ”, tức là trong thời gian đa thức
+ Người gửi có bản rõ P và khoá công khai, thì “dễ” tạo ra bản mã C
+ Người nhận có bản mã C và khoá bí mật, thì “dễ” giải được thành bản rõ P
- Người mã hóa dùng khóa công khai, người giải mã giữ khóa bí mật Khả năng
lộ khóa bí mật khó hơn vì chỉ có một người giữ
- Nếu thám mã biết khóa công khai, cố gắng tìm khóa bí mật, thì chúng phải đương đầu với bài toán “khó”
- Nếu thám mã biết khóa công khai và bản mã C, thì việc tìm ra bản rõ P cũng
là bài toán “khó”, số phép thử là vô cùng lớn, không khả thi
Tuy nhiên mã hóa và giải mã có tốc độ chậm hơn nhiều hệ mã hóa khóa đối xứng
1.7 Kết chương
Chương này trình bày tổng quan về mã hóa cổ điển và mã hóa hiện đại (mã hóa một chiều hàm băm và mã hóa công khai) Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật) Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã Điều quan trọng đối là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai
Trang 25CHƯƠNG 2 MÔ HÌNH XỬ LÝ PHÂN TÁN MAPREDUCE
Chương này trình bày một cách tổng quan về nền tảng tính toán phân tán với Hadoop, giới thiệu kiến trúc HDFS, cách thức đọc/ghi dữ liệu trên HDFS Trình bày
về mô hình xử lý tán MapReduce
2.1 Hệ thống tập tin phân tán
Với sự phát triển không ngừng của mạng xã hội, sự ra đời của các thiết bị mới tiên tiến, mọi hoạt động thường ngày đang dần được internet hóa dẫn đến lưu lượng thông tin ngày càng đa dạng đã đòi hỏi không gian lưu trữ, xử lý dữ liệu không ngừng tăng lên và vượt ra khỏi khả năng xử lý của các hệ thống truyền thống Điều đó đòi hỏi phải xây dựng một hệ thống mới, có khả năng xử lý được một lượng dữ liệu lớn, trong một khoảng thời gian cho phép chấp nhận được Xuất phát từ nhu cầu thực tế đó, Hadoop đã ra đời dựa trên ý tưởng từ các bài báo về mô hình xử lý dữ liệu phân tán MapReduce của Google và Hệ thống tập tin của Google - Google File System (GFS) Hiện nay, Hadoop đã được ứng dụng rộng rãi trên khắp thế giới Hadoop hoạt động trên ý tưởng của mô hình xử lý dữ liệu phân tán MapReduce, cụ thể là hệ thống sẽ chia nhỏ nhiệm vụ lớn cho hàng loạt máy tính cùng nhau xử lý song song Vì vậy, Hadoop
có thể dễ dàng được triển khai trên các hệ thống máy tính có sẵn chứ không cần phải đầu tư những thiết bị phần cứng cao cấp, đắt tiền Đặc biệt, Hadoop là một dự án mã nguồn mở và hoàn toàn miễn phí
2.1.1 Hệ thống tập tin phân tán Hadoop
Hadoop là một framework cho phép phát triển các ứng dụng phân tán, viết bằng Java Tuy nhiên nhờ cơ chế streaming, Hadoop cho phép phát triển các ứng dụng phân tán bằng ngôn ngữ Java lẫn một số ngôn ngữ lập trình khác như: C++ , Python, Hadoop cung cấp một phương tiện lưu trữ dữ liệu phân tán trên nhiều node, hỗ trợ tối
ưu hóa băng thông mạng đó là Hadoop Distributed File System (HDFS)
Hadoop được tạo ra bởi Doug Cutting, người sáng tạo ra Apache Lucene- bộ thư viện tạo chỉ mục tìm kiếm trên text được sử dụng rộng rãi Hadoop bắt nguồn từ Nutch, một ứng dụng search engine nguồn mở
Nutch được khởi xướng từ năm 2002 và một hệ thống search engine ra đời Tuy nhiên, các nhà kiến trúc sư của Nutch nhanh chóng nhận ra rằng Nutch sẽ không thể
mở rộng ra để có thể thực hiện vai trò searcher engine của mình trên tập dữ liệu hàng
tỷ trang web Nguyên nhân chính của giới hạn này là do Nutch lúc này chỉ chạy trên một máy đơn (stand alone) nên gặp phải các khuyết điểm sau:
- Một là, khả năng lưu trữ bị giới hạn: giả sử mỗi trang web cần 10kb đĩa cứng
để lưu, thì với hơn 100 triệu trang ta cần 1 Terabyte để lưu trữ, và với khối lượng hàng
tỷ trang web có trên mạng thì cần tới hàng chục Petabyte để lưu trữ dữ liệu
Trang 26- Hai là, tốc độ truy xuất chậm: với khối lượng dữ liệu lưu trữ lớn như vậy, việc truy xuất tuần tự để phân tích dữ liệu và index trở nên rất chậm chạp, thời gian để đáp ứng các câu truy vấn tìm kiếm (search query) là không hợp lý
Năm 2003, Google công bố kiến trúc của hệ thống file phân tán GFS Năm
2004, họ ứng dụng kiến trúc của GFS để cài đặt một hệ thống file phân tán nguồn mở
có tên là Nutch Distributed File System (NDFS) Trong thời gian này Google lại công
bố bài báo giới thiệu MapReduce Đầu năm 2005, các nhà phát triển Nutch đã xây dựng được phiên bản MapReduce trên Nutch Đến giữa năm 2005, tất cả các thuật toán chính của Nutch đều được cải tiến lại để chạy trên nền NDFS và MapReduce
Năm 2008, Hadoop đã phá kỷ lục thế giới về sắp xếp một Terabyte dữ liệu Chạy trên một cluster gồm 910 node, Hadoop đã sắp xếp một Terabyte dữ liệu trong khoảng 209 giây, phá kỷ lục cũ là 297 giây Sau đó ít lâu, Google công bố ứng dụng chạy trên MapReduce của họ đã sắp xếp được một Terabyte dữ liệu trong 68 giây Vào tháng 5 năm 2009, một đội các nhà phát triển của Yahoo đã dùng Hadoop để sắp xếp một Terabyte dữ liệu trong vòng 62 giây
2.1.2 Thành phần của Hadoop
Ngày nay, ngoài NDFS (đã được đổi tên lại thành HDFS - Hadoop Distributed File System) và MapReduce, đội ngũ phát triển Hadoop đã phát triển các dự án con dựa trên HDFS và MapReduce Hiện nay, Hadoop gồm các dự án con sau:
Hình 2.1 Cấu trúc các thành phần của Hadoop
Core
Trang 27MapReduce
Một framework giúp phát triển các ứng dụng phân tán theo
mô hình MapReduce một cách dễ dàng, mạnh mẽ Ứng dụng phân tán MapReduce có thể chạy trên một cluster lớn với nhiều node
HDFS
Hệ thống file phân tán giúp cung cấp khả năng lưu trữ dữ liệu khổng lồ và tính năng tối ưu hóa việc sử dụng băng thông giữa các node HDFS có thể sử dụng để chạy một cluster lớn với hàng chục ngàn node
Chukwa
Một hệ thống tập hợp và phân tích dữ liệu Chukwa chạy các collector (các chương trình tập hợp dữ liệu), các collector này lưu trữ dữ liệu trên HDFS và sử dụng MapReduce để phát sinh các báo cáo
Pig Ngôn ngữ luồng dữ liệu cấp cao và framework thực thi
dùng cho tính toán song song
2.1.3 Các tiến trình nền của Hadoop
• NameNode
Hadoop sử dụng một kiển trúc master/slave cho cả lưu trữ phân tán và xử lý phân tán Hệ thống lưu trữ phân tán được gọi là Hadoop File System hay HDFS NameNode là master của HDFS để chỉ đạo các trình nền DataNode slave để thực hiện các nhiệm vụ I/O mức thấp
Trang 28• DataNode
Mỗi máy slave trong cluster sẽ lưu trữ một trình nền DataNode để thực hiện các công việc nào đó của hệ thống file phân tán - đọc và ghi các khối HDFS tới các file thực tế trên hệ thống file cục bộ (local filesytem) Khi đọc hay ghi một file HDFS, file đó được chia nhỏ thành các khối và NameNode sẽ gửi cho các client nơi các trình nền DataNode sẽ nằm trong đó Client liên lạc trực tiếp với các trình nền DataNode để
xử lý các file cục bộ tương ứng với các block Hơn nữa, một DataNode có thể giao
tiếp với các DataNode khác nhằm nhân bản các khối dữ liệu của nó để dự phòng
• Secondary NameNode
Secondary NameNode là một trình nền hỗ trợ giám sát trạng thái của các cụm HDFS Giống như NameNode, mỗi cụm có một Secondary NameNode, và nó thường trú trên một máy của mình Không có các trình nền DataNode hay TaskTracker chạy trên cùng một server Secondary NameNode khác với NameNode trong quá trình xử
lý của nó không nhận hoặc ghi lại bất cứ thay đổi thời gian thực tới HDFS Thay vào
đó giao tiếp với các NameNode bằng cách chụp những bức ảnh của siêu dữ liệu HDFS (HDFS metadata) tại những khoảng xác định bởi cấu hình của các cluster
• JobTracker
Trình nền JobTracker là một liên lạc giữa ứng dụng và Hadoop Một khi mã nguồn được gửi tới các cụm (cluster), JobTracker sẽ quyết định kế hoạch thực hiện bằng cách xác định những tập tin nào sẽ xử lý, các nút được giao các nhiệm vụ khác nhau và theo dõi tất cả các nhiệm vụ khi chúng đang chạy Nếu một nhiệm vụ (task) thất bại (fail), JobTracker sẽ tự động chạy lại nhiệm vụ đó, có thể trên một node khác, cho đến một giới hạn nào đó được định sẵn của việc thử lại này Chỉ có một JobTracker trên một cụm Hadoop, thường chạy trên một máy chủ như là một nút master của cluster
• TaskTracker
Cũng như với các trình nền lưu trữ, các trình nền tính toán cũng phải tuân theo kiến trúc master/slave: JobTracker là giám sát tổng việc thực hiện chung của một công việc MapRecude và các taskTracker quản lý việc thực hiện các nhiệm vụ riêng trên mỗi node slave Mỗi TaskTracker chịu trách nhiệm thực hiện các task riêng mà các JobTracker giao cho
Một trong những nhiệm vụ của các TaskTracker là liên tục liên lạc với JobTracker Nếu JobTracker không nhận được nhịp đập từ một TaskTracker nào đó trong thời gian đã quy định, nó sẽ cho rằng TaskTracker đã bị treo (cashed) và sẽ gửi lại nhiệm vụ tương ứng cho các nút khác trong cluster
Trang 292.1.4 Cấu trúc mạng của Hadoop
Cấu trúc của mạng ảnh hưởng tới hiệu năng của các cluster khi kích thước của các cluster của hadoop tăng Hơn nữa về hiệu năng, chúng ta cần phải quan tâm đến tính sẵn sàng cao và xử lý các lỗi gặp phải Để đạt được Hadoop chúng ta sử dụng cấu trúc liên kết mạng
Đặc biệt, băng thông mạng là yếu tố quan trọng cần phải cân nhắc khi xây dựng một mạng Tuy nhiên, giới hạn của băng thông có thể khó khăn, trong Hadoop, mạng được giới thiệu như cái cây và khoảng cách giữa các nút của cây (number of hops) là yếu tố quan trọng được chú ý đến trong sự hình thành của Hadoop cluster
Hadoop cluster bao gồm trung tâm dữ liệu, rack và nút thực hiện công việc Trung tâm dữ liệu gồm các rack, rack gồm các nút Băng thông có giá trị khác nhau dựa trên vị trí của bộ xử lý Đó là băng thông sẵn có trở nên ít đi khi chúng ta đi từ:
• Xử lý trên cùng nút
• Khác nút nhưng cùng một rack
• Các nút khác rack nhưng cùng một trung tâm dữ liệu
• Các nút khác trung tâm dữ liệu
Bên cạnh 2 thành phần lõi, Hadoop cũng chứa 1 số modules:
• Hadoop Common: các tiện tích thông dụng cho các module khác của
Hadoop
• Hadoop Yarn: một nền tảng cho lập lịch và quản lý tài nguyên cụm
(cluster)
Kiến trúc cụm Hadoop nhiều nút
Hình 2.2 Kiến trúc cụm Hadoop nhiều node
MapReduce Layer
HDFS Layer
Task Tracker
Job Tracker
Name Node
Data Node
Task Tracker
Task Tracker
Data Node
Data Node
Master Slave Slave
Trang 30Một cụm Hadoop nhỏ gồm 1 master node và nhiều worker/slave node Như đã nói, toàn bộ cụm chứa 2 lớp Một lớp MapReduce Layer và lớp kia là HDFS Layer Mỗi lớp có các thành phần liên quan riêng Master node gồm JobTracker, TaskTracker, NameNode, và DataNode Slave/worker node gồm DataNode và TaskTracker Cũng có thể slave/worker node chỉ là dữ liệu hoặc node để tính toán
2.1.5 Nguyên tắc hoạt động Hadoop MapReduce
Hadoop chia đầu vào cho mỗi công việc MapReduce vào các mảnh có kích
thước cố định gọi là các input split hoặc là các split Hadoop tạo ra một task map cho mỗi split, chạy mỗi nhiệm vụ map do người sử dụng định nghĩa cho mỗi bản ghi
(record) trong split Có rất nhiều các split, điều này có nghĩa là thời gian xử lý mỗi split nhỏ hơn so với thời gian xử lý toàn bộ đầu vào Vì vậy, nếu chúng ta xử lý các split một cách song song thì quá trình xử lý sẽ cân bằng tải tốt hơn, nếu các split nhỏ, khi đó một chiếc máy tính nhanh có thể xử lý tương đương nhiều split trong quá trình thực hiện công việc hơn là một máy tính chậm Ngay cả khi các máy tính giống hệt nhau, việc xử lý không thành công hay các công việc khác đang chạy đồng thời làm cho cân bằng tải như mong muốn và chất lượng của cân bằng tải tăng như là chia các splits thành các phần nhỏ hơn Mặt khác, nếu chia tách quá nhỏ, sau đó chi phí cho việc quản lý các split và của tạo ra các map task bắt đầu chiếm rất nhiều tổng thời gian của quá trình xử lý công việc Đối với hầu hết công việc, kích thước split tốt nhất thường là kích thước của một block của HDFS, mặc định là 64MB, mặc dù nó có thể thay đổi được cho mỗi cluster (cho tất cả các file mới được tạo ra) hoặc định rõ khi mỗi file được tạo ra Hadoop làm tốt nhất các công việc của nó khi chạy các map task
trên một node khi mà dữ liệu đầu vào cư trú ngay trong HDFS Các map task ghi đầu
ra của chúng trên đĩa cục bộ, không phải là vào HDFS
Hình 2.3 Mô hình xử lý của Hadoop
Quản lý file phân tán: Hadoop Distributed File System (HDFS) sẽ chia nhỏ dữ liệu ra thành nhiều phần Dữ liệu được quản lý một cách có hệ thống
Computer Node Computer Node Computer Node Client Machine
Head Node
Trang 31Hình 2.4 Mối quan hệ giữa MapReduce và Hadoop
MapReduce là mô hình tổ chức của Hadoop, MapReduce sẽ chia nhỏ task ra thành nhiều phần và xử lý song song trên các Node CPU khác nhau mà máy chủ là Master Node
Các ưu điểm khi dùng Hadoop
▪ Robus and Scalable: Có thể thêm node mới và thay đổi chúng khi cần
▪ Affordable and Cost Effective: Không cần phần cứng đặc biệt để chạy Hadoop
▪ Adaptive and Flexible: Hadoop được xây dựng với tiêu chí xử lý dữ liệu có cấu trúc và không cấu trúc
▪ Highly Available and Fault Tolerant – Khi 1 node lỗi, nền tảng Hadoop tự động chuyển sang node khác
▪ Là mã nguồn mở, có thể tương thích với tất cả platforms
2.2 Mô hình xử lý phân tán MapReduce
MapReduce có thể hiểu là một phương thức thực thi để giúp các ứng dụng có thể xử lý nhanh một lượng dữ liệu lớn Các dữ liệu này được đặt tại các máy tính phân tán và các máy tính này sẽ hoạt động song song độc lập với nhau Điều này làm rút
MapReduce (Distributed Computation)
HDFS (Distributed Storge)
YARN Framework Common Utilities
Trang 32ngắn thời gian xử lý toàn bộ dữ liệu
Một đặc điểm đáng chú ý là dữ liệu đầu vào của MapReduce có thể là dữ liệu cấu trúc (dữ liệu lưu trữ dạng bảng quan hệ hai chiều) hoặc dữ liệu không cấu trúc (dữ liệu dạng tập tin hệ thống)
2.2.2 Nguyên lý hoạt động của MapReduce
- MapReduce hoạt động gồm quá trình thực hiện hai hàm Map và Reduce
- MapReduce chính là thực hiện việc chia để trị
- Chia vấn đề cần xử lý (dữ liệu) thành các phần nhỏ để xử lý
- Xử lý các vấn đề nhỏ đó một cách song song trên các máy tính phân tán hoạt động độc lập với nhau
- Tổng hợp các kết quả thu được để đưa ra kết quả cuối cùng
2.2.3 Quá trình xử lý của MapReduce
MapReduce được xây dựng từ mô hình lập trình hàm và lập trình song song Tăng tốc độ thực thi xử lý dữ liệu là mục đích quan trọng nhất của MapReduce
Hình 2.5 Quá trình thực thi MapReduce
Quy trình này gồm 2 phần:
▪ Map: Đầu vào là nút chủ (master node) và sau đó chia nhỏ ra thành các vấn
đề nhỏ hơn, gọi là các split 0, split 1, split 2,
(4) local write
(1) fork
User Program
Output file 1
(2) assign Map
(6) write
Input Map Intermediate files Reduce Output files phase (on local disks) phase files
Trang 33▪ Reduce: Từ các đầu ra trung gian sẽ tổng hợp lại để đưa ra các kết quả cuối
cùng cho master Để xử lý khối dữ liệu bao gồm nhiều cặp (key, value), lập trình viên viết hai hàm là Map() và Reduce()
(1): Thư viện MapReduce mà chương trình người dùng (User Program) sử dụng chia các tập tin đầu vào thành các phần nhỏ Dung lượng mỗi phần từ 16 megabytes đến 64 megabytes Và sau đó sao chép chương trình thành các tiến trình song song chạy trên các máy tính phân tán chứa dữ liệu
(2): Chương trình điều khiển Master sẽ gán mỗi phần dữ liệu cho một hàm Map
và một hàm Reduce
(3) - (4): worker là phần được gán một hàm Map và Reduce để xử lý, nó sẽ đọc
dữ liệu, phân tích cặp (key, value) ở đầu vào và phân tích thành các cặp trung gian khác được lưu tại vùng nhớ đệm
(5): Định kỳ, các cặp dữ liệu trung gian sẽ được đẩy đến các worker tương ứng (do master điều khiển) để hàm reduce xử lý Các thuật toán sắp xếp, so sánh, phân vùng dữ liệu sẽ được sử dụng tại giai đoạn này Các tập dữ liệu trung gian có cùng key
sẽ được sắp xếp cùng một nhóm
(6): Khi tất cả các tác vụ Map và Reduce đã hoàn tất thì sẽ cho ra kết quả cuối cùng của quy trình MapReduce
Như vậy, toàn bộ quá trình MapReduce có thể hiểu như sau:
- Đọc dữ liệu đầu vào
- Thực hiện xử lý các phần dữ liệu vào (xử lý từng phần một)
Trang 34Hình 2.6 Mô hình thực hiện một công việc của MapReduce Lấy ý tưởng từ lập trình hàm, mô hình MapReduce dựa trên hai hàm Map và Reduce Để xử lý khối dữ liệu gồm nhiều cặp (key, value), lập trình viên viết hai hàm
Map và Reduce Hàm Map có đầu vào là một cặp (k1,v1) và đầu ra là một danh sách các cặp (k2, v2), như vậy hàm Map có thể được mô tả như sau:
Hình 2.7 Hàm Map
Mô hình MapReduce áp dụng hàm Map (do người dùng viết) vào từng cặp (key, value) trong khối dữ liệu vào, chạy rất nhiều phiên bản của hàm Map song song với nhau trên các node của cluster Sau khi giai đoạn này kết thúc, kết quả thu được là một tập hợp rất nhiều cặp (key, value) gọi là các cặp (key, value) trung gian Các cặp này lại được nhóm một lần nữa theo khóa, như vậy các cặp (key, value) trung gian có cùng khóa sẽ nằm cùng một nhóm trung gian
Hàm Reduce (do lập trình viên) sẽ được áp dụng vào từng nhóm trung gian để tạo thành kết quả cuối cùng tùy theo yêu cầu đặt ra Hàm Reduce có thể được mô tả như sau:
Map(k1,v1) → List(k2,v2)
Danh sách cặp (khóa, giá trị)
Trang 35Hình 2.8 Hàm Reduce
Trong đó: k2 là khóa chung của nhóm trung gian, list(v2) là tập các giá trị trong nhóm và list(v3) là một danh sách các giá trị trả về của hàm Reduce thuộc kiểu dữ liệu v3 Vì hàm Reduce được áp dụng vào nhiều nhóm trung gian độc lập nên chúng lại một lần nữa có thể được chạy song song với nhau
2.2.4 Hadoop MapReduce
Hadoop đã giữ nguyên cơ chế của MapReduce của Google để cài đặt thành bộ máy thực thi MapReduce Đây là một framework cho phép dễ dàng phát triển và triển khai các ứng dụng MapReduce
Mô hình hoạt động mapreduce
- Phân nhỏ dữ liệu đầu vào:
Hình 2.9 Phân nhỏ dữ liệu đầu vào
Thông qua thư viện MapReduce ứng với từng ngôn ngữ, chương trình có nhiệm vụ phân nhỏ tệp dữ liệu đầu vào Dữ liệu vào được chia thành các phần nhỏ
- Sao chép chương trình:
Chương trình MapReduce thực hiện nhiệm vụ sao chép chương trình chạy thành các tiến trình song song lên hệ thống máy tính phân tán Các máy tính phân tán gồm có Master và Worker Trong đó, máy Master làm nhiệm vụ điều phối sự hoạt động của quá trình thực hiện MapReduce trên các máy Worker, các máy Worker làm nhiệm vụ thực hiện quá trình Map và Reduce với dữ liệu mà nó nhận được
User Program
Split0 Split1 Split2 Split3
Trang 36Hình 2.10 Sao chép chương trình
- Thực hiện hàm Map:
Máy master sẽ phân phối các tác vụ Map và Reduce vào các worker đang rảnh rỗi Các tác vụ này được Master phân phối cho các máy dựa trên vị trí của dữ liệu liên quan trong hệ thống Máy Worker khi nhận được tác vụ Map sẽ đọc dữ liệu mà nó nhận được từ phân vùng dữ liệu đã gán cho nó và thực hiện hàm Map Kết quả đầu ra
là các cặp <key, value> trung gian Các cặp này được lưu tạm trên bộ nhớ đệm của các máy
Hình 2.11 Thực hiện hàm Map
Sau khi thực hiện xong công việc Map Các máy Worker làm nhiệm vụ chia các giá trị trung gian thành R vùng (tương ứng với R tác vụ Reduce) lưu xuống đĩa và thông báo kết quả, vị trí lưu cho máy Master
Hình 2.12 Thực thi tác vụ Reduce
Master sẽ gán các giá trị trung gian và vị trí của các cặp dữ liệu đó cho các máy thực hiện công việc Reduce Các máy Reduce làm nhiệm vụ xử lý các key, thực hiện hàm Reduce và đưa kết quả cuối
Thông báo kết quả:
Master sẽ kích hoạt thông báo cho chương trình người dùng quá trình MapReduce đã hoàn tất Kết quả đầu ra được lưu trữ trên R tập tin
Để thể hiện các chức năng ở trên, việc viết chương trình chúng ta cần xây dựng
3 hàm: hàm Map, hàm Reduce và hàm Driver
Location Disk
1
2
R
Trang 372.2.5 Nhận xét đánh giá MapReduce
Nền tảng MapReduce thường gồm các máy chủ phân tán và chạy nhiều tác vụ khác nhau song song Có nhiều thành phần quản lý việc giao tiếp giữa các node khác nhau của dữ liệu, cung cấp tính sẵn sàng và mức độ chịu lỗi cao Chương trình viết theo chức năng MapReduce được tự động phân tán và thực thi song song trên các máy chủ Nền tảng MapReduce quan tâm cả chi tiết của phân vùng dữ liệu và thực thi quá trình xử lý trên máy chủ phân tán lúc chạy Trong khi xử lý nếu có lỗi, nền tảng cung
cấp tính sẵn sàng cao và các node khác thực hiện thay thế nhiệm vụ của node bị lỗi
Như chúng ta đã biết, toàn bộ nền tảng MapReduce cung cấp nhiều hơn là chỉ các thủ tục Map() và Reduce(); nó cũng cung cấp khả năng mở rộng và chịu lỗi Cài đặt điển hình của nền tảng MapReduce xử lý nhiều petabytes dữ liệu và hàng ngàn máy chủ
2.3 Kết chương
Chương này trình bày lý thuyết tổng quan về nền tảng tính toán phân tán với Hadoop, mô hình xử lý phân tán MapReduce Chương tiếp theo sẽ phân tích triển khai các thuật toán mã hóa/thám mã trên nền tảng Map Reduce
Trang 38CHƯƠNG 3 TRIỂN KHAI MỘT SỐ THUẬT TOÁN MÃ HÓA TRÊN
NỀN TẢNG MAPREDUCE
Chương này giới thiệu một số thuật toán mã hóa và thám mã trên nền tảng MapReduce, ứng dụng để thám mã dữ liệu bằng cách băm cơ sở dữ liệu mật khẩu được đưa vào và so sánh với cơ sở dữ liệu mật khẩu được lưu trữ trong cơ sở dữ liệu, nếu trùng khớp giá trị băm thì việc thám mã thành công So sánh thời gian mã hóa và thám mã trên mô hình xử lý phân tán MapReduce với mô hình tuần tự Triển khai Demo chương trình trên môi trường Ubuntu với các công cụ triển khai như VMware, Eclipse, Plugin cho Hadoop trên Eclipse, đánh giá kết quả đạt được
3.1 Hàm băm MD5 và thám mã trên nền tảng MapReduce
Hàm băm MD5 là một hàm băm mật mã học được sử dụng phổ biến với giá trị
Hash dài 128-bit Là một chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật, và cũng được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin Một bảng băm MD5 thường được diễn tả bằng một số hệ thập lục phân 32 ký tự MD5 được thiết kế bởi Ronald Rivest năm 1991 mục đích là thay thế cho hàm băm MD4 trước đó Vào năm 1996, một lỗ hổng trong MD5 đã được phát hiện; mặc dù không biết lỗ hổng đó có nghiêm trọng hay không nhưng một mã hóa khác đã được đề xuất, như SHA-1 (lúc đó cũng được coi là không an toàn) Đến năm 2004, nhiều lỗ hổng của
hệ bảo mật này bị phát hiện khiến cho nó được đặt vào vòng nghi vấn
Ví dụ, khi đăng ký một tài khoản với password là 123123 chẳng hạn, mật khẩu
này sẽ được mã hóa 1 chiều thành 1 đoạn mã MD5 và lưu trong cơ sở dữ liệu Khi nhập mật khẩu vào để đăng nhập, mật khẩu nhập vào sẽ được băm MD5 trước khi đem
so sánh với chuỗi mã hóa đã lưu trong cơ sở dữ liệu Nếu giống nhau thì đăng nhập thành công Trong trường hợp nếu database bị hack thì hacker cũng chỉ thấy một đoạn
code đã được mã hóa mà không thể biết được password là gì
- Mẫu tin đầu vào được độn sao cho chiều dài của nó chia chẵn thành từng đoạn
512 bit Công việc độn vào như sau: gắn bit 1 vào cuối mẫu tin, tiếp theo là một dãy các số zero sao cho chiều dài của mẫu tin cộng thêm 64 bit nữa thì chia hết cho 512, cuối cùng (64 bit) chứa độ dài của mẫu tin gốc
- Có 4 hằng số cố định, mỗi hằng số 32 bit Giải thuật chính sau đó sẽ xử lý các khối tin 512-bit, mỗi khối xác định một trạng thái Quá trình xử lý khối tin bao gồm 4 giai đoạn, gọi là vòng; mỗi vòng gồm có 16 tác vụ giống nhau dựa trên hàm phi tuyến
F, cộng mô đun và dịch trái Hình 3.1 mô tả một tác vụ trong một vòng Có 4 khả năng cho hàm F; mỗi cái được dùng khác nhau cho mỗi vòng: