NHẬP MÔN BẢO MẬT THÔNG TIN
KHÁI NIỆM BẢO MẬT THÔNG TIN
Thông tin hiện nay là nguồn tài nguyên chiến lược quan trọng trong thời đại thông tin, ảnh hưởng đến mọi khía cạnh của cuộc sống và hoạt động của các tổ chức Từ xa xưa, con người đã nhận thức được vai trò then chốt của thông tin trong giao tiếp và quản lý Trong quân sự, thông tin về đối phương có thể quyết định thắng lợi trong các trận đánh, trong khi trong quản lý nhà nước, việc tiết lộ sớm thông tin chính sách có thể gây tổn thất nghiêm trọng Trong kinh doanh, thông tin về sản phẩm của đối thủ cạnh tranh là rất quý giá Thông tin và dữ liệu của người dùng trên máy tính cũng có giá trị lớn hơn cả phần cứng hay phần mềm Nhiều tài sản vô hình như dữ liệu và trình độ nhân viên thường có giá trị vượt trội so với tài sản vật chất Hiện nay, các hệ thống thông tin đang được áp dụng rộng rãi trong các cơ quan và doanh nghiệp để hỗ trợ quản lý và ra quyết định hiệu quả.
Bảo mật thông tin ngày nay đóng vai trò quan trọng trong các tổ chức và doanh nghiệp, đòi hỏi sự đầu tư mạnh mẽ về con người, tài chính và chính sách Các giám đốc công nghệ thông tin (CIO) và các chuyên gia an toàn thông tin (CISO) giữ vai trò quyết định trong việc đảm bảo an toàn cho hệ thống thông tin, phản ánh tầm quan trọng ngày càng cao của việc bảo vệ thông tin quý giá.
Công nghệ thông tin (CNTT) đang phát triển nhanh chóng và ngày càng phức tạp, đòi hỏi các phương tiện tự động và kỹ thuật bảo mật tương ứng Sự gia tăng độ phức tạp trong bảo mật dẫn đến việc tăng ngân sách đầu tư cho CNTT và bảo mật thông tin (BMTT) trong tổng ngân sách hoạt động của các cơ quan và doanh nghiệp Mặc dù các vấn đề bảo mật trở nên phức tạp hơn, nhưng cần phải đơn giản hóa cho người sử dụng, đảm bảo rằng họ không phải lo lắng về các vấn đề này, tạo ra một trải nghiệm "trong suốt" cho người dùng.
Vậy nội dung của BMTT là gì? Bảo mật thông tin, nếu nhìn ở khía cạnh chung nhất, có thể đƣợc phân loại dựa trên hai nội dung nhƣ sau:
Bảo mật thông tin là quá trình quan trọng liên quan đến việc lưu trữ và xử lý dữ liệu trên máy tính cá nhân Công tác bảo mật tập trung vào việc kiểm soát quyền truy cập và phân quyền sử dụng tài nguyên của máy tính Một trong những biện pháp bảo mật phổ biến nhất là sử dụng tên truy cập (username) và mật khẩu (password), trong đó mật khẩu cần được giữ bí mật để đảm bảo an toàn cho thông tin.
Bảo mật thông tin giữa các máy tính là yếu tố quan trọng nhất trong việc trao đổi dữ liệu trên mạng Trong quá trình này, thông tin rất dễ bị tấn công, do đó việc áp dụng các biện pháp bảo mật là cần thiết Sử dụng công cụ mật mã giúp đảm bảo tính bí mật và toàn vẹn của thông tin, đồng thời xác thực danh tính của người gửi.
Hiện nay, việc trao đổi thông tin trên Internet diễn ra liên tục với khối lượng lớn, trong đó nhiều thông tin cần được bảo mật, như thông tin thanh toán trực tuyến Do đó, việc xác định và thực hiện các yêu cầu bảo mật một cách đầy đủ và nghiêm túc thông qua các chính sách và quy định chặt chẽ là rất cần thiết.
1.2 CÁC THÀNH PHẦN CỦA BẢO MẬT THÔNG TIN Để có thể bảo đảm tính an toàn của thông tin, chúng ta cần khảo sát các đặc trƣng cơ bản của thông tin, các yếu tố đe dọa đến an toàn thông tin và các phương pháp đảm bảo tính bảo mật của thông tin
Các nguy cơ ảnh hưởng đến tính an toàn của thông tin chủ yếu đến từ lỗi sơ ý của con người, chiếm khoảng 55% lượng thông tin mật bị rò rỉ Nhiều thống kê cho thấy thông tin được công khai trên các phương tiện truyền thông đại chúng cũng là một nguồn tiềm ẩn gây ra các vấn đề về an ninh thông tin.
Các phương tiện truyền thông như TV, radio, báo chí và Internet chứa một lượng thông tin bí mật nhất định Khoảng 10% thông tin bị lộ do sự bất bình của nhân viên với lãnh đạo, dẫn đến việc tiết lộ thông tin như một hình thức "trả thù" Thêm vào đó, 10% khác bị tiết lộ do sự tham lam của con người, khi nhân viên công ty tiết lộ bí mật để đổi lấy lợi ích vật chất Khoảng 10% thông tin cũng bị đánh cắp từ bên ngoài, thường qua việc xâm nhập mạng máy tính để sao chép hoặc phá hủy dữ liệu Cuối cùng, 15% thông tin bị hủy hoại do các yếu tố bất ngờ như thiên tai Để đối phó với các nguy cơ này, tổ chức cần xây dựng chính sách bảo mật, quy chế và biện pháp giáo dục nhân viên Đối với nguy cơ thiên tai, cần có chính sách phòng ngừa rủi ro và sao lưu dữ liệu Để ngăn chặn việc đánh cắp thông tin từ bên ngoài, có thể áp dụng các biện pháp kỹ thuật như quản lý truy cập, ghi lại dấu vết truy cập và sử dụng tường lửa, cùng với các công cụ mật mã để bảo vệ thông tin.
Để phòng chống hiệu quả các cuộc tấn công, việc khảo sát, xem xét và phân loại các kiểu tấn công là rất quan trọng Hiện nay, có bốn kiểu tấn công phổ biến mà chúng ta cần chú ý.
Tấn công làm gián đoạn dịch vụ (DoS) là một hình thức tấn công nhằm ngăn chặn hệ thống thực hiện các chức năng của mình mà không làm hỏng nó Loại tấn công này thường gây ra tình trạng nghẽn băng thông, khiến người dùng hợp pháp không thể truy cập vào dịch vụ của hệ thống.
Tấn công lấy trộm thông tin trên đường truyền (interception) là một hình thức tấn công nhằm vào tính bí mật (confidentiality) của thông tin Trong quá trình truyền tải, thông tin có thể bị nghe lén và sao chép, dẫn đến việc lộ bí mật Người bị nghe lén thường gặp khó khăn trong việc phát hiện kẻ gian, làm tăng nguy cơ rò rỉ thông tin nhạy cảm.
Tấn công làm thay đổi thông tin (modification) ảnh hưởng đến tính toàn vẹn (integrity) của dữ liệu Khi thông tin bị tấn công, nó sẽ bị thay đổi trong quá trình truyền tải, dẫn đến việc thông tin nhận được ở đích không còn giống với thông tin gốc ban đầu.
Tấn công mạo danh (fabrication) là hình thức xâm phạm tính xác thực (authenticity) của thông tin, trong đó kẻ gian giả mạo danh tính của một người khác để tạo ra và gửi thông điệp Hành động này dẫn đến việc người nhận nhận được thông tin sai lệch về chủ nhân thực sự của thông điệp.
Bốn kiểu tấn công cơ bản nhằm vào các đặc trưng của thông tin bao gồm tính bí mật (confidentiality), tính toàn vẹn (integrity), tính sẵn sàng (availability) và tính xác thực (authenticity) của chủ sở hữu thông tin.
Người ta cũng có thể phân loại các tấn công thành tấn công bị động
KHOA HỌC MẬT MÃ
Mật mã là một ngành khoa học chuyên phát triển các thuật toán nhằm che giấu thông điệp, chỉ có người gửi và người nhận mới hiểu được Bên cạnh việc bảo vệ thông tin khỏi sự tiếp cận của người lạ, khoa học mật mã còn đảm bảo tính toàn vẹn của thông điệp và xác thực danh tính người gửi Trước đây, mật mã chủ yếu được coi là công cụ để biến thông tin dễ hiểu thành khó hiểu, nhưng hiện nay, ứng dụng của nó đã trở nên phổ biến hơn, bao gồm việc xác thực người gửi và nội dung thông điệp.
Mật mã truyền thống (Cryptography) theo tiếng Hy Lạp cổ đƣợc định nghĩa nhƣ “viết một cách bí mật”: Cryptography = Crypto (Bí mật) + Graphy (Viết)
Ngày nay, khoa học mật mã chính là cơ sở quan trọng của các giải pháp công nghệ trong việc giải quyết bài toán bảo mật thông tin
Lƣợc đồ đơn giản về khoa học mật mã có thể đƣợc thể hiện nhƣ sau:
Hình 1.3 Lược đồ khoa học mật mã
Chúng ta sẽ lần lƣợt giải thích các thuật ngữ trong hình trên:
Mật mã học (Cryptography) là lĩnh vực khoa học nghiên cứu các nguyên tắc và phương pháp chuyển đổi thông điệp dễ hiểu thành những thông điệp khó hiểu, đồng thời phục hồi lại thông điệp gốc Nói một cách đơn giản, mật mã học tập trung vào việc phát triển các thuật toán mã hóa ngày càng phức tạp.
Thông điệp dễ hiểu ban đầu được gọi là bản nguồn (Plaintext), trong khi thông điệp khó hiểu, đã bị biến đổi, được gọi là bản mã.
Quá trình mật mã là quá trình chuyển đổi dữ liệu từ bản nguồn sang bản mã, sử dụng thuật toán mật mã và khoá Thuật toán mật mã áp dụng khoá để thực hiện việc biến đổi này, tạo ra bản mã từ bản nguồn Khoá mật mã là thông tin đặc biệt chỉ được biết bởi người gửi và người nhận, đảm bảo tính bảo mật trong quá trình truyền tải dữ liệu.
Quá trình biến đổi ngược bản mã thành bản nguồn thông qua thuật toán giải mã và khoá giải mã được gọi là giải mã (Decipher hay Decode) Ngược lại, nếu không sử dụng khoá, quá trình này được gọi là thám mã (Cryptanalysis hay Codebreaking) Thám mã là một lĩnh vực khoa học phức tạp, nghiên cứu các nguyên tắc và phương pháp để biến đổi ngược bản mã mà không cần biết khoá giải mã Mặc dù giải mã và thám mã có mục tiêu giống nhau, chúng khác nhau ở chỗ giải mã sử dụng khoá, còn thám mã thì không Giải mã thường được coi là hợp pháp, trong khi thám mã lại bị xem là hành vi không hợp pháp.
Mật mã và thám mã là hai khái niệm đối lập nhưng bổ sung cho nhau trong khoa học mật mã (Cryptology) Mật mã tập trung vào việc phát triển các thuật toán bảo mật mới, trong khi thám mã nhằm mục đích phá vỡ các thuật toán đó Sự cạnh tranh giữa mật mã và thám mã thúc đẩy sự tiến bộ của hệ thống bảo mật Do đó, ta có thể hiểu đơn giản rằng Cryptology bao gồm Cryptography và Cryptanalysis Trong bài viết này, chúng ta sẽ chủ yếu tập trung vào mật mã, trong khi thám mã sẽ được đề cập ít hơn do tính phức tạp của nó.
Mật mã khóa bí mật, hay còn gọi là mật mã đối xứng, là phương pháp mã hóa và giải mã truyền thống đã tồn tại hơn 3.000 năm Các thuật toán mật mã này được phân loại thành hai loại chính: mật mã dòng và mật mã khối, tùy thuộc vào cách thức thực hiện quá trình mã hóa.
Mật mã khóa công khai: còn gọi là mật mã bất đối xứng, do Diffie-
Hellman khởi xướng cách đây không lâu, năm 1976
Các nghi thức là quy trình ứng dụng kết hợp thuật toán mã hóa khóa bí mật và khóa công khai, nhằm tận dụng ưu điểm của cả hai loại và tối ưu hóa vấn đề bảo mật.
HỆ THỐNG MẬT MÃ
Chúng ta sẽ xem xét những định nghĩa cơ bản của mật mã:
p gọi là văn bản nguồn (plaintext)
P = {p 1 , p 2 ,…, pm} – tập các plaintext (plaintext space)
c gọi là văn bản đã mã hóa (ciphertext)
C = {c 1 , c 2 ,…, cn} – tập các ciphertext (ciphertext space)
K = {k 1 , k 2 ,…, kt} – tập các khóa (key space)
t hàm mã hóa e ki: P → C (hoặc e ki (p) = c), i = 1,2, , t
t hàm giải mã d ki : C → P (hoặc dki(c) = p), i = 1,2, , t
e ki và d ki là các hàm nghịch đảo : d ki (c) = d ki (e ki (p) ) = p ki K Định nghĩa: Hệ thống mật mã là bộ gồm 5 thành phần (P, C, K, E,
D) thỏa các điều kiện sau:
P là tập hữu hạn tất cả các văn bản nguồn có thể có
C là tập hữu hạn tất cả các văn bản mã có thể có
K là tập hữu hạn tất cả các khóa có thể có
Sao cho với mỗi k K ta có:
+ Quy tắc mã hóa e k : P → C (ek E)
+ Quy tắc giải mã d k : C → P (dk D)
+ Thoả điều kiện: dk(ek(p) ) = p, p P
Hệ thống mật mã, theo quy ƣớc, cần thoả quy tắc Kerckhoff:
- Hệ thống mật mã cần đƣợc công khai: các thuật toán mã hóa và giải mã cần công khai;
Việc xây dựng các thuật toán mật mã an toàn là một thách thức phức tạp do phải tuân thủ quy tắc Kerckhoff, và không phải ai cũng có khả năng thực hiện Tuy nhiên, vì các thuật toán mật mã này là công khai, chúng ta có thể áp dụng chúng vào các ứng dụng của mình.
1.5 AN TOÀN HỆ THỐNG MẬT MÃ
Hệ thống mật mã được coi là an toàn khi có khả năng chống lại nhiều cuộc tấn công thám mã Bài viết này sẽ khảo sát các kiểu tấn công thám mã phổ biến, được phân loại dựa trên lượng thông tin mà kẻ thám mã (T) sở hữu Một trong những kiểu tấn công là khi T chỉ biết văn bản mã (tấn công chỉ với văn bản mã).
T biết một vài giá trị c1, c2, với: c1 = ek(p1), c2 = ek(p2), …
T cần phục hồi p 1 , p 2 , … hoặc khóa k b) T biết vài cặp bản gốc-mã: (Known plaintext attack)
T biết một vài cặp (p1, c1 = ek(p1)), (p2, c2 = ek(p2)), …
T cần phục hồi khóa k c) T đƣợc phép chọn bản gốc (hoặc mã): (Chosen plaintext (or ciphertext) attack)
T biết một vài cặp (p 1 , c 1 = e k (p 1 )), (p 2 , c 2 = e k (p 2 )), … và có thể chọn p1, p2, … (hoặc c1, c2, …) để thử chạy qua thuật toán
T cần phục hồi khóa k d) T đƣợc chọn cả bản gốc và mã (Chosen plaintext - ciphertext attack)
T biết một vài cặp (p1, c1 = ek(p1)), (p2, c2 = ek(p2)), … và có thể chọn p 1 , p 2 , … cũng nhƣ c1, c 2 , … để thử chạy qua thuật toán
Nếu một thuật toán mật mã bị thám mã thành công trong các trường hợp a) hoặc b) với chi phí hợp lý, nó được coi là yếu và không nên sử dụng Ngược lại, nếu thuật toán chỉ bị bẻ khoá trong các trường hợp c) và d), nó vẫn có thể được xem là an toàn Điều này bởi vì việc thực hiện các điều kiện để chạy thuật toán với dữ liệu đầu vào và đầu ra không phải lúc nào cũng dễ dàng.
Tấn công vét cạn khoá là một kiểu tấn công phổ biến, trong đó không gian khoá, dù lớn, vẫn là hữu hạn Với khoá dài n bit, số lượng khoá có thể là 2^n, cho phép sử dụng máy tính mạnh để thử từng khoá Tuy nhiên, thực tế cho thấy không gian khoá tăng theo cấp số nhân với độ dài khoá, vì vậy chỉ cần tăng một chút độ dài khoá cũng làm số lượng khoá tăng lên gấp nhiều lần Điều này chứng tỏ rằng việc vét cạn khoá không hề dễ dàng.
Thời gian test của máy A (1s/khoá) Thời gian test của máy B (1s/10 6 khoá)
Máy A có khả năng kiểm tra một khóa trong 1 phần triệu giây, trong khi máy B nhanh hơn gấp 1 triệu lần Với khóa mật mã dài 32 bit, máy A sẽ mất khoảng 35,8 phút để kiểm tra tất cả các khóa, trong khi máy B chỉ cần hơn 2 phần ngàn giây Khi độ dài khóa tăng lên, số lượng khóa cũng tăng theo cấp số nhân; ví dụ, với khóa 56 bit, máy A sẽ cần 1.140 năm để kiểm tra Mặc dù lý thuyết cho phép máy A kiểm tra tất cả các khóa 56 bit, thực tế không ai có thể dành 1.000 năm cho việc này Tuy nhiên, với máy B, thời gian kiểm tra sẽ được rút ngắn đáng kể.
Khi độ dài khóa tăng lên 128 bit, việc vét cạn để phá khóa trở nên vô nghĩa đối với cả hai máy A và B, mặc dù vẫn có thể thực hiện trong 10 giờ.
B Nhƣ vậy, có thể kết luận: thám mã bằng vét cạn trên lý thuyết luôn luôn có thể thực hiện được nhưng trên thực tế thì có thể không khả thi Trường hợp này, thuật toán được coi là an toàn Kiểu an toàn như vậy, người ta gọi là an toàn tính toán Tóm lại, an toàn tính toán xảy ra khi với tài nguyên tính toán hạn chế hiện tại (thời gian, tiền bạc, ), thuật mã hóa không thể bị bẻ khóa Tất cả các thuật toán mật mã tốt đều phải đáp ứng yêu cầu an toàn tính toán Tuy nhiên, với sự tăng trưởng rất nhanh của các hệ thống tính toán, một thuật toán có thể là an toàn tính toán tại thời điểm này nhƣng sẽ không còn an toàn sau một vài năm nữa
1.6 CÂU HỎI VÀ BÀI TẬP
1 Giải thích khái niệm dịch vụ bảo mật và mô hình bảo mật
2 Có bao nhiêu thành phần tham gia vào mô hình bảo mật mạng?
3 Dịch vụ bảo mật (Security service) nào cần thiết trong từng ứng dụng sau và tại sao? a) Hệ thống quản lý một forum trên mạng Internet b) Gửi một yêu cầu mua sách trên web cho nhà phát hành sách trực tuyến c) Gửi cho một đồng nghiệp email với những chi tiết kế hoạch mới nhất của bạn nhằm làm mất uy tín đối thủ kinh doanh
4 Với mỗi trường hợp trong câu 3, hãy xác định loại mô hình bảo mật
(Security model) thích hợp nhất, xác định các bên tham gia và giải thích sự lựa chọn của bạn.
CÂU HỎI VÀ BÀI TẬP
Chương 2 giới thiệu về lịch sử mật mã cổ điển, đặc biệt nhấn mạnh đến các kỹ thuật thay thế, kỹ thuật đổi chỗ và sự kết hợp của hai kỹ thuật đó dựa trên đối tượng là các ký tự
2.1 LỊCH SỬ MẬT MÃ CỔ ĐIỂN
Mật mã đã xuất hiện từ hơn 3.000 năm trước, khi con người bắt đầu sử dụng chữ viết để trao đổi thông tin và có nhu cầu che giấu một phần thông tin cho những người nhất định Lịch sử mật mã được chia thành hai giai đoạn: mật mã cổ điển từ xa xưa đến giữa thập kỷ 70 của thế kỷ 20 và mật mã hiện đại từ những năm 1970 đến nay Sự khác biệt chính giữa mật mã cổ điển và hiện đại bao gồm đối tượng mã hóa: mật mã cổ điển sử dụng các ký tự trong khi mật mã hiện đại mã hóa các bit thông tin Công cụ thực hiện mật mã cổ điển chủ yếu là thủ công hoặc máy tính đơn giản, trong khi mật mã hiện đại sử dụng máy tính điện tử tốc độ cao Ứng dụng của mật mã cổ điển chủ yếu trong quân sự, còn mật mã hiện đại được sử dụng rộng rãi trong các giao dịch điện tử Cuối cùng, mật mã cổ điển có lịch sử lâu dài, trong khi mật mã hiện đại chỉ mới xuất hiện trong bốn thập niên qua.
MẬT MÃ CỔ ĐIỂN
LỊCH SỬ MẬT MÃ CỔ ĐIỂN
Mật mã đã tồn tại hơn 3.000 năm, xuất phát từ nhu cầu che giấu thông tin khi con người bắt đầu sử dụng chữ viết Lịch sử mật mã chia thành hai giai đoạn: mật mã cổ điển từ xưa đến giữa thập kỷ 70 và mật mã hiện đại từ những năm 1970 đến nay Mật mã cổ điển sử dụng ký tự, trong khi mật mã hiện đại xử lý các bit thông tin Công cụ mật mã cổ điển là thủ công hoặc máy tính đơn giản, còn mật mã hiện đại dựa vào máy tính điện tử tốc độ cao Ứng dụng của mật mã cổ điển chủ yếu trong quân sự, trong khi mật mã hiện đại phục vụ cho giao dịch điện tử rộng rãi Cuối cùng, mật mã cổ điển có nguồn gốc lâu đời, còn mật mã hiện đại chỉ mới xuất hiện cách đây bốn thập niên.
Mật mã cổ điển sử dụng các ký tự và bao gồm những kỹ thuật chính như sau: kỹ thuật thay thế ký tự, bao gồm thay thế tuần tự, thay thế đơn từ và thay thế đa từ; kỹ thuật đổi chỗ ký tự; và kỹ thuật kết hợp cả thay thế lẫn đổi chỗ ký tự.
Trong bài viết này, chúng ta sẽ khảo sát các kỹ thuật mật mã cổ điển Mục tiêu của việc nghiên cứu là để có cái nhìn tổng quát về những kỹ thuật này và đánh giá cách chúng đã được áp dụng trong thực tế.
MẬT MÃ CAESAR
Hơn 2.000 năm trước đây, hoàng đế La Mã Julius Caesar (100 năm trước CN) đã đề xuất một thuật toán mang tên ông với ý tưởng như sau: Giả sử ta có bảng ký tự 26 chữ cái A, B, C, Z đƣợc xếp thành một vòng tròn Mỗi chữ cái trong bản nguồn sẽ đƣợc thay thế bởi chữ cái thứ ba sau nó để có bản mã
Ví dụ: Thay mỗi chữ cái bởi chữ thứ ba sau nó trong bảng chữ cái:
MOI NGAY TOI CHON MOT NIEM VUI (Bản nguồn) -> PRL QJDB WRL FKRQ PRW QLHP YXL (Bản mã)
Việc thay thế đƣợc thực hiện dựa trên bảng sau:
Quá trình mã hóa liên quan đến việc đối chiếu các ký tự trong bản nguồn với các ký tự tương ứng trong bản mã, trong khi quá trình giải mã diễn ra theo hướng ngược lại.
Nếu việc thay thế không chỉ dựa vào ký tự thứ 3 mà còn ở một khoảng cách k khác, ta có thuật toán Caesar mở rộng Trong trường hợp này, k đóng vai trò là khóa và cần được giữ bí mật Vì bảng chữ cái chỉ có 26 chữ cái, giá trị k có thể nằm trong khoảng từ 0 đến 25, với 0 là trường hợp tầm thường Để lập trình hóa việc mã hóa, ta sẽ gán các ký tự A, B, C, thành các con số 0, 1, 2, như bảng dưới đây.
Khi đó, việc mã hoá và giải mã được biểu diễn dưới dạng công thức toán học nhƣ sau:
Với k = 3 thì đó chính là thuật toán Caesar
Trong thuật toán Caesar, thay vì sử dụng số k làm khóa, ký tự mã tương ứng với ký tự nguồn A được coi là khóa, ví dụ như chữ D Để giải mã, có thể áp dụng phương pháp vét cạn do không gian khóa chỉ gồm 26 ký tự, cho phép thử tất cả các khóa cho đến khi tìm ra bản nguồn có nghĩa Ngoài ra, phân tích tần số xuất hiện của các chữ cái cũng là một phương pháp hiệu quả Mỗi ngôn ngữ có tần số xuất hiện khác nhau của các chữ cái, và việc xây dựng tần số chuẩn có thể thực hiện bằng cách thống kê một tập lớn văn bản Nếu có một văn bản đủ dài, tần số xuất hiện của các chữ cái trong đó sẽ gần giống với tần số chuẩn, giúp dự đoán khóa mã hóa Chẳng hạn, trong bảng chữ cái tiếng Anh, chữ E có tần số xuất hiện cao nhất, do đó nếu trong văn bản mã chữ G xuất hiện nhiều nhất, ta có thể suy ra rằng chữ G đã được mã hóa từ chữ E.
Phân tích tần số chữ cái có thể dự đoán khóa mật mã là 2 hoặc C Thay vì chỉ sử dụng một chữ cái đơn lẻ, người ta thường áp dụng các cụm chữ cái phổ biến hoặc mối quan hệ giữa nhiều chữ cái Phương pháp này giúp giảm thiểu số lượng phép thử cần thiết trong quá trình giải mã.
KỸ THUẬT THAY THẾ ĐƠN TỪ
Trong thuật toán Caesar mở rộng, các ký tự được dịch chuyển một khoảng cách k giống nhau Tuy nhiên, khi mở rộng thuật toán này, các ký tự có thể di chuyển với những khoảng cách khác nhau, sử dụng kỹ thuật thay thế đơn từ Trong trường hợp này, khóa mã hóa không chỉ là một số mà là một bộ 26 số từ 0 đến 25, tương đương với một hoán vị của dãy các ký tự.
Khoá mã hoá của thuật toán thay thế đơn được thể hiện qua chuỗi DKVQFIBJWPESCXHTMYAUOLRGZN, trong đó mỗi ký tự được thay thế theo quy tắc nhất định, ví dụ A trở thành D, B trở thành K Dựa vào khoá này, chuỗi ký tự "THUAT TOAN THAY THE DON TU" có thể được mã hoá một cách chính xác.
Mỗi khoá của thuật toán thay thế đơn từ là một hoán vị của chuỗi ký tự từ A đến Z, làm cho việc nhớ khoá dài trở nên khó khăn Để dễ dàng ghi nhớ, người ta thường sử dụng một phương pháp tạo khoá từ một từ khoá ngắn Chẳng hạn, một khoá thay thế đơn từ có thể được tạo ra từ từ khoá "Julius Caesar".
- Viết các ký tự của từ khoá liền nhau: JULIUSCAESAR
- Tính từ trái qua phải, loại đi các ký tự trùng lắp: JULISCAER
- Viết tiếp các ký tự của bảng chữ cái theo thứ tự từ ký tự cuối, ký tự nào đã có rồi thì bỏ qua: JULISCAERTVWXYZBDFGHKMNOPQ
- Nhƣ vậy là ta đã có một hoán vị 26 ký tự có thể dùng làm khoá
Có nhiều phương pháp để chuyển đổi từ khoá dễ nhớ thành khoá mã hoá khó nhớ, thường bao gồm việc loại bỏ ký tự trùng và thêm ký tự để đạt đủ 26 ký tự Dù quy trình có thể khác nhau, việc thống nhất giữa người gửi và người nhận là rất quan trọng Trong các thuật toán mã hoá hiện đại, quy trình này thường được công bố công khai cùng với thuật toán mã hoá.
Mỗi khoá là một hoán vị của 26 ký tự nên ta có tổng cộng 26! ~ 4
Khóa 10 26 là một số lượng lớn trong kỹ thuật vét cạn khóa, do đó, để thám mã, người ta thường áp dụng phương pháp phân tích tần số ký tự kết hợp với các cụm từ phổ biến trong tiếng Anh như: THE, AND, FOR Với không gian khóa lớn, phương pháp này đã tồn tại lâu dài và được sử dụng trong các chính phủ và quân đội từ thời kỳ trung đại Để tăng cường hiệu quả của phương pháp này, có thể thực hiện việc thay thế mỗi ký tự nhiều lần với nhiều khóa khác nhau.
KỸ THUẬT THAY THẾ ĐA TỪ
Kỹ thuật thay thế đơn từ cho phép mỗi ký tự nguồn biến thành một ký tự xác định dựa vào khóa, không phụ thuộc vào vị trí của nó trong bản nguồn Ví dụ, ký tự A sẽ luôn biến thành D, bất kể vị trí của nó Ngược lại, kỹ thuật thay thế đa từ cho phép các ký tự A trong bản nguồn có thể biến thành các ký tự khác nhau trong bản mã Một ví dụ điển hình của kỹ thuật này là thuật toán Vigenere do nhà toán học Pháp Blaise de Vigenere đề xuất Thuật toán sử dụng một từ khóa, như CIPHER, được lặp lại để mã hóa các ký tự trong bản nguồn Chẳng hạn, nếu bản nguồn là "THUAT TOAN THAY THE DA TU", ký tự T sẽ được mã hóa bằng khóa C, sử dụng phương pháp Caesar mở rộng.
V, ký tự H với khoá I thành P, ̶ Cuối cùng ta nhận đƣợc bản mã: VPJHX KQIC ALRA BWL HR VC Để có thể xác định nhanh kết quả của mật mã Caesar mở rộng, Vigenere sử dụng bảng sau để tra cứu:
Hình 2.1 Mật mã Vigenere
Tuy nhiên, hiện nay ta không cần tra cứu thủ công nhƣ ngày xƣa mà có thể viết một đoạn mã ngắn để thực hiện thao tác này
Khoá của thuật toán mã hoá đa từ có độ dài bằng độ dài của bản nguồn, nhưng việc xây dựng khoá từ từ khoá có thể gặp điểm yếu do sự lặp lại đơn giản Để khắc phục, Vigenere đề xuất phương pháp tạo khoá tự động (Autokey) bằng cách ghép từ khoá vào phần đầu của bản nguồn, sử dụng nó để mã hoá Ví dụ, mã hoá ký tự T với khoá C cho kết quả V, và ký tự H với khoá I cho kết quả P Một phương pháp khác là tạo khoá từ các ký tự bắt đầu tại một vị trí nhất định trong một cuốn sách, được gọi là mã hoá bằng sách (Book cipher).
Có thể bẻ khóa Autokey và Book cipher thông qua phân tích tần số các cặp chữ cái, do khóa mã hóa và bản nguồn cùng sử dụng một ngôn ngữ Thay vì bảng tần số 26 ký tự thông thường, ta áp dụng bảng tần số 26 x 26 cho "tần số xuất hiện của ký tự X được mã hóa bởi ký tự Y" Một phương pháp thám mã khác do nhà mật mã học Friedrich Kasiski đề xuất là tìm kiếm các đoạn lặp lại trong bản mã để xác định độ dài của từ khóa, từ đó giúp xác định nội dung của từ khóa bằng kỹ thuật thám mã thay thế đơn từ.
KỸ THUẬT ĐỔI CHỖ
Kỹ thuật đổi chỗ là một trường hợp đặc biệt của kỹ thuật thay thế, trong đó chỉ thay đổi vị trí của các ký tự mà không làm thay đổi tập hợp ký tự trong bản nguồn Một số kỹ thuật đổi chỗ đơn giản bao gồm đảo ngược từ (Mirror cipher), trong đó các ký tự được viết theo thứ tự ngược lại so với bản nguồn, ví dụ: TOI AN COM trở thành MOC NA IOT Kỹ thuật hình học (Geometric Figure) cho phép viết bản nguồn theo một mẫu nhất định và đọc theo mẫu khác để tạo ra bản mã, như trong ví dụ với bản nguồn KHOACONGNGHETHONGTIN.
Bản mã Row Transposition là phương pháp mã hóa bằng cách viết bản nguồn theo hàng, sau đó hoán vị các cột dựa trên khóa đã cho Cuối cùng, đọc lại theo hàng để tạo ra bản mã.
Khoá của thuật toán đổi chỗ bao gồm số lượng phần tử và hoán vị của chúng Thám mã bắt đầu bằng cách dự đoán số phần tử, tương ứng với số cột của bảng Để xác định điều này, ta tìm kiếm tất cả các khả năng hoán vị trong chu kỳ dự kiến nhằm phát hiện mẫu chung từ danh sách các cặp và bộ ba có nghĩa Nếu các ký tự có thể được sắp xếp trong một nhóm, ta sẽ kiểm tra khả năng sắp xếp tương tự trong các nhóm khác Khi tìm ra các cụm từ có nghĩa, chúng ta đồng thời xác định được thứ tự đảo của khoá và từ đó suy ra khoá Đối với phương pháp đổi chỗ lộn xộn (Nihilist cipher), ta đổi chỗ cả dòng và cột, viết thông điệp theo hàng theo khoá, và đọc từ trái sang phải theo từng hàng với thứ tự hàng được xác định bởi khoá viết theo cột Còn với đổi chỗ đường chéo (Diagonal cipher), thông điệp được viết theo đường zig-zag để tạo thành bản mã.
Bản mã (đổi chỗ lộn xộn): NOGGNHKOCAEHTOHPSKZTGNTNI Bản mã (đổi chỗ đường chéo): HKNEOOCGHGPNTGANOTSKNHIZT
KỸ THUẬT KẾT HỢP
Người sử dụng có thể kết hợp cả hai kỹ thuật thay thế và đổi chỗ trong cùng một thuật toán, tạo ra những phương pháp mã hóa hiệu quả Một ví dụ điển hình là thuật toán ADFGVX, được quân đội Đức sử dụng trong Đại chiến thế giới lần thứ nhất, minh họa cho sự kết hợp này.
1918) Thuật toán đƣợc mô tả nhƣ sau:
Chỉ có sáu chữ cái được sử dụng để mã hóa dữ liệu, và dữ liệu này được truyền đi qua tín hiệu Morse Mã Morse của các chữ cái này được phân biệt rất rõ ràng.
Bảng mã ADFGVX bao gồm 36 ký tự, bao gồm 26 chữ cái và 10 chữ số, được sắp xếp trong một lưới 6x6 Mỗi ký tự trong bản nguồn được thay thế bằng một cặp hai ký tự đại diện cho chỉ số hàng và cột tương ứng.
- Sử dụng kỹ thuật đổi chỗ cùng với khóa để tách và đổi chỗ các chữ cái
Ví dụ ta cần mã hoá bản nguồn: GIONOSUNGLA530
X U 4 I S T M Theo bảng trên, mỗi ký tự bản nguồn đƣợc mã hoá bởi hai ký tự khác:
Chuỗi ký tự trung gian sẽ được mã hóa bằng kỹ thuật đổi chỗ với từ khóa DEUTSCH.
(2376514) Chuỗi này sẽ đƣợc viết vào bảng theo thứ tự từ trái qua phải, từ trên xuống dưới:
V D X G G V V Đọc bảng theo cột và khoá ta sẽ nhận đƣợc chuỗi mã cuối cùng là: DXVV FXGV VVXD GAGV VGDG FXVG XDFX
Thuật toán này thực tế không an toàn, nó đã bị thám mã bởi quân đội Pháp và đã bị bẻ khoá ngay trong năm 1918
1 Viết và cài đặt thuật toán Caesar mở rộng
2 Viết chương trình thám mã Caesar mở rộng và dùng nó để thám mã bản mã sau: GCUA VQ DTGCM
3 Sử dụng phương pháp phân tích tần số để thám mã thuật toán Caesar mở rộng với bản mã là: JXU WHUQJUIJ TYISELUHO EV CO WUDUHQJYED YI JXQJ Q XKCQD RUYDW SQD QBJUH XYI BYVU RO QBJUHYDW XYI QJJYJKTUI
4 Thám mã thuật toán đổi chỗ theo hàng với bản mã sau (tiếng Anh): LDWOE HETTS HESTR HUTEL OSBED EFIEV NT.
MẬT MÃ DÕNG
KHÁI NIỆM MẬT MÃ DÕNG
Mật mã dòng (Stream cipher) là một loại mật mã khoá bí mật, đối xứng Thuật toán mã hoá theo dòng phân rã bản nguồn thành các bit, mỗi bit sẽ được mã hoá bằng một bit khoá tương ứng, tạo ra một bit mã Quá trình mã hoá này được thực hiện thông qua hàm logic XOR, với bản chân trị của hàm XOR như sau:
Cũng có thể coi C là kết quả của phép cộng theo modulo 2 các giá trị
A và B: C = (A + B) mod 2 Quá trình mã hoá và giải mã đƣợc thể hiện với sơ đồ nhƣ sau:
Hình 3.1 Lược đồ mật mã dòng
Trong đó pi là các bit nguồn, zi là các bit khoá và ci là các bit mã
Quá trình mã hoá và giải mã hoàn toàn giống nhau, với công thức mã hoá là c = (p + z) mod 2 Khi giải mã, ta có thể viết lại như sau: (c + z) mod 2 = (p + z + z) = (p + (z + z)) = (p + 0) = p, vì hai bit giống nhau khi cộng với nhau theo modulo 2 sẽ cho kết quả 0 Từ nay, trong giáo trình, phép “+” sẽ được hiểu là phép cộng theo modulo 2, trừ khi có giải thích khác.
Quá trình mã hóa của mật mã dòng rất đơn giản, với dòng khóa có độ dài tương đương với dòng bit nguồn Để đảm bảo tính an toàn cho thuật toán mã hóa, dòng khóa cần được tạo ra từ một máy tạo dòng dựa trên một từ khóa ngắn ban đầu Sự an toàn của toàn bộ thuật toán phụ thuộc vào hiệu quả của máy tạo dòng này.
DÒNG KHOÁ
Dòng khóa mã hoá {zi} được sinh ra từ khóa ban đầu K, và cần phải đảm bảo rằng các bit của chúng hoàn toàn độc lập để ngăn chặn kẻ thám mã phát hiện quy luật Điều này có nghĩa là các z i phải được tạo ra một cách ngẫu nhiên hoàn toàn Sơ đồ quá trình tạo khóa và mã hóa sẽ được trình bày như sau:
Hình 3.2 Tạo dòng khoá trong mật mã dòng
Quy trình tạo khóa có thể hoạt động độc lập hoặc phụ thuộc vào kết quả mã hóa Bài viết này sẽ xem xét một số máy tạo khóa độc lập với quá trình mã hóa.
3.3 MÁY TẠO DÒNG KHOÁ TUYẾN TÍNH
Máy tạo dòng khóa tuyến tính (Linear Feedback Shift Registers) – LFSR-3 có sơ đồ nhƣ sau:
Hình 3.3 Máy tạo dòng khoá tuyến tính LFSR-3
Cấu tạo và nguyên tắc hoạt động: Máy gồm ba hộp K0, K1, K2, đƣợc kết nối với nhau nhƣ trên Tại mỗi thời điểm, trong mỗi hộp có một bit
Máy khởi tạo có ba bit z0, z1, z2 được đặt trong các hộp tương ứng và hoạt động theo từng xung đồng hồ Tại mỗi xung, các bit sẽ dịch chuyển sang hộp bên phải, trong đó bit ở hộp K0 sẽ xuất ra ngoài, bit ở hộp K1 sẽ chuyển sang hộp K0.
K2 sẽ được chuyển sang hộp K1, trong khi các bit ở hộp K0 và K1 sẽ được thực hiện phép XOR với nhau để ghi kết quả vào hộp K2 Quá trình này diễn ra liên tục, tạo ra dòng bit đầu ra {zi} để sử dụng làm khóa mã hóa.
Yêu cầu của dòng khóa mã hóa {zi} là các bit phải hoàn toàn ngẫu nhiên, tuy nhiên, điều này khó có thể đạt được trong thực tế Ví dụ, khi khảo sát máy LFSR-3 với đầu vào z0 = 1, z1 = 0, z2 = 0, kết quả chạy của máy sẽ cho thấy sự không ngẫu nhiên trong các bit đầu ra.
Dòng bit khoá thu đƣợc là: 1001011100101…
Mỗi dòng trong bảng được coi là một trạng thái của máy, với tổng số trạng thái khác nhau là 2^3 = 8 Điều này có nghĩa là các trạng thái sẽ lặp lại sau tối đa 8 lần thực hiện (8 xung) Hơn nữa, việc chuyển đổi giữa các trạng thái là hoàn toàn xác định, dẫn đến việc dòng bit khóa cũng sẽ lặp lại Trong trường hợp cụ thể này, dòng bit khóa sẽ có một dạng nhất định.
Dòng bit 1001011 có 7 phần tử, được gọi là chu kỳ, và chu kỳ này không bao giờ lớn hơn 8 Để các bit trong dòng khóa trở nên ngẫu nhiên hơn, chu kỳ cần phải lớn hơn.
Máy LFSR-3 có cấu trúc được biểu diễn như sau: [3, 1 + x + x³, (1, 0, 0)], trong đó số 3 đại diện cho số hộp chứa các bit, biểu thức 1 + x + x³ là cấu trúc của máy, và (z₀, z₁, z₂) = (1, 0, 0) là giá trị các bit ban đầu Dòng khóa sinh ra từ máy LFSR-3 được xác định bởi công thức {zᵢ} với zᵢ₊₃ = (zᵢ₊₁ + zᵢ) mod 2, với i = 0, 1, 2, … Máy tổng quát LFSR-m có công thức: [m, C₀ + C₁x + … + Cₘ₋₁xᵐ⁻¹ + xᵐ, (z₀, z₁, …, zₘ₋₁)] và được biểu diễn trực quan.
Hình 3.4 Máy tạo dòng khoá tuyến tính LFSR-m
- Với z0, z1,…, zm-1 là các giá trị khởi tạo ban đầu;
- C0, C1,…, Cm-1 {0,1} là các hệ số phản hồi;
- Nếu hệ số Ci = 0 thì mạch mở, ngƣợc lại Ci = 1 thì mạch đóng;
- Công thức tính bit: zi+m = với i = 0, 1, 2,…
3.4 MÁY CHẠY VÀ DỪNG LUÂN PHIÊN Để nâng cao độ an toàn của máy tạo dòng khoá, người ta kết hợp ba máy tạo dòng khoá tuyến tính, tạo thành một máy chạy và dừng luân phiên (Anternating stop-and-go generator):
Hình 3.5 Máy chạy và dừng luân phiên
Máy chạy và dừng luân phiên G được cấu trúc từ ba máy tạo dòng tuyến tính A, B và C, mỗi máy tạo ra các dòng bit riêng biệt và độc lập Hoạt động của máy G dựa trên xung (clock); khi máy A xuất ra bit 1, máy B sẽ hoạt động và sinh ra bit mới, trong khi máy C không sinh bit Bit mới của máy B sẽ được XOR với bit cũ của máy C để tạo ra bit kết quả Ngược lại, khi máy A xuất ra bit 0, bit cũ của máy B sẽ XOR với bit mới của máy C để tạo thành bit của luồng khóa Như vậy, máy A đóng vai trò điều khiển hoạt động của máy B và C, trong khi các bit kết quả được tạo thành từ việc XOR giữa các bit của máy B và C.
Giả sử đầu ra của các máy A, B và C lần lượt là A: {a0, a1,…}; B: {b0, b1,…} và C: {c0, c1,…}, trong khi dòng khóa nhận được là Z: {z0, z1,…} Với b-1 = c-1 = 0 và dòng bit của máy A có giá trị {100100110}, các bit trong dòng khóa Z sẽ được tính toán theo cách như trong hình.
Z z 0 z 1 z 2 z 3 z 4 z 5 z 6 z 7 z 8 Ở đây, z 0 = b 0 + c -1 , z 1 = b 0 + c 0 ,… Đặt t(n) = Ta thấy t(n) chính là số bit 1 trong dãy {a0, a 1 ,
Tại xung thứ n + 1, máy B xuất ra bit bt(n)-1, trong khi máy C xuất ra bit cn-t(n), với n + 1 - t(n) là số bit 0 trong dãy Do đó, công thức tính bit thứ n + 1 của dòng khoá được xác định là zn = bt(n)-1 + cn - t(n) Tóm lại, zn = bt(n)-1 + cn - t(n) với t(n) là một hàm số xác định.
3.5 ĐÁNH GIÁ ĐỘ AN TOÀN
Chúng ta sẽ tiến hành thám mã máy tạo dòng tuyến tính, với giả định rằng đã có cặp (bản nguồn, bản mã) và số hộp của máy là m Nếu bản nguồn quan sát được có độ dài 2m, ta có thể tính toán được khóa mã hóa và cấu trúc của máy.
Ta có bản nguồn với độ dài 2m: p0, p 1 , …, p2m-1
Từ đó ta tính đƣợc dòng khóa đã sử dụng: zi = (pi + ci) mod 2; i = 0, 1,…, 2m-1
Mục tiêu của ta là tìm cấu trúc máy, tức là tính các hệ số Ci (i = 0, 1,…, m - 1) Ta có: z i+m = với C j {0, 1}
Viết dưới dạng triển khai: i = 0 zm = C0z0 + C1z1 +…+ Cm-1zm-1 mod 2 i = 1 zm+1 = C0z1 + C1z2 +…+ Cm-1zm mod 2
Để xác định cấu trúc của máy tạo dòng tuyến tính LFSR - m, ta xem xét hệ phương trình tuyến tính với m ẩn C0,…, Cm-1, từ đó có thể giải để tính toán các giá trị Ci dựa trên các cặp bit đầu vào và đầu ra tương ứng Như vậy, thông qua việc phân tích 2m cặp bit, cấu trúc của máy được làm rõ.
Máy chạy và dừng luân phiên có độ an toàn cao hơn so với máy LFSR Nếu máy G được xây dựng từ các máy LFSR A, B và C với số hộp tương ứng là L1, L2 và L3, thì sự an toàn của máy G sẽ được cải thiện khi các giá trị L1, L2 và L3 được tối ưu hóa.
L3 đôi một nguyên tố cùng nhau thì máy G sẽ có chu kỳ lớn nhất là L = L1
CÂU HỎI VÀ BÀI TẬP
Chương 4 trình bày mật mã khối nổi tiếng DES là chuẩn mật mã của NIST trong vòng 25 năm cuối thế kỷ hai mươi Ở đây cũng trình bày các phương pháp sử dụng DES trong thực tế Những phương pháp này cũng có thể được mở rộng cho các mật mã khối khác
Trong chương này, chúng ta sẽ khám phá các thuật toán mã hóa theo khối, còn được gọi là thuật toán khóa đơn, khóa bí mật hay thuật toán đối xứng Đặc điểm nổi bật của các thuật toán này là việc cả hai bên gửi và nhận đều sử dụng chung một khóa để mã hóa và giải mã thông điệp Điều này có nghĩa là vai trò của người gửi và người nhận là tương đương Người gửi mã hóa thông điệp bằng một khóa duy nhất và người nhận sử dụng chính khóa đó để giải mã thông điệp nhận được Việc giữ bí mật cho khóa là rất quan trọng, vì nếu khóa bị lộ, kẻ xấu có thể giải mã và đọc nội dung các thông điệp đã trao đổi.
Các thuật toán mã hóa cổ điển chủ yếu thuộc loại khóa đơn, trong khi nhiều thuật toán mã hóa hiện đại phổ biến hiện nay, như DES, Blowfish, IDEA, LOKi, RC5 và Rijndael (AES), được phát triển dựa trên hai kỹ thuật thay thế và đổi chỗ cổ điển.
Trong thuật toán mã hóa khối, dữ liệu đầu vào được chia thành các khối có độ dài cố định như 64 bit hoặc 128 bit Mỗi khối sẽ được mã hóa bằng cùng một khóa, tạo ra các khối dữ liệu đã được mã hóa Cuối cùng, các khối này sẽ được kết hợp để tạo thành bản mã hoàn chỉnh.
4.1 MẠNG THAY THẾ - HOÁN VỊ SHANNON
Năm 1949, nhà toán học Claude Shannon đã giới thiệu ý tưởng về mạng thay thế - hoán vị (mạng S - P), đặt nền tảng cho các thuật toán mã hóa khối.
S - P dựa trên hai phép biến đổi: thay thế (Substitution) và hoán vị
Thay thế và hoán vị là hai kỹ thuật quan trọng trong mật mã cổ điển, được áp dụng cho các ký tự Shannon đã phát triển những kỹ thuật này bằng cách áp dụng chúng cho các bit, đồng thời kết hợp chúng thành một mạng biến đổi hoàn chỉnh.
Phép thay thế (Substitution operation) là quá trình biến đổi một chuỗi bit có độ dài xác định thành một chuỗi bit khác Ví dụ, phép thay thế một chuỗi 3 bit thành một chuỗi 3 bit khác có thể được mô tả như sau: