1.2 Khái niệm, đặc trưng của dữ liệu lớn và sự khác biệt với dữ liệu truyền thống 1.2.1 Khái niệm về dữ liệu lớn - Theo wikipedia: Dữ liệu lớn Big data là một thuật ngữ chỉ bộ dữ liệu lớ
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
o0o
-TIỂU LUẬN MÔN: DỮ LIỆU LỚN
Đề tài: Sử dụng Mapreduce trong phân tích thống kê mô tả trên
dữ liệu lớn Giáo viên hướng dẫn: TS Nguyễn Mạnh Cường
Lớp: CH-K13
Nhóm 4 – Sinh viên thực hiện:
Trang 2Mục Lục
Lời Nói Đầu 5
CHƯƠNG 1: TỔNG QUAN VỀ AN NINH MẠNG 6
1.1 TỔNG QUAN VỀ THÔNG TIN BẢO MẬT 6
1.2 Các cuộc tấn công nổi tiếng lịch sử 7
1.2.1 Vụ tấn công vào khách hàng của Microsoft cuối năm 2021 7
1.2.2 Vụ tấn công vào Google năm 2017 7
1.2.3 Cuộc tấn công DDoS vào AWS năm 2020 7
1.2.4 Tấn công DDoS nhắm vào Brian Krebs và OVH năm 2016 8
1.2.5 Tấn công DDoS vào Dyn năm 2016 9
1.2.6 Vụ tấn công DDoS vào 6 ngân hàng trong năm 2012 10
1.2.7 Cuộc tấn công DDoS nhắm vào GitHub năm 2018 10
1.3 Các giai đoạn tấn công 11
Chương 2: Nội dung bài tiểu luận “Xây dựng sản phẩm tạo chữ ký số và giải mã chữ ký số cho các hợp đồng kinh tế” 14
2.1 Tổng quan về chứng thực và an toàn thông tin 14
2.2 Mã hóa dữ liệu và giải mã 15
2.2.1 Tổng quan về mã hóa dữ liệu và giải mã: 15
2.2.2 Mã hóa bất đối xứng (asymmetric) 17
2.2.3 Mã hóa đối xứng (symmetric) 19
2.2.4 Hàm băm (Hashing) 21
2.2.5 Một số hàm băm nổi tiếng 23
2.3 Chữ ký điện tử (chữ ký số) 33
2.3.1 Tổng quan về chữ ký điện tử 33
2.3.2 Quy trình sử dụng chữ ký điện tử 35
2.3.3 Một số sơ đồ CKĐT phổ biến 37
2.3.4 Hàm băm và kết hợp hàm băm vào chữ ký điện tử 41
Chương 3: Cài đặt minh họa sơ đồ ký số RSA kết hợp băm SHA 42
Trang 33.2 Giao diện chương trình 43 Kết luận 47 Tài liệu tham khảo 48
Trang 4Danh sách hình ả
Hình 1.1: Sơ đồ một cuộc tấn công DDoS 9Y Hình 2.1: Sơ đồ vòng lặp chính của MD5 2
Hình 3.1: Giao diện demo chương trình chữ ký số trong hợp đồng kinh tế 44
Hình 3.2: Tạo public key, private key cho chữ ký 44
Hình 3.3: Tạo chữ ký số và mã hóa chữ ký số 45
Hình 3.4: Giao diện người nhận xác minh chữ ký số 45
Hình 3.5: Giao diện xác minh chữ ký số thành công 46
Hình 3.6: Giao diện xác minh chữ ký thất bại 46
Hình 3.7: Giao hiện bắm file, mã hóa file hợp đồng từ người gửi 46
Hình 3.8:Giao diện xác minh hợp đồng từ người nhận 47
Hình 3.9: Xác minh hợp đồng thất bại 47
Hình 3.10: Xác minh hợp đồng thành công 47
Danh mục từ viết tắt:
- RSA: Rivest Shamir Adleman
- SHA: Secure Hash Algorithm
- MD5: Message Digest
- CKĐT: Chữ ký điện tử
- CA: Certificate Authority - ủy quyền chứng chỉ
- UCLN: Ước chung lớn nhất
Trang 5Lời Nói Đầu
CHƯƠNG 1: TỔNG QUAN VỀ DỮ LIỆU LỚN ( BIG DATA) 1.1 Giới thiệu qua về dữ liệu lớn
Trước đây, chúng ta mới chỉ biết đến dữ liệu có cấu trúc (structure data),ngày nay với sự kết hợp của dữ liệu và internet đã xuất hiện một dạng khác của dữliệu - Big data (dịch là “dữ liệu lớn”) Dữ liệu này có thể từ các nguồn như: hồ sơhành chính, giao dịch điện tử, dòng trạng thái (status), chia sẻ hình ảnh, bình luận,tin nhắn của chính chúng ta, nói cách khác chúng là dữ liệu được sản sinh quaquá trình chia sẻ thông tin trực tuyến liên tục của người sử dụng Để cung cấp cáinhìn tổng quan, bài viết này giới thiệu tóm tắt những nét chính về dữ liệu lớn cũngnhư những cơ hội và thách thức mà dữ liệu lớn mang lại
1.2 Khái niệm, đặc trưng của dữ liệu lớn và sự khác biệt với dữ liệu truyền thống
1.2.1 Khái niệm về dữ liệu lớn
- Theo wikipedia: Dữ liệu lớn (Big data) là một thuật ngữ chỉ bộ dữ liệu lớnhoặc phức tạp mà các phương pháp truyền thống không đủ các ứng dụng để
xử lý dữ liệu này
- Theo Gartner: Dữ liệu lớn là những nguồn thông tin có đặc điểm chung khốilượng lớn, tốc độ nhanh và dữ liệu định dạng dưới nhiều hình thức khácnhau, do đó muốn khai thác được đòi hỏi phải có hình thức xử lý mới để đưa
ra quyết định, khám phá và tối ưu hóa quy trình
Trang 61.2.2 Nguồn hình thành và phương pháp khai thác, quản lý dữ liệu lớn
Qua thống kê và tổng hợp, dữ liệu lớn được hình thành chủ yếu từ 6 nguồn:
1) Dữ liệu hành chính ( phát sinh từ chương trình của một tổ chức, có thể làchính phủ hay phi chính phủ )
Ví dụ, hồ sơ y tế điện tử ở bệnh viện, hồ sơ bảo hiểm, hồ sơ ngân hàng
2) Dữ liệu từ hoạt động thương mại ( phát sinh từ các giao dịch giữa hai thựcthể) Ví dụ, các giao dịch thẻ tín dụng, giao dịch trên mạng, bao gồm cả cácgiao dịch từ các thiết bị di động;
3) Dữ liệu từ các thiết bị cảm biến như thiết bị chụp hình ảnh vệ tinh, cảm biếnđường, cảm biến khí hậu;
4) Dữ liệu từ các thiết bị theo dõi, ví dụ theo dõi dữ liệu từ điện thoại di động,GPS;
5) Dữ liệu từ các hành vi, ví dụ như tìm kiếm trực tuyến (tìm kiếm sản phẩm,dịch vụ hay thông tin khác), đọc các trang mạng trực tuyến ;
6) Dữ liệu từ các thông tin về ý kiến, quan điểm của các cá nhân, tổ chức, trêncác phương tiện thông tin xã hội
Phương pháp khai thác và quản lý dữ liệu lớn hiện nay được thiết kế phù hợpdựa theo các nguồn hình thành dữ liệu lớn Mỗi nguồn dữ liệu lớn khác nhau sẽ cóphương pháp khai thác và quản lý dữ liệu lớn khác nhau Tuy nhiên, hiện nay phầnlớn các tổ chức trên thế giới đều dùng Hadoop ecosystem là giải pháp tối ưu đểkhai thác và quản lý dữ liệu lớn
1.2.3 Đặc trưng 5V của dữ liệu lớn
Mô hình 5Vs do Gartner xây dựng Gartner là công ty nghiên cứu và tư vấn vềcông nghệ thông tin hàng đầu thế giới do một người Mỹ tên là Gideon Gartnersáng lập năm 1979
Trang 7Dữ liệu lớn có 5 đặc trưng cơ bản như sau (mô hình 5V9 ):
(1) Khối lượng dữ liệu (Volume)
Đây là đặc điểm tiêu biểu nhất của dữ liệu lớn, khối lượng dữ liệu rất lớn Kích
cỡ của Big data đang từng ngày tăng lên, và tính đến năm 2012 thì nó có thể nằmtrong khoảng vài chục terabyte cho đến nhiều petabyte (1 petabyte = 1024terabyte) chỉ cho một tập hợp dữ liệu Dữ liệu truyền thống có thể lưu trữ trên cácthiết bị đĩa mềm, đĩa cứng Nhưng với dữ liệu lớn chúng ta sẽ sử dụng công nghệ
“đám mây” mới đáp ứng khả năng lưu trữ được dữ liệu lớn
(2) Tốc độ (Velocity)
Tốc độ có thể hiểu theo 2 khía cạnh:
(a) Khối lượng dữ liệu gia tăng rất nhanh (mỗi giây có tới 72.9 triệu các yêu cầutruy cập tìm kiếm trên web bán hàng của Amazon);
(b) Xử lý dữ liệu nhanh ở mức thời gian thực (real-time), có nghĩa dữ liệu được
xử lý ngay tức thời ngay sau khi chúng phát sinh (tính đến bằng mili giây) Cácứng dụng phổ biến trên lĩnh vực Internet, Tài chính, Ngân hàng, Hàng không,Quân sự, Y tế – Sức khỏe như hiện nay phần lớn dữ liệu lớn được xử lý real-time.Công nghệ xử lý dữ liệu lớn ngày nay đã cho phép chúng ta xử lý tức thì trước khichúng được lưu trữ vào cơ sở dữ liệu
(3) Đa dạng (Variety)
Đối với dữ liệu truyền thống chúng ta hay nói đến dữ liệu có cấu trúc, thì ngàynay hơn 80% dữ liệu được sinh ra là phi cấu trúc (tài liệu, blog, hình ảnh, vi deo,bài hát, dữ liệu từ thiết bị cảm biến vật lý, thiết bị chăm sóc sức khỏe…) Big datacho phép liên kết và phân tích nhiều dạng dữ liệu khác nhau
Ví dụ, với các bình luận của một nhóm người dùng nào đó trên Facebook vớithông tin video được chia sẻ từ Youtube và Twitter
(4) Độ tin cậy/chính xác (Veracity)
Trang 8Một trong những tính chất phức tạp nhất của Dữ liệu lớn là độ tin cậy/chínhxác của dữ liệu Với xu hướng phương tiện truyền thông xã hội (Social Media)
và mạng xã hội (Social Network) ngày nay và sự gia tăng mạnh mẽ tính tươngtác và chia sẻ của người dùng Mobile làm cho bức tranh xác định về độ tin cậy
& chính xác của dữ liệu ngày một khó khăn hơn Bài toán phân tích và loại bỏ
dữ liệu thiếu chính xác và nhiễu đang là tính chất quan trọng của Big data
(5) Giá trị (Value)
Giá trị là đặc điểm quan trọng nhất của dữ liệu lớn, vì khi bắt đầu triển khaixây dựng dữ liệu lớn thì việc đầu tiên chúng ta cần phải làm đó là xác địnhđược giá trị của thông tin mang lại như thế nào, khi đó chúng ta mới có quyếtđịnh có nên triển khai dữ liệu lớn hay không Nếu chúng ta có dữ liệu lớn màchỉ nhận được 1% lợi ích từ nó, thì không nên đầu tư phát triển dữ liệu lớn Kếtquả dự báo chính xác thể hiện rõ nét nhất về giá trị của dữ liệu lớn mang lại
Ví dụ, từ khối dữ liệu phát sinh trong quá trình khám, chữa bệnh sẽ giúp dựbáo về sức khỏe được chính xác hơn, sẽ giảm được chi phí điều trị và các chiphí liên quan đến y tế
Trang 91.2.4 Sự khác biệt giữa dữ liệu lớn với dữ liệu truyền thống
Dữ liệu lớn khác với dữ liệu truyền thống (ví dụ, kho dữ liệu - DataWarehouse) ở 4 điểm cơ bản: Dữ liệu đa dạng hơn; lưu trữ dữ liệu lớn hơn; truyvấn dữ liệu nhanh hơn; độ chính xác cao hơn
Dữ liệu đa dạng hơn: Khi khai thác dữ liệu truyền thống (dữ liệu có cấu
trúc), chúng ta thường phải trả lời các câu hỏi: Dữ liệu lấy ra kiểu gì? định dạng dữliệu như thế nào? Đối với dữ liệu lớn, không phải trả lời các câu hỏi trên Hay nóikhác, khi khai thác, phân tích dữ liệu lớn chúng ta không cần quan tâm đến kiểu dữliệu và định dạng của chúng; điều quan tâm là giá trị mà dữ liệu mang lại có đápứng được cho công việc hiện tại và tương lai hay không
Lưu trữ dữ liệu lớn hơn: Lưu trữ dữ liệu truyền thống vô cùng phức tạp và
luôn đặt ra câu hỏi lưu như thế nào? dung lượng kho lưu trữ bao nhiêu là đủ? gắnkèm với câu hỏi đó là chi phí đầu tư tương ứng Công nghệ lưu trữ dữ liệu lớn hiệnnay đã phần nào có thể giải quyết được vấn đề trên nhờ những công nghệ lưu trữđám mây, phân phối lưu trữ dữ liệu phân tán và có thể kết hợp các dữ liệu phân tánlại với nhau một cách chính xác và xử lý nhanh trong thời gian thực
Truy vấn dữ liệu nhanh hơn: Dữ liệu lớn được cập nhật liên tục, trong khi
đó kho dữ liệu truyền thống thì lâu lâu mới được cập nhật và trong tình trạngkhông theo dõi thường xuyên gây ra tình trạng lỗi cấu trúc truy vấn dẫn đến khôngtìm kiếm được thông tin đáp ứng theo yêu cầu
Độ chính xác cao hơn: Dữ liệu lớn khi đưa vào sử dụng thường được kiểm
định lại dữ liệu với những điều kiện chặt chẽ, số lượng thông tin được kiểm trathông thường rất lớn, và đảm bảo về nguồn lấy dữ liệu không có sự tác động củacon người vào thay đổi số liệu thu thập
Trang 101.3 Bức tranh tổng thể ứng dụng dữ liệu lớn
Dữ liệu lớn đã được ứng dụng trong nhiều lĩnh vực như: hoạt động chính trị,giao thông, y tế, thể thao, tài chính, thương mại, thống kê dưới đây là một số ví
dụ về ứng dụng dữ liệu lớn
1.3.1 Ứng dụng dữ liệu lớn trong hoạt động chính trị
Tổng thống Mỹ Obama đã sử dụng dữ liệu dữ liệu lớn để phục vụ cho cuộc tranh cử Tổng thống của mình Ông xây dựng một đội ngũ nhân viên chuyên đi thuthập thông tin và phân tích dữ liệu thu được trong dự án triển khai về dữ liệu lớn Đội ngũ nhân viên này thu thập tất cả thông tin về người dân ở các khu vực, sau đóphân tích và chỉ ra một số thông tin quan trọng về người dân Mỹ như: Thích đọc sách gì, thích mua loại thuốc gì, thích sử dụng phương tiện gì… Thậm chí còn biết được cả thông tin về mẹ của cử tri đó đã bỏ phiếu tín nhiệm ai ở lần bầu cử trước Trên cơ sở những thông tin này, tổng thống Obama đã đưa ra kế hoạch vận động phù hợp, giúp ông tái đắc cử Tổng thống nước Mỹ lần thứ 2
Ngoài ra một số ứng dụng khác trong lĩnh vực chính trị mà dữ liệu lớn được
áp dụng như: hệ thống chính phủ điện tử, phân tích quy định và việc tuân thủ quy định, phân tích, giám sát, theo dõi và phát hiện gian lận, mối đe dọa, an ninh mạng
1.4 Các giai đoạn tấn công
Giai đoạn 1: Thăm dò (Reconnaissace)
Thăm dò mục tiêu là một trong những bước quan trọng để biết những thôngtin trên hệ thống mục tiêu Hacker sử dụng kỹ thuật này để khám phá hệ thống mụctiêu đang chạy trên hệ điều hành nào, có bao nhiêu dịch vụ đang chạy trên các dịch
vụ đó, cổng dịch vụ nào đang đóng và cổng nào đang mở gồm hai loại :
- Passive: Thu nhập các thông tin chung như vị trí địa lý, điện thoại, email của
các cá nhân, người điều hành trong tổ chức
- Active: Thu nhập các thông tin về địa chỉ IP, domain, DNS,… của hệ thống.
Giai đoạn 2: Vũ khí hóa thông tin về một công ty
Trang 11Quét thăm dò hệ thống là phương pháp quan trọng mà Attacker thường dùng
để tìm hiểu hệ thống và thu thập các thông tin như địa chỉ IP cụ thể, hệ điều hànhhay các kiến trúc hệ thống mạng Một vài phương pháp quét thông dụng như: quétcổng, quét mạng và quét các điểm yếu trên hệ thống
Giai đoạn 3: Bắt đầu cuộc tấn công
Các e-mail lừa đảo được gửi đi, các trang web giả mạo được đưa lêninternet và kẻ tấn công chờ đợi sự xuất hiện của tất cả dữ liệu chúng cần Nếu e-mail lừa đảo chứa tệp đính kèm được “vũ khí hóa”, thì kẻ tấn công sẽ đợi ai đó mởtệp đính kèm và để phần mềm độc hại trong đó “gửi về nhà” cho tin tặc
Đến đây hacker đã bắt đầu dần xâm nhập được hệ thống và tấn công nó, đãtruy cập được nó bằng các lệnh khai thác Các lệnh khai thác luôn ở bất cứ khônggian
Giai đoạn 4: Khai thác vi phạm bảo mật
Trong giai đoạn khai thác, hacker bắt đầu gặt hái những thành quả từ việcchuẩn bị và thực hiện cuộc tấn công Khi tên người dùng và mật khẩu gửi đến, kẻtấn công sẽ thử chúng chống lại các hệ thống e-mail dựa trên web hoặc các kết nốimạng riêng ảo (VPN) với mạng công ty Nếu các tệp đính kèm bị nhiễm phần mềmđộc hại được gửi đi, thì kẻ tấn công sẽ truy cập từ xa vào các máy tính bị ảnhhưởng Tin tặc khám phá mạng được nhắm mục tiêu và có được ý tưởng tốt hơn vềluồng lưu lượng truy cập trên đó, những hệ thống nào được kết nối với nó và cáchchúng có thể bị khai thác và tấn công mạng
Giai đoạn 5: Cài đặt một cửa sau liên tục
Trong giai đoạn cài đặt, kẻ tấn công đảm bảo tiếp tục truy cập vào mạng Đểđạt được điều này, tin tặc sẽ cài đặt một cửa sau liên tục, tạo tài khoản quản trị viên
Trang 12trên mạng và vô hiệu hóa các quy tắc tường lửa Họ thậm chí có thể kích hoạtquyền truy cập máy tính để bàn từ xa trên máy chủ và các hệ thống khác trênmạng Mục đích của hacker tại thời điểm này là ở lại trong hệ thống lâu mau gìcũng được miễn là đạt được mục tiêu của chúng.
Giai đoạn 6: Thực hiện lệnh và kiểm soát
Giờ đây, họ có quyền truy cập không bị hạn chế vào toàn bộ mạng và tàikhoản quản trị viên, tất cả các công cụ cần thiết đều có sẵn cho giai đoạn ra lệnh vàkiểm soát Kẻ tấn công có thể xem xét bất cứ thứ gì, mạo danh bất kỳ người dùngnào trên mạng và thậm chí gửi e-mail từ sếp cho tất cả nhân viên Khi đã nắmquyền kiểm soát, tin tặc có thể khóa người dùng CNTT của công ty khỏi toàn bộmạng của tổ chức nếu họ muốn, có thể đòi tiền chuộc để khôi phục quyền truy cập
Giai đoạn 7: Đạt được mục tiêu của hacker
Giai đoạn hành động trên các mục tiêu bây giờ đã bắt đầu Điều này có thểliên quan đến việc lấy cắp thông tin về nhân viên, khách hàng, thiết kế sản phẩm,
… Hoặc kẻ tấn công có thể bắt đầu làm gián đoạn hoạt động của công ty mục tiêu.Không phải tất cả các tin tặc đều muốn kiếm tiền hoặc làm cho 1 công ty mục tiêu
bị mất danh dự Một số chỉ đơn giản là muốn gây ra hỗn loạn hoặc gây tổn thất , ví
dụ như nếu một công ty nhận được đơn đặt hàng trực tuyến, một tin tặc có thểđóng hệ thống đặt hàng hoặc xóa đơn đặt hàng Họ thậm chí có thể tạo đơn đặthàng và vận chuyển chúng đến khách hàng của công ty Nếu tin tặc có quyền truycập vào Hệ thống kiểm soát công nghiệp, họ có thể tắt thiết bị, nhập các điểm thiếtlập mới và tắt báo động…
Trang 13Chương 2: Nội dung bài tiểu luận “Xây dựng sản phẩm tạo chữ ký số và giải mã chữ ký số cho các hợp đồng kinh tế”
2.1 Tổng quan về chứng thực và an toàn thông tin
Chúng ta đang sống trong một thời đại bùng nổ thông tin Nhu cầu trao đổithông tin và các phương tiện truyền đưa thông tin phát triển một cách nhanh chóng
Và cùng với sự phát triển đó, đòi hỏi bảo vệ tính bí mật và chứng thực nguồn thôngtin cũng càng ngày càng to lớn và có tính phổ biến Có nhiều bài toán khác nhau vềyêu cầu an toàn thông tin tùy theo những tình huống khác nhau
Ví dụ trong thực tế, một số bài toán chung nhất mà ta thường gặp là nhữngbài toán sau đây:
- Bảo mật: Giữ thông tin được bí mật đối với tất cả mọi người, trừ một ít người
có thẩm quyền được đọc, biết thông tin đó
- Toàn vẹn thông tin: Bảo đảm thông tin không bị thay đổi hay xuyên tạc bởi
những kẻ không có thẩm quyền hoặc bằng những phương tiện không đượcphép
- Nhận thực một thực thể: Xác nhận danh tính của một thực thể, chẳng hạn một
người, một máy tính cuối trong mạng, một thẻ tín dụng,
- Nhận thực một thông báo: Xác nhận nguồn gốc của một thông báo được gửi
đến
- Chữ ký: Một cách để gắn kết một thông tin với một thực thể, thường dùng
trong bài toán nhận thực một thông báo cũng như trong nhiều bài toán nhậnthực khác
- Ủy quyền: Chuyển cho một thực thể khác quyền được đại diện hoặc được làm
một việc gì đó
- Cấp chứng chỉ: Cấp một sự xác nhận thông tin bởi một thực thể được tín
nhiệm
Trang 14- Báo nhận: Xác nhận một thông báo đã được nhận hay một dịch vụ đã được
thực hiện
- Làm chứng: Kiểm thử việc tồn tại một thông tin ở một thực thể khác với người
chủ sở hữu thông tin đó
- Không chối bỏ được: Ngăn ngừa việc chối bỏ trách nhiệm đối với một cam kết
đã có (thí dụ đã ký vào một văn bản)
- Ẩn danh: che giấu danh tính của một thực thể tham gia trong một tiến trình nào
đó (thường dùng trong giao dịch tiền điện tử)
- Thu hồi: Rút lại một giấy chứng chỉ hay ủy quyền đã cấp.
Cơ sở của các giải pháp cho các bài toán kể trên là các phương pháp mật mã,đặc biệt là mật mã khóa công khai
Trong thế giới số, có 3 cách để xác thực một người hoặc mức độ tin cậy củamột thông tin trên máy tính Một là Thẻ thông hành (Pass Card) mà ở nước ta hiệnnay chưa phổ biến Hai là Password, cách này sử dụng tên truy nhập (User Name)
và mật khẩu (Password) cung cấp cho các giao diện đăng nhập để xác thực thôngtin Thứ ba, dùng chữ ký điện tử (Digital Signature)
2.2 Mã hóa dữ liệu và giải mã
2.2.1 Tổng quan về mã hóa dữ liệu và giải mã:
Sự phát triển chóng mặt của Internet đã tác động đến cả công việc kinhdoanh và người tiêu dùng với sự hứa hẹn về việc thay đổi cách mà con người sống
và làm việc Nhưng mối lo ngại lớn nhất được đề cập đến là việc bảo mật trênInternet, đặc biệt khi các thông tin mang tính nhạy cảm và riêng tư được gửi đi trênmạng
Mã hóa là ngành nghiên cứu các thuật toán và phương thức để đảm bảo tính
bí mật và (thường là dưới dạng các văn bản lưu trữ trên máy tính) Các sản phẩm
Trang 15của lĩnh vực này là các hệ mã mật, các hàm băm, các hệ chữ ký điện tử, các cơ chếphân phối, quản lý khóa và các giao thức mật mã.
Có rất nhiều thông tin mà chúng ta không muốn người khác biết khi gửi đi
như: thông tin về Credit-Card, thông tin về kinh doanh của công ty, thông tin về
tài khoản cá nhân, thông tin về cá nhân như số chứng minh thư, số thẻ
Quá trình mã hoá trong máy tính dựa vào khoa học về mật mã
(Cryptography) đã được con người sử dụng từ lâu đời Trước thời đại số hoá,
người sử dụng mật mã nhiều nhất vẫn là chính phủ, chủ yếu trong mục đích quân
sự Hầu hết các phương pháp mã hoá được dùng hiện nay dựa vào các máy tính,đơn giản là do các mã do con người sinh ra rất dễ bị phá bởi công cụ máy tính Các
hệ thống mã hoá trong máy tính phổ biến nhất thuộc một trong hai loại sau:
* Mã hoá với khoá đối xứng (Symmetric-key Encryption)
* Mã hoá với khoá công khai (Public-key Encryption)
Gần đây nhất là các sự kiện liên quan tới các hàm băm MD5 (một hàm băm
thuộc họ MD do Ron Rivest phát triển) và SHA Một nhóm các nhà khoa học
người Trung Quốc (Xiaoyun Wang, Yiqun Lisa Yin, Hongbo Yu) đã phát triển các
phương pháp cho phép phát hiện ra các đụng độ của các hàm băm được sử dụngrộng rãi nhất trong số các hàm băm này Đây là một sự kiện lớn đối với ngành mật
mã học do sự ứng dụng rộng rãi và có thể xem là còn quan trọng hơn bản thân các
hệ mã mật của các hàm băm Do sự kiện này các hãng viết phần mềm lớn ( như
Microsoft) và các nhà mật mã học đã khuyến cáo các lập trình viên sử dụng các
hàm băm mạnh hơn (như SHA-256, SHA-512) trong các ứng dụng.
Ngày nay khó có thể tìm thấy các ứng dụng trên máy tính lại không sử dụngtới các thuật toán và các giao thức mật mã học Tới các ứng dụng cho máy tính cá
nhân (Desktop Applications) cho tới các chương trình hệ thống như hệ điều hành
Trang 16(Operating Systems) hoặc các ứng dụng mạng như Yahoo Messenger hoặc hệ cơ
sở dữ liệu đều có sử dụng các thuật toán mã hóa mật khẩu người dùng bằng một hệ
mã hoặc một hàm băm nào đó Đặc biệt với sự phát triển mạnh mẽ của thương mạiđiện tử các mô hình chữ ký điện tử ngày càng đóng vai trò tích cực cho một môitrường an toàn cho người dùng
2.2.2 Mã hóa bất đối xứng (asymmetric).
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).
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 (cho 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 khikhó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 rakhó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 bí mật nào đó hay không
Trang 17- 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, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tínhtoán nhiều hơn các 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
Sự ra đời của khái niệm hệ mật mã khoá công khai là một tiến bộ có tính chấtbước ngoặt trong lịch sử mật mã nói chung, gắn liền với sự phát triển của khoa họctính toán hiện đại Người ta có thể xem thời điểm khởi đầu của bước ngoặt đó là sự
xuất hiện ý tưởng của W Diffie và M.E Hellman được trình bày vào tháng sáu năm 1976 tại Hội nghị quốc gia hàng năm của AFIPS (Hoa kỳ) trong bài Multiuser
cryptographic techniques.
Một năm sau, năm 1977, R.L Rivest, A Shamir và L.M Adleman đề xuất một hệ
cụ thể về mật mã khoá công khai mà độ an toàn của hệ dựa vào bài toán khó “phân
tích số nguyên thành thừa số nguyên tố”, hệ này về sau trở thành một hệ nổi tiếng
và mang tên là hệ RSA, được sử dụng rộng rãi trong thực tiễn bảo mật và an toàn
thông tin Cũng vào thời gian đó, M.O Rabin cũng đề xuất một hệ mật mã khoá
công khai dựa vào cùng bài toán số học khó nói trên Liên tiếp sau đó, nhiều hệmật mã khóa công khai được đề xuất, mà khá nổi tiếng và được quan tâm nhiều là
các hệ: hệ McEliece được đưa ra năm 1978 dựa trên độ NP(khó) của bài toán giải
mã đối với các hệ mã cyclic tuyến tính, hệ Merkle- Hellman dựa trên tính NP- đầy
đủ của bài toán xếp ba lô (knapsack problem), hệ mật mã nổi tiếng ElGamal dựa trên độ khó của bài toán lôgarit rời rạc, hệ này về sau được mở rộng để phát triển nhiều hệ tương tự dựa trên độ khó của các bài toán tương tự lôgarit rời rạc trên các cấu trúc nhóm cyclic hữu hạn, nhóm các điểm nguyên trên đường cong eliptic, v.v Để tăng độ bảo mật, hệ mật mã ElGamal còn dùng với tư cách đầu vào cho
thuật toán lập mật mã của mình, ngoài khoá công khai và bản rõ, một yếu tố ngẫu
Trang 18nhiên được chọn tuỳ ý, điều đó làm cho hệ mật mã trở thành một hệ mật mã xácsuất khoá công khai Một số hệ mật mã xác suất khoá công khai cũng được phát
triển sau đó bởi Goldwasser-Micali và Blum-Goldwasser.
Không phải tất cả các thuật toán mật mã hóa khóa bất đối xứng đều hoạt độnggiống nhau nhưng phần lớn đều gồm 2 khóa có quan hệ toán học với nhau: mộtcho mã hóa và một để giải mã Để thuật toán đảm bảo an toàn thì không thể tìmđược khóa giải mã nếu chỉ biết khóa đã dùng mã hóa Điều này còn được gọi là mãhóa công khai vì khóa dùng để mã hóa có thể công bố công khai mà không ảnhhưởng đến bí mật của văn bản mã hóa
Các thông tin để mở khóa thì chỉ có người sở hữu mới biết Tồn tại khả năng mộtngười nào đó có thể tìm ra được khóa bí mật Không giống với hệ thống mật mã sử
dụng một lần (one-time pad) hoặc tương đương, chưa có thuật toán mã hóa khóa
bất đối xứng nào được chứng minh là an toàn trước các tấn công dựa trên bản chấttoán học của thuật toán Khả năng một mối quan hệ nào đó giữa 2 khóa hay điểmyếu của thuật toán dẫn tới cho phép giải mã không cần tới khóa hay chỉ cần khóa
mã hóa vẫn chưa được loại trừ An toàn của các thuật toán này đều dựa trên cácước lượng về khối lượng tính toán để giải các bài toán gắn với chúng Các ướclượng này lại luôn thay đổi tùy thuộc khả năng của máy tính và các phát hiện toánhọc mới.[2- tr18]
Mặc dù vậy, độ an toàn của các thuật toán mật mã hóa khóa công khai cũng tương
đối đảm bảo Nếu thời gian để phá một mã (bằng phương pháp duyệt toàn bộ)
được ước lượng là 1000 năm thì thuật toán này hoàn toàn có thể dùng để mã hóacác thông tin về thẻ tín dụng - Rõ ràng là thời gian phá mã lớn hơn nhiều lần thời
gian tồn tại của thẻ (vài năm).
Trang 192.2.3 Mã hóa đối xứng (symmetric).
Trong mật mã học, các thuật toán khóa đối xứng (tiếng Anh: symmetric-key
algorithms) là một lớp các thuật toán mật mã hóa trong đó các khóa dùng cho việc
mật mã hóa và giải mã có quan hệ rõ ràng với nhau (có thể dễ dàng tìm được một
khóa nếu biết khóa kia).
Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải mã cónghĩa chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ một biến đổiđơn giản giữa hai khóa Trên thực tế, các khóa này đại diện cho một bí mật đượcphân hưởng bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự bí mật trongkênh truyền thông tin
Thuật toán đối xứng có thể được chia ra làm hai thể loại, mật mã luồng (stream
ciphers) và mật mã khối (block ciphers) Mật mã luồng mã hóa từng bit của thông
điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng như một đơn
vị Cỡ khối được dùng thường là các khối 64 bit Thuật toán tiêu chuẩn mã hóa tân
tiến (Advanced Encryption Standard), được NIST công nhận tháng 12 năm 2001,
sử dụng các khối gồm 128 bit
Các thuật toán đối xứng thường không được sử dụng độc lập Trong thiết kế củacác hệ thống mật mã hiện đại, cả hai thuật toán bất đối xứng và thuật toán đối xứngđược sử dụng phối hợp để tận dụng các ưu điểm của cả hai Những hệ thống sử
dụng cả hai thuật toán bao gồm SSL (Secure Sockets Layer), PGP (Pretty Good
Privacy) và GPG (GNU Privacy Guard) Các thuật toán chìa khóa bất đối xứng
được sử dụng để phân phối chìa khóa mật cho thuật toán đối xứng có tốc độ caohơn
Một số ví dụ các thuật toán đối xứng nổi tiếng bao gồm Twofish, Serpent, AES
(còn được gọi là Rijndael), Blowfish, CAST5, RC4, Tam phần DES (Triple
Trang 20DES), và IDEA (International Data Encryption Algorithm - Thuật toán mật mã
hóa dữ liệu quốc tế).
Các thuật toán đối xứng nói chung đòi hỏi công suất tính toán ít hơn các thuậttoán khóa bất đối xứng Trên thực tế, một thuật toán khóa bất đối xứng có khốilượng tính toán nhiều hơn gấp hằng trăm, hằng ngàn lần một thuật toán khóa đốixứng có chất lượng tương đương
Hạn chế của các thuật toán khóa đối xứng bắt nguồn từ yêu cầu về sự phân
hưởng chìa khóa bí mật, mỗi bên phải có một bản sao của chìa Do khả năng các
chìa khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phải được bảo antrong khi phân phối và trong khi dùng Hậu quả của yêu cầu về việc lựa chọn, phânphối và lưu trữ các chìa khóa một cách không có lỗi, không bị mất mát là một việclàm khó khăn, khó có thể đạt được một cách đáng tin cậy
Để đảm bảo giao thông liên lạc an toàn cho tất cả mọi người trong một nhóm gồm
n người, tổng số lượng chìa khóa cần phải có là n(n-1)/2.
Các thuật toán khóa đối xứng không thể dùng cho mục đích xác thực hay mụcđích chống thoái thác
2.2.4 Hàm băm (Hashing)
- Tổng quan về hàm băm
Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic
hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp
việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn nhưchứng thực và kiểm tra tính nguyên vẹn của thông điệp Một hàm băm nhận đầu
vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp (message
Trang 21Hàm băm là các thuật toán không sử dụng khóa để mã hóa (ở đây ta dùng thuật
ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc” (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 gọi là 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
- Tính chất của hàm băm
Tính đụng độ: Theo nguyên lý Diricle: nếu có (n+1) con thỏ được bỏ vào n cái
chuồng thì phải tồn tại ít nhất một cái chuồng mà trong đó có ít nhất là hai con thỏ
ở chung Rõ ràng với không gian giá trị Băm nhỏ hơn rất nhiều so với không gian
tin về mặt kích thước thì chắc chắn sẽ tồn tại đụng độ, nghĩa là có hai tin x # x’ mà giá trị Băm của chúng là giống nhau, tức h(x) = h(x’)
Sau đây chúng ta sẽ xét các dạng tấn công có thể có, từ đó rút ra các tính chất củahàm Băm:
Tính chất 1: Hàm băm không va chạm yếu.
Hàm băm h là không va chạm yếu nếu khi cho trước một bức điện x, không thể
tiến hành về mặt tính toán để tìm ra một bức điện x’ ¹ x mà h(x’) = h(x).
Ví dụ: Người A gửi cho B (x, y) với y = Sig A (h(x)) Nhưng trên đường truyền, tin
bị lấy trộm Tên trộm, bằng cách nào đó tìm được một bản thông điệp x’ có h(x’) =
h(x) mà x’ ¹ x Sau đó, tên trộm đưa x’ thay thế x rồi truyền tiếp cho người B.
Người B nhận được và vẫn xác thực được thông tin đúng đắn
Để tránh tấn công trên, hàm băm phải không va chạm yếu.
Tính chất 2: Hàm băm không va chạm mạnh
Trang 22Hàm băm h là không va chạm mạnh nếu không có khả năng tính toán để tìm rahai bức thông điệp x và x’ mà x ¹ x’ và h(x) = h(x’).
Ví dụ: Đầu tiên, tên giả mạo tìm ra được hai bức thông điệp x’ và x (x’ ¹ x) mà
có h(x’) = h(x) (ta coi bức thông điệp x là hợp lệ, còn x’ là giả mạo) Tiếp theo, tên trộm đưa cho ông A và thuyết phục ông này kí vào bản tóm lược h(x) để nhận được y Khi đó (x’, y) là bức điện giả mạo nhưng hợp lệ
Để tránh kiểu tấn công này, hàm h phải thỏa mãn tính không va chạm mạnh
dung rộng rãi nhất, nguyên tắc thiết kế của hàm băm này cũng là nguyên tắc chungcho rất nhiều các hàm băm khác [1 – tr111]
a, Miêu tả MD5:
Trang 23Đầu vào là những khối 512 bit, được chia cho 16 khối con 32 bit Đầu ra của thuật toán là một thiết lập của 4 khối 32 bit để tạo thành một hàm Băm 128 bit duy
nhất
Đầu tiên, ta chia bức điện thành các khối 512 bit, với khối cuối cùng (đặt là x và
x < 512bit) của bức điện, chúng ta cộng thêm một bit 1 vào cuối của x, theo sau đó
là các bit 0 để được độ dài cần thiết (512 bit) Kết quả là bức điện vào là một chuỗi
M có độ dài chia hết cho 512, vì vậy ta có thể chia M ra thành các N khối con 32
bit (N khối này sẽ chia hết cho 16)
Bây giờ, ta bắt đầu tìm cốt của bức điện với 4 khối 32 bit A, B, C và D (được xem
như thanh ghi) :
A = 0x01234567
B = 0x89abcdef
C = 0xfedcba98
D = 0x76543210
Người ta thường gọi A, B, C, D là các chuỗi biến số (chaining variables)
Bức điện được chia ra thành nhiều khối 512 bit, mỗi khối 512 bit lại được chia ra
16 khối 32 bit đi vào bốn vòng lặp của MD5 Giả sử ta đặt a, b, c và d thay cho A,
B, C và D đối với khối 512 bit đầu tiên của bức điện Bốn vòng lặp trong MD5 đều
có cấu trúc giống nhau Mỗi vòng thực hiện 16 lần biến đổi: thực hiện với một hàmphi tuyến của 3 trong 4 giá trị a, b, c và d; sau đó nó cộng kết quả đến giá trị thứ 4,
tiếp đó cộng với một khối con 32 bit và một hằng số Sau đó, nó dịch trái một
lượng bit thay đổi và cộng kết quả vào một trong 4 giá trị a, b, c hay d Kết quảcuối cùng là một giá trị mới được thay thế một trong 4 giá trị a, b, c hay d
Trang 24Hình 2 1: Sơ đồ vòng lặp chính của MD5
Có bốn hàm phi tuyến, mỗi hàm này được sử dụng cho mỗi vòng:
F(X,Y,Z ) = (X and Y) or ((not X) and Z)
G(X,Y,Z ) = ((X and Z) or (Y and (not Z)))
H(X,Y,Z ) = X xor Y xor Z
I(X,Y,Z ) = Y xor (X or (not Z))
Những hàm này được thiết kế sao cho các bit tương ứng của X, Y và Z là độc lập
và không ưu tiên, và mỗi bit của kết quả cũng độc lập và ngang bằng nhau
Nếu Mj là một biểu diễn của khối con thứ j (j = 16) và <<<s là phép dịch trái của
s bit, thì các vòng lặp có thể biểu diễn như sau:
FF(a,b,c,d,Mj,s,ti) được biểu diễn a = b + ((a + F(b,c,d) + Mj + ti) <<< s) GG(a,b,c,d,Mj,s,ti) được biểu diễn a = b + ((a + G(b,c,d) + Mj + ti) <<< s)