🔙 Quay lại trang tải sách pdf ebook Giáo trình mật mã học & hệ thống thông tin an toàn
Ebooks
Nhóm Zalo
(CRYPTO< f»HY AND SECURE INFORMA
TS. THÁI THANH TÙNG
Ậ ị iá ọ tử n k MẬT MÃ HỌC
HỆ THỐNG THÔNG TIN AN TOÀII (CRYPTOGRAPHY AND SECURE INFORMATION SYSTEM)
NHÀ X U Ấ T BẢN THÔNG TIN VÀ TRUYỀN THÔNG
Mã số: GD 15 HM 11
LỜI GIỚI THIỆU
Với sự bùng nố của Gông nghệ thông tin vào cuối thế kỷ XX đầu thế kỷ XXI, nhàn loại dang bước vào một thời đại mới: Thời đại của nền kinh tế thông tin toàn cầu hóa. Mọi hoạt động xã hội, chính trị, kinh tế trong thời đại mới hiện nay xét cho cùng, thực chất đều là những hoạt động thu thập, xử lý, lưu trữ và trao đổi thông tin. Trong bối cảnh dó An toàn và Bảo mật thông tin luôn là mối quan tâm hàng đầu trong mọi giao dịch xã hội, đặc biệt là giao dịch điện tử trên môi trường Internet, một môi trường mở, môi trường không được tin cậy.
TS. Thái Thanh Tùng dựa trên kinh nghiệm bản thân trong quá trình nhiều năm nghiên cứu, giảng dạy và hoạt động thực tế trong lĩnh vực an ninh mạng máy tính và báo mật thông tin, đã tập hợp một số tài liệu cơ sở xuất bản trên thế giới trong nhCfng năm gần đây, dồng thời cập nhật những thành tựu mới nhất trong lĩnh vực nói trên dể xây dựng nên cuốn sách này.
Cuốn sách được trình bày hợp lý với nội dung khá hoàn chỉnh, không những ếiíip cho người bắt đầu làm quen dễ tiếp thu những kiến thức cơ bản nhất của một lĩnh vực chuyên môn khó mà còn gợi mở những hướng ứng dụng thực tế phong phú cho những người muốn nghiên cứu sâu hơn.
Những phụ lục được SƯU tầm chọn lọc đưa ra trong phần cuối cuốn sách có ý nghĩa bổ sung cho các phần trình bày chính và cũng là một sự hỗ trợ rất tốt về nguồn tư liệu cho những người muốn đi sâu nghiên cứu.
Giáo trình Mật ĩììã học và Hệ thốììg thốĩìg tin an toàn của tác giả Thái Thanh Tùng đã được Ban Gông nghệ Viện Nghiên cứu và plứư
3
triển Tin học ứng dụng (A1RDĨ) thuộc Liên hiệp các Hội Khoa học và Kỹ thuật Việt Nam giới thiệu và Hội dồng tư vấn ngành Côiig ìighệ thông tin Viện Dại liọc Mở Hu Nội đã chấp nhận sử dụng làm giáo trình chính thức để giảng dạy học phần An ninh vù Bảo mật thông tin trong chương trình đào tạo Kỹ sư Gông nghệ thông tin cũng như Klioci Qiiôc tế Dại học Quốc gia Hà Nội sử dụng trong chương trình đào tạo Cao học Quản lý Thông tin liên kết với Dại học Lunghwa - Dài Loan.
Xin trăn trọng giới thiệu cùng bạn dọc!
Hà Nội, tháng 7 năm 2011
TS. TRƯƠNG TIẾN TỪNG
Trưởng Ban Công nghệ
Viện NC & PT Tin học ứng dụng
4
LỜI MỞ ĐẦU
Con người luôn sống trong môi trường trao đổi thông tin hàng ngày, hàng giờ. Người thợ săn hú gọi bạn trong rừng thẳm, người đốc công niêm yết lệnh phân công trên bảng tin tức của công trường, người khách gửi đơn đặt hàng đến cửa hàng, con cái đi xa gọi điện thoại, gửi thư về báo tình hình cho bố mẹ,... tất cả những chuyện thường ngày đó đều chính là trao đổi thông tin.
Trong phần lớn trường hợp trao đổi thông tin giữa hai đối tác, người ta không hề muốn để thông tin bị lộ cho người thứ ba biết vì diều đó có thể gây ra những tổn thất cả về vật chất cũng như về tinh thần. Một báo cáo về một phát minh khoa học công nghệ mới, một bản phân tích tình hình giá cả hàng hóa ở một thị trường, một bộ hồ sơ dự thầu, nếu bị lộ ra trước khi đến tay người nhận thì thiệt hại kinh tế thật khó lường! Một vị nguyên soái gửi lệnh điều binh đến cho tướng lĩnh dưới quyền: chuyện gì sẽ xảy đến cho toàn quân nếu thông tin đó bị lộ cho kẻ địch biết?
Đổ bảo vệ bí mật cho thông tin của mình được gửi đi trong một môi trường “m ở” tức là môi trường có thể có nhiều tác nhân tiếp cận ngoài hai đối tác trao đổi thông tin, người ta phải dung mật mã tức là dùng những phương pháp biến đổi làm cho nguyên bản gốc của thông tin (plaintext) ở dạng thông thường ai cũng có thể hiểu được biến thành một dạng bí mật (ciphertext) mà chỉ có những người nắm được quy luật mới có thể biến đổi ngược lại thành dạng nguyên gốc ban đầu dể đọc.
5
Mật mã học là khoa học nghicn cứu cơ sở lý thuyết và công nghệ để thực hiện việc xây dựnế và sử dụng các hệ thống m ật mã.
Mật mã học (cryptography) là một lĩnh vực liên quan đến các kỹ thuật ngôn ngữ học và toán học để đảm bảo an toàn thông tin. cụ thể là trong thông tin liên lạc. Quá trình mã hóa được sử dụng chú yếu để đảm bảo tính bí mật của các thông tin quan trọng, chẳng hạn trong công tác tình báo, quân sự hay ngoại giao cũng như các bí mật về kinh tế, thương mại hay cả đến những thông tin cá nhân riêng tư.
Trong những năm gần đây, lĩnh vạíc hoạt động của mật mã hóa đã được mở rộng: mật mã hóa hiện đại cung cấp cơ chế cho nhiều hoạt động hơn là chỉ duy nhất việc giữ bí m ật thông tin và còn có một loạt các ứng dụng quan trọng như: chứng thực khóa công khai, chữ ký số, thanh toán điện tử hay tiền điện tử. Ngay cả những người không có nhu cầu cao về tính bí mật và không có kiến thức về lập mật mã, giải m ật mã cũng có thể sử dụng các công nghệ mật mã hóa. thông thường được thiết kế và tích hợp sẵn trong các cơ sở hạ tầng của công nghệ tính toán và liên lạc viễn thông.
Mật mã học là một ngành có lịch sử từ hàng nghìn năm nay. Trong phần lớn thời gian phát triển của mình (ngoại trừ mấy thập ký gần đây), lịch sử mật mã học chính là lịch sử của những phương pháp mật mã học cổ điển - các phương pháp mật mã hóa với bút và giấy, đôi khi có hỗ trợ từ những dụng cụ cơ khí đơn giản. Vào đầu thế kỷ XX, sự xuất hiện của các cơ cấu cơ khí và điện cơ. chẳng hạn như m áy Enigma, đã cung cấp những cơ chế phức tạp và hiệu quả hơn cho mật mã hóa.
Sự ra đời và phát triển mạnh mẽ của ngành điện tử và máy tính trong những thập kỷ gần đây dif tạo điều kiện để mật mã học phát triến nhảy vọt lên một tầm cao mới.
Sự phát triển của mật mã học luôn đi kèm với sự phát triển của các kỹ thuật phá mã (hay còn gọi là thám mã). Các phát hiện và ứng dụng của các kỹ thuật phá mã trong một số trườnế hợp đã có ảnh hưởng đáng kể đến các sự kiện lịch sử. Một vài sự kiện đáng ghi nhớ bao gồm việc phát hiện ra bức điện Zimmermann đã khiến Hoa Kỳ tham gia Thế chiến II và việc phá mã thành công hệ thống mật mã của Đức quốc xã góp phần làm đẩy nhanh thời điểm kết thúc Thế chiến II.
Cho tới dầu thập kỷ 1970, các kỹ thuật liên quan tới mật mã học hầu như chỉ nằm trong tay các chính phủ. Hai sự kiện đã khiến cho mật mã học trở nên thích hợp cho mọi người, đó là: sự xuất hiện của tiêu chuẩn mật inã hóa dữ liệu DES (Data Encryption Standard) và sự ra đời của các kỹ thuật m ật mã hóa khóa công khai.
Từ hơn mười năm trước, cứ vào tháng giêng hàng năm một số nhà nghiên cứu hàng đầu thế giới có một cuộc gặp gỡ trao đổi tại thung lũng Silicon được gọi là Hội thảo An ninh RSA - RSA security Conference (John Kỉnyorì). Trong những năm đầu chỉ có một số ít nhà Toán học, Mật mã học, các Tư tưởng gia tiên phong trong những lĩnh vực liên quan đến an ninh dữ liệu cho máy tính điện tử và bảo mật thông tin trong giao dịch điện tử tham gia. Trong những năm cuối của thiên niên kỷ trước, vào thời kỳ bùng nổ của Gông nghệ thông tin và Internet, vai trò quan trọng của các hội thảo an ninh điện tử đó ngày một nối bật lên và hàng năm ngoài hội thảo an ninh RSA còn có hàng chục hội thảo an ninh thông tin điện tử và an ninh mạng khác được tiến hành, tập hợp sự tham dự và đóng góp của những tài năng kiệt xuất nhất trong kỷ nguyên công nghệ thông tin này.
Có thể kìiẳng đụih rằiìg, nến không giải quyết dược vấn đề an toàn dữ liệu cho máy tính điện tử, an ninh giao dịch điện tử (dặc biệt
7
là trên Internet) thì hầu ĩihư pìicin lớn thànli quả CỈICI công nghệ thông tin, CỈUI mạng Internet đều trở thành vô nghĩa!
Do vậy, mọi kỹ-sư, kỹ thuật viên, nhà nghiên cứu, người ứng dụng công nghệ thông tin đều cần được trang bị những kiến thức cơ bản tối thiểu về Mật mã học. Nhằm mục đích đó, tác giả đã sứ dụng những tư liệu, Ếiáo trình đã éiảng dạy về mật mã học cho bậc đại hộc, cao học ngành công nghệ thông tin, toán tin ở Dại học Bách khoa Hà Nội, Viện Đại học Mở Hà Nội, tham khảo những công trình công bố quốc tế và trong nước trong vòng mười năm gần đây (xem tài liệu tham khảo) dể biên soạn thành cuốn sách này. Giáo trình
m ật ÌÌUĨ học và liệ thống tlìôiig tin an toàn là sự sắp xếp trình bày theo quan điểm của tác giả, có tham khảo nhiều tài liệu nhưng không dựa theo khuôn mẫu của một tư liệu nào cùng chuyên ngành đã công bố trước đây. Tác giả không dám hy vọng trình bày được thật chi tiết đầy đủ và đi sâu vào những vấn đề toán học rất phức tạp, mà chỉ mong đáp ứng phù hợp với nhu cầu của đông dảo sinh viên, kỹ sư, nhà nghiên cứu trong việc tìm hiểu một cách căn bán về một ngành học đang có hàng loạt ứng dụng quan trọng tron£ công nghệ thông tin và truyền thông hiện nay.
Nội dung giáo trình trình bày những khái niệm và định nghĩa chung về bảo mật thông tin, đi sâu phân tích 2 loại mã hóa: mã khóa bí m ật cùng các giao thức, thuật toán trao đổi khóa mả và mã bất đối xứng hay mã khóa công khai và khóa riêng với những ứng dụng cụ thế của nó. Bên cạnh đó, nội dung giáo trình giới thiệu đến một vấn đề rất có ý nghĩa hiện nay trong các giao dịch thương mại điện tử, ngân hàng trực tuyến đó là: Chữ ký điện tử, chữ ký số VCI vấn dề phân phối khóa công kluá với các hệ tliống hụ tầng cơ sở klióa công
klưii PKI và chuẩn X509 cũìig như hệ thốĩìg mạng lưới tin cậy và giao thức PGP. Đặc biệt phần cuối giới thiệu các ềiao thức và chuẩn mã
hóa thong cỉụng nhất trên Internet trong các dịch vụ bảo mật thư điện tử như S/MIME, những giao thức và chuẩn mã hóa sử dụng để bảo đảm an toàn thông tin đặc biệt quan trọng trong thương mại điện tử, ngân hàng điện tử, như SSL/TLS và HTTPS, FTPS, SET,
SSH, IPsec... Ớ cuối mỗi phần lý thuyết, giáo trình cung cấp một danh mục các phần mềm ứng dụng thương mại và phi thương mại để người đọc tiện tra cứu, sử dụng.
Giáo trình được xuất bản lần đầu sẽ khó tránh khỏi những thiếu sót. Rất mong nhận được ý kiến nhận xét, góp ý của bạn đọc để giáo trình ngày càng được hoàn thiện hơn trong lần tái bản sau.
Xin chân thành cảm Ơ I 1 các bạn đồng nghiệp ở Khoa Công nghệ Thông tin - Viện Đại học Mở Hà Nội dã góp ý cho tác giả trong việc hiên soạn giáo trình này.
Hà Nội, tlưbìg 1 ĩừím 2011
Tác giả
(
1
TỔNG QUAN VẾ BẢO MẬT THÔNG TIN VÀ LÝ THUYẾT MÃ HÓA
1.1. NHU CẲU BÁO MẬT THÔNG TIN GIAO DỊCH TRONG MỐI TRƯỜNG MỜ
Trong toàn bộ cuốn sách này chúng ta sẽ quy ước xem xét các giao dịch giữa hai đối tác: An (A) là người gửi (phát) thông tin và Bình (B) là người nhận (thu) thông tin. Ngoài hai đối tác nói trên chúng ta cũng giả thiết rằng tồn tại một kẻ thứ ba là Công (G), c luồn tìm cách xâm nhập những thông tin trao đổi giữa A và B để nghe lén (trộm thông tin) hoặc dể thay đổi làm sai lệch các thông tin được trao đối giữa A và B nhằm một mục đích nào đó.
Giả sử An có một câu chuyện riêng tư bí mật cần nói với Bình. Rõ ràng lý tưởng nhất là hai người có thể kéo nhau vào một căn phòng cửa đóng kín (tường cách âm càng tốt) và thì thào với nhau: mọi điều trao đổi chỉ có hai người biết, không lọt vào tai bất kỳ một người thứ ba nào. Môi trường giao dịch đó là một môi trường đóng (theo nghĩa là ngoài hai đối tác giao dịch, không có sự xâm nhập của bất kỳ một người thứ ba nào), môi trường đóng là một môi trường
tin cậy.
Tuy nhiên trong thực tế, người ta thường phải tiến hành giao dịch tron£ những môi trường không đóng, tức là môi tníờìĩg mở (open surrounding). Chắng hạn, vì gấp quá, không tìm ra chỗ kín
12 Giáo trình mật mã học và lìệ chống tliông tin an toàn
đáo, An phải đứng ngay đầu đường nói to lên với Bình đang đứng ở cuối đường, câu chuyện hiển nhiên lọt vào tai của nhiều người khác. Hoặc An đang ở Hà Nội phải gọi điện thoại hay thư cho Bình ở TP. Hồ Chí Minh, không thể đảm bảo là nội dung cuộc nói chuyện điện thoại hoặc nội dung lá thư không bị người thứ ba nào đó nắm bắt được. Môi trường mở nói chung là môi trường không tin cậy.
Hĩnh 1.1: Môi trườĩĩg mở troĩĩg trao clổi thống tin
1.2. NHỮNG NGUYÊN LÝ CỦA BẢO MẬT THÔNG TIN
Các giao dịch điện tử nói chung là giao dịch trong môi trường mở, giao dịch trên Internet, giao dịch xuyên quốc gia. Trong các quá trình trao đổi thông tin đó các đối tác thường là không “mặt dối m ặt” để có thể nhận diện ra nhau. Vì thế rất khó để có thể thực hiện được những yêu cầu sau đây của việc trao đổi thông tin được xem là những nguyên lý cơ bản của vấn đề bảo mật thông tin:
1. Tính bí m ật/riêng tư.
2. Tính toàn vẹn.
3. Tính xác thực.
4. Tính không thể chối bỏ.
5. Tính nhận dạng.
Thêm vào đó, tốc độ thực hiện truyền tin (nhanh chóng) cũng là một yêu cầu cần chú ý. Ta sẽ lần lượt xét qua các yêu cầu đã kể trên.
Chìtơng 1: Tống Cfuan về bảo mật tliông tin và lý thuyết mã hóa 13
1.2.1. N g u y ê n lý 1: Nguyên lý bí m ật/riêng tư
(Confidentiality/Privacy)
Giả sử A gửi một “vật mang tin” đến cho B. Nguyên lý đầu tiên của lý thuyết bảo mật là phải đảm bảo tính bí mật và tính riêng tư cho quá trình truyền tin. Điều này có nghĩa là việc truyền tin phải dám bảo rằng chỉ có hai đối tác A và B khi tiếp cận vật mang tin mới nắm bắt được nội dung thong tin được truyền. Trong quá trình truyền tin, nếu có kẻ thứ ba c (vì một nguyên nhân nào đó) có thế tiếp cận dược vật mang tin thì phải đảm bảo rằng kẻ đó vẫn không thể nắm bắt được, không thể hiểu được nội dung “thực sự” của thông tin chứa trong vật mang tin đó.
1.2.2. Nguycn lý 2: Nguyên lý toàn vẹn (Integrity)
Trong quá trình truyền tin, có thể vì lý do khách quan của môi trường, nhất là do sự xâm nhập phá hoại của kẻ thứ ba, nội dung của thôn£ tin ban đầu chứa trong vật mang tin có thể bị mất mát hay bị thay đổi. Nguyên lý này không yêu cầu đến mức phải đảm bảo rằng thông tin không bị thay đổi trong quá trình truyền tin, nhưng phải đảm bảo được là mỗi khi thông tin bị thay đổi thì người nhận (và tất nhiên là cả người gửi) đều phát hiện được. Chẳng hạn vật mang tin của A gửi cho B trên đường truyền tạm thời lọt vào tay người thứ ba c. c tuy không thế hiểu được nội dung thông tin (do quá trình truyền tin dã thực hiện nguyên lý 1) nhưng vẫn có thể tác động vào vật mang tin đế làm thay đổi thông tin nó mang; khi nhận dược vật mang tin (đã bị làm thay đối) B lập tức nhận biết rằng nó đã bị làm thay đổi.
1.2.3. Nguyên lý 3: Nguyên lý xác thực (A uthentication)
Nguyên lý 3 của bảo mật thông tin yêu cầu là trong một quá trình truyền tin, người nhận tin (và có khi cả người gửi tin nữa) có
14 Giiio trìiih mật má học và /lệ tlìống tlìôĩìg rin an toàn
biện pháp để chứng minh V 'ớ i dối tác rằng “họ chính tò họ" chứ không phải là một người thứ ba nào khác. Chẳng hạn khi bạn nhận một lá thư bảo dảm tại Bưu điện thì bạn phải có cách nào chứng minh được rằng bạn chính là người có quyền nhận lá thư đó, bang cách xuất trình chứng minh nhân dân hoặc một giấy giới thiệu có giá trị nào đó. Sự xác thực này có thể là xác thực một chiều (omc
w av autliemwatwti) : người nhận phải xác thực mình với người gửi, nhưng cũng có những trường hợp đòi hỏi xác thực hai chiều {mutual (lutlieiưication): người nhận với người gửi và ngược lại. Chẳng hạn khi A là khách hàng gửi tin báo cho B là chủ nhà hàng chuẩn bị cho mình một bữa tiệc, A phải xác thực được rằng người nhận tin của mình đúng là B (người có trách nhiệm của nhà hàng) chứ không phải là một nhân viên nào đó có thể vô trách nhiệm, quên lãng làin nhỡ nhàng cho khách của mình. Mặt khác khi B nhận tin cũng phái xác thực được đúng là đơn đặt hàng của A chứ không phải do một kẻ phá rối nào dó mạo danh làm cho mình bị ế bữa tiệc đã chuẩn bị.
1.2.4. Nguyên lý 4: Nguyên lý không chối bỏ (Non repudition)
Nguyên lý này dòi hỏi rằng khi quá trình truyền tin kết thúc, A đã gửi cho B một thông tin và B đã nhận thông tin thì A khôn£ thổ chối bỏ rằng thông tin dó không do mình gửi (hoặc nùnh không gửi tin) mặt khác B cũng không thể chối bỏ rằng mình chưa nhận dược. Cũng trong ví dụ về việc đặt tiệc nói trên, nếu A đã đặt tiệc nhưng không đến ăn thì không thể chối là tin dặt tiệc không do mình gửi. ngược lại khi khách khứa đến mà B quên chuẩn bị thì B cũng không thể chối là do mình chưa nhận được đơn đặt hàng của A.
1.2.5. Nguyên lý 5: Nguyên lý nhận dạng (Identification)
Giả sử một hệ thống tài nguyên thông tin chung có nhiều người sử dụng (users) với những mức độ quyền hạn khác nhau. Nguyên lý 5 của bảo mật thông tin yêu cầu phải có biện pháp để hệ thống có thể
Chĩtơng 1: Tổng qttan về bảo mật thông tin và lý thuyết niã hóa_______15
nhận dạng dược các người sử dụng với quyền hạn kèm theo của họ. Chẳng hạn trong một thư viện có nhiều kho sách chứa các loại tài liệu thông thường và tài liệu mật. Người đọc chia làm nhiều loại, có loại chỉ được đọc sách thông thường tại chỗ, có loại được đọc tài liệu mật, có loại lại được mượn về nhà. Người vào thư viện phải xuất trình thẻ, có các loại thẻ khác nhau: Căn cứ vào thẻ, người thủ thư nhận dạng được ra người đó có phải là người có quyền sử dụng thư viện không và có quyền sử dụng theo dạng nào.
Trong vấn đề bảo mật còn có một điều cần lưu ý: đó là “sự tin tưởng”. Khi chia sẻ một bí mật cho một người, bạn phải tin tưởng vào khả năng bảo vệ bí m ật của người đó. Nhưng một điều khó khăn ở đây là: “tin tưởng” là một phạm trù có tính tâm lý, xã hội không có các đặc trưng của một loại quan hệ toán học nào:
- Tính không phản xạ: Một người có luôn luôn tin tưởng vào chính mình không? (Điều này chưa chắc chắn đối với tất cả mọi người và trong tất cả mọi trường hợp!)
- Tíĩih khôĩìg dối xứng: A tin tưởng vào B nhưng liệu B có tin tướng vào A không? (Chưa chắc!)
- Tính không bắc cần: A tin tưởng B, B tin tưởng c , nhưng không có gì đảm bảo (trong rất nhiều trường hợp) là A tin tưởng vào G.
Chính vì vậy, trong các vấn đề bảo mật nhiều khi chúng ta không thể hoàn toàn dùng các phương pháp suy luận logic thông thường mà phải chú ý đến việc tuân thủ các nguyên lý bảo mật thông tin.
1.3. KHÁI NIỆM VÀ THUẬT NGỮ
Trong mục này chúng ta thống nhất với nhau một số thuật ngữ thường dùng sau này.
16 Guio trình mật mã học VCI hệ thống thông tin an toàn
Thông điệp (message) là một thực thể vật lý mang thông tin cần trao đổi. Lá thư, điện tín (telegraph), E-mail là thông điệp dạng văn bản (text). Câu chuyện qua điện thoại, bài nói trên đài phát thanh, phát biểu trong một cuộc họp... là những thông điệp dạng âm thanh (sound). Gác album ảnh, các bức tranh... là những thông điệp dạng ánh (picture), còn một bộ phim câm, một videoclip không có tiếng nói là những thông điệp dạng hình ảnh động (animation). Gác thông điệp bao gồm cá bốn dạng trên là những thông điệp da phương tiện (mxdtỉmedia) chẳng hạn như một cuộn băng video, một chương trình truyền hình... đều là những thông điệp multimedia. Trong giao dịch điện tử, mọi thông điệp dù bất cứ ở dạng nào cũng đều được số hóa, tức là chuyển đổi thành những dãy bit, những dãy số nhị phân chỉ gồm hai con số 0 và 1. Vì vậy có thể nói rằng: Mọi thông điệp điện tử đều là những dãy con số dạng nhị phân. Nhưng mỗi con số dạng nhị phân lại đều có thể chuyển trở lại thành dạng thập phân. Cho nên người ta cũng có thể dùng một con số thập phân để biểu diễn một thông điệp. Chẳng hạn khi có thông điệp đã số hóa thành số nhị phân là: 1111011 ta cũng có thể nói rằng thông diệp đó là số thập phân 123. M vậy trong giao dịch điện tử hiện đại, khi xem xét việc xử lý các thông điệp điện tử chúng ta hiểu ràng đấy là việc xử lý các thông điệp số hóa.
Plain text/m essage: là thông điệp, dữ liệu “gốc" dạng "tường minh" dạng ban đầu của người phát hành thông điệp tạo ra, mọi người bình thường trong cùng môi trường xã hội với người tạo ra và người được gửi thông điệp (và cả những người thứ ba vì lý do nào dó có cơ hội tiếp cận được thông điệp đó) đều có thể hiểu được nội dung. Chẳng hạn trong xã hội có nhiều người biết tiếng Việt, An viết một lá thư bằng tiếng Việt gửi cho Bình: lá thư là một plaintext vì nếu nhận được lá thư thì không những chỉ có Bình hiểu được nội dung mà bất kỳ người nào biết tiếng Việt có được lá thư cũng hiểu ngay nội dung lá thư đó.
Chitơng 1: Tổng C/ĨUXĨI về bảo mật thông tin và lý thuyết mủ hóa 17
Cipher text/m essage: là thông điệp dữ liệu đã biến đổi theo một quy tắc tứio dó thành một dạng khác (dạng “ẩn tàng”) mà chỉ những người nào nắm bắt được quy tắc biến đổi ngiiỢc trở lại thành plaintext thì mới hiểu được nội dung thông điệp. Chẳng hạn trong một môi trường, ngoài An và Bình không có người nào khác biết tiếng Anh. Sau khi An viết một bức thư bằng tiếng Việt (plaintext) trước khi gửi cho Bình đã dịch ra tiếng Anh, khi lá thư đến tay Bình, vì Bình cũng biết tiếng Anh nên dễ dàng dịch ngược lại để hiểu nội dung, còn nếu bản dịch của lá thư ra tiếng Anh rơi vào tay Công, do Công (cũng như mọi người xung quanh) không biết tiếng Anh nên không thế hiểu được nội dung. Bản dịch lá thư ra tiếng Anh trong trường hợp này được xem là một ciphertext.
Cipher (hay cypher): là thuật toán dùng đổ chỉ quy tắc để thực hiện việc biến đổi thông điệp dạng tường minh (plaintext) thành thông điệp dạng ẩn tàng (ciphertext), quá trình này gọi là mã hóa và cũng để chỉ quá trình biến đổi ngược từ ciphertext trở lại thành plaintext, quá trình này gọi là giải mã. Trong khuôn khổ cuốn sách này ta đều ệọi các quy tắc đó là những thuật toán.
Encrypt (encipher, encryption: mã hóa): đó là quá trình biến đổi thông tin từ dạng ban đầu (dạng tường minh) thành dạng ẩn tàng, với mục đích giữ bí m ật thông tin đó.
Decrypt (decipher, decryption: giải mã): đó là quá trình ngược lại với mã hóa, khôi phục lại những thông tin dạng ban đầu từ thông tin ở dạng đã được mã hóa.
Cryptosystem (Cryptographic system: Hệ thống mã hóa thông tin): có thể là các phần mềm như PGP, Ax-Crypt, Truecrypt... các giao thức như SSL, IPsec dùng trong Internet... hay đơn giản là một thuật toán như DEA.
Chìa khóa (Key): chính là thông tin dùng cho quy trình mã hóa và giải mã. Password (m ật-khẩu) lò một-hay-dÃy ký tự, ký hiệu, tín
18 Giáo trình mật mã học và hệ thống thông tin an toàn
hiệu mà người dùng được hệ thống bảo mật cấp để xác nhận câp quyền được phép truy cập hoặc can thiệp ở một mức độ quy định (xem, nghe, sửa, xóa...) vào một khu vực lưu trữ thông tin nào đó. Trong thực tế, m ật khẩu do người dùng tạo ra thường không đủ độ an toàn để được dùng trực tiếp trong thuật toán.
Vì vậy, trong bất cứ hệ thống mã hóa dữ liệu nghiêm túc nào cũng phải có bước chuyển đổi mật khẩu ban đầu thành chìa khóa có độ an toàn thích hợp, thường gọi ià công đoạn tạo chìa khóa. Bước tạo chìa khóa này thường được gọi là key derivation, key stretching
hay key initmlization.
Key Derivation Function (Hàm tạo khóa): thường sử dụng một hàm băm (hash function) (sẽ giải thích rõ hơn ở phần sau) được thiết kế sao cho chìa khóa an toàn hơn đối với các kiểu tấn công thám mã. Hàm này được thực hiện lại nhiều lần trên m ật khẩu ban đầu cùng với một con số ngẫu nhiên để tạo ra một chìa khóa có độ an toàn cao hơn. Con số ngẫu nhiên này gọi là salt, còn số lần lặp lại là iteration. Ví dụ một mật khẩu là "pandoras BOx", cùng với salt là "230391827", đi qua hàm hash SHA-1 1000 lần cho kết quả là một chìa khóa có độ dài 160 bit (thể hiện dưới dạng số thập lục phân: hệ đếm cơ số 16) như sau:
3BD454A72E0E7CD6959DE0580E3C19F51601C359
Keylength (Keysize): Độ dài (hay kích thước) của chìa khóa. Ta nói một chìa khóa có độ dài 128 bit có nghĩa chìa khóa đó là một số nhị phân có độ dài 128 chữ số. Ta sẽ thấy rằng một thuật toán có chìa khóa càng dài thì càng có nhiều khả năng chống lại các kiểu tấn công. (Bạn có thể so sánh như số viên bi trong một ổ khóa bi thường dùng: số bi càng nhiều thì ổ khóa càng an toàn).
Xem xét một ví dụ sau đâv. Một thợ khóa tài giỏi tạo ra một ổ khóa kiểu tổ hợp (combination lock: loại ổ khóa được khóa (hay mở)
Chương 1: Tổng qiian về bảo mật thông tin và lý thuyết mã hóa 19
bằng cách xoay một số lần theo chiều thuận và một số lần theo chiều ngược kim đồng hồ đến những con số nào đó, như các ổ khóa két sắt) và hướng dẫn cách sử dụng cho khách hàng. An và Bình mỗi người mua một ổ khóa kiểu đó mang về và mỗi người đặt một kiểu tổ hợp khác nhau cho mình. Lúc đó thì tuy là dùng chung một loại khóa nhưng An và Bình không thể mở được ổ khóa của nhau, kể cả người thợ khóa cũng không mở được khóa của hai người! Ô khóa kiểu tố hợp là một thuật toán mã hóa và giải mã. Cách chọn tổ hợp của An hay Bình là những khóa (key) khác nhau, số lần quay ổ mà An hay Bình chọn để khóa (và mở) chính là độ dài của khóa. Nếu An không biết khóa của Bình đã đặt mà muốn “phá khóa” thì thông thường phải “dò thử ” mọi khả năng có thể có của các tổ hợp, bằng không thì phải ... vác búa ra mà đập vỡ ổ khóa! Kiểu phá khóa bằng cách dò thử tất cả inọi khả năng như vậy gọi là “tấn công bạo lực: brxite force attack”, tất nhiên tấn công kiểu đó bao giờ cũng thành công (nghĩa là phá được ổ khóa) nhưng rõ ràng phương pháp đó tốn rất nhiều thời gian.
Độ dài ldióa càng lớn (tức là số lần mà người chủ khóa quy định phải quay để khóa hoặc mở) thì việc tấn công bạo lực càng mất nhiều thời gian. Người ta đánh giá một ổ khóa là đủ an toàn trong một thời gian T nếu như khả năng tấn công bạo lực phải mất thời gian gấp nhiều lần T. Chẳng hạn một người thường vắng nhà không quá 7 ngày, nếu ổ khóa chỉ có thể phá được bằng tấn công bạo lực trong suốt một tuần thì ổ khóa được xem là an toàn. Nhưng nếu người đó đi xa 1 tháng thì sử dụng ổ khóa đó là không an toàn nữa!
Một chuyên gia phá khóa có thể có những phương pháp dò tìm khác mà thời gian phá khóa rất ít so với kiểu tấn công bạo lực. Như vậy muốn đánh giá mức độ an toàn của một ổ khóa ta cần phải xem xét mọi khả nâng phá khóa có thể có chứ không phải chỉ đánh giá qua thời gian tấn công bạo lực.
20 Giáo trình mật ĩìữi học và hệ thống thông tin an toàn
1.4. MẬT MÃ HỌC
1.4.1. Mật mả học (cryptography) là gì?
Người ta gọi mật mã học là một khoa học nghiên cứu nghệ thuật nhằm che giấu thông tin, bằng cách mã hóa (encryption) tức là biến đổi “thông tin gốc” dạng tường minh (plaintext) thành “thông tin mã hóa” dạng ẩn tàng (cipher text) bằng cách sử dụng một khóa mã (thuật toán mã hóa) nào đó. Chỉ có những người giữ chĩa khóa (kev) bí mật mới có thể giải mã (decryption) thông tin dạng ẩn tàng trở lại thành dạng thông tin có dạng tường minh.
ab
cd
plaintext
Encryption Decryption cipher text
Key KeyHình 1.2: Sơ dồ mã hóa và giải mủ
ab
* cd
____ r
plaintext
Thông tin ẩn tàng đôi khi vẫn bị khám phá mà không cần biết khóa bí mật: việc đó gọi là bẻ khóa. Ngành học nghiên cứu về việc bẻ khóa (attack/crack/hack) này còn gợi là cr\rptaiưãvsis. Như đã nói ở ví dụ trên, trong các phương pháp tấn công thám mã ta gọi tấn công bạo lực - bnue-force attack (exhaustive key’ search): là phương pháp tấn công bằng cách thử tất cả những khả năng chìa khóa có thể có. Đây là phương pháp tấn công thô sơ nhất và cũng khó khăn nhất. Theo lý thuyết, tất cả các thuật toán hiện đại đều có thể bị đánh bại bởi tấn công bạo lực nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thời gian rất dài nên thực tế là không khả thi. \ ì thế có thể coi một thuật toán là an toàn nếu như không còn cách nào khác dể tấn công nó ngoài cách sử dụng brute-íorce attack. Đổ chống lại tấn công này, chìa khóa bí mật được thay đổi một cách thường xuyên hơn.
Chương 1: Tổng quan về bảo mật thông tin và lý thuyết mã hóa 21
Trong lý thuyết mật mã, người ta nghiên cứu đồng thời các thuật toán lập mã và vấn đề thám mã được dùng để đánh giá mức độ an toàn và khả năng bảo mật thông tin của mỗi thuật toán mã hóa.
1.4.2. Mật mã học trong lịch sử
Có thể xem là lịch sử mật mã học bắt nguồn từ người Ai Cập vào khoảng những năm 2000 trước Công nguyên khi họ dùng những ký hiệu tượng hình khó hiểu để trang trí trên các ngôi mộ nhằm bí mật ghi lại tiểu sử và những chiến tích, công lao của người đã khuất. Trong một thời gian dài hàng thế kỷ một trong những loại công trình nghiên cứu thu hút rất nhiều nhà khoa học trên thế giới là các nghiên cứu giải mã những “dấu tích bí m ật” trên các ngôi mộ cổ Ai Cập, nhờ đó mà ta hiểu biết được khá nhiều về lịch sử, phong tục, tập quán sinh hoạt của đất nước Ai Cập cổ huyền bí.
Người Hebrew (Do Thái cổ) đã sáng tạo một thuật toán mã hóa đơn giản và hiệu quả gọi là thuật toán atbash mà chìa khóa mã hóa và giải mã là một sự thay thế (substitution) trong bảng chữ cái. Giả sử dùng chìa khóa mã hóa là bảng hoán vị:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ZYXWVUTSRQPONMLKJIHGFEDCBA
Khi dó chẳng hạn từ gốc (plaintext): JERUSALEM sẽ được mã hóa thành từ mã (ciphertext): QVIFHZOVN. Nếu người nhận tin có chìa khóa thì việc biến đổi QV1FHZOVN trở lại thành JERUSALEM là điều hoàn toàn đơn giản, nhưng nếu không có chìa khóa thì quả là khó khăn, người nhận được thông điệp không thể nào hiểu nổi QVIFHZOY'N có nghĩa là gì cả! Cho dù biết rằng quy luật mã hóa chỉ là một sự thay thế của 25 chữ cái nhưng nếu tấn công bạo lực thì phải thử lần lượt hết mọi khả năng tạo chìa khóa, tức là phải thử 25! khả năng (tất nhiên về sau người ta có rất nhiều biện pháp để giảm
22 Giáo trình mật mã học và hệ thống thông tin an toàn
bớt khả năng dò tìm, chẳng hạn nếu plaintext có độ dài khá lớn thì có thể sử dụng dò tìm theo tần suất xuất hiện của các ký tự).
Thuật toán mã hóa bằng thay thế này chỉ dùng một ký tự (chữ cái) thay thế cho một ký tự nên được gọi là thuật toán mã hóa thay thế đơn {monocdphctbetic siibstừiuion). Người ta cũng có thể tạo những thuật toán mã hóa thay thế khối (multiple alphabetic siibstừiuion) nếu thay vì thay thế từng ký tự ta thay thế một dãy ký tự gốc bởi một dãy ký tự mã hóa: thuật toán này cho ta nhiều khả năng tạo khóa hơn nên khả năng bị tấn công lại càng giảm xuống.
Vào khoảng năm 400 trước CN, người Sparte sử dụng một dụng cụ gọi là gậy mật mã. Gác đối tác viết thư lên một hàng ngang của mảnh giấy dài cuốn quanh một cây gậy có đường kính và độ dài quy ước với nhau trước rồi tháo ra và điền vào các ô trống những ký tự bất kỳ. Đối tác nhận thư phải có một cây gậy giống hệt, cùng đường kính và độ dài, lại quấn mảnh giấy vào gậy và “giải m ã” được. Nếu không hiểu quy luật và không có cây gậy như thế thì không thể nào đọc hiểu những ký tự nối đuôi nhau một cách “vô nghĩa” trên mảnh giấy.
về thời Trung cổ, hoàng đế La Mã nổi tiếng là Julius Caesar tạo một công cụ lập mã rất đơn giản cho thuật toán gọi là “mã vòng” (cyclic code) tương tự như thuật toán atbash của người Hebrew nhưng đây không phải là một sự thay thế bất kỳ mà là một sự thay thế theo hoán vị vòng quanh. Gaesar dùng hai vành tròn đồng tâm, trên cả hai vành đều ghi bảng chữ cái La-tinh, vành trong ứng với plaintext còn vành ngoài ứng với ciphertext. Chìa khóa mã hóa là phép xoay vành tròn bên ngoài một số bước, do đó các chữ cái thay đổi đi. Chẳng hạn nếu chìa khóa là +3 tức là xoay theo chiều thuận + 3 ô thì các chữ cái A, B, C...X, Y, z trong plaintext sẽ chuyển đến D, E, F ...A, B, c trong ciphertext, từ HANOI trong plaintext được mã hóa thành từ KDQRL trong ciphertext. Người nhận sẽ giải mã bằng cách xoay ngược vành chữ ngoài -3 ô thì tìm lại được plaintext.
Chĩỉơng 1: Tổng CỊXian về bảo mật thông tin và lý thuyết mã hóa 23
Ngày nay, các phương pháp mã hóa và lập mã đó xem ra quá đơn giản nên không còn được dùng trong các vấn đề bảo mật thông tin quan trọng, tuy nhiên cũng còn giá trị cho một số người khi muốn dùng đế bảo mật những ghi chép cá nhân thông thường của mình và ý tưởng của chúng vẫn còn được sử dụng trong một số công cụ lập mã hiện đại. Mật mã học được phát triển mạnh ở châu Âu và mãi đến khoảng năm 1800 chủ yếu vẫn chỉ được sử dụng nhiều trong việc bảo mật các thông điệp quân sự. Chính nguyên lý mã vòng của Gaesar là ý tưởng cho việc phát triển một thiết bị mã hóa nổi tiếng nhất trong lịch sử: m áy nxã hóa Enigma của người Đức dùng trong Đại chiến thế giới lần thứ hai. Enigma có 3 ổ quay, mỗi ký tự trong plaintext khi đưa vào sẽ được thay thế 3 lần theo những quy luật định sẵn khác nhau cho nên quá trình thám mã rất khó khăn.
về sau một nhóm các nhà mật mã học Ba Lan đã bẻ khóa được thuật toán lập mă của Enigma và cung cấp cho người Anh mọi thông tin quân sự của Đức: người ta đánh giá rằng thành công của việc phá khóa đó đã rút ngắn thời gian kéo dài của Thế chiến II bớt được 2 năm. Sau khi Thế chiến II kết thúc, bí mật của Enigma được công bố và ngày nay một máy Enigma còn được triển lãm tại Viện Smithsonian, Washington D.c, Hoa Kỳ.
m -
v f #
1
William Frederick Friedman (1891 - 1989)
24 Giáo trình mật mã học và hệ thống thông tin ail toàn
Năm 1920, William Frederic Friedman công bố tác phâm The Index of Coincidence and Its Applications in Cryptography (Chỉ số trùng hợp và ứng dụng của nó vào Mật m ã học). Ông được xem là “cha đẻ của Mật mã học hiện đại”.
1.4.3. Phân loại các th u ật toán mã hóa
Ngày nay người ta phân biệt ra hai nhóm thuật toán mã hóa chính là: Gác thuật toán mã hóa cổ điển và các thuật toán hiện đại.
- Các th u ật toán cổ điển: (những thuật toán này ngày nay khi vẫn còn được dùng chẳng hạn trong trò chơi tìm m ật thư) gồm:
+ Thuật toán thay thế (Substitution) là thuật toán mã hóa trong đó từng ký tự (hoặc từng nhóm ký tự) của plaintext được thay thế bằng một (hay một nhóm) ký tự khác. Thuật toán atbash của người Hebrew hay thuật toán vòng của Caesar dều là các thuật toán thay thế. Chính ý tưởng của mã vòng Gaesar đã được ứng dụng trong máy Enigma.
+ T huật toán chuyển vị (Transposition) là thuật toán mã hóa trong đó các ký tự trong văn bản ban đầu chỉ thay đổi vị trí cho nhau còn bản thân các ký tự không hề bị biến đổi.
Xét một ví dụ về thuật toán hoán vị. Trong thuật toán này chúng ta ngắt thông điệp gốc thành từng nhóm 4 ký tự đánh số trong từng nhóm từ 1 đến 4. Chìa khóa ở đây là một hoán vị bất kỳ của 1234 gán cho mỗi nhóm:
HAI PHONG Plaintext
H A I p H o N G Ngắt đoạn từng nhóm 4 ký tự
1 2 3 4 1 2 3 4 Thứ tự tự nhiên trong mỗi nhóm 2 4 1 3 3 1 4 2 Khóa mã (chọn hoán vị tùy ý)
A p H I N H G o Ciphertext
Chương 1: Tổng qiian về bảo mật thôĩig tin và lý thuyết mã hóa 25
Các thuật toán liiện đại:
Có nhiều cách phân loại các thuật toán mã hóa hiện đại hiện đang sử dụng. Trong cuốn sách này ta sẽ phân biệt theo số chìa khóa sử dụng trong một thuật toán và như vậy có 3 loại sau đây:
a. Mã hóa đối xứng hay khóa bí mật SKC (Secret Key Cryptography)-. Chỉ dùng một chìa khóa cho cả mã hóa và giải mã (biến đổi theo hai chiều ngược nhau)
b. Mã hóa bất đối xứng hay khóa công khai và khóa riêng PKG (Public and Private Keys Cryptography): Sử dụng hai khóa riêng biệt: một khóa để mã hóa (khóa công khai: public key) và một khóa khác để giải mã (khóa riêng: piivcite key).
c. Hàm băm (Hash function): Mã hóa một chiều (one-way cryptography) dùng một biến đổi toán học để “mã hóa” thông tin gốc thành một dạng không biến đổi ngược được: không có chìa khóa vì từ ciphertext không tìm n£iíỢc lại được plaintext!
plaintext------------------------------►ciphertext-------------------------► plaintext
a. Mã hóa khóa bí mật (đối xứng). SKC sử dụng một khóa cho
cả mã hóa và giải mã.
plaintext-----------------------------►ciphertext---------------------------► plaintext
b. Mã hóa khóa công khai (bất đối xứng). PKC sử dụng hai khóa
một khóa để mã hóa và khóa còn lại để giải mã.
Hàm băm
plaintext---------------------------- ► ciphertext
c. Hàm băm (mã hóa một chiều). Hàm băm không có chìa khóa
do plaintext không tìm ngược lại được ciphertext.
26 Giáo trình mật mã học và hệ thống thông tin an toàn
Trong những chương sau chúng ta sẽ đi vào lần lượt nghiên cứu về các thuật toán lập mã và giải mã cho các loại mã đôi xứng, mã bât đối xứng, ưu điểm và nhược điểm của chúng và khả năng ứng dụng của chúng trong việc truyền các thông điệp điện tử.
San đăv chúng ta tlưirn klưio v í dụ về tỉtách thức bảo m ật tliời kv thuật số.
Việc phát tán thông tin m ật của Bộ Quốc phòng Mỹ trên Wikileaks đang đặt ra thách thức an ninh trong thời đại kỹ thuật số.
Các nhà phân tích cho rằng ngày 2 6 /7 /2 0 1 0 dữ liệu bị đánh cắp có dung lượng tính bằng gigabytes có thể được chia sẻ chi bằng m ột lần cái nhãp chuột.
"Tôi nghĩ về việc này trong mổi liên hệ với Tài liệu Lầu Năm Góc", James Lewis, m ột chuyên gia mạng, tại Trung tâm Chiẽn lược và Nghiên cứu Quốc tẽ (CSIS), so sánh với sự cố năm 1971 khi dữ liệu trong hồ sơ Cuộc chiẽn Việt Nam của Lầu Năm Góc bị rò ri.
"Sự khác biệt với Tài liệu Lầu Năm Góc là ở chỗ Daniel Ellsberg lấy nhiều tài liệu ở dạng in trên giãy và đưa cho một phóng viên", ông Lewis nói.
"Nay người ta có thê’ lấy nhiều tài liệu hơn nhiều và phát tán cho toàn thẽ giới."
Wikileaks đã không xác định nguồn tài liệu m ật nhưng mối nghi ngờ hiện đang nhắm tới Bradley Manning, một nhà phân tích tình báo quân đội Mỹ đang bị giam tại một nhà tù quân sự ở Kuwait.
Julian Assange, m ột nhà báo và là chủ trang Wikileaks cho báo chí Anh hay trong chuyến đến Luân Đôn rằng ông còn đang nắm trong tay hàng nghin tư liệu như vụ vừa qua nhưng chưa tung ra.
Lầu Năm Góc tin tưởng nhân viên của minh, đó là điều tốt, nhưng không đủ. James Lewis, Trung tâm Chiến lược và Nghiên cứu Quõc tẽ
Riêng Manning đã bị bắt vào tháng Năm sau khi Wikileaks phát đoạn băng video vụ m ột chiếc trực thăng Apache của Mỹ tại I-rắc tấn công và có dân thường chết trong vụ oanh tạc này.
Ong ta đã bị buộc tội cung cấp thông tin quốc phòng cho một nguồn trái phép.
Bộ Quốc phòng Mỹ trong tháng sáu cho biết họ tìm hiểu về cáo buộc rằng ông Manning cung cãp video m ật và 260.000 điện m ật ngoại giao cho Wikileaks.
Clirtơng 1: Tổng qiian về bảo mật thông tin và lý thuyết mã hóa 27
Ông Lewis cho biết Bộ Quổc phòng Mỹ, giống như bất kỳ tô’ chức nào, đều có "những vai xấu" ở bên trong chõng lại người tuyển dụng họ "nhưng nay đê làm những việc như th ế này thì đối với họ dễ dàng hơn rãt nhiều."
Một cựu quan chức Lầu Năm Góc cho biết cuộc cách mạng truyền thông kỹ thuật số, trong khi mang lại lợi ích to lớn cho xã hội nói chung, cũng tạo ra lo ngại về an ninh. "Sự gia tăng của phương tiện truyền thông kỹ thuật số và phần mêm xã hội chắc chắn sẽ làm tăng rủi ro dẫn tới những vụ việc như thế này xảy ra", quan chức này nói với điều kiện không nêu tên vì ông vẫn còn đóng một vai trò tích cực trong mảng chính sách an ninh quốc gia.
Giới chuyên gia cho rằng trong thời đại dùng giấy thi m ột tài liệu có đóng dấu m ật là đủ nhưng với thời kỹ thuật số thì mọi chuyện lại khác.
James Lewis, chuyên gia về không gian mạng, tại Trung tâm Chiẽn lược và Nghiên cứu Quốc tẽ (C S IS ), đưa ra quan điểm trong thời đại In tern et "nhiều người có th ể truy cập cơ sở dữ liệu và xem tất cả tài liệu được lưu trữ m ột nơi nào đó" ... "Nhưng cách chúng ta kiểm soát quyền truy cập lại dựa trên một mô hình cũ hơn, tức là dựa vào mức độ tin tưởng cá nhân"... "Lầu Năm Góc tin tưởng nhân viên của mình, đó là điều tốt, nhưng không đ ủ .”
Lewis cho biết m ột "hệ thõng tốt hơn có thể thông báo ngay việc tại sao có ai đó lại có th ể tải xuống hàng ngàn tư liệu"?
Don Jackson từ SecureWorks cho biết trước khi có Internet thì người ta không quá lo lắng về việc dữ kiện bị phát tán bởi một tờ báo có đăng thì cũng không thê’ phát tán được 90.000 vằn bản, thế nhưng Wikileaks có thể làm điều đó trong vài giây. Cựu quan chức của Lâu Năm Góc nói rằng ông "rất tiếc" đã xảy ra việc phát tán thông tin mật về Áp-ga-ni-xtan và Pa-ki-xtan, nhưng nói ông hy vọng vụ việc này sẽ không dẫn tới khả năng quân đội bớt sử dụng các phương tiện truyền thông xã hội. "Vụ việc này không nên được dùng để biện minh cho nỗ lực làm ngưởi ta bớt nắm bắt phương tiện truyền thông mới cũng như để khám phá ra cách sử dụng truyền thông mới một cách hiệu quả hơn", ông nói.
Mặt khác, việc tăng lên nhiều con số nhân viên dân sự và quân sự được tiếp xúc các nguồn tin m ật cũng dễ gây thất thoát tư liệu. Hiện nay có hơn 800 nghìn người Mỹ có quyền xem các nguồn tin mật.
Báo New York Tim es gần đây trích các nghiên cứu của Hoa Kỳ cho rằng hiện nước này có hàng trăm cơ quan chính phủ cùng quản lý việc an ninh chống khủng bõ.
2
MÃ HÓA KHÓA ĐỐI XỨNG
2.1. KHÁI NIỆM
2.1.1. Mã hóa khóa đối xứng là gì?
Mã hóa khóa dối xứng (hay còn gọi là mã hóa khóa đồng hộ) là một thuật toán mà tronố dó cả hai quá trình mã hóa và giải mã đều dùng một khóa. Để đảm bảo tính an toàn, khóa này phải được giữ bí mật. Vì thế các thuật toán mã hóa khóa đồng bộ này còn có tên gọi khác là mã hóa với khóa bí mật (secret kex cryptography). Một điều cần lưu ý là khi một người mã hóa một thông điệp gốc (plaintext) thành thông điệp mã hóa bằng một khóa K (thuật toán mã hóa) (ciphertext) rồi gửi ciphertext cho đối tác thì đối tác muốn giải mã cũng cần phải có khóa K, nghĩa là trước đó hai đối tác đã phải trao đổi cho nhau chia sẻ để cùng biết được khóa K.
Trong ví dụ về gậy mã hóa của người Sparte, các đối tác phải bàn giao cho nhau để sở hữu những cây gậy giống nhau trước khi trao đổi thông điệp. Gaesar muốn cho tướng lĩnh dưới quyền đọc được mật thư của mình thì trước khi ra đi các tướng lĩnh phải được Hoàng Đế triệu tập vào phòng kín để báo cho biết số bước xoay vòng và tất nhiên điều này (chìa khóa) phải được giữ kín!
Giả sử nếu An chỉ gửi thông điệp đã mã hóa cho Bình mà không hề báo trước về thuật toán mã hóa đã sử dụng, Bình sẽ chẳng hiểu trong thông điệp của An muốn nói gì. VI thê băt buộc An phải thông
Chương 2: Mã hóa khóa đối xứng 29
báo cho Bình về chìa khóa và thuật toán sử dụng tại một thời điểm nào đó trước đấy.
____ ______ Thông điệp
Thông điệp gốc Thuật toán mã hóa
Thuật toán Thông điệp gòc
Tin nhắn, m mã hỏa KA.B(m) giải mã I m = KA.R(m)(KA.B(m))
Hình 2.1: Thuật toán mã hóa dối xítng
Bình và An có cùng một khóa KA_B. Giả sử m là thông điệp gốc, khóa này được xây dựng sao cho: m = K A_B(K A_g(m )): dùng Ka_b vừa để mã hóa vừa để giải mã.
2.1.2. Mã hóa khóa đối xứng có thê phân thành hai nhóm phụ
- Thuật toán mã hóa theo khối (Block ciphers): trong đó từng khối dữ liệu trong văn bản gốc ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài. Độ dài mỗi khối gọi là kích thước khối (block size), thường được tính bằng đơn vị bit. Ví dụ thuật toán 3-Way có kích thước khối bằng 96 bit. Một số thuật toán khối thông dụng là: DES, 3DES, RC5, RC6, 3-Way, CAST, Camelia, Blowt’ish, MARS, Serpent, Twofish, GOST...
- Thuật toán mã hóa dòng (Stream ciphers): trong đó cỉĩí liệu đầu vào được mã hóa từng bit một. Gác thuật toán dòng có tốc độ nhanh hơn các thuật toán khối, được dùng ldii khối lượng dữ liệu cần mã hóa chưa được biết trước, ví dụ trong kết nối không dây. Có thể coi thuật toán dòng là thuật toán khối với kích thước mỗi khối là 1 bit. Một số thuật toán dòng thông dụng: RC4, A5/1, A5/2, Chameleon.
2.2. TIÊU CHUẨN MÃ HÓA DỮ LIỆU (DES)
2.2.1. Giới thiệu về DES
Tiêu chuẩn mã hóa dữ liệu DES (Data Encryption Standard) là một phương pháp mật mã hóa dược FIPS (Federal Information
30 Gúío trĩìih mật mã học và hệ thống thông till cm toàn
Processing Standard: Tiêu chuẩn xử lý thông tin Liên bang Hoa Kỳ) chọn làm chuẩn chính thức vào năm 1976. Thuật toán mã hóa theo tiêu chuẩn DES gọi là DEA (Data Encryption Algorithm). (Người ta cũng thường gọi lẫn lộn DEA và DES trong khi sử dụng). DES là một mã khối, mỗi khối gồm 64 bit trong đó dành 8 bit để kiểm tra lỗi (Parity checking) còn lại 56 bit khóa (xem Phụ lục 1). c ấu trúc tổng thể của thuật toán dược thể hiện hình 2.2.
Hình 2.2: Mô Irììih thuật toán DES
Chĩíơng 2: Mã hóa khóa đối xứng 31
Mô tả thuật toán DES
Có 16 chu trình giống nhau trong quá trình xử lý. Ngoài ra còn có hai lần hoán vị đầu và cuối (Initial and final peĩTHiưcition: IP & FP). Hai quá trình này có tính chất đối nhau (trong quá trình mã hóa thì IP trước FP, khi giải mã thì ngược lại). IP và FP, được sử dụng từ thập niên 1970. không có vai trò xét về mật mã học và việc sử dụng chúng chỉ có ý nghĩa đáp ứng cho quá trình đưa thông tin vào và lấy thông tin ra từ các khối phần cứng.
Trước khi đi vào 16 chu trình chính, khối thông tin 64 bit được tách làm hai phần 32 bit và mỗi phần sẽ được xử lý tuần tự (quá trình này còn được gọi là mạng Feistel). Gấu trúc của thuật toán (mạng Feistel) đảm bảo rằng quá trình mã hóa và giải mã diễn ra tương tự. Điểm khác nhau chỉ ở chỗ các khóa con được sử dụng theo trình tự ngược nhau. Điều này giúp cho việc thực hiện thuật toán trở nên đơn giản, đặc biệt là khi thực hiện bằng phần cứng.
Ký hiệu © (trong hình 2.2) thể hiện phép toán XOR (hàm “tuyển ngặt": Exclusive OR) hay là hàm “cộng theo modulo 2”. Hàm F làm biến đổi một khối 32 bit đang xử lý với một khóa con.
Dầu ra sau hàm F được kết hợp khối 32 bit còn lại và hai phần được tráo đổi để xử lý trong chu trình kế tiếp. Sau chu trình cuối cùng thì 2 nửa không bị tráo đổi; đây là đặc điểm của cấu trúc Feistel khiến cho quá trình mã hóa và giải mã trở nên giống nhau.
Hàm Feistel (F)
Hàm F, như được miêu tả như hình 2.3, hoạt động trên khối 32 bit và bao gồm bốn giai đoạn:
1. Mớ rộng: 32 bit đầu vào được mở rộng thành 48 bit sử dụng thuật toán hoán vị mở rộng (expctnsioĩi permutation) với việc nhân đôi một số bit. Giai đoạn này được ký hiệu là E trong sơ đồ.
32 Giảo trình mật met học và hệ thống thông tin an toàn
2. Trộn khóa: 48 bit thu được sau quá trình mở rộng được XOR với khóa con. Mười sáu khóa con 48 bit được tạo ra từ khóa chính 56 bit theo một chu trình tạo khóa con (key schedule) miêu tả ở phần sau. (Xem khái niệm hàm XOR ở phụ lục I)
3. Thay thế: 48 bit sau khi trộn được chia làm 8 khối con 6 bit và được xử lý qua hộp thay thế S-box. Đầu ra của mỗi khối 6 bit là một khối 4 bit theo một chuyển đổi phi tuyến đượo thực hiện bằng một bảng tra. Khối S-box đảm bảo phần quan trọng cho độ an toàn của DES. Neu không có S-box thì quá trình sẽ là tuyến tính và việc thám mã sẽ rất đơn giản.
4. Hoán vị: Cuối cùng, 32 bit thu được sau S-box sẽ được sắp xếp lại theo một thứ tự cho trước (còn gọi là P-box).
1/2 khối (48 bit) Khóa con (48 bit)
1
- e
S1 S2 S3 S4 S5 S6 S7 S8
ITinh 2.3: Hàm F (Feistel) dũng trong DES
Quá trình luân phiên sử dụng S-box và sự hoán vị các bit củng như quá trình I11Ở rộng đã thực hiện được tính chất gọi là sự xáo
Chĩtơng 2: Mã hóa khóa đối xứng 33
trộn và khuếch tán (confusion and diffusion). Đây là yêu cầu cần có của một thuật toán mã hóa được Claude Shannon phát hiện trong những năm 1940.
Qìiá trình tạo klìóa con (Sub-kev)
Khóa (64 bít)
__________ n _______
PC1
Khóa con 1 (48 bit)
Khóa con 2 (48 bit)
Khóa con 15 (48 bit)
Khóa con 16 (48 bit)
PC2
<-ctanalysis) , phá mã tuyến tính LC (Linear Cryrptcinalysis) và phá mã Davies (Davies' attack). Tuy nhiên các dạng tấn công này chưa thực hiện được trong thực tế.
- Phá mã vi sai, đòi hỏi dùng 247 plaintexts được xem là do Eli Biham và Adi Shamir tìm ra vào cuối những năm 1980 mặc dù đã được IBM và NSA biết đến trước đó để phá mã DES với đủ 16 chu trình (nhưng chưa có công bố chính thức).
- Phá mã tuyến tính được tìm ra bởi Mitsuru Matsui, đòi hỏi 24‘3 plaintexts (Matsui, 1993). Phương pháp này đã được Matsui thực hiện và là cuộc thực nghiệm phá mã đầu tiên được công bố. Không có bằng chứng chứng tỏ DES có khả năng chống lại tấn công dạng này.
Một phương pháp tổng quát hơn, phá mã tuyến tính đa chiều (multiple linear crytptanalysis) , dược Kaliski và Robshaw nêu ra vào năm 1994, sau đó Biryukov và cộng sự tiếp tục cải tiến vào năm 2004. Nghiên cứu của họ cho thấy mô phỏng tuyến tính đa chiều có thể sử dụng để giảm độ phức tạp của quá trình phá mã tới 4 lần (chỉ còn 24ỉ plaintexts).
- Phá mã Davies: trong khi phá mã vi sai và phá mã tuyến tính là các kỹ thuật phá mã tổng quát, có thể áp dụng cho các thuật toán khác nhau, phá mã Davies là một kỹ thuật dành riêng cho DES. Dạng tấn công này được đề xuất lần đầu bởi Davies vào cuối những năm 1980 và cải tiến bởi Biham và Biryukov (1997). Dạng tấn công mạnh đòi hỏi 250 plaintexts, độ phức tạp là 25<) và tỷ lệ thành công là 51%.
Ngoài ra còn có những kiểu tấn công dựa trên bản thu gọn của DES (DES với ít hơn 16 chu trình). Những nghiên cứu này cho chúng ta biết số lượng chu trinh cần có và ranh giới an toàn của hệ thống. Năm 1994, Langford và Hellman đề xuất phá mã vi sai tuyến tính
ChìCơĩig 2: Mã hóa khóa đối xứng 39
(dijferential-linear cryptanalysis) kết hợp giữa phá mã vi sai và tuyên tính. Một dạng cải tiến của phương pháp này có thể phá vỡ DES 9 chu trình với 215 8 plaintexts và có độ phức tạp là 229,2 (Biham et al, 2002).
Tháng 6/1997 dự án DESCHALL đã phá vỡ được một bản tin mã hóa bằng DES lần đầu tiên trước công chúng. Thiết bị thám mã DEEP CRACK của tổ chức Electronic Foundation phá được một khóa của DES trong vòng 56 giờ và đến tháng 01/1999 đã cùng với distribnted.net phá được một khóa chỉ trong vòng 22 giờ 15 phút.
* Để tăng độ an toàn, người sử dụng DES trước đây chuyển sang dùng Double DES và Triple DES (2DES và TDES). 2DES thực hiện 2 lần thuật toán mã hóa DEA với hai khóa riêng biệt, tăng độ dài khóa từ 56 lên 112 bit. Thoạt đầu người ta nghĩ rằng, theo tính toán thì tăng thêm 1 bit của độ dài khóa thì độ phức tạp của khóa (số trường hợp phải duyệt trong tấn công bạo lực) tăng gấp đôi. Và như vậy thì độ phức tạp khóa trong 2DES lên đến 256 lần so với khóa trong DES! Nhưng Whitfield Diffie và Martin Hellman đã phát minh ra một phương pháp thám mã gọi là tấn công gặp tại điểm giữa (meet-in
tlie-middle attack) làm cho độ phức tạp của 2DES chỉ tăng gấp đôi của DES tức là chỉ bằng: 2.256 = 237. Triple DES cũng sử dụng DES ba lần cho một plaintext với những khóa khác nhau để làm tăng độ dài khóa lên. Hiện nay Triple DES được xem là đủ an toàn mặc dù tốc độ thực hiện quá chậm.
2.2.3. Một vài đặc điểm về cách giải mã
Thuật toán mã hóa theo chuẩn DES có tính chất bù nghĩa là: Ek(P) = C«E-(P) = C
trong đó X là phần bù của theo từng bit (1 thay bằng 0 và ngược lại). Ek là bản mã hóa của E với khóa K. p và c là plaintext (trước khi mã hóa) và ciphertext (sau khi mã hóa). Do tính bù, ta có thể giảm độ phức tạp của tấn công bạo lực xuống 2 lần (tương ứng với 1 bit) với điều kiện là ta có thể lựa chọn plaintext.
40 Giáo trình mật mã học và hệ thống thông till an toàn
Ngoài ra DES còn có 4 khóa yếu (weak keys). Khi sử dụng khóa yếu thì mã hóa (E) và giải mã (D) sẽ cho ra cùng kết quả:
Ek(Ek(P)) = p hoặc tương đương EK = DK
Bên cạnh đó, còn có 6 cặp khóa nửa yếu (semi-weak key's). Mã hóa với một khóa trong cặp Kị, tương đương với giải mã với khóa còn lại Kỵ.
EKj(EK2(P) = p hoặc tương đương EK = DK
Tuy nhiên có thể dễ dàng tránh được những khóa này khi thực hiện thuật toán, có thể bằng cách thử hoặc chọn khóa ngẫu nhiên thì khả năng chọn phải khóa yếu là rất nhỏ.
DES đã được chứng minh là không tạo thành nhóm. Nói một cách khác, tập hợp {EK} (cho tất cả các khóa có thể) với phép hợp thành u không tạo thành một nhóm hay nhiều nhóm (pseudo-group) (kết quả của Campbell and Wiener, 1992).
Vấn đề này đã từng là một câu hỏi mở trong khá lâu. Nếu ĩứiư tạo thành nhóm thì DES có thể bị phá vỡ dễ dàng hơn bởi vì việc áp dụng DES nhiều lần (ví dụ như trong 2DES, Triple DES) sẽ không kìm tăng thêm độ an toàn của DES.
2.3. TIÊU CHUẨN MÃ HÓA TIÊN TIẾN (AES)
2.3.1. Sự ra đời của AES
Từ cuối thập niên 1980, đầu thập niên 1990, xuất phát từ những lo ngại về độ an toàn và tốc độ thấp khi áp dụng bằng phần mềm, giới nghiên cứu đã đề xuất khá nhiều thuật toán mã hóa khối để thay thế DES. Những ví dụ tiêu biểu bao gồm: RG5, Blowwl'ish, IDEA (International Data Encryption Algorithm: Thuật toán mã hóa dữ liệu quốc tế), NewDES, SAFER và FEAL. Hầu hết những thuật toán này có thể sử dụng từ khóa 64 bit của DES mặc dù chúng thường được thiết kế hoạt động với từ khóa 64 bit hay 128 bit. Bản thân DES cũng cải tiến để có thể được sử dụng an toàn hơn.
Chuơng 2: Mã hóa khóa đối xứng 41
Năm 2001, sau một cuộc thi quốc tế, NIST đã chọn ra một thuật toán mới là Tiêu chuẩn mã hóa tiên tiến AES (Advanced Encryption Standard) để thay thế cho DES. Thuật toán được trình diện dưới tên là Rijndael. Những thuật toán khác có tên trong danh sách cuối cùng của cuộc thi AES gồm: RC6, Serpent, MARS và Twofish. AES là thuật toán mã hóa khối được chính phủ Hoa Kỳ áp dụng làm tiêu chuẩn mã hóa thay cho tiêu chuẩn DES trước đó. Giống như tiêu chuẩn DES, AES được kỳ vọng áp dụng trên phạm vi toàn thế giới và đã được nghiên cứu rất kỹ lưỡng. AES được chấp thuận làm tiêu chuẩn liên bang bởi Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) trong một quá trình tiêu chuẩn hóa kéo dài 5 năm.
Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen. Thuật toán được đặt tên là "Rijndael" khi tham gia cuộc thi thiết kế AES theo cách ghép tên của hai đồng tác giả. Thuật toán được dựa trên bản thiết kế Square có trước đó của Daemen và Rijmen; còn Square lại được thiết kế dựa trên Shark. Khác với DES sử dụng mạng Feistel, Rijndael sử dụng mạng thay thế-chuyển vị. AES có thể dễ dàng thực hiện với tốc độ cao bằng phần mềm hoặc phần cứng và không đòi hỏi nhiều bộ nhớ. Do là một tiêu chuẩn mã hóa mới, AES đang được triển khai sử dụng rộng rãi hàng loạt.
2.3.2. Mô tả th u ật toán
Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thế cho nhau nhưng trên thực tế thì 2 thuật toán không hoàn toàn ếiống nhau. AES chỉ làm việc với khối dữ liệu 128 bit và khóa có độ dài 128, 192 hoặc 256 bit trong khi Rijndael có thể làm việc với dữ liệu và khóa có độ dài bất kỳ là bội số của 32 bit nằm trong khoảng từ 128 tới 256 bit. Gác khóa con sử dụng trong các chu trình được tạo bởi quá trình tạo khóa con Riịndaeỉ. Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một trường hữu hạn. AES làm
42 Gic'io trình rnệư mã học và hệ thống thông tin an toàn
việc với từng khối dữ liệu 4 x 4 bytes (tiếng Anh: State, khối trong Rijndael CO thể có thêm cột). Quá trình mã hóa gồm 4 bước:
1. AddRoundKey: mỗi byte của khối được kết hợp với khóa con, các khóa con này được tạo ra từ quá trình tạo khóa con Rijndael.
2. SubBytes: đây là phép thế (phi tuyến) trong đó mỗi byte sẽ được thế bằng một byte khác theo bảng tra (Rijndael S-box).
3. ShiftRows: đổi chỗ, các hàng trong khối được dịch vòng.
4. MixColumns: quá trình trộn làm việc theo các cột trong khối theo một phép biến đổi tuyến tính. Tại chu trình cuối thì bước MixColumns được thay thế bằng bước AddRoiindKey.
Bước AddRouiuiKev. Tại bước này, khóa con được kết hợp với các khối. Khóa con trong mỗi chu trình được tạo ra từ khóa chính với quá trình tạo khóa con Rijndael; mỗi khóa con có độ dài giống như các khối. Quá trình kết hợp được thực hiện bằng cách XOR từng bit của khóa con với khối dữ liệu.
Bước StibBytes. Các byte được thế thông qua bảng tra S-box. Đây chính là quá trình phi tuyến của thuật toán. Hộp S-box này được tạo ra từ một phép nghịch đảo trong trường hữu hạn GF (2S) có tính chất phi tuyến. Để chống lại các tấn công dựa trên các đặc tính đại số, hộp S-box này được tạo nên bằng cách kết hợp phép nghịch đảo với một phép biến đổi affine khả nghịch. Hộp S-box này cũng được chọn để tránh các điểm bất động (fixed point).
Bước SliiJtRows. Các hàng được dịch vòng một số vị trí nhất định. Đối với AES, hàng đầu được giữ nguyên. Mỗi byte của hàng thứ 2 được dịch trái một vị trí. Tương tự, các hàng thứ 3 và 4 được dịch 2 và 3 vị trí. Do vậy, mỗi cột khối đầu ra của bước này sẽ bao gồm các bvte ở đủ 4 cột khối đầu vào. Đối với Rijndael với độ dài khối khác nhau thì số vị trí dịch chuyển cũng khác nhau.
Chĩtơng 2: Mã hóa khóa đối xứng 43
Bước M ixColumiis. Bốn byte trong từng cột được kết hợp lại theo một phép biến đổi tuyến tính khả nghịch. Môi khôi 4 byte đâu vào sẽ cho một khối 4 byte ở đầu ra với tính chất là mỗi byte ở đầu vào đều ảnh hưởng tới cả 4 byte đầu ra. Cùng với bước ShiftRows, MixColumns đã tạo ra tính chất khuếch tán cho thuật toán. Mỗi cột được xem như một đa thức trong trường hữu hạn và được nhân vói đa thức c(x) = 3x3 + X 2 + X + 2 (modulo X4 + 1). Vì thể, bước này có thể được xem là phép nhân ma trận trong trường hữu hạn.
a o ,o « 0 .1 a 0 . í a 0 .3 a ..« a . 1 a . * a * .o 5*2.2 I 2 ' 3 a 3rO a 3.» **3, 2
^0,0 ^0,1 ko.2 •<0,3 ^1,0 K.1 ^1 ,J k »,3 *^,1 I 3'3
1*3,0 3,3
I M đ R o u íK lK e y l
^ 0 , 0 b o . , b o . * f c > 0 .3
b , t
^ 2 . 0 1 b , . o ^ 3 . 3
Trong bước AddRoundKey, mỗi byte được kết hợp với một byte trong khóa con của chu trình sử dụng phép toán XOR.
Trong bước SubBytes, mỗi byte được thay thế
bằng một byte theo bảng tra, S; bij = S (a jj).
No
Change ®0.0 <Ịu
js h tftR o w s ]
K i ^9,2
Shift 1h ha M a u a i.o
Shjft 2
H
w«24 *2.1
SMrt 3 ^0 ^2 a M ®3.0 a * ,. K i
Trong bước ShiftRows, các byte trong mỗi hàng dịch vòng trái. Số vị trí dịch chuyển tùy từng hàng.
44 Giáo trìiứi mât mã học và hệ thống thông tin an toíìn
a 0.< »0.2 * 0 * b o ,b * «*0.2 ^ 0 . 3
« u m » ..2 a . .3, ỊM Ix C o iu m n s ]K , *1,2
« 2 .» *1.1 a 2 .* *>2.t
* 3 *■ >*3.2 ^ . 3 b , , t : >3.2 * > 3 .,
Trong bước MixColumns, mỗi cột được nhân với một hệ số cố định c(x). Hình 2.6: Sơ đồ thuật toán AES
2.3.3. Tối ưu hóa
Đối với các hệ thống 32 bit hoặc lớn hơn, ta có thể tăng tốc độ thực hiện thuật toán bằng cách sát nhập các bước SubBvtes, ShiJiRows, MixColwnns và chuyển chúng thành dạng bảng. Có cả thảy 4 bảng với 256 mục, mỗi mục là 1 từ 32 bit, 4 bảng này chiếm 4096 byte trong bộ nhớ. Khi đó, mỗi chu trình sẽ được bao gồm 16 lần tra bảng và 12 lần thực hiện phép XOR 32 bit cùng với 4 phép XOR trong bước AddRoundKey.
Trong trường hợp kích thước các bảng vẫn lớn so với thiết bị thực hiện thì chỉ dùng một bảng và tra bảng kết hợp với hoán vị vòng quanh.
2.3.4. Độ an toàn của AES
Vào thời điểm năm 2006, dạng tấn công lên AES duy nhất thành công là tấn công kênh bên (side channel attack). Vào tháng 6 năm 2003, Chính phủ Hoa Kỳ tuyên bố AES có thể được sử dụng cho thông tin mật.
"Thiết kế và độ dài khóa của thuật toán AES (128, 192 và 256 bit) là đủ an toàn để bảo vệ các thông tin dược xếp vào loại TÔI MẬT (secret). Các thông tin TƠKỆT MẬT (top secret) sẽ phải dũng khóa 192 hoặc 256 bit. Các phiên bán thực hiện AES nhằm mục đích bảo vệ hệ thống an nitứi hay thông tin quốc gũi phải được NSA kiểm tra và chítng tứiận tntớc khi sử dụng."
Chương 2: Mã hóa khóa đối xứng 45
Điều này đánh dấu lần đầu tiên công chúng có quyền tiếp xúc với thuật toán mật mã mà NSA phê chuẩn cho thông tin TUYỆT MẬT.
Nhiều phần mềm thương mại hiện nay sử dụng mặc định khóa có độ dài 128 bit.
Phương pháp thường dùng nhất để tấn công các dạng mã hóa khối là thử các kiểu tấn công lên phiên bản có số chu trình thu gọn. Đối với khóa 128 bit, 192 bit và 256 bit, AES có tương ứng 10, 12 và 14 chu trình. Tại thời điểm năm 2006, những tấn công thành công được biết đến là 7 chu trình đối với khóa 128 bit, 8 chu trình với khóa 192 bit và 9 chu trình với khóa 256 bit.
Một số nhà khoa học trong lĩnh vực mật mã lo ngại về an ninh của AES. Họ cho rằng ranh giới giữa số chu trình của thuật toán và số chu trình bị phá vỡ quá nhỏ. Nếu các kỹ thuật tấn công được cải thiện thì AES có thể bị phá vỡ. ở đây, phá vỡ có nghĩa chỉ bất cứ phương pháp tấn công nào nhanh hơn tấn công kiểu duyệt toàn bộ (tấn công bạo lực).
Vì thế một tấn công cần thực hiện 2120 plaintexts cũng được coi là thành công mặc dù tấn công này chưa thể thực hiện trong thực tế. Tại thời điểm hiện nay, nguy cơ này không thực sự nguy hiểm và có thể bỏ qua.
Tấn công kiểu duyệt toàn bộ quy mô nhất đã từng thực hiện là do distributed.net thực hiện lên hệ thống 64 bit RC5 vào năm 2002 (Theo định luật Moore thì nó tương đương với việc tấn công vào hệ thống 66 bit hiện nay).
Một vấn đề khác nữa là cấu trúc toán học của AES. Không giống với các thuật toán mã hóa khác, AES có mô tả toán học khá đơn giản. Tuy điều này chưa dẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu sợ rằng sẽ có người lợi dụng được cấu trúc này trong tương lai.
46 Giáo trình nicit mã hoc và hệ thong thông tin an toàn
Vào năm 2002, Nicolas Courtois và Josef Pieprzyk phát hiện một tấn công trên lý thuyết gọi là tấn công XSL và chỉ ra điểm yếu tiềm tàng của AES. Tuy nhiên, một vài chuyên gia về mật mã học khác cũng chỉ ra một số vấn đề chưa rõ ràng trong cơ sở toán học của tấn công này và cho rằng các tác giả đã có thể có sai lầm trong tính toán.
Việc tấn công dạng này có thực sự trở thành hiện thực hay không vẫn còn dể ngỏ và cho tới nay thì tấn công XSL vẫn chỉ là suy đoán.
2.3.5. Tấn công kênh bên (Side channel attacks)
Tấn công kênh bên không tấn công trực tiếp vào thuật toán mã hóa mà thay vào đó, tấn công lên các hệ thống thực hiện thuật toán có sơ hở làm lộ dữ liệu.
Tháng 4 năm 2005, Daniel J. Bernstein công bố một tấn công lên hệ thống mã hóa AES trong OpenSSL. Một máy chủ được thiết kế để đưa ra tối đa thông tin về thời gian có thể thu được và cuộc tấn công cần tới 200 triệu plaintexts lựa chọn. Một số người cho rằng tấn công không thể thực hiện được trên Internet với khoảnế cách vài điểm mạng.
Tháng 10 năm 2005, Adi Shamir và 2 nhà nghiên cứu khác có một bài nghiên cứu minh họa một vài dạng khác. Trong đó, một tấn công có thể lấy được khóa AES với 800 lần ghi trong 65 mili giây.
Tân công này yêu cầu kẻ tấn công có khả năng chạy chương trình trên chính hệ thống thực hiện mã hóa.
2.4. ƯU/NHƯỢC ĐIỂM VÀ PHẠM VI sử DỤNG CỦA MÃ HÓA ĐỐI XỨNG
Ưu điểm nổi bật của mã hóa đối xứng là tốc độ lập mã, giải mã khá nhanh chóng. Hiện nay có nhiều phần mềm thương mại hỗ trợ thuật toán mã hóa đối xứng hữu hiệu và rất phổ dụng.
Ưu điểm thứ hai là tuy có nhiều nghiên cứu thám mã đã thực hiện nhưng với các thuật toán được cải tiến gần đây như 3-DES và
Chĩtơng 2: Mã hóa khóa đối xứng 47
nhất là AES thì độ bảo mật khá cao, trong thực tế việc phá mã cũng không dễ dàng.
Tnv vậy nhược điếm lớn nhất cỉict thuật toán mã hóa đối xítng là vấn đề chuyến giao chìa khóa giữa các đối tác, đặc biệt là troiìg môi triỉờĩĩg mở.
Như trong ví dụ nói ở đầu chương về việc trao đổi thông điệp giữa An và Bình. Bình nhận được thông điệp đã mã hóa của An, muốn giải mã được thì Bình phải có chìa khóa mă của An. An không thể chuyển giao khóa mă đồng thời với thông điệp vì như vậy thì việc mã hóa trở thành vô tác dụng.
Vì vậy An phải dùng một phương pháp nào đó để chuyển giao khóa giải mã cho Bình trước khi gửi thông điệp. Mà dù dùng phương thức thông tin nào trong môi trường mở: gửi thư, E-mail, gọi điện thoại v.v. thì vẫn có nguy cơ có người thứ ba nắm bắt được khóa mã và kết quả vẫn như thế!
So sánh lại với 5 nguyên lý bảo mật thông tin, xét trường hợp giao dịch của 2 đối tác An và Bình. Giả sử An và Bình “hoàn toàn tin tưởng vào nhau” và trao cho nhau mã khóa đối xứng bằng một phương pháp đáng tin cậy nào đó (trao tay trực tiếp hoặc có một phương pháp nào có thể thay thế cho trao tay trực tiếp mà cũng có giá trị tương đương như thế) và sau đó hai người sử dụng mã klióa truyền các thông diệp mã hóa cho nhau, ta thấy rằng:
- Sử dụng mã đối xứng (trong các điều kiện nói trên) đảm bảo được nguyên lý bí m ật/riêng tư vì thông tin không thể bị lộ.
- Đảm bảo tính xác thực, tính không chối bỏ và tính nhận dạng, những điều này chủ yếu được thực hiện khi chuyển giao khóa mã cho nhau chứ không phải trong quá trình trao đổi thông điệp mã hóa về sau. Vì giả sử An và Bình trực tiếp trao khóa mã K cho nhau và “tin tưởng nhau” là không làm lộ khóa mã cho người thứ ba, như vậy khi nhận được thông điệp được mã hóa bởi K, hai đối tác có thể nhận dạng ra thông điệp đó chính là do đối tác của mình gửi. Mặt
48 Gừío trìn/i mật mã học và hệ thống thông tin an toàn
khác nếu Bình nhận được thông điệp của An mã hóa bởi K thì An không thể chối bỏ rằng không phải do mình phát hành thông diệp đó (vì ngoài Bình chỉ có An biết khóa K). Tuy nhiên khi Bình nhận được mà chối là không nhận được thì phải do “tính tin tưởng” giữa hai đối tác chứ không phải do khóa K đảm bảo.
- Mã hóa đối xứng không đảm bảo tính toàn vẹn dữ liệu. Giả sthư của An gửi cho Bình đã lọt vào tay Gông. Gông không hiểu gì về nội dung thông điệp nhưng vẫn có thể thêm bớt dữ liệu làm thay đổi, sai lệch nội dung thông điệp rồi vẫn gửi tiếp cho Bình: Bình không thể biết là thông điệp đã bị thay đổi nội dung (Có thể do không biết khóa mã nên dữ liệu thêm bớt của Công có thể làm cho thông điệp không giải mã được hay là vô nghĩa nhưng Bình vẫn không thể chắc chắn là có người can thiệp mà vẫn nghĩ là chính do An tạo ra như vậy!)
Vì những lý do trên các thuật toán mã hóa đối xứng loại này là những phương pháp mã hóa lý tưởng cho một người sử dụng (single Iiser) với mục đích mã hóa dữ liệu của cá nhân hay tổ chức đơn lẻ để chống xâm nhập của kẻ xấu. Không phải chỉ có những bí mật về an ninh quốc phòng mà ngay những thông tin bí m ật trong công nghệ, trong thương mại v.v. đều có thế là mục tiêu xâm nhập của những gián điệp công nghệ, kinh tế, hoặc xâm nhập trực tiếp hoặc sử dụng các biện pháp như gửi và cài Spyware, Trojan hay các phần mềm độc. Vì vậy cá nhân hay tổ chức, trước khi lưu giữ các dữ liệu thông tin quan trọng có thể và nên mã hóa bằng những khóa mã tự tạo và giữ bí mật khóa cho riêng mình biết.
Mã đối xứng bộc lộ hạn chế khi thông tin m ật cần được chia sẻ với một bên thứ hai vì khi đó cần phải chuyển giao chìa khóa cho đối tác mà việc chuyển giao chìa khóa trong môi trường mở có nhiều nguy cơ bị lộ và như vậy việc mã hóa về sau trở thành vô nghĩa!
Mã đối xứng chỉ có thể sử dụng cho nhiều đối tác (multiple users) với điều kiện là có thể “mặt đối m ặt” để trực tiếp chuyển giao khóa mã trong môi trường tin cậy hoặc có một biện pháp tin cậy nào
Chương 2: Mã hóa khóa đối xứng 49
đó để chuyển giao khóa mã một cách an toàn. Nếu không có biện pháp chuyển giao khóa mã an toàn, tương đương với việc trao tay trực tiếp thì hầu như mã đối xứng không đảm bảo được yêu cầu nào trong 5 nguyên lý bảo m ật thông tin đã nêu ở chương trước cả! (Vấn đề này sẽ được xem xét ở những chương 3 và 4 sau đây)
2.5. MỘT SỐ PHẦN MỀM MÃ HÓA ĐỐI XỨNG
Blowfish
Blowfish là một thuật toán mã hóa đối xứng (64 bit cipher) do Bruce Schneier thiết kế năm 1993. Blowfish có các độ dài khóa từ 32 đến 448 bit. Người ta đã nghiên cứu phân tích khá kỹ về các thuộc tính của Blowfish và nó cũng được đánh giá là một thuật toán mã hóa mạnh.
CAST
CAST được đặt theo tên viết tắt của các nhà phát minh ra nó là Carlisle Adams và Stafford Tavares. CAST là một thuật toán mã hóa rất phổ biến, mã hóa khối cipher 64 bit và cho phép độ dài khóa lên đến 128 bit.
IDEA
Thuật toán mã hóa dữ liệu quốc tế IDEA (International Data Encryption Algorithm) là một thuật toán mã hóa đối xứng do TS. X. Lai và GS. J. Massey xây dựng nhằm thay thế thuật toán DES chuẩn. IDEA cũng sử dụng khóa có độ dài là 128 bit. Kích thước lớn của khóa làm cho IDEA rất khó bị phá vỡ bằng tấn công bạo lực do thời gian duyệt tất cả các khả năng có thể có của khóa là quá lớn.
RC2
RC2 là một thuật toán mã hóa có kích thước khóa thay đổi. Ron Rivest đã thiết kế RC2 cho Gông ty An toàn Dữ liệu RSA nhưng mọi chi tiết vẫn giữ bí m ật, chưa được công bố.
50 Giáo trinh mật mã học và hệ thống thông tin an toài
RC4
RC4 cũng là một thuật toán do Ron Rivest phát triển năm 1987 Đấy là một thuật toán mã hóa dòng với khóa có kích thước thay đổi Kích thước khóa của RG4 có thể đạt tới 2048 bit (thông thường là 256 bit)
RC6
RG6 là thuật toán mã hóa khối đối xứng do Ron Rivest, Matt Robshaw, Ray Sidney, và Yiqun Lisa Yin thiết kế nhằm đáp ứng yêu cầu của cuộc thi AES (Advanced Encryption Standard). Thuật toán RC6 là phần mềm lọt vào chung kết của cuộc thi đó và được chọn là phần mềm mã hóa tiên tiến tiêu chuẩn (AES).
Serpent
Serpent là thuật toán mã hóa khối đối xứng do Ross Anderson, Eli Biham and Lars Knudsen phát triển. Serpent có thể làm việc với nhiều tổ hợp khóa có độ dài khác nhau. Serpent cũng là một trong 5 phần mềm lọt vào chung kết cuộc thi AES.
Twofish
Twoi’ish là một thuật toán mã hóa đối xứng khối, có kích thước khối là 128 và chấp nhận các khóa có mọi độ dài cho đến 256 bit. Twofish 'do Bruce Schneier, John Kelsey, Chris Hall, Niels Ferguson, David Wagner and Doug Whiting thiết kế. Viện quốc gia về tiêu chuẩn và công nghệ NIST (The National Institute of Standards and Technology) đã chấp nhận đầu tư để Tvvoíish trở thành một trong các dự án thay thế cho thuật toán mã hóa DES trước đây.
3
QUẢN LÝ VÀ PHÂN PHỐI KHÓA
Như đã thấy ở chương 2, nhược điểm lớn nhất của mã hóa đối xứng là vấn đề chuyển giao, trao đổi khóa mã giữa các đối tác trong môi trường không tin cậy. Rõ ràng là một người dùng có thể sử dụng mã hóa đối xứng để bảo vệ rất tốt thông tin của chính mình chống sự xâm nhập của kẻ khác nhưng nếu muốn sử dụng được mã hóa đối xứng trong bảo m ật thông tin giao dịch giữa nhiều đối tác thì nhất thiết phải xác lập những phương thức chuyển giao khóa mã an toàn.
3.1. TRUNG TÂM PHÂN PHỐI KHÓA (KDC)
3.1.1. Khái niệm KDC
Trong m ật mã học, Trung tâm phân phối khóa (KDG: Key Distribution Center) là một phần của một hệ thống m ật mã có mục đích giảm thiểu những hiểm họa khi trao đổi khóa mã giữa các đối tác. KDG thường được tổ chức thành hệ thống, trong đó một số người dùng có thể được phép sử dụng một vài dịch vụ chỉ trong một khoảng thời gian nào đó.
Chẳng hạn, một người quản trị mạng máy tính thiết lập một quy định chỉ cho phép một số người dùng được sử dụng chức năng phục hồi dữ liệu từ một số văn bản (có thể vì sợ rằng nếu để sử dụng tùy
52 Giáo trình mật mã học và hệ thống thông tin an toán
tiện thì có những kẻ xấu sẽ thâm nhập được những thông tin nội bộ cần bảo mật). Nhiều hệ điều hành có thể kiểm tra việc tiếp cận chức năng phục hồi dữ liệu văn bản đó thông qua một “dịch vụ hệ thống”. Nếu dịch vụ hệ thống đó được tổ chức theo cơ chế là chỉ cấp quyền truy cập chức năng cho những người dùng nào có một “thẻ chứng nhận quyền truy cập” thì vấn đề quy lại chỉ là việc tổ chức cấp thẻ cho những đối tượng mà hệ thống công nhận là thích hợp. Trong trường hợp thẻ chứng nhận đó là một khóa mã hoặc bao gồm một khóa mã thì ta có thể xem cơ chế đó như là một KDC.
3.1.2. Mô tả hoạt động
Hoạt động điển hình của các KDC gồm trước hết là việc tiếp nhận một yêu cầu của người dùng đối với một dịch vụ nào đấy. KDC dùng kỹ thuật mã hóa để nhận tính xác thực của dạng người dùng, tiếp đó kiểm tra xem người dùng đó có thuộc danh sách người được quyền sử dụng dịch vụ mà họ yêu cầu không. Nếu xác thực và kiểm tra đúng thì KDC có thể cấp thẻ chứng nhận truy cập.
KDG thường hoạt động với các mã khóa đối xứng.
Trong phần lớn các trường hợp KDG chia sẻ một khóa mã với mỗi đối tác. KDC tạo một thẻ chứng nhận dựa trên một khóa mã hóa máy chủ (server key). Người dùng nhận khóa mã đó và xuất trình cho máy chủ tương ứng kiểm tra, nếu phù hợp thì sẽ cấp quyền truy cập sử dụng dịch vụ.
3.2. TRAO ĐỔI KHÓA DIFFIE (D-H)
3.2.1. Khái niệm (D-H)
Trao đổi khóa D-H (Diííie-Hellman) là phương thức sử dụng một sơ đồ đặc biệt dùng để trao đổi khóa mã giữa các đối tác một cách an toàn. Phương thức Diffie-Hellman cho phép hai đối tác không biết gì với nhau từ trước có thể thỏa thuận với nhau để sử dụng chung một
Chương 3: Qtiản lý và phân phối khóa 53
khóa mã bí m ật thông qua một môi trường giao dịch không an toàn. Khóa bí mật đó (thường là một khóa đối xứng có tốc độ lập mã, giải mã nhanh chóng) về sau sẽ được hai hoặc nhiều đối tác sỏ dụng cho những thông điệp giao dịch nội bộ của mình.
Sơ đồ trao đổi khóa này được Whitfield Diffie và Martin Heilman công bố lần đầu tiên vào năm 1976 trong một công trình hợp tác nghiên cứu về phướng thức chia sẻ bí mật qua một kênh truyền thông không tin cậy. Đến năm 2002, Hellman đề nghị gọi tên thuật toán là trao đổi khóa Diffie-Hellman-Merkle để ghi nhận đóng góp của Ralph Merkle. Tiếp đó, John Gill đề nghị ứng dụng thêm các bài toán logarit rời rạc, ý tưởng này đã được Malcolm Williamson nghiên cứu trước đó ít lâu nhưng mãi đến 1997 mới công bố công khai.
3.2.2. Mô tả
Dijfie-Hellnian đã thiết lập một sơ đồ trao đổi bí mật riêng tư có thể sử dụng cho việc truyền các thông tin bí mật bằng cách trao đổi dữ liệu qua một mạng truyền thông công cộng.
Sau đây là sơ đồ minh họa (hình 3.1).
Alice Bob
K= Ab mod p = (ga mod p)b mod p = gab mod p = (gb mod p)a mod p = Ba mod p Hình 3.1: Trao đổi khóa Dijfie-Hellman
Ý tưởng đơn giản và độc đáo của thủ tục này là việc ứng dụng một nhóm nhân số tự nhiên modulo p, trong đó p là một số nguyên tố còn g là nguyên tố gốc mod p. Xem ví dụ sau đây:
54 Giáo trình mật mã học và hệ thống thông tin an toàn
An Bình
Bí mật Công khai Tính toán Gửi Tính toán Công khai Bí mật a P. 9 P. g -> b a P. g. A ga mod p = A A -> 4 P. 9 b a P. g. A <- B gb mod p = B p, g. A, B b a, s p. g, A, B B* mod p = s Ab mod p = s p, g. A, B b, s
1. An và Bình thống nhất dùng số nguyên tố p=23 và cơ sở g = 5.
2. An chọn một số nguyên bí mật a = 6, rồi gửi cho Bình số A = ga mod p (công khai)
A = 56 mod 23
A = 15.625 mod 23
A = 8
3. Bình chọn một số nguyên bí mật b = 15, rồi gửi cho An số B = Ềh mod p
B = 515 mod 23
B = 30.517.578.125 mod 23
B = 19
4. An tính toán: s = B " mod p
s = 196 mod 23
s = 47.045.881 mod 23
s = 2
5. Bình tính toán s = A h mod p
s = 8 15 mod 23
s = 35.184.372.088.832 mod 23
s = 2
Chương 3: Qiiản lý và phân phối khóa 55
6. An và Bình chia sẻ nhau con số bí mật: s = 2. Sở dĩ như vậy là vì 6" 15 cũng như là 15*6. Khi đó nếu bất kỳ người nào biết được cả hai số nguyên riêng của cả An và Bình thì cũng đều có thể tính được s như sau:
s = 56 15 mod 23
s = 515"6 mod 23
s = 59<) mod 23
s = 807.793.566.946.316.088.741.610.050.849.573.099. 185. 363.389.551.639.556.884.765.625 mod 23
s — 2
Gả An và Bình cùng tìm ra một kết quả do bởi (ga)h và (ghỴl là bằng nhau theo mod p. Chú ý là chỉ cần giữ bí mật a, b và gab = gba mod p. Mọi giá trị khác như p, g, g“ mod p, và gb mod p đều có thể gửi đi công khai. Một khi An và Bình đã tính ra được con số nguyên bí mật mà họ chia sẻ thì họ có thể sử dụng nó như là một khóa lập mã mà chỉ có hai người họ biết để trao đổi thông điệp cho nhau thông qua chính kênh thông tin mở đó. Tất nhiên nếu muốn đảm bảo bí mật hơn thì cần phải chọn các số a, b, và p khá lớn vì như ta thấy, có thể dễ dàng duyệt hết mọi giá trị có thể có của gíứ> mod 23 vì rằng chỉ có 23 số nguyên có khả năng là số dư trong phép chia cho 23 (mod 23). Nếu p là một số nguyên tố với ít nhất khoảng 300 con số còn a và b có độ dài ít nhất 100 con số thì mọi thuật toán hiệu nghiệm nhất hiện nay được biết đến cũng đều không có khả năng tìm ra số a nếu chỉ biết các số g, p, gb mod p và ga mod p, cho dù tận dụng mọi năng lực tính toán của con người. Bài toán này được biết đến dưới tên gọi là bài toán logarit rời rạc. Cũng nên chú ý thêm là g không cần phải chọn số lớn, trong thực hành người ta thường chỉ cần lấy g bằng 2 hoặc 5 là được.
Sau đâv ta xem xét một cách mô tả tổng quát liơn Cĩìa thuật toán
An và Bình thống nhất với nhau một nhóm cyclic hữu hạn G và một plứin tử sinhg thuộc G. (Trong suốt toàn bộ thuật toán về sau ta
56 Giáo trình mật má học và hệ thống thông tin an toàn
đều giả thiết như vậy và giả sử những kẻ tấn công đều biết được g). Ta sẽ viết nhóm G dưới dạnỀ nhóm nhân.
1. Bình lấy một số tự nhiên bất kỳ b và gửi gb cho An.
2. An tính (gbỴ.
3. Bình tính Cg“) b.
Bấy giờ cả Bình và An đều có phần tử g* của nhóm, phần tử đó có thể sử dụng như là khóa trao đổi giữa hai người. Gác giá trị (gbỴ = (g“)b vì nhóm có tính kết hợp đối với phép nhân.
Sơ đồ tóm tắt: (Giả sử tồn tại Công là một kẻ đọc lén thông tin giao dịch giữa An và Bình)
Gọi s = khóa bí m ật được chia sẻ. s = 2
g = cơ số công khai, g = 5
p = số nguyên tố công khai, p = 23
a = khóa bí m ật của An. a = 6
A = khóa công khai của An. A = ga mod p = 8
b = khóa bí mật của Bình, b = 15
B = khóa công khai của Bình. B = gb mod p = 19 An Bình Công
BiếtKhông
biếtBiếtKhông
biếtBiếtKhông
biét
p = 23 b = ? p = 23 a = ? p = 23 a = ? Cơ số g = 5 Cơ số g = 5 Cơ số g = 5 b = ? a = 6 b = 15 s = ? A = 56 mod 23 = 8 B = 51S mod 23 = 19 A = 5" mod 23 = 8
B = 5b mod 2 3 = 19 A = 5a mod 23 = 8 B = 5b mod 2 3 = 19 s = 196 mod 23 = 2 s = 8 '5 mod 23 = 2 s = 19“ mod 23 s = 8b mod 23 = 2 s = 19“ mod 23 = 2 s = 8b mod 23
s = 196 mod 23 = 8b mod 23
s = 815 mod 23 = 19“ mod 23
s = 19* mod 23 = 8b mod 23
c\l
ư)
IIs = 2
Chương 3: Quản lý và phân phối khóa 57
3.2.3. Tính bảo mật
An rất khó có thể tính toán để tìm ra khóa riêng của Bình cũng như Bình khó tìm ra khóa riêng của An. Nếu điều đó dễ dàng thì kẻ đứng giữa Gông có thể tấn công bằng cách gửi các khóa của mình giả mạo thay thế và có thể nắm bắt được mọi thông tin trao đổi giữa An và Bình đồng thời có thể gửi những thông điệp giả mạo.
Sau đây là lập luận của Diffie-Hellman để chứng tỏ điều đó (Chỉ sử dụng hai số bé để tiện cho thực hành).
Giao thức được xem là bí mật đối với những kẻ đọc lén nếu như G và g được chọn đúng đắn. Kẻ đọc lén phải giải bài toán Diffie-Hellman để phân tích được gab, điều này hiện nay được xem là rất khó. Một thuật toán giải được bài toán logarit rời rạc đó sẽ cho phép ta tính được a hoặc b và từ đó giải được bài toán Diffie-Hellman do đó làm cho thuật toán mã hóa này cũng như nhiều hệ thống mã hóa khóa công khai khác trở thành không an toàn nữa. Gấp của nhóm G phải là một số nguyên tố hoặc phải có một ước số nguyên tố lớn để không dùng được thuật toán Pohlig-Hellman khi tìm a hoặc b. Vì lý do đó đôi khi người ta dùng m ột số lìgiivên tố Sophie Gemưiin
q để tính p —2 q + l, được gọi là số ngiivên tố an toàn vì rằng cấp của G khi đó chỉ chia hết cho 2 và q. Lúc ấy nhiều khi ta thường chọn chính là g thay cho G để tổng quát hóa nhóm con cấp q của G, sao cho kv hiệu Legeiưire của ga nhưng không bao giờ để lộ ra bit cấp thấp hơn của a.
Nếu An và Bình dùng những số sinh ngẫu nhiên có các số hệ quả không hoàn toàn ngẫu nhiên mà có thể dự đoán một mức độ nào đó thì công việc của kẻ nghe lén Gông sẽ dễ dàng hơn nhiều. Gác số nguyên bí m ật a và b đều loại bỏ khi kết thúc phiên giao dịch. Vì vậy trao đổi khóa Diffie-Hellman có thể hướng tới khả năng bảo mật toàn vẹn vì không có khóa bí mật nào được tồn tại sử dụng lâu cho nên khả năng bị lộ khóa là rất thấp.
58 Giáo trình mật mã học và hệ thống thông tin cin toàn
Trong mô tả đầu tiên, bản thân sơ đồ trao đổi của Ditie-Hellman không cung cấp việc xác thực nhau của hai đối tác, do đó có khả năng bị sự tấn công của người đứng giữa. Một kẻ nghe lén như Công có thể tạo ra hai sự trao đổi Dit'fie-Hellman, lúc trao đổi với An thì mạo danh Bình và ngược lại lúc trao đổi với Bình thì mạo danh An, do vậy có thể tấn công nắm bắt được bí mật trao đổi của cả hai người. Vì vậy ta thấy nhất thiết cần phải có biện pháp xác thực đối tác khi sử dụng sơ đồ trao đổi khóa Diffie-Hellman.
3.2.4. Thỏa thuận khóa nhận dạng mật khẩu
Khi An và Bình chia sẻ một mật khẩu, họ phải dùng một dạng thỏa thuận khóa xác thực m ật khẩu PAKE (Password-authenticated key agreem ent) của Diffie-Hellman để phòng ngừa tấn công của kẻ đứng giữa. Một sơ đồ đơn giản là dùng phần tử sinh g làm mật khẩu. Một đặc điểm của các sơ đồ này là một kẻ tấn công chỉ có thể thử một mật khẩu duy nhất cho một lần trao đổi với đối tác, do đó hệ thống có thể đảm bảo an toàn cao đối với cả những m ật khẩu yếu. Sơ đồ này được mô tả trong bản Khuyến cáo X.1035 của ITƯ-T, sử dụng cho chuẩn kết nối mạng gia đình.
3.3. KERBEROS
Kerberos là một hệ thống giao thức xác thực an toàn trên mạng máy tính trước tiên được phát triển tại Viện Công nghệ Massachusett MIT (Massachusett Institute of Technology) về sau được dùng rộng rãi ở Mỹ. Kerberos cho phép các nút mạng chứng minh “căn cước” (identity) của mình với các đối tác, thông qua một môi trường giao dịch không tin cậy. Thoạt đầu Kerberos được thiết kế theo sơ đồ xác thực client-server (giữa máy khách - máy chủ) và sau đó cung cấp dịch vụ xác thực lẫn nhau (mutual authentication), Kerberos được mặc định sử dụng cổng 88.
Chĩtơng 3: Quản lý và phân phối khóa 59
Kerberos dùng mã khóa đối xứng. Các khóa đối xứng này được máy chủ Kerberos trao cho từng người sử dụng đã đăng nhập hệ thống. Mỗi người sử dụng được phép tạo một mật khẩu xác thực gửi cho máy chủ Kerberos để được nhận và dùng khóa mã. Để thực hiện được, hệ thống Kerberos đòi hỏi cấu hình mạng rất phức tạp và khó quản lý: máy chủ của mỗi website đăng ký sử dụng đều phải có máy chủ riêng được cài đặt Kerberos và máy chủ của hệ thống (bên thứ ba) sẽ phân phối khóa mã cho mỗi website đồng thời lưu giữ chúng lại để kiểm tra và đối chứng khi cần thiết.
3.3.1. Vài nét lịch sử
MIT phát triển Kerberos nhằm bảo vệ các dịch vụ mạng cung cấp bởi dự án có tên là Athena. Do vậy giao thức được đặt một tên gọi theo thần thoại Hy Lạp là Kerberos (hay Cerberus), tên của con chó ngao 3 đầu trấn giữ cung điện cùa Diêm vương Hades.
(
Hình 3.2: Diêm -vương Hades và con chó ngao 3 đầu Cerberus
Các phiên bản 1 - 3 chỉ được lưu hành trong nội bộ MIT. Steve Miller và Clifford Neuman công bố phiên bản 4 vào cuối những năm
60 Giáo trình mật mã học và hệ thống thông tin an toàn
1980. Phiên bản 5 do John Kohn và G. Neuman thiết kế, được công bố năm 1993 lấy tên là RFC 1510 (sau đó nâng cấp thành RFC 4120 năm 2005) với ý đồ khắc phục những hạn chế về bảo m ật của phiên bản 4.
Năm 2007 MIT thành lập công ty Kerberos nhằm phát triển thêm công cụ bảo m ật này với sự bảo trợ của các công ty thương mại hàng đầu trong CNTT như Sun Microsystems. Apple Inc., Google, Microsoft... và một số trường đại học như Viện Gông nghệ Hoàng gia KTH (KTH-Royal Institute of Technology) và Đại học Stanford.
Thoạt đầu chính phủ Hoa Kỳ cấm xuất khẩu Kerberos vì nó sử dụng thuật toán mã hóa DES với khóa 56 bit nên được xếp vào danh sách “công nghệ hỗ trợ quốc phòng”. Tại Viện Gông nghệ Hoàng gia KTH, Thụy Điển, dựa trên một phiên bản đơn giản eBones do MIT được phép xuất khẩu đã phát triển một phiên bản Kerberos bên ngoài Hoa Kỳ từ trước khi Hoa Kỳ thay đổi quy định về xuất khẩu mật mã năm 2000.
Windows 2000 và các hệ điều hành Windows tiếp sau đều sử dụng Kerberos làm phương thức xác thực mặc định. Một số phần bổ sung của Microsoft vào họ giao thức Kerberos suite được cung cấp trong phiên bản RFC 3244 (đặt và thay đổi m ật khẩu) "Mú^roso/t Windows 2000 Kerberos Change Password and Set Password
P r o to c o lsRFC 4757 của Microsoft sử dụng thuật toán mã hóa RC4 cipher. Tuy nhiên Microsoft chỉ sử dụng giao thức Kerberos mà không sử dụng phần mềm được phát triển của MIT.
Nhiều hệ điều hành UNIX và tựa UNIX bao gồm FreeBSD, Mac OS X của hãng Apple, Red Hat Enterprise Linux 4, Sun's Solaris, AIX của IBM, OpenVMS của HP và nhiều hệ điều hành khác cũng tích hợp phần mềm xác thực Kerberos cho người dùng hay cho các dịch vụ của họ. Từ năm 2005, nhóm công tác IETF Kerberos liên tục cập
Chương 3: Quản lý và phản phối khóa 61
nhật những kết quả mới của họ. Những kết quả được cập nhật gần đây là:
- Encryption and Checksum Specifications" (RFC 3961).
- Advanced Encryption Standard (AES) Encryption for Kerberos 5 (RFC 3962).
- "The Kerberos Network Authentication Service (V5)" ( RFC 4120)
- "The Kerberos Version 5 Generic Security Service
Application Program Interface (GSS-API) Mechanism: Version 2." (RFC 4121).
- Mới nhất gần đây ngày 22 - 12 - 2010 - krb5-1.9 được công bố 3.3.2. Cơ sở lý thuyết
Cơ sở lý thuyết của Kerberos là giao thức đối xứng Needham Schroeder. Giao thức này sử dụng một bên thứ ba được tín nhiệm, chính là môt trung tâm phân phối khóa KDC (Key Distribution Center) gồm hai thành phần tách biệt nhau về mặt logic: Một máy chủ xác thực AS (Authentication Server), và một máy chủ cấp tích-kê TGS (Ticket Granting Server). Kerberos hoạt động dựa trên các “tích-kê” được sử dụng để xác thực căn cước của người dùng.
KDG lưu giữ một cơ sở dữ liệu khóa bí mật, mỗi thành viên trên mạng (tức là mỗi máy chủ hay người dùng bất kỳ) được chia sẻ một khóa mà chỉ có thành viên đó và KDG cùng biết mà thôi: khóa bí mật đó cũng dùng để chứng minh căn cước của thành viên. Khi hai thành viên cần giao tiếp, KDG sẽ sinh ra một khóa phiên nhằm bảo đảm tương tác giữa hai thành viên đó. Tính an toàn của giao thức phụ thuộc rất nhiều đến việc các thành viên đảm bảo giao dịch đồng bộ trong một thời gian ngắn thường gọi là tích-kê Kerberos.
62 Giáo trình mật mã học và hệ thống thông tin an toàn
3.3.3. Mô tả minh họa
Đầu phiên giao dịch, thành viên An được xác thực tại máy chủ xác thực (AS) và nhận được một “thẻ tích-kê” có đánh dấu thời gian. Tiếp đó An liên lạc với máy chủ cấp tích-kê (TGS) dùng thẻ tích-kê để chứng minh căn cước của mình và yêu cầu cung cấp dịch vụ. Nếu thẩm định đúng là An có quyền sử dụng dịch vụ đã yêu cầu thì TGS lại gửi thêm một tích-kê khác cho An. Bấy giờ An tiếp xúc với máy chủ cung cấp dịch vụ, xuất trình tích-kê mới để chứng minh rằng mình đã được cho phép sử dụng dịch vụ yêu cầu.
Máy chủ xác thực (AS)
E, F
Tích-kê máy khách sang máy chủ
---------------------------------------------------------------------
______Xác thực_____________________
H
Xác thực thời gian
AS = Máy chủ xác thực;
s s = Máy chủ cung cấp dịch vụ;
TG S = Máy chủ cấp phát tích-kê;
TG T = Tích-kê cấp tích-kê.
Hình 3.3: Sơ đồ giao dịch thương lượng Kerberos
Chương 3: Quản lý và phân phối khóa 63
Thành viên được xác thực từ AS khi sử dụng một mật khẩu (bí mật chia sẻ dài hạn) và nhận được một TGT từ AS. Tiếp đó khi thành viên muốn tiếp xúc với s s nào thì người đó phải dùng tích-kê đó để đề nghị TGS cấp thêm cho mình một TGT bổ sung để giao dịch với s s mà không lộ m ật khẩu bí mật đã chia sẻ giữa mình với AS. s s căn cứ vào TGT bổ sung để xác thực khách hàng để cung cấp dịch vụ.
Gác bước chi tiết được mô tả như sau đây:
Dăĩig nỉiập phía klưích:
1. Khách dùng m ột tên sử dụng và một mật khẩu (tisertuime & password) trên máy khách.
2. Khách thực hiện một hàm một chiều (thường là một hàm băm) đối với mật khẩu: đấy là khóa bí mật của khách /thành viên.
Nhận dạng klưich:
1. Khách gửi một thông điệp rõ về ID của người sử dụng cho AS để yêu cầu dịch vụ (Chú ý: Không gửi khóa bí mật và mật khẩu cho AS). AS sinh một khóa bí mật bằng cách dùng hàm băm đối với mật khẩu của người dùng đã lưu ở cơ sở dữ liệu của mình (Active Directory trong máy chủ Windows)
2. AS kiểm tra xem người khách đã có trong cơ sở dữ liệu chưa. Nếu đã có, AS gửi lại 2 thông điệp cho khách:
+ Thông điệp A: Khóa phiên TGS cho klìách được mã hóa bởi khóa bí m ật của khách - người dùng.
+ Thông điệp B: Tích-kê để nhận tích-kê (ticket-to Get-Ticket) (bao ếồni căn cước - ID của khách, địa chỉ mạng của khách và thời hạn có hiệu lực của tích-kê), được mã hóa bằng khóa bí m ật của TGS.
64 Giáo trình mật mã học và hệ thống thông tin an toàn
3. Khi người khách nhận được 2 thông điệp A và B, phải giải mã thông điệp A bằng khóa bí mật sinh từ mật khẩu mà khách đã nhập. Nếu mật khẩu khách nhập không đúng với m ật khẩu đã lưu trong cơ sở dữ liệu của AS thì khóa bí mật sẽ khác đi, do đó không giải mã được thông điệp. Nếu đúng, khách giải mã được thông điệp A và nhận được khóa phiên TGS cho khách.
Khóa phiên này sẽ được dùng cho việc liên lạc về sau với TGS (Chú ý: Khách không thể giải mã thông điệp B vì thông điệp này mã hóa bàng khóa bí mật của TGS). Đến lúc đó, người khách đã có đủ thông tin để được xác thực bởi TGS.
Dịch VII cấp phép:
1. Khi yêu cầu dịch vụ, khách gửi 2 thông điệp sau đây đến TGS: c
- Thông điệp G: Gồm TGT nhận được trong thông điệp B và ID của dịch vụ mình yêu cầu.
- Thông điệp D: Thông điệp xác thực (Authenticator) (gồm ID của khách và dấu xác nhận thời hạn hiệu lực), mã hóa bằng khóa phiên TGS cho khách.
2. Khi TGS nhận được 2 thông điệp G và D, sẽ tách thông điệp B từ trong G ra và dùng khóa bí mật của TGS để giải mã và thu được khóa phiên TGS cho khách. Dùng khóa phiên đó TGS giải mã thông điệp xác thực D và gửi cho khách 2 thông điệp
sau đây:
- Thông điệp E: Tích-kê m áy khách sang máy chủ gồm ID của khách, địa chỉ mạng của khách, thời hạn hiệu lực và khóci phiên Máy khách/M áy chủ) đều được mã hóa bởi khóa bí mật của máy chủ cung cấp dịch vụ khóa.
Thông điệp F: Khóa phiên máy khách/ĩiứiy chủ (client/server) được mã hóa bởi khóa phiên TGS cho máy khách.
Chương 3: Qucin lý và phân phối khóa 65
Yêu cầu dịch mi của kỉuích Ììàììg:
1. Khi nhận được thông điệp E và F từ TGS, khách hàng có đủ thông tin để được xác thực tại ss. Khách kết nối với s s để gửi 2 thông điệp sau:
- Thông điệp E của bước trước đây (tích-kê máy khách đến máy chủ, mã hóa bằng khóa bí mật của SS)
- Thông điệp G, một thông điệp xác thực khác, gồm ID của khách và thời hạn hiệu lực được mã hóa bằng khóa phiên nvxy khách/m áy chủ.
2. ss giải mã tích-kê nhận được bằng khóa bí mật của bản thân để nhận được khóa phiên máy khách/máy chủ. Sử dụng khóa phiên đó, s s giải mã thông điệp xác thực và gửi lại thông điệp H (cũng dùng khóa phiên máy khách/máy chủ để mã hóa), nhằm khẳng định là s s đã xác thực được khách và sẵn sàng phục vụ (thời hạn hiệu lực được cộng thêm 1).
3. Khách giải mã H bằng khóa phiên máy khách/m áy chủ và kiểm tra xem thời hạn hiệu lực đã cập nhật đúng chưa. Nếu đúng rồi thì có thể bắt đầu thực hiện dịch vụ mình yêu cầu.
4. ss cung cấp dịch vụ được yêu cầu cho khách (thanh toán, chuyển khoản, giao dịch khác,v.v.)
3.3.5. Một số nhược điểm
Kerberos có một số nhược điểm chính sau đây:
- Hệ thống yêu cầu phải có một máy chủ trung tâm hoạt động liên tục, nếu máy chủ Kerberos bị ngừng thì toàn hệ thống không còn truy cập được. Muốn tránh được điều này ta có thể sử dụng đồng thời nhiều máy chủ đồng dạng.
66 Giáo trình mật mã học và hệ tliống thông tin an toàn
- Giao thức Kerberos yêu cầu thời gian đồng bộ rất chính xác vì các tích-kê dùng trong việc xác thực có một thời hạn hiệu lực rất ngắn. Nếu đồng hồ của các thành viên tham gia mạng có sai lệch đáng kể với đồng hồ của máy chủ Kerberos thì việc xác thực không thực hiện được do đó dịch vụ cũng không thể hoạt động.
- Giao thức quản trị không được tiêu chuẩn hóa giữa các cấu trúc mạng sử dụng khác nhau.
- Do mọi việc xác thực đều tập trung vào một KDG trung tâm nên nếu thiết bị trung tâm đó bị xâm nhập thì tất cả các thành viên sử dụng đều chịu ảnh hưởng.
4
MÃ HÓA KHÓA CÔNG KHAI
Như đã nói ở chương 2, các thuật toán mã hóa khóa đối xứng có một nhược điểm căn bản là hai người muốn trao đổi thông tin bí mật cần phải trao đổi khóa bí mật trước đó. Khóa bí mật này cần phải được trao đổi theo một cách thức an toàn, không phải bằng các phương thức thường dùng để liên lạc trong môi trường mở vì dễ bị lộ. Điều này khó thực hiện và nói chung là không thể đảm bảo bí mật, nhất là trong trường hợp muốn trao đổi thông tin với nhiều đối tác thì thực tế là không thực hiện được.
Vì vậy mã hóa khóa công khai (hay khóa bất đối xứng) được đưa ra như là một giải pháp thay thế. Thực ra mã bất đối xứng không thay thế hoàn toàn mã đối xứng mà người ta sử dụng đồng thời cả hai loại để bổ sung, hỗ trợ cho nhau.
4.1. VÀI NÉT LỊCH sử
Năm 1874, William Stanley Jevons xuất bản một cuốn sách mô tả mối quan hệ giữa các hàm một chiều (one w ay function) với mật mã học, đồng thời đi sâu vào bài toán phân tích ra thừa số nguyên tố (sử dụng trong thuật toán RSA). Tháng 7 năm 1996, một nhà nghiên cứu đã bình luận về cuốn sách trên như sau:
68 Giáo trình mật mã học và hệ thống chôìig tin an toàn
“Trorig cuốn The Principles of Science: A Treatise on Logic and Scientific Method được xuất bản năm 1890, William s. Jevons đã phát hiện nhiều phép toán rất dễ thực hiện theo một chiều nhưng rất khó theo chiều ngicợc lại, diều dó chứng tỏ nhiều tỉuụit toán mã hóa thực hiện rất dễ dàng trong khi giải inã thì rất khó khăn. Chẳng hạn tác giả nêu ra bài toán: ta có thể nhân để tìm tích số cỉia các số nguyên tố nhưng Iigitợc lại, muốn plứìn tích một số tự ĩúúên khá lớn ra các thìíci số ngiivên tố thì là diều không dễ dàng (thuật toán Euclide).
Đcĩv chính là nguyên tắc cơ bản của thxiệit toán m ật nữí tìóa khóa công khai RSA (tuy rằng tác gicĩ không pìưii là ngitời phát minh ra mật mã hóa khóa công khai) ”
Thuật toán mật mã hóa khóa công khai được thiết kế lần đầu tiên bởi James H. Ellis, Clifford Cocks, và Malcolm Williamson tại Anh vào đầu thập kỷ 70 của thế kỷ trước. Thuật toán đó sau này được phát triển và biết đến dưới tên thuật toán Difiie-Hellman, và là một trường hợp đặc biệt của RSA. Tuy nhiên những thông tin này chỉ được tiết lộ ra vào năm 1997.
Năm 1976, Whitfield Diffie và Martin Hellman công bố một hệ thống mật mã hóa khóa bất đối xứng trong đó nêu ra phương pháp trao đổi khóa công khai. Công trình này chịu sự ảnh hưởng từ các công bố trước đó của Ralph Merkle về phân phối khóa công khai Trao đổi khóa Dit't'ie-Hellman là phương pháp đầu tiên có thể áf dụng trong thực tế để phân phối khóa bí mật trong môi trường mở thông qua các kênh thông tin không an toàn. Kỹ thuật thỏa thuậi khóa của Merkle có tên là hệ thống câu đố Merkle.
Thuật toán mã hóa khóa công khai có cơ sở hoàn chinh đầu tiêi cũng được Ron Rivest, Adi Shamir và Leonard Adleman khởi xướni vào năm 1977 tại Học viện Kỹ thuật Massachusett MIT (Massachuset
Chxiơng 4: Mã hóa khóa công khai 69
Institute of Technology). Gông trình này được công bố vào năm 1978 và thuật toán được đặt tên là thuật toán RSA - theo 3 chữ cái đầu của các đồng tác giả. RSA sử dụng phép toán lũy thừa theo modulo (với modulo được tính bằng tích số của 2 số nguyên tố lớn) để mã hóa và giải mã cũng như tạo chữ ký số. Độ an toàn của thuật toán được đảm bảo vì không tồn tại kỹ thuật hiệu quả để phân tích một số rất lớn thành thừa số nguyên tố.
Kể từ thập kỷ 1970, đã có rất nhiều thuật toán mã hóa, tạo chữ ký số, thỏa thuận khóa... được phát triển. Gác thuật toán như ElGamal do Netscape phát triển hay thuật toán mã hóa đối xứng DSA do NSA và NIST chủ trì cũng dựa trên các bài toán lôgarit rời rạc tương tự như RSA. Vào giữa thập kỷ 1980, Neal Koblitz bắt đầu cho một dòng thuật toán mới: mật mã đường cong elliptic và cũng tạo ra nhiều thuật toán mã bất đối xứng. Mặc dù cơ sở toán học của dòng thuật toán này phức tạp hơn nhưng lại ếiúp làm giảm khối lượng tính toán đặc biệt khi khóa có độ dài lớn.
4.2. MÃ HÓA KHÓA CÔNG KHAI
Mã hóa khóa công khai là một dạng 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 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 (Public key) và khóa riêììg (Private key) hay khóa bí mật (secret key).
4.2.1. Khái niệm chung
Thuật ngữ m ã /lóa bất đối Xĩhig thường được dùng đồng nghĩa với m ã hóa kìióa côĩig kìuiỉ 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ã 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 việc mã hóa và giải mã) đều cần phải giữ bí mật.
70 Giáo trình mật mã học và hệ thống thông tin an toàn
Trong mật mã khóa công khai, khóa riêng cầ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ể (hoặc rất khó) 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 xem nó có phải đã được tạo với một khóa bí mật nào đó hay không.
- Thỏa thuận khóa: cho phép thiết lập khóa để trao đổi thông tin mật giữa hai 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ính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng do những ưu điểm nổi bật nên chúng được sử dụng nhiều.
Thuật toán mã hóa bất đối xứng sử dụng hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa riêng). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người biết khóa công khai đều có thể mã hóa nhưng chỉ có người biết khóa riêng (bí mật) mới có thể giải mã được.
Ta có thể mô phỏng trực quan một hệ mã hóa khóa công khai như sau: Bình muốn gửi cho An một thông tin mật mà Bình muốn cho chỉ duy nhất An có thể đọc được. Để làm được điều này, An gửi cho Bình một chiếc hộp kín có ổ khóa đã mở sẵn và giữ lại chìa khóa. Bình nhận chiếc hộp, cho vào đó một lá thư viết bình thường
Chương 4: Mã Ixóa khóa công khai 71
và bấm khóa lại (loại khóa thông thường chỉ bấm là khóa, sau khi sập chốt là khóa lại ngay cả Bình cũng không thể mở lại được, không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bình ếỏi chiếc hộp cho An qua bưu điện thông thường hoặc nhờ người nào đó mang hộ. Nhân viên bưu điện hay người mang hộ dù muốn cũng không thể mở hộp để xem thư. Chỉ khi chiếc hộp đến tay An, An có chìa khóa riêng mới mở được hộp và đọc được thông tin trong thư. Trong ví dụ này, chiếc hộp với ổ khóa mở An gửi cho Bình đóng vai trò khóa công khai, chiếc chìa khóa riêng của An chính là khóa bí mật.
4.2.2. Sơ đồ tạo và chuyển giao khóa công khai
Các hệ thống mã hóa khóa công khai thông thường được thực hiện với 3 bước cơ bản. Bước thứ nhất là công đoạn sinh khóa, một cặp khóa public key và private key có quan hệ về toán học được tạo ra dựa vào các bài toán cửa lật một chiều. Bước hai là bước mã hóa sử dụng khóa công khai (public key), khóa này có thể được chuyển giao trên môi trường mở. Quá trình giải mã là bước cuối cùng sử dụng khóa riêng bí m ật (private key).
Gác bước thực hiện như sau:
- A chọn một số ngẫu nhiên lớn để sinh cặp khóa, khóa công khai E và khóa bí m ật riêng D.
- A gửi E-khóa công khai (public key) cho B, giữ D-khóa riêng (private key) cho mình.
- Dũng khóa công kìxai dể mã hóa, nhưng dùng khóa bí niật dế giải niã.
- B nhận được khóa công khai E. B có thông điệp gốc p, dùng E mã hóa E(P) = G, G là thông điệp mã hóa gửi cho A.
- A nhận được c , dùng D giải mã D(C) = P: được lại thông điệp gốc.
72 Giáo trình mật mã học và hệ thống thông tin an toàn
Hình 4.1: Chuyển giao khóa công khai
+ Chỉ riêng có A (có D) mới giải mã được
+ Ai có E đều mã hóa được
+ D dùng để giải E, nhưng nếu chỉ biết E thì hầu như chắc chắn là không thê tìm được D.
4.2.3. Phong bì số dạng đơn giản
Mã đối xứng có nhiều ưu điểm nhất là tốc độ lập mã và giải mã nhanh chóng. Thế nhưng nó lại có nhược điểm căn bản là sự không an toàn khi chuyển giao khóa trong môi trường không tin cậy. Ngược lại, mã bất đối xứng đảm bảo được an toàn trong việc chuyển giao khóa mã nhưng lại có nhược điểm là tốc độ lập mã, giải mã rất chậm.
Phong bì số (Digital envelope) là một biện pháp kết hợp của hai loại mã đối xứng và bất đối xứng để chuyển giao thông điệp an toàn và tin cậy. Trong trường hợp giao dịch 2 đối tác có thể dùng sơ đồ trao đổi khóa công khai nói trên làm một phong bì số để chuyển giao khóa mã đối xứng cho đối tác của mình trong môi trường giao dịch không tin cậy (chẳng hạn trong điều kiện không thể có “mặt đối m ặt”) như là dạng sau đây.
Sơ đồ chuyển giao khóa bí mật bằng phong bì số dạng đơn giản: Bước 1: Tạo plioìig bì số
- A tạo khóa công khai Ej gửi cho B, giữ khóa riêng D]
Chương 4: Mã hóa khóa công khai 73
- B tạo khóa riêng D-, (của B) giữ cho mình, tạo khóa công khai E2 (của B), dùng E] (nhận từ A) mã hóa: E,(E2) = E \ ếửi E’2 cho A.
- Ghi có A sở hữu khóa riêng D, nên giải mã được: E,(E’2) = E2. Từ đó chỉ có A và B cùng sỏ hữu khóa công khai Eo (do B tạo)
Bước 2: Chuyển gừio khóa đối xítĩig
- A tạo khóa đối xứng K dùng E2 mã hóa: E-,(K) = K’ gửi cho B - B dùng D2giải mã: D2(K’) = K
- Chỉ có A và B cùng biết khóa K, từ đó giao dịch bằng khóa đối xứng K.
Để tăng tính an toàn, A hoặc B thường xuyên có thể thay đổi khóa đối xứng và dùng phong bì số đã tạo để chuyển giao các khóa đối xứng mới cho nhau.
Tuy nhiên cần chú ý rằng phong bì số đơn giản loại này nếu sử dụng lâu thì có nhiều nguy cơ bị “tấn công của người đứng giữa” (man-in-the-middle attack) cho nên thông thường khi đã trao đổi xong một phong bì số đơn giản hai đối tác phải tiến hành “xác thực” lại bằng một phương pháp bổ sung nào đó.
4.2.4. Vấn đề phân phối khóa công khai
Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là một trong những yếu tố quyết định đối với độ an toàn của mã bất đối xứng. Quá trình phân phối khóa cần chống lại được tấn công của người đứng giữa.
Giả sử người thứ ba Gông có thể gửi cho Bình một khóa bất kỳ và khiến Bình tin rằng đó là khóa (công khai) của An. Như vậy đồng thời Công có khả năng đọc được thông tin trao đổi giữa Bình và An. Muốn vậy, Công sẽ gửi cho Bình khóa công khai của chính mình
74 Gưio trình mật nũi học và hệ thống thông till an toàn
(và làm cho Bình nghĩ rằng đó là khóa của An). Sau đó, Công dọc tất cả văn bản mã hóa do Bình gửi, giải mã với khóa bí m ật của mình, giữ lại một bản copy đồng thời mã hóa bằng khóa công khai của An và gửi cho An. về nguyên tắc, cả Bình và An đều không phát hiện ra sự can thiệp của người thứ ba. Các phương pháp chống lại dạng tấn công này dựa trên các chứng thực số (digital certificate) hoặc các thành phần của hạ tầng khóa công khai PKI (Public Key Infrastructure - xem chương 5).
4.3. THUẬT TOÁN RSA
Thuật toán này được Rivest, Shamir và Adleman mô tả lần đầu tiên năm 1977 tại trường Đại học MIT.
Giả sử An và Bình cần trao đổi thông tin bí m ật thông qua một kênh không an toàn (ví dụ như qua Internet). Với thuật toán RSA, An đầu tiên cần tạo ra cho mình một cặp khóa gồm khóa công khai E và khóa bí mật D theo các bước sau:
4.3.1. Mô tả th u ật toán
1. Chọn 2 số nguyên tố khá lớn (> 1024bit) p và Q, p ^ Q 2. Lấy tích số: N = PQ, N được gọi là modulo mã hóa.
3. Chọn số E sao cho: 1< E < PQ, E và (P-1)(Q-1) nguyên tố cùng nhau (vậy E phải chọn là một số lẻ). E được gọi là số mũ mã hóa.
4. Tính số D sao cho tích số DE = 1 Ịm o d (P -l)(Q -l)] có nghĩa là tích số DE chia cho tích số (P-1)(Q-1) có số dư là 1, hay là DE-1 chia hết cho (P-1)(Q-1). Ta dùng phương pháp thử dần các số nguyên X sao cho có được: D = ỊX(P-1)(Q-1) + 1 Ị/E là số nguyên. D được gọi là số mũ giải mã.
Chxtơng 4: Mã hóa khóa côĩìg khai 75
Khóa công khai An gửi cho Bình (qua đường thông tin bất kỳ) là cặp số [N,E]
Khóa bí mật An giữ cho riêng mình là cặp số [N,DỊ
Mã hóa
- Bình nhận được khóa công khai của An gửi. Bình có thông điệp gốc (plaintext) T (thông điệp đã được số hóa, T thực ra là một con số dạng nhị phân được đổi thành số thập phân nào đó) cần gửi cho An.
- Bình mã hóa bằng phép toán: TE mod N = C; T = plaintext, G = ciphertext. Phép toán “lũy thừa theo modulo” có nghĩa là lấy T lũy thửa E rồi chia cho N và lấy số clxt.
- Bình gửi thông điệp mã hóa G cho An.
Giải mã
- An nhận được c.
- An giải mã bằng phép toán: c l) mod N = T.
- Như vậy là ở đây ta cần phải chứng minh được rằng: (T^ mod N)13 mod N = T
Điều này đã được chứng minh bằng cách ứng dụng Định lý Trung Hoa về số dư (The Chinese Remainders Theorem) một thành tựu rất cao về số học, trong toán học Gổ Trung Hoa thường gọi là Bài toán Hàn Tín điểm binh (Hàn Tín là một vị tướng nhà Tiền Hán, vào khoảng thế kỷ thứ II trước công nguyên, xem phụ lục II). Thực chất việc tìm khóa riêng D chính là tìm một phép toán ĩĩgược trong
vành modido N của E.
M ộ t s ố litxi V:
- Các số nguyên tố thường được chọn bằng phương pháp thử ngẫu nhiên.
76 Giáo trình mật mã học và hệ thống thông tin (111 totìn
- Gác bước 3 và 4 có thể được thực hiện bằng giải thuật Euclid mở rộng.
Một dạng khác cỉưx khóa bí mật:
- p và Q, hai số nguyên tố chọn ban đầu,
- D mod (P-l) và D mod (Q.-1) (thường được ký hiệu là DmPl và DmQl),
- (1/Q) mod p (thường được gọi là iQmP)
Dạng này cho phép thực hiện giải mã và lập mã nhanh hơn với việc sử dụng định lý số dư Trung Hoa (Chinese Remainder Theorem) dạng CRT.
Ở dạng này, tất cả thành phần của khóa bí m ật phải được giữ bí mật. An gửi khóa công khai cho Bình và giữ bí m ật khóa riêng của mình.
Ở đây, p và Q giữ vai trò rất quan trọng. Chúng là các nhân tố của N và hỗ trợ cho khả năng tính D khi biết E.
Nếu không sử dụng dạng sau của khóa bí m ật (dạng CRT) thì p và Q sẽ được xóa ngay sau khi thực hiện xong quá trình tạo khóa, chỉ giữ lại N, E, D.
Ví dụ: Ở đây chỉ để minh họa phương pháp nên ta chọn p, q khá bé cho dễ tính toán.
Chọn 2 số nguyên tố: p = 61 = (111101)2; q = 53 = (11011), (hủy ngay p và q sau khi tạo khóa),
n = pffq = 3233 - modulo
e = 17 - số mũ mã hóa (công bố công khai)
Khóa công khai A gửi đi cho B: (3233, 17)
d = 2753 - số mũ giải mã (A giữ riêng)
Chitơng 4: Mã hóa khóa công khai 77
Thông điệp gốc (số hóa thành số dạng nhị phân rồi đổi ra số thập phân): 123
B dùng khóa công khai (n,e) mã hóa: 12317 mod 3233 = 855 Thông điệp mã hóa được gửi đi: 855
A dùng khóa riêng (n,d) giải mã: 855“753 mod 3233 = 123 4.3.2. Ưu và nhược điểm của mã RSA
Thuật toán RSA thực hiện một dãy phép tính lũy thừa modulo khá lớn.
Độ phức tạp tính toán
Khóa công khai = 0(k2) bước tính toán, Khóa riêng = 0(k3), Tổng quát mã RSA có độ phức tạp tính toán là 0(k4) - k là số bit của modulo. Vì vậy mã RSA có nhược điểm đầu tiên là tốc độ lập mã và giải mã rất chậm.
Tuy nhiên mã RSA có độ bảo mật cao: hầu như không có thuật toán giải tổng quát mà phải dò thử dần (tấn công bạo lực). Nếu chọn p, Q lớn thì kết quả từ chỗ biết số mũ lập mã E, tìm ngược lại số mũ giải mã D rất phức tạp hầu như không làm được trong thời gian thực. Chẳng hạn ta tạo một khóa mã để mã hóa thông tin cho các thẻ tín dụng chỉ cho phép sử dụng trong 2 năm. Nếu khả năng bị phá khóa là trong thời gian 1000 năm hay lâu hơn nữa thì trong thực tế có thể xein là an toàn.
Một nhược điểm lớn khác của mã RSA là nguy cơ về “tính tin cậy”. Khi B dùng khóa công khai nhận từ A để gửi tin, chắc chắn chỉ A đọc được: tin cậy phía người gửi tin. Khi A nhận tin, chưa chắc do B gửi (vì khóa công khai có thể lộ và người thứ ba biết khóa công khai, có thể dùng để mã hóa những thông điệp giả gửi cho A): không tin cậy phía người nhận tin.
78 Gic'io trìiứi mật mã học và hệ thống thông till an toàn
Để khắc phục điều đó, phải có phương pháp “phân phối khóa công khai” một cách tin cậy hơn. Trong trường hợp chỉ có 2 đối tác trao đổi với nhau, người ta có thể dùng sơ đồ trao đổi khóa công khai để đảm bảo an toàn và tin cậy cho cả hai phía gửi và nhận tin.
Sơ dồ trao đổi khóa công klưii
- A tạo một cặp khóa, khóa công khai (của A) là E, cho B và khóa riêng D) giữ cho mình.
- B tạo khóa riêng D,, khóa công khai E2 (của B).
- Dùng E, nhận được của A để mã hóa E2: E,(E2) = E \, B gửi E\ cho A và giữ D2 cho riêng mình.
- A nhận được E’2, ềiải mã bằng DI (Chỉ mình A có D]): Chỉ có A đọc được E2. Khi đó chỉ có 2 đối tác A và B cùng sở hữu khóa công khai E2.
- A có thông điệp gốc p, dùng E, (của B mã hóa thông điệp: E2(P) = G, gửi thông điệp mã hóa (bằng khóa công khai của B) cho B chắc chắn chỉ có B đọc đitợc.
- B: nhận chắc cliắn do A gửi, đọc: Dt(C) = p.
Sử dụng sơ đồ trao đổi khóa công khai, chúng ta tạo được sự tin cậy cả cho hai phía người gửi tin và người nhận tin. Nhưng mặt khác độ phức tạp tính toán tăng lên và tốc độ lập mã, giải mã càng chậm!
Mức dộ (111 toàn
về khía cạnh an toàn, các thuật toán mật mã hóa khóa bất đối xứng cũng không khác nhiều với các thuật toán mã hóa khóa đối xứng. Có những thuật toán được dùng rộng rãi, có thuật toán chủ yếu trên lý thuyết; có thuật toán vẫn còn được xem là an toàn, có thuật toán đã bị phá vỡ. Cũng cần lưu ý là những thuật toán được dùng rộng rãi không phải lúc nào cũng đảm bảo an toàn. Một số thuật toán có những chứng minh về độ an toàn với những tiêu chuẩn khác nhau. Nhiều chứng minh gắn việc phá vỡ thuật toán với những
Chương 4: Mã hóa khóa công khai 79
bài toán nổi tiếng vẫn được cho là không có lời giải trong thời ềian đa thức. Nhìn chung, chưa có thuật toán nào được chứng minh là an toàn tuyệt đối. Vì vậy, cũng giống như tất cả các thuật toán mật mã nói chung, các thuật toán mã hóa khóa công khai cần phải được sử dụng một cách thận trọng.
4.4. MỘT SỐ HỆ MẬT MÃ KHÓA CÔNG KHAI KHÁC
Trong mục này ta sẽ xem xét một số hệ m ật mã khóa công khai khác.
Chẳng hạn như người ta cũng sử dụng sơ đồ Diffie-Hellman (Chương 3) như là một thuật toán tạo khóa công khai. Giả sử An và Bình đã thống nhất với nhau chọn một nhóm cyclic hữu hạn Gm, một phần tử sinh g thuộc Gm và p là một số nguyên tố công khai. An lấy một số nguyên bí mật cho riêng mình là a. Khóa công khai của An gửi cho Bình chính là (ga, g, p).
Để gửi thông điệp của mình đến An, Bình chọn một số ngẫu nhiên b, và gửi g1’ (không mã hóa) cho An cùng với thông điệp được mã hóa bởi khóa đối xứng (ế")h■ Chỉ có An sở hữu a mới có thể giải mã thông điệp. Một khóa công khai được chia sẻ trước cũng có thể ngăn ngừa các tấn công của người đứng giữa.
Tuy nhiên trong thực tế thì ngày nay người ta không sử dụng khóa công khai theo sơ đồ Diííie-Hellman vì thuật toán mã hóa khóa công khai RSA là thuật toán được sử dụng quá phổ biến với các ưu điểm của nó và nhất là RSA đã thành lập được một cơ quan chứng thực điện tử hiện nay đang hoạt động rộng khắp chính là VeriSign.
Hệ mật mã Elgamal dựa trên bài toán logarit rời rạc cũng là một thuật toán được dùng khá phổ biến trong nhiều thủ tục m ật mã. ở các phần sau sẽ xem xét thêm đến một hệ mật mã khóa công khai ra đời sớm nhất là hệ mật mã xếp ba lô Merkle-Hellman và diểm qua sơ