xin chào các b. Minh là Long , tài liệu này được mình và các b trong nhóm mình làm và đã báo cáo thành công tại liệu này của mình thì làm về lý thuyến an toàn bảo mật thông tin và đề tài của bọn mình làm là về các thuật toán giải mã . nếu bạn nào muốn có code demo thì liên hệ với mình qua: zalo: 0383817845 facebook: fb.commink.logn.ad khi liện hệ qua mình thì thì sẽ có demo + file word + file pp nhé giá cả liên hệ nhé
CƠ SỞ LÝ THUYẾT
Tông quan về an toàn bảo mật thông tin
1.1.1 Nội dung của an toàn và bảo mật thông tin
Khi nhu cầu trao đổi thông tin ngày càng tăng, các tiến bộ trong điện tử - viễn thông và công nghệ thông tin đã thúc đẩy việc phát triển các ứng dụng nhằm nâng cao chất lượng và lưu lượng truyền tin Điều này dẫn đến sự đổi mới trong các quan niệm và biện pháp bảo vệ thông tin dữ liệu Bảo vệ an toàn dữ liệu là một chủ đề rộng lớn, liên quan đến nhiều lĩnh vực khác nhau Hiện nay, có nhiều phương pháp được áp dụng để đảm bảo an toàn thông tin, có thể được phân loại thành ba nhóm chính.
- Bảo vệ an toàn thông tin bằng các biện pháp hành chính.
- Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng).
- Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm).
Ba nhóm trên có thể được áp dụng độc lập hoặc kết hợp với nhau Môi trường mạng và truyền tin là nơi khó bảo vệ an toàn thông tin nhất, đồng thời cũng là điểm dễ bị xâm nhập Hiện nay, biện pháp hiệu quả và kinh tế nhất để bảo vệ thông tin trên mạng truyền tin và mạng máy tính chính là sử dụng các thuật toán.
An toàn thông tin bao gồm bốn yếu tố chính: Tính bí mật (Confidentiality) đảm bảo rằng dữ liệu được truyền đi an toàn và chỉ những người có quyền mới có thể truy cập; Tính xác thực (Authentication) giúp người nhận xác định rõ nguồn gốc dữ liệu, ngăn chặn việc giả mạo; Tính toàn vẹn (Integrity) cho phép kiểm tra rằng dữ liệu không bị thay đổi trong quá trình truyền; và Tính không thể chối bỏ (Non-repudation) đảm bảo rằng cả người gửi và người nhận không thể từ chối trách nhiệm về thông tin đã gửi và nhận Để bảo vệ an toàn thông tin trên mạng, cần dự đoán các rủi ro và nguy cơ xâm phạm, từ đó xác định các giải pháp hiệu quả nhằm giảm thiểu thiệt hại.
Có hai loại hành vi xâm phạm thông tin dữ liệu: vi phạm chủ động và vi phạm thụ động Vi phạm thụ động chủ yếu nhằm mục đích thu thập thông tin một cách gián tiếp.
Việc đánh cắp thông tin có thể diễn ra mà không cần biết nội dung cụ thể, nhưng kẻ xâm nhập vẫn có thể xác định được người gửi và người nhận thông qua thông tin trong phần đầu các gói tin Hơn nữa, chúng có khả năng kiểm tra số lượng, độ dài và tần suất của các cuộc trao đổi, từ đó thu thập được nhiều dữ liệu hữu ích.
Vi phạm thụ động không làm sai lệch hay hủy hoại nội dung thông tin, nhưng khó phát hiện và có thể ngăn chặn bằng các biện pháp hiệu quả Ngược lại, vi phạm chủ động có khả năng thay đổi, xóa bỏ, làm chậm hoặc sắp xếp lại thứ tự thông tin, thậm chí thêm thông tin ngoại lai để làm sai lệch nội dung Mặc dù vi phạm chủ động dễ phát hiện hơn, nhưng việc ngăn chặn chúng lại gặp nhiều khó khăn.
Không có biện pháp bảo vệ an toàn thông tin nào là hoàn hảo Dù hệ thống được bảo vệ kỹ lưỡng, vẫn không thể đảm bảo an toàn tuyệt đối cho dữ liệu.
Các chiếu lược an toàn hệ thống
Giới hạn quyền hạn tối thiểu (Last Privilege) là chiến lược cơ bản, đảm bảo rằng mọi đối tượng chỉ có quyền truy cập vào một số tài nguyên nhất định trong mạng, từ đó giảm thiểu rủi ro khi thâm nhập Bảo vệ theo chiều sâu (Defence In Depth) là phương pháp bổ sung, sử dụng nhiều lớp bảo mật để tăng cường an ninh mạng, giúp ngăn chặn các mối đe dọa hiệu quả hơn.
Nguyên tắc này nhấn mạnh rằng chúng ta không nên chỉ dựa vào một chế độ an toàn duy nhất, dù nó có mạnh mẽ đến đâu, mà cần xây dựng nhiều cơ chế an toàn hỗ trợ lẫn nhau Điều này giúp tăng cường khả năng bảo vệ và giảm thiểu rủi ro.
Tạo ra một "cửa khẩu" hẹp cho phép thông tin chỉ đi vào hệ thống qua con đường duy nhất này là điều cần thiết Do đó, cần thiết lập một cơ cấu kiểm soát và điều khiển để quản lý thông tin đi qua cửa khẩu Điều này giúp xác định và bảo vệ điểm nối yếu nhất trong hệ thống.
Chiến lược này dựa trên nguyên tắc: “ Một dây xích chỉ chắc tại mắt duy nhất, một bức tường chỉ cứng tại điểm yếu nhất”
Kẻ phá hoại thường nhắm vào những điểm yếu nhất của hệ thống, vì vậy việc gia cố các yếu điểm này là rất cần thiết Chúng ta thường chỉ chú trọng đến các cuộc tấn công mạng mà quên rằng an toàn vật lý cũng là một yếu điểm quan trọng trong hệ thống của chúng ta Để bảo vệ hệ thống một cách toàn diện, cần phải nâng cao nhận thức về nguy cơ từ những kẻ tiếp cận trực tiếp.
Các hệ thống an toàn cần sự toàn diện từ các hệ thống cục bộ Nếu một kẻ xấu có khả năng phá vỡ cơ chế an toàn, họ có thể tấn công vào hệ thống tự do của người khác và sau đó xâm nhập từ bên trong Tính đa dạng trong bảo vệ là yếu tố quan trọng để ngăn chặn các cuộc tấn công này.
Để đảm bảo an toàn cho hệ thống, cần áp dụng nhiều biện pháp bảo vệ khác nhau Nếu một hệ thống không được bảo vệ đầy đủ, kẻ tấn công có thể dễ dàng xâm nhập vào các hệ thống khác.
1.1.3 các mức bảo vệ trên mạng
Vì không có giải pháp an toàn tuyệt đối, việc sử dụng nhiều mức bảo vệ khác nhau là cần thiết để tạo thành hàng rào chắn cho các hoạt động xâm phạm Bảo vệ thông tin trên mạng chủ yếu tập trung vào việc bảo vệ dữ liệu lưu trữ trong máy tính, đặc biệt là các server Do đó, ngoài các biện pháp ngăn chặn thất thoát thông tin trên đường truyền, nỗ lực chủ yếu được dồn vào việc xây dựng các mức rào chắn từ bên ngoài vào bên trong cho các hệ thống kết nối mạng Thông thường, các mức bảo vệ này bao gồm quyền truy cập.
Lớp bảo vệ trong cùng đóng vai trò quan trọng trong việc quản lý quyền truy cập và kiểm soát tài nguyên mạng Việc kiểm soát này cần được thực hiện một cách chi tiết, đặc biệt là trong các cấu trúc dữ liệu Hiện nay, kiểm soát quyền truy cập chủ yếu được thực hiện ở mức tệp, kèm theo cơ chế đăng ký tên và mật khẩu để đảm bảo an toàn.
Kiểm soát quyền truy nhập ở mức hệ thống là một phương pháp bảo vệ phổ biến, đơn giản và hiệu quả Để tham gia vào mạng và sử dụng tài nguyên, mỗi người dùng cần đăng ký tên và mật khẩu Người quản trị mạng có trách nhiệm quản lý và kiểm soát mọi hoạt động trên mạng, đồng thời xác định quyền truy nhập của người dùng dựa trên thời gian và không gian, nghĩa là họ chỉ được truy cập trong một khoảng thời gian và tại một vị trí nhất định.
Mặc dù lý thuyết cho rằng việc giữ kín mật khẩu và tên đăng ký sẽ ngăn chặn truy cập trái phép, nhưng thực tế cho thấy điều này khó có thể đảm bảo do nhiều yếu tố đời thường Để tăng cường bảo mật, người quản lý mạng nên chịu trách nhiệm trong việc đặt và thay đổi mật khẩu định kỳ Bên cạnh đó, việc mã hóa dữ liệu cũng là một phương pháp quan trọng để bảo vệ thông tin trong quá trình truyền tải.
Dữ liệu được chuyển đổi từ dạng có thể nhận thức sang dạng không nhận thức thông qua một thuật toán, và quá trình này có thể được đảo ngược tại trạm nhận để giải mã Đây là một lớp bảo vệ thông tin cực kỳ quan trọng trong việc đảm bảo an toàn dữ liệu.
Ngăn chặn truy cập vật lý vào hệ thống là rất quan trọng, thường áp dụng các biện pháp truyền thống như cấm người không phận sự vào phòng máy mạng và sử dụng ổ khóa cho máy tính hoặc các trạm không có ổ mềm Một trong những biện pháp bảo mật hiệu quả là sử dụng tường lửa để bảo vệ hệ thống khỏi các truy cập trái phép.
Ngăn chặn thâm nhập trái phép và lọc bỏ các gói tin không mong muốn là những biện pháp quan trọng trong quản trị mạng, nhằm bảo vệ máy tính và toàn bộ mạng nội bộ (intranet) khỏi các mối đe dọa tiềm ẩn.
Trong thời đại công nghệ thông tin phát triển mạnh mẽ, mạng máy tính đóng vai trò quyết định trong hoạt động của các cơ quan và doanh nghiệp Do đó, việc đảm bảo an toàn cho hệ thống mạng máy tính, ngăn chặn sự cố là nhiệm vụ hàng đầu Quản trị mạng máy tính cần được thực hiện một cách khoa học và chuyên nghiệp để đáp ứng các yêu cầu cần thiết.
- Toàn bộ hệ thống hoạt động bình thường trong giờ làm việc.
- Có hệ thống dự phòng khi có sự cố về phần cứng hoặc phần mềm xảy ra.
- Backup dữ liệu quan trọng theo định kỳ.
- Bảo dưỡng mạng theo định kỳ.
- Bảo mật dữ liệu, phân quyền truy cập, tổ chức nhóm làm việc trên mạng.
1.1.4 An toàn thông tin bằng mật mã
Mật mã là ngành khoa học nghiên cứu các phương pháp truyền tin bí mật, bao gồm lập mã và phá mã Quá trình lập mã gồm mã hóa và giải mã, trong đó mã hóa chuyển đổi thông tin từ dạng nhận thức được sang dạng không nhận thức được để bảo vệ thông tin khi truyền tải Ngược lại, giải mã biến đổi dữ liệu đã mã hóa trở về dạng gốc Đây là một lớp bảo vệ thông tin quan trọng, được áp dụng rộng rãi trong môi trường mạng Để bảo vệ thông tin bằng mật mã, người ta thường tiếp cận theo hai hướng khác nhau.
- Theo đường truyền (Link_Oriented_Security).
- Từ nút đến nút (End_to_End).
Phần loại hệ mã hóa
Có nhiều cách để phân loại hệ mật mã Dựa vào cách truyền khóa có thể phân các hệ mật mã thành hai loại:
Hệ mật đối xứng, hay còn gọi là mật mã khóa bí mật, sử dụng chung một khóa cho cả quá trình mã hóa và giải mã dữ liệu Việc giữ bí mật cho khóa này là điều kiện tiên quyết để đảm bảo an toàn thông tin.
Trong mã hóa đối xứng, khoá là thành phần quan trọng nhất cần được giữ bí mật trong quá trình trao đổi thông tin giữa bên gửi và bên nhận Mặc dù thuật toán mã hóa có thể được thảo luận công khai, việc thoả thuận về khoá mã hóa và giải mã phải được thực hiện bí mật Mã hóa đối xứng rất hữu ích cho các tổ chức đơn lẻ, nhưng khi cần trao đổi thông tin với bên thứ ba, tính bảo mật của khoá cần được ưu tiên hàng đầu Mã hóa đối xứng được chia thành hai loại: Block Cipher, tác động trên bản rõ theo từng nhóm bits (khối), với kích thước khối thường là 64 bits, và Stream Cipher, tác động trên từng bit một, cho phép mã hóa nhanh hơn và thường được sử dụng khi lượng dữ liệu chưa được xác định Một số thuật toán nổi tiếng trong mã hóa đối xứng bao gồm DES, Triple DES (3DES), RC4 và AES.
Hệ mật mã bất đối xứng, hay còn gọi là mật mã khóa công khai, sử dụng hai loại khóa khác nhau: một khóa để mã hóa và một khóa khác để giải mã Các khóa này tạo thành các cặp chuyển đổi ngược nhau, không thể suy ra khóa này từ khóa kia Khóa mã hóa có thể được công khai, trong khi khóa giải mã cần phải được giữ bí mật.
Có hai loại khóa trong mã hóa: khóa công khai (Public Key) dùng để mã hóa và khóa bí mật (Private Key) dùng để giải mã Mã hóa khóa công khai ra đời nhằm giải quyết vấn đề quản lý và phân phối khóa trong các phương pháp mã hóa đối xứng Quá trình này diễn ra khi bên gửi tìm kiếm hoặc yêu cầu khóa công khai từ bên nhận trên một server quản lý khóa Sau khi thống nhất thuật toán mã hóa, bên gửi sử dụng khóa công khai của bên nhận để mã hóa thông tin Khi bên nhận nhận được thông tin mã hóa, họ sẽ dùng khóa bí mật của mình để giải mã Mã hóa công khai giúp quản lý khóa một cách linh hoạt và hiệu quả, chỉ cần bảo vệ khóa bí mật Tuy nhiên, nhược điểm lớn nhất của mã hóa công khai là tốc độ thực hiện chậm hơn so với mã hóa đối xứng Do đó, người ta thường kết hợp hai hệ thống mã hóa này trong các hệ thống mã hóa lai (Hybrid Cryptosystems) Một số thuật toán mã hóa công khai nổi tiếng bao gồm Diffie-Hellman và RSA.
1.1.7 Tiêu chuẩn đánh giá hệ mật mã Để đánh giá một hệ mật mã người ta thường đánh giá thông qua các tính chất sau:
Một hệ mật mã an toàn phải đảm bảo độ an toàn cao, cho phép đánh giá tính bảo mật thông qua độ an toàn tính toán mà không cần cài đặt Hệ mật được coi là an toàn khi việc phá mã yêu cầu thực hiện n phép toán, trong khi thời gian cần thiết để giải quyết n phép toán đó là cực kỳ lớn và không thể chấp nhận được.
Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn sau:
Các phương pháp bảo vệ hiện đại dựa vào sự bí mật của các khoá, trong khi thuật toán được công khai Trước đây, tính an toàn của một thuật toán phụ thuộc vào cách thức hoạt động của nó, nhưng nếu sự an toàn chỉ dựa vào bí mật của thuật toán, thì đó là thuật toán hạn chế (Restricted Algorithm), không còn phù hợp trong thời đại ngày nay Khi một người dùng rời khỏi nhóm, toàn bộ nhóm phải chuyển sang thuật toán khác, và nếu có thông tin bị tiết lộ, thuật toán sẽ bị phá vỡ, gây tốn thời gian và công sức cho các thành viên còn lại Hệ thống mã hoá hiện nay đã giải quyết vấn đề này thông qua khoá (Key), là yếu tố tách rời khỏi thuật toán mã hoá Tính an toàn của mã hoá giờ đây phụ thuộc vào khoá, có thể là bất kỳ giá trị chữ hoặc số nào, và phạm vi của các giá trị này được gọi là Keyspace Cả quá trình mã hoá và giải mã đều sử dụng khoá, và thuật toán được phân loại dựa trên số lượng và đặc tính của khoá được sử dụng.
Nguyên tắc cơ bản trong mã hóa là "Tất cả các thuật toán đều có thể bị phá vỡ" Mỗi thuật toán mang lại mức độ an toàn khác nhau, tùy thuộc vào độ phức tạp trong việc phá vỡ chúng Độ an toàn của một thuật toán sẽ thay đổi theo thời gian và các yếu tố khác nhau.
Nếu chi phí để phá vỡ một thuật toán vượt quá giá trị của thông tin mà thuật toán đó bảo vệ, thì thuật toán đó có thể được xem là an toàn trong thời điểm hiện tại.
- Nếu thời gian cần thiết dùng để phá vỡ một thuật toán là quá lâu thì thuật toán đó tạm thời được coi là an toàn.
Nếu khối lượng dữ liệu cần thiết để phá vỡ một thuật toán vượt quá lượng dữ liệu đã được mã hóa, thì thuật toán đó có thể được xem là an toàn trong thời điểm hiện tại.
Thuật toán bảo mật chỉ đảm bảo an toàn trong một khoảng thời gian nhất định, và luôn có khả năng bị phá vỡ bởi những kẻ tấn công Sự phát triển không ngừng của công nghệ, đặc biệt là tốc độ xử lý của CPU, khiến cho việc đảm bảo an toàn mãi mãi trở nên khó khăn Trong lĩnh vực mạng máy tính, có hai phe đối lập: những kẻ tấn công khai thác lỗ hổng và những người phòng thủ xây dựng các biện pháp bảo vệ Cuộc chiến giữa họ giống như một ván cờ, nơi mỗi nước đi quyết định số phận của cả hai bên Ai có kỹ năng và thời gian hơn sẽ giành chiến thắng, điều này tạo nên sự hấp dẫn cho thế giới mã hóa.
- Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ.
1.1.7.2 Tốc độ mã và giải mã:
Khi đánh giá hệ mật mã chúng ta phải chú ý đến tốc độ mã và giải mã Hệ mật tốt thì thời gian mã và giải mã nhanh.
Hệ mật mã phụ thuộc vào khóa có thể sử dụng khóa công khai hoặc khóa bí mật Việc phân phối khóa bí mật thường tốn kém hơn so với hệ mật mã sử dụng khóa công khai, do đó, chi phí phân phối là một yếu tố quan trọng cần xem xét khi lựa chọn hệ mật mã.
1.1.8 Một số ứng dụng của mã hóa trong security
Một số ứng dụng của mã hoá trong đời sống hằng ngày nói chung và trong lĩnh vực bảo mật nói riêng Đó là:
Công cụ xây dụng
1.2.1Giới thiệu về Visual Studio
Visual Studio là phần mềm hỗ trợ đắc lực cho lập trình website, thuộc sở hữu của Microsoft Ra mắt lần đầu vào năm 1997 với tên mã Project Boston, phần mềm này đã được Microsoft kết hợp các công cụ phát triển thành một sản phẩm duy nhất.
Visual Studio là một hệ thống toàn diện cho phát triển ứng dụng, bao gồm trình chỉnh sửa mã, trình thiết kế và công cụ gỡ lỗi Với Visual Studio, người dùng có thể dễ dàng viết mã, sửa lỗi và chỉnh sửa thiết kế ứng dụng chỉ với một phần mềm duy nhất Hơn nữa, người dùng còn có khả năng thiết kế giao diện và trải nghiệm tương tự như khi phát triển ứng dụng Xamarin, UWP bằng XAML hoặc Blend.
Tính đến thời điểm hiện tại, Visual Studio vẫn là phần mềm lập trình hệ thống hàng đầu, chưa có ứng dụng nào có thể thay thế Sự đánh giá cao này đến từ việc Visual Studio sở hữu nhiều tính năng hấp dẫn và đa dạng.
Phần mềm lập trình Visual Studio của Microsoft hỗ trợ đa nền tảng, cho phép lập trình viên sử dụng trên Windows, Linux và Mac Systems Khả năng này mang lại sự tiện lợi lớn trong quá trình phát triển ứng dụng, khác biệt so với các trình viết code khác.
Visual Studio là phần mềm hỗ trợ đa ngôn ngữ lập trình, cho phép lập trình viên sử dụng nhiều ngôn ngữ như C#, F#, C/C++, HTML, CSS, Visual Basic và JavaScript Với khả năng đa nền tảng, Visual Studio dễ dàng phát hiện và thông báo lỗi trong các chương trình, giúp nâng cao hiệu quả lập trình.
- Hỗ trợ website: Visual Studio code cũng hỗ trợ website, đặc biệt trong công việc soạn thảo và thiết kế web.
Visual Studio cung cấp một kho tiện ích mở rộng phong phú, cho phép lập trình viên dễ dàng tải xuống các ngôn ngữ lập trình khác ngoài những ngôn ngữ hỗ trợ sẵn có Tính năng này hoạt động như một phần độc lập, giúp đảm bảo hiệu suất của phần mềm không bị ảnh hưởng.
Lưu trữ phân cấp trong Visual Studio giúp tổ chức các tệp dữ liệu và đoạn mã một cách hiệu quả, với hầu hết các tệp được sắp xếp trong các thư mục tương tự Ngoài ra, Visual Studio còn cung cấp các thư mục đặc biệt để người dùng có thể lưu trữ tệp an toàn, dễ dàng tìm kiếm và sử dụng.
Visual Studio cung cấp tính năng lưu trữ an toàn nhờ vào việc tích hợp GIT và hỗ trợ nhiều kho lưu trữ phổ biến, giúp người dùng yên tâm về việc quản lý mã nguồn.
Visual Studio cung cấp tính năng màn hình đa nhiệm, cho phép người dùng mở nhiều tập tin và thư mục cùng lúc, ngay cả khi chúng không liên quan đến nhau.
Visual Studio hỗ trợ lập trình viên bằng cách đề xuất các tùy chọn thay thế cho đoạn code, giúp điều chỉnh và cải thiện tính thuận tiện khi sử dụng.
Phần mềm Visual Studio hỗ trợ tích hợp nhiều loại thiết bị đầu cuối, cho phép người dùng thực hiện các thao tác cần thiết mà không cần phải chuyển đổi giữa các màn hình hay quay về thư mục gốc.
Visual Studio hỗ trợ Git thông qua kết nối với GitHub, cho phép người dùng sao chép và kéo thả mã code một cách trực tiếp Các mã code này có thể được chỉnh sửa và lưu trữ ngay trong phần mềm.
Tính năng Intellisense, thường thấy trong các phần mềm lập trình như Visual Studio, nổi bật với khả năng hỗ trợ lập trình viên So với các trình viết mã khác, Visual Studio được đánh giá cao về tính chuyên nghiệp Intellisense không chỉ phát hiện các đoạn mã chưa hoàn chỉnh mà còn gợi ý sửa đổi, tự động khai báo biến khi lập trình viên quên, giúp bổ sung cú pháp cần thiết một cách hiệu quả.
Tính năng bình luận là một công cụ hữu ích cho lập trình viên, giúp ghi nhớ các nhiệm vụ cần hoàn thành và không bỏ sót bất kỳ công đoạn nào Chức năng này cho phép người dùng để lại nhận xét, hỗ trợ trong việc tổ chức và quản lý công việc hiệu quả hơn.
C# là một ngôn ngữ lập trình đơn giản và dễ sử dụng, với khoảng 80 từ khóa và hơn mười kiểu dữ liệu tích hợp sẵn Ngôn ngữ này nổi bật với khả năng diễn đạt cao, hỗ trợ lập trình theo nhiều phương pháp như lập trình có cấu trúc, lập trình hướng đối tượng và lập trình hướng thành phần.
HỆ MÃ HÓA CỔ ĐIỂN
Cơ sở toán học
Modulo số học là một khái niệm quan trọng trong mã hóa, đóng vai trò then chốt trong tất cả các thuật toán mã hóa từ cổ điển đến hiện đại Do đó, việc tìm hiểu về modulo số học là điều cần thiết để nắm vững các nguyên lý mã hóa.
Giả sử a và b là các số nguyên, và m là một số nguyên dương Ta viết a b (mod m) nếu m chia hết cho b - a Mệnh đề a b (mod m) được gọi là "a đồng dư với b theo modulo m", trong đó số nguyên m được gọi là modulus.
- Ta có a ≡ b(mod n) nếu a = kn + b trong đó k là một số nguyên.
- Nếu a và b dương và a nhỏ hơn n, chúng ta có thể gọi a là phần dư của b khi chia cho n.
- Người ta còn gọi b là thặng dư của a theo module n, và a là đồng dư của b theo module n
Ta có câu hỏi; -42 ≡? (mod9), ta thấy -42= -4.9-6
Vậy nên -42 ≡ 3 (mod 9) b, Các phép tính trong modulo số học
Modulo số học cũng giống như số học bình thường, bao gồm các phép giao hoán, kết hợp và phân phối
Các phép tính trong các hệ mã mật hầu hết đều thực hiện đối với một modulo N nào đó.
Tập các số nguyên Z N = {0, 1, …, N-1} trong đó N là một số tự nhiên dương với hai phép toán cộng (+) và nhân (.) được định nghĩa như sau:
Theo tính chất của modulo số học, ZN được xác định là một vành giao hoán và kết hợp Hầu hết các phép toán trong hệ thống mã hóa đều được thực hiện trên một vành ZN nhất định.
2.1.3 Phần tử nghịch đảo trên vành Z N
Khái niệm: Trên một vành số nguyên ZN người ta đưa ra khái niệm về số nghịch đảo của một số như sau:
(GCD-Greatest Common Divisor) ước số chung lớn nhất:
Giả sử a ∈ Z N và tồn tại b ∈ Z N sao cho a.b = (a*b) mod N = 1 Khi đó b được gọi là phần tử nghịch đảo của a trên vành Z N và kí hiệu là a −1 = b.
Để tìm phần tử nghịch đảo của một số a ∈ Z N, cần xác định hai số b và k sao cho a.b = k.N + 1, với b, k ∈ Z N Điều này có thể được viết gọn là a −1 ≡ b (mod N) Theo định lý về sự tồn tại của phần tử nghịch đảo, nếu GCD(a, N) = 1, thì tồn tại duy nhất một số b ∈ Z N là phần tử nghịch đảo của a, tức là thỏa mãn a*b = (a*b) mod N.
2.1.4 Các thành phần của hệ mật mã
Một hệ mật mã là bộ thành phần (P, C, K, E, D) thỏa mãn các điều kiện sau:
- P: là không gian bản rõ, là tập hợp hữu hạn các bản rõ có thể có.
- C: là không gian bản mã, là tập hợp hữu hạn các bản mã có thể có.
- K: là không gian khóa, là tập hợp hữu hạn các khóa có thể có.
- Đối với mỗi k ∈ K có một quy tắc mã e k : P → C và có một quy tắc giải mã tương ứng d k ∈ D.
Với mỗi e k : P → C và d k : C → P là những hàm mà d k ( e k (x)) = x với mọi bản rõ x ∈ P
Hàm giải mã d k chính là hàm ánh xạ ngược của hàm mã hóa e k
Phần tử khả nghịch trong hệ mã Affine được xác định bởi hàm Affine có dạng e(x) = ax + b mod 26, với a, b thuộc Z 26 Để giải mã thành công, hàm Affine cần phải là đơn ánh, nghĩa là với mỗi y thuộc Z 26, phương trình ax + b ≡ y (mod 26) phải có nghiệm x duy nhất Điều này tương đương với đồng dư ax ≡ y - b (mod 26).
Vì y thay đổi trên Z 26 nên y-b cũng thay đổi trên Z 26 Bởi vậy, ta chỉ cần nghiên cứu phương trình đồng dư: ax y (mod 26) (y Z 26 ).
Ta biết rằng, phương trình này có một nghiệm duy nhất đối với mỗi y khi và chỉ khi
Khi UCLN(a, 26) = 1, hàm UCLN biểu thị ước chung lớn nhất của các biến Nếu UCLN(a, 26) = d > 1, thì đồng dư thức ax ≡ 0 (mod 26) sẽ có ít nhất hai nghiệm phân biệt trong Z26, cụ thể là x = 0 và x = 26/d Do đó, hàm e(x) = ax + b mod 26 không phải là một hàm đơn ánh, dẫn đến việc nó không thể được coi là một hàm mã hóa hợp lệ.
Giả sử a ≥ 1 và m ≥ 2 là các số nguyên, nếu UCLN(a, m) = 1 thì a và m được gọi là nguyên tố cùng nhau Số lượng các số nguyên trong Zm nguyên tố cùng nhau với m được ký hiệu là φ(m), đây là hàm Euler.
Một kết quả quan trọng trong lý thuyết số là giá trị của hàm (m) được xác định dựa trên các thừa số trong phép phân tích theo luỹ thừa các số nguyên tố của m Số nguyên p > 1 được coi là số nguyên tố nếu nó chỉ có ước dương là 1 và p Mọi số nguyên m > 1 có thể được phân tích thành tích của các luỹ thừa các số nguyên tố một cách duy nhất, ví dụ như 60 = 2^3 × 3 × 5 và 98 = 2 × 7^2.
Trong mã Affine trên Zm, số khóa được xác định bởi hàm số (m) Cụ thể, số các phép chọn b là m và số các phép chọn a là (m), với hàm mã hóa được biểu diễn là e(x) = ax + b Ví dụ, khi m = 60, ta có (60) = (5.2².3) = (5) (2²) (3) = 2 × 2 × 4 = 16 Do đó, tổng số khóa trong mã Affine là 960.
(det A) −1 Điều kiện cần và đủ để ma trận vuông A khả nghịch là det A != 0 Khi đó ma trận nghịch đảo của A là:
PA là ma trận phụ hợp của ma trận A, trong khi (det A) −1 là phần tử khả nghịch của định thức A Định thức của ma trận vuông A cấp n và phần tử a ij được xác định thông qua định thức con M ij, được tạo ra bằng cách loại bỏ dòng thứ i và cột thứ j Định thức con M ij với dấu (−1) i+ j được gọi là phần bù đại số của phần tử a ij, ký hiệu là A ij.
Hệ mã dịch vòng ( shift cipher)
Mã dịch vòng (MDV) được xác định trên Z 26, tương ứng với 26 chữ cái trong bảng chữ cái tiếng Anh, và cũng có thể áp dụng cho Z m với modulus m tùy ý MDV tạo ra một hệ mật đảm bảo tính chính xác, tức là d K (e K (x)) = x với mọi x thuộc Z 26 Sơ đồ mã của MDV được mô tả như sau:
Để một hệ mật có thể áp dụng trong thực tế, nó cần đáp ứng một số yêu cầu nhất định Dưới đây là hai trong số các tính chất quan trọng mà hệ mật phải có.
1 Mỗi hàm mã hoá e k và mỗi hàm giải mã d k phải có khả năng tính toán được một cách hiệu quả.
2 Đối phương dựa trên xâu bản mã phải không có khả năng xác định khoá k đã dùng hoặc không có khả năng xác định được xâu bản rõ x.
Tính chất thứ hai của ý tưởng "bảo mật" liên quan đến quá trình thử tính khoá k, được gọi là mã thám khi đã biết bản mã y Nếu Oscar xác định được k, anh ta có thể giải mã y như Bob sử dụng d k Do đó, việc xác định k ít nhất cũng khó như việc xác định bản rõ x.
2.2.2 Ưu nhược điểm Ưu điểm:
- Là phương pháp mã hóa cổ điển đơn giản nhất do Julius Caesar phát minh.
- Dễ dàng cài đặt bằng các ngôn ngữ lập trình
- Giúp người dùng hiểu sơ qua về mã hóa
- Mã hóa dịch vòng dễ dàng bị phá mã vì nó không quá phức tạp, tập khóa nhỏ
- Không thể áp dụng vào thực tiễn ngày nay
Hệ mã hóa thay thế (Substitution Cipher)
Hệ mật này đã được sử dụng hàng trăm năm Trò chơi đố chữ "cryptogram" trong các bài báo là những ví dụ về MTT.
MTT sử dụng bộ chữ cái tiếng Anh với 26 ký tự, bao gồm cả P và C Trong mã hóa và giải mã, chúng ta áp dụng Z 26 trong MDV, vì các phép toán liên quan là đại số Tuy nhiên, trong MTT, việc xem mã hóa và giải mã như các hoán vị của ký tự là phương pháp phù hợp hơn.
Sơ đồ hệ mã thay thế:
2.3.2 Ưu nhược điểm a, Ưu điểm
Mỗi khóa của MTT là một phép hoán vị của 26 ký tự, với tổng số hoán vị lên tới 26!, lớn hơn 4 × 10^26, tạo thành một con số khổng lồ Do đó, việc tìm khóa bằng phương pháp vét cạn là không khả thi, ngay cả khi sử dụng máy tính Tuy nhiên, sẽ có những phương pháp khác giúp thám thính MTT một cách dễ dàng hơn.
- Đơn giản, thao tác mã hóa và giải mã được thực hiện nhanh chóng
- Không gian khóa K gồm n! phần tử
- Có tính an toàn cao hơn b, Nhược điểm
- Là hệ mã cổ điển, ít được áp dụng trong thực tế
Hệ mã Affine
2.4.1 Khái niệm hệ mã Affine
Hệ mã Affine là hệ mã trong đó P = C = Z 26 và tập khóa :
Với mỗi khóa k = (a ; b) ∈ K và mọi x, y ∈ Z 26 ta xác định
Trong đó a −1 là nghịch đảo của a trong vành Z 26, tức là: a.a −1 ≡ 1 mod(26)
Số khóa trong hệ mã Affine ở vành Z 26 là m.φ(m) = 26 * 12 = 312
Mã dịch vòng và mã Affine đều là trường hợp đặc biệt của mã hóa thay thế.
2.4.2 Ưu nhược điểm của hệ mã Affine Ưu điểm:
- Có tính linh hoạt, dễ triển khai và sử dụng
- Tập khóa K có giá trị nhỏ, phụ thuộc vào vành Zn và vẫn có thể bị phá mã bằng vét cạn.
- Là phương pháp mã hóa cổ điển, hiện không được áp dụng nhiều trong thực tế
Hệ mã Vigenere
Trong cả hai hệ mật MDV và MTT, mỗi ký tự được ánh xạ vào một ký tự duy nhất, dẫn đến việc chúng còn được gọi là hệ thay thế đơn biểu Một ví dụ nổi bật về hệ mật không phải bộ chữ đơn là mã Vigenère, được đặt theo tên của Blaise de Vigenère từ thế kỷ XVI Ý tưởng chính của mã Vigenère là chia chuỗi cần mã hóa thành các đoạn có độ dài m và thực hiện mã hóa theo từng đoạn.
2.5.2 Định nghĩa hệ mã Vigenere
Mật mã Vigenère sử dụng phép tương ứng A 0, B 1, , Z 25 để gán mỗi khóa k với một chuỗi ký tự có độ dài m, được gọi là từ khóa Đặc điểm nổi bật của hệ mã này là khả năng mã hóa đồng thời m ký tự, trong đó mỗi phần tử của bản rõ tương ứng với m ký tự.
Trong mật mã Vigenère, số lượng từ khóa với độ dài m có thể lên tới 26^m, dẫn đến việc tìm kiếm vét cạn trở nên tốn thời gian khi m có giá trị nhỏ Cụ thể, với m = 5, không gian khóa đạt kích thước hơn 1,1 × 10^7, đủ lớn để ngăn chặn việc tìm khóa bằng tay mà không cần sự hỗ trợ của máy tính.
Hệ mật Vigenère sử dụng từ khoá có độ dài m, với mỗi ký tự ánh xạ vào m ký tự khác nhau, tạo nên một hệ mật thay thế đa biểu (polyalphabetic) Việc thám mã hệ mật đa biểu thường phức tạp hơn so với hệ đơn biểu, do tính đa dạng trong cách mã hóa.
2.5.3 Ưu nhược điểm của mã hóa Vigenere Ưu điểm:
- Mã hóa nhanh, đơn giản và dễ triển khai
- Tính bảo mật tương đối
- Là loại mã hóa cổ điển và tính bảo mật không hoàn toàn cao
- Khó khăn trong phá mã bằng tay tuy nhiên có thể dùng máy tính
Hệ mã Hill
- Sử dụng m tổ hợp tuyến tính của m ký tự trong plaintext để tạo ra m ký tự trong ciphertext
2.6.2 Giải thuật của hệ mã Hill
Để thực hiện phép giải mã, điều kiện cần thiết là ma trận K phải có nghịch đảo Điều này có thể dễ dàng rút ra từ kiến thức đại số tuyến tính cơ bản Vì vậy, chúng ta chỉ tập trung vào các ma trận K khả nghịch.
2.6.3 Ưu nhược điểm của hệ mã Hill Ưu điểm :
- Là hệ mã hóa cổ điển có tính bảo mật cao hơn các hệ mã cổ điển khác
- Triển có thể ứng dụng trong một số trường hợp
- Ma trận cấp càng lớn tính bảo mật càng cao
- Giúp dễ dàng học tập và tìm hiểu cơ bản về hệ mật mãz
- Là hệ mã tương đối phức tạp cho người mới
- Hệ mã cổ điển nn không áp dụng được nhiều