1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng

47 31 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 733 KB

Cấu trúc

  • MỤC LỤC

  • LỜI CẢM ƠN

  • PHẦN I: MỞ ĐẦU

  • PHẦN II: NỘI DUNG

    • CHƯƠNG I: TỔNG QUAN VỀ HỆ MẬT MÃ

      • 1.1 Khái niệm về mã hóa thông tin

        • 1.1.1 Khái niệm

        • 1.1.2 Vai trò của mã hóa

        • 1.1.3 Các thành phần của hệ mã hóa

      • 1.2 Tiêu chuẩn để đánh giá hệ mã hóa

        • 1.2.1 Độ an toàn của thuật toán

        • 1.2.2 Tốc độ mã hóa và giải mã

        • 1.2.3 Phân phối khóa

      • 1.3 Khóa

        • 1.3.1 Khái niệm

        • 1.3.2 Ví dụ

      • 1.4 Phân loại các thuật toán mã hóa

        • 1.4.1 Phân loại theo các phương pháp

          • 1.4.1.1 Mã hoá cổ điển

          • 1.4.1.2 Mã hóa đối xứng

          • 1.4.1.3 Mã hóa bất đối xứng

          • 1.4.1.4 Mã hóa hàm băm

        • 1.4.2 Phân loại theo số lượng khóa

          • 1.4.2.1 Mã hóa khóa bí mật

          • 1.4.2.2 Mã hóa khóa công khai

    • CHƯƠNG II: MỘT SỐ PHƯƠNG PHÁP MÃ HÓA CỔ ĐIỂN

      • 2.1 Hệ mã hóa thay thế

        • 2.1.1 Hệ mã hóa Ceasar

        • 2.1.2 Hệ mã hóa Vigenere

      • 2.2 Hệ mã hóa hoán vị

        • 2.2.1 Đảo ngược toàn bộ bản rõ

        • 2.2.2 Mã hóa theo mẫu hình học

        • 2.2.3 Đổi chổ cột

        • 2.2.4 Hoán vị các ký tự của bản rõ theo chu kì cố định

    • CHƯƠNG III: MỘT SỐ THUẬT TOÁN MÃ HÓA HIỆN ĐẠI

      • 3.1 Thuật toán mã hóa DES

        • 3.1.1 Lịch sử ra đời

        • 3.1.2 Mô tả thuật toán DES

          • 3.1.2.1 Sơ đồ tổng quát

          • 3.1.2.2 Tạo khóa

          • 3.1.2.3 Hoán vị khởi đầu

          • 3.1.2.4 Mã hóa chi tiết một vòng

          • 3.1.2.5 Hoán vị cuối cùng

        • 3.1.3 Giải mã DES

        • 3.1.4 Độ an toàn của thuật toán

      • 3.2 Thuật toán mã hóa RSA

        • 2.2.1 Khái quát về RSA

        • 3.2.2 Mô tả về thuật toán

          • 3.2.2.1 Tạo khóa

          • 3.2.2.2 Mã hóa

          • 3.2.2.3 Giải mã

          • 3.2.2.4 Sơ đồ thuật toán

          • 3.2.2.5 Ví dụ minh họa.

        • 3.2.3 Một số phương pháp tấn công

          • 3.2.3.1 Phương pháp sử dụng φ(n)

          • 3.2.3.2 Áp dụng thuật toán phân tích ra thừa số

          • 3.2.3.3 Bẻ khóa dựa trên tấn công lặp lại

        • 3.2.4 Đánh giá thuật toán

      • 3.3. Thuật toán mã hóa MD5

        • 3.3.1 Hàm băm MD5

          • 3.3.1.1 Khái niệm

          • 3.3.1.2 Ứng dụng

          • 3.3.1.3 Thuật giải

        • 3.3.2 MD5

          • 3.3.2.1 Mô tả

          • 3.3.2.2 Cách thực hiện

  • TÀI LIỆU THAM KHẢO

Nội dung

NỘI DUNG

1.1 Khái niệm về mã hóa thông tin

Mã hóa thông tin là quá trình chuyển đổi dữ liệu từ dạng rõ sang dạng mờ để bảo vệ thông tin khỏi việc truy cập trái phép trên mạng Mục tiêu của mã hóa là ngăn chặn những kẻ xấu cố gắng lấy cắp thông tin khi nó được truyền đi, đảm bảo rằng chỉ những người có quyền mới có thể đọc được dữ liệu đó.

Khi trao đổi thông tin qua Internet, chúng ta phải đối mặt với nhiều rủi ro và nguy hiểm, vì không có gì đảm bảo thông tin không bị đọc trộm Do đó, mã hóa trở thành một biện pháp quan trọng để bảo vệ bản thân và thông tin mà chúng ta gửi đi.

Ngoài ra mã hóa còn đảm bảo tính toàn vẹn của dữ liệu.

1.1.2 Vai trò của mã hóa

Các hệ mã hóa phải thực hiện được các vai trò sau.

Các hệ mã hóa cần phải bảo vệ nội dung văn bản rõ ràng (PlainText) để đảm bảo rằng chỉ người sở hữu hợp pháp thông tin mới có quyền truy cập, nhằm ngăn chặn việc truy cập trái phép.

- Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trên hệ thống đến người nhận hợp pháp xác thực.

Tổ chức các sơ đồ chữ ký điện tử giúp ngăn chặn hiện tượng giả mạo và mạo danh trong việc gửi thông tin trực tuyến Ưu điểm lớn nhất của các hệ mã hóa là khả năng đánh giá độ phức tạp của bài toán mà kẻ xấu phải giải quyết để truy cập dữ liệu mã hóa Mặc dù mỗi hệ mã hóa có những ưu và nhược điểm riêng, việc đánh giá độ phức tạp tính toán cho phép chúng ta áp dụng chúng một cách linh hoạt theo yêu cầu về độ an toàn.

TỔNG QUAN VỀ HỆ MẬT MÃ

Khái niệm về mã hóa thông tin

Mã hóa thông tin là quá trình chuyển đổi dữ liệu từ dạng đọc được sang dạng không thể đọc được, nhằm bảo vệ thông tin khỏi việc truy cập trái phép trên mạng Thông qua việc mã hóa, thông tin được truyền tải dưới dạng mờ, đảm bảo rằng chỉ những người có quyền truy cập mới có thể giải mã và đọc được nội dung.

Khi cần trao đổi thông tin, Internet có thể là môi trường không an toàn và tiềm ẩn nhiều rủi ro Không có đảm bảo rằng thông tin chúng ta gửi đi không bị đọc trộm Do đó, mã hóa là biện pháp hiệu quả để bảo vệ bản thân và thông tin trong quá trình truyền tải.

Ngoài ra mã hóa còn đảm bảo tính toàn vẹn của dữ liệu.

1.1.2 Vai trò của mã hóa

Các hệ mã hóa phải thực hiện được các vai trò sau.

Các hệ thống mã hóa cần phải bảo vệ nội dung văn bản rõ ràng (PlainText) để đảm bảo rằng chỉ những người sở hữu hợp pháp thông tin mới có quyền truy cập Điều này giúp ngăn chặn việc truy cập trái phép vào dữ liệu nhạy cảm.

- Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trên hệ thống đến người nhận hợp pháp xác thực.

Tổ chức các sơ đồ chữ ký điện tử là giải pháp hiệu quả nhằm ngăn chặn hiện tượng giả mạo và mạo danh trong việc gửi thông tin trên mạng Hệ mã hóa có ưu điểm lớn là cho phép đánh giá độ phức tạp của các bài toán mà kẻ thù phải giải quyết để truy cập dữ liệu mã hóa Mặc dù mỗi hệ mã hóa đều có những ưu và nhược điểm riêng, nhưng việc đánh giá độ phức tạp tính toán giúp chúng ta ứng dụng công nghệ này một cách linh hoạt, tùy thuộc vào yêu cầu về mức độ an toàn.

1.1.3 Các thành phần của hệ mã hóa

Một hệ mã hóa là một bộ 5 (P, C, D, K, E) thõa mã các điều kiện sau.

- P là một tập hợp hữu hạn các bản rõ (PlainText), nó còn được gọi là không gian bản rõ.

C là không gian bản mã, bao gồm một tập hợp hữu hạn các bản mã (CipherText) Mỗi phần tử trong C được tạo ra bằng cách áp dụng phép mã hóa Ek lên các phần tử của P.

K là một tập hợp hữu hạn các khóa, được gọi là không gian khóa Mỗi phần tử k trong K được xem là một khóa (Key) Để đảm bảo an toàn, số lượng khóa trong không gian này cần phải đủ lớn, nhằm ngăn chặn "kẻ địch" có đủ thời gian để thử nghiệm tất cả các khóa bằng phương pháp vét cạn.

E và D là tập hợp các quy tắc mã hóa và giải mã Đối với mỗi k trong K, có một quy tắc mã hóa ek: PC và một quy tắc giải mã tương ứng dk thuộc D Các hàm này thỏa mãn điều kiện dk(ek(x))=x cho mọi bản rõ x.

Hình 1.1: Mô hình mã hóa

Tiêu chuẩn để đánh giá hệ mã hóa

1.2.1 Độ an toàn của thuật toán

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 cung cấp 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 luôn thay đổi theo thời gian.

Nếu chi phí để phá vỡ một thuật toán lớn hơn 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 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 coi là an toàn trong thời điểm hiện tại.

1.2.2 Tốc độ mã hóa và giải mã

Khi đánh giá hệ mã hóa phải chú ý đến tốc độ mã hóa và giải mã Hệ mã hóa tốt thì thời gian mã hóa và giải mã nhanh.

Hệ mã hóa phụ thuộc vào khóa có thể sử dụng khóa công khai hoặc khóa bí mật Tuy nhiên, việc phân phối khóa bí mật thường tốn kém hơn so với các thuật toán mã hóa khóa công khai Do đó, chi phí phân phối khóa là một yếu tố quan trọng cần xem xét khi lựa chọn hệ mã hóa.

Khóa

Khóa mã hóa là thông tin đặc biệt kết hợp với thuật toán để thực hiện mã hóa và giải mã Mỗi khóa khác nhau tạo ra văn bản mã hóa khác nhau, và việc chọn sai khóa sẽ khiến không thể mở tài liệu đã mã hóa, dù biết thuật toán sử dụng Sử dụng khóa phức tạp tăng cường độ an toàn cho dữ liệu.

Mã hóa nội dung của bức thư bằng cách thay thế mỗi ký tự bằng ký tự đứng thứ 3 sau nó Phương pháp này giúp bảo mật thông tin trong thư, tạo ra một mã hóa độc đáo Việc áp dụng thuật toán này cho phép tăng cường an ninh cho nội dung truyền tải, đồng thời giữ nguyên ý nghĩa ban đầu của văn bản.

Kết quả của một bức thư có nội dung giống nhau sẽ khác nhau khi sử dụng hai khóa mã hóa khác nhau, dẫn đến việc tạo ra hai bản mã độc lập.

Phân loại các thuật toán mã hóa

1.4.1 Phân loại theo các phương pháp

Thuật toán mã hóa sử dụng khóa đơn giản đã xuất hiện trong lịch sử và dễ hiểu Phương pháp này thay thế từng ký tự hoặc nhóm ký tự trong bản rõ bằng ký tự hoặc nhóm ký tự khác để tạo thành bản mã Người nhận chỉ cần đảo ngược trình tự thay thế để khôi phục bản rõ ban đầu.

Mã hóa cổ điển có hai phương pháp nổi bật là: Mã hóa thay thế và mã hóa hoán vị.

Các hệ mã hóa thường được sử dụng trong lịch sử là: Hệ mã hóa Ceasar, Vigenere, Hill…

Mã hóa đối xứng, hay còn gọi là mã hóa chia sẻ khóa, là một mô hình mã hóa hai chiều, trong đó cả quá trình mã hóa và giải mã đều sử dụng chung một khóa Khóa này được chuyển giao bí mật giữa hai bên tham gia giao tiếp và có thể được cấu hình trong phần mềm hoặc mã hóa trong phần cứng Mặc dù mã hóa đối xứng thực hiện nhanh chóng, nhưng nó cũng tiềm ẩn rủi ro nếu khóa bị đánh cắp.

Một số thuật toán mã hóa đối xúng nổi tiếng như: DES, AES, RC2, RC4, RC5, RC6…

Ngoài ra còn một số thuật toán như: Skipjact, Blowfish, CATS-128.

1.4.1.3 Mã hóa bất đối xứng

Mã hóa bất đối xứng là một phương pháp mã hóa hai chiều sử dụng cặp khóa gồm khóa công khai (Public Key) và khóa riêng (Private Key) Khóa công khai có thể được chia sẻ rộng rãi, trong khi khóa riêng chỉ được giữ bởi một người duy nhất Người gửi sử dụng khóa công khai để mã hóa thông tin, và người nhận sẽ dùng khóa riêng để giải mã Điều này đảm bảo tính bảo mật cao hơn cho thông tin Quan trọng là cặp khóa Public Key và Private Key phải tương thích, nghĩa là chỉ có khóa riêng tương ứng mới có thể giải mã dữ liệu đã được mã hóa bằng khóa công khai.

Thuật toán mã hóa bất đối xứng nổi tiếng và được sử dụng nhiều nhất hiện nay là RSA.

Ngoài ra còn một số thuật toán khac như: Hellman, Elgamal…

Mã hóa một chiều là phương pháp chuyển đổi dữ liệu từ bản rõ sang bản mã mà không thể giải mã trở lại Hình ảnh minh họa cho quá trình này là việc băm nhuyễn một củ hành, vì sau khi đã bị băm, chúng ta không thể phục hồi lại hình dạng ban đầu của củ hành.

Trong xử lý hàm băm, dữ liệu đầu vào có thể có độ dài khác nhau, nhưng độ dài của kết quả băm luôn được xác định Hàm băm thường được áp dụng trong mô hình xác thực mật khẩu để đảm bảo an toàn cho thông tin người dùng.

Một số thuật toán mã hóa hàm băm thường dùng như: MD4, MD5, SHA…

1.4.2 Phân loại theo số lượng khóa

1.4.2.1 Mã hóa khóa bí mật

Mã hóa khóa bí mật là thuật toán trong đó khóa giải mã có thể được tính từ khóa mã hóa, thường thì hai khóa này giống nhau Để thực hiện, người gửi và người nhận cần thỏa thuận một khóa bí mật trước khi gửi thông tin Độ an toàn của phương pháp này phụ thuộc vào tính bí mật của khóa; nếu khóa bị lộ, bất kỳ ai cũng có thể dễ dàng mã hóa và giải mã thông tin.

Hình 1.2: Mô hình mã hóa khóa bí mật Trong đó :

K1 có thể được tính từ K2.

K2 có thể được tính từ K1.

Mã hóa khóa bí mật là phương pháp thường được áp dụng trong các tình huống mà việc chuyển giao khóa giữa người gửi và người nhận diễn ra dễ dàng và an toàn Phương pháp này giúp đảm bảo rằng khóa được trao đổi một cách bảo mật, khó bị tấn công từ bên ngoài Nó thường được sử dụng trong môi trường văn phòng để bảo vệ thông tin quan trọng.

Một số vấn đề liên quan

Các phương pháp mã hóa khóa bí mật yêu cầu người mã hóa và người giải mã phải sử dụng chung một khóa, và khóa này cần được giữ bí mật hoàn toàn Nếu kẻ địch biết được một trong hai khóa, họ có thể dễ dàng xác định khóa còn lại.

Phương pháp này không đảm bảo an toàn nếu có khả năng cao khóa người gửi bị lộ Để bảo vệ khóa, nó cần được truyền qua kênh an toàn, vì nếu kẻ tấn công có thể xâm nhập vào kênh này, khóa sẽ dễ dàng bị phát hiện.

Quản lý và phân phối khóa là một thách thức phức tạp, đòi hỏi sự đồng thuận giữa người gửi và người nhận Việc thay đổi khóa không chỉ khó khăn mà còn có nguy cơ bị lộ, tạo ra những rủi ro trong quá trình bảo mật thông tin.

1.4.2.2 Mã hóa khóa công khai

Mã hóa khóa công khai sử dụng hai loại khóa khác nhau: khóa mã hóa và khóa giải mã Đặc biệt, khóa giải mã không thể được tính toán từ khóa mã hóa, đảm bảo tính bảo mật cao cho thông tin.

Khác với mã hóa khóa bí mật, thuật toán mã hóa công khai sử dụng khóa được công bố rộng rãi Mọi người có thể sử dụng khóa công khai để mã hóa thông tin, nhưng chỉ người nhận có khóa giải mã tương ứng mới có thể giải mã thông tin đó.

Mô hình mã hóa khóa công khai.

Hình 1.3: Mô hình mã hóa khóa công khai.

Khóa mã hóa không thể giống khóa giải mã.

Khóa giải mã không thể được tính từ khóa mã hóa.

Mã hóa khóa công khai cho phép gửi cả khóa công khai và bản mã qua kênh không an toàn mà vẫn đảm bảo thông tin không bị đọc trộm Nhờ vào tính an toàn cao, phương pháp này ngày càng được ứng dụng rộng rãi trên mạng Internet công khai.

MỘT SỐ PHƯƠNG PHÁP MÃ HÓA CỔ ĐIỂN

Hệ mã hóa thay thế

Hệ mã hóa Ceasar là một ví dụ tiêu biểu của mã hóa thay thế, hoạt động dựa trên bảng chữ cái tiếng Anh với 26 ký tự Ceasar sử dụng các số nguyên để thay thế cho các ký tự, đánh số chúng theo thứ tự trong bảng chữ cái.

Các phép toán số học được thực hiên trên Modul 26 (có nghĩa là 26 tương ứng với 0, 27 tương ứng với 1, 28 tương ứng với 2,…, 79 = 26x3 + 1 tức 79 tương ứng với 1).

Hệ CAESAR áp dụng thuật toán mã hóa Ek, trong đó mỗi ký tự được thay thế bằng một ký tự khác thông qua việc dịch ký tự cần mã hóa sang phải k bước theo modul 26.

Với  là một ký tự, 0  k  26, MOD là phép chia lấy phần dư.

Thuật toán giải mã tương ứng Dk là lùi lại k bước trong bảng chữ cái theo modul 26

Dk() = ( - k) MOD 26 Không gian khóa của hệ CEASAR bao gồm 16 số: 0, 1, 2, …, 25.

Ví dụ: Với k = 3, A được thay bằng D, B được thay bằng E,…, W được thay bằng Z,…, Y được thay bằng B và Z được thay bằng C Ta có:

Bảng chử cái dùng để mã hóa.

Trong trường hợp này, "ĐẠI HỌC VINH" được mã hóa thành "GDL KRF YLQK", lưu ý rằng các ký tự trống trong bảng mã đã được loại bỏ để đảm bảo tính an toàn.

Thêm một vài ví dụ minh họa:

Hệ CEASAR là một phương pháp mã hóa cổ điển nhưng không an toàn do không gian khóa hạn chế, dẫn đến khả năng bị thám mã dễ dàng bằng phương pháp vét cạn Khóa giải mã có thể được tính toán trực tiếp từ khóa mã hóa, với chỉ 26 khóa khả dụng, cho phép thử nghiệm từng khóa cho đến khi tìm ra khóa chính xác.

Hệ mã hóa này được đặt theo tên của một nhà mật mã người Pháp Blaise De

Vinegere cũng giống như Caesar, nhưng ở đây khóa được thay đổi theo từng bước Hình vuông VIGENERE được sử dụng để mã hóa và giải mã.

Mỗi cột trong hình vuông Vigenere có thể được coi là một hệ thống mã hóa Caesar với các khóa từ 0 đến 25 Để thực hiện mã hóa, bản rõ được đọc từ các hàng, trong khi khóa được lấy từ các cột.

Để mã hóa cụm từ "DAI HOC VINH" với từ khóa "KHOA KINH TE", ta xác định điểm giao giữa hàng D và cột K, thu được N, sau đó tìm điểm giao giữa hàng A và cột H, thu được H Tiếp tục như vậy, ta có bản mã "NHW HYK IPGL" Để giải mã, ta tìm hàng chứa N trong cột K để xác định chữ D, và hàng chứa H trong cột H để xác định chữ A Qua quá trình này, bản rõ được khôi phục là "DAI HOC VINH".

Trong thực tế, độ dài bản rõ thường lớn hơn độ dài khóa, do đó để mã hóa hoặc giải mã, cần áp dụng từ khóa một cách tuần hoàn Điều này có nghĩa là từ khóa phải được lặp lại nhiều lần để đảm bảo tất cả các ký hiệu trong bản rõ được xử lý đầy đủ.

Trong hệ mã hóa Vigenère, với độ dài khóa là d, sẽ có tổng cộng 26^d khóa hợp lệ Do đó, khi giá trị d nhỏ, phương pháp thám mã vét cạn sẽ tốn khá nhiều thời gian để tìm ra khóa đúng.

Hệ mã hóa hoán vị

Hệ mã hóa hoán vị, hay còn gọi là hệ mã hóa đổi chỗ, là một phương pháp mã hóa trong đó các ký tự của bản rõ được giữ nguyên nhưng thứ tự của chúng được sắp xếp lại một cách vòng quanh.

Phương pháp này có các kỹ thuật mã hóa sau.

2.2.1 Đảo ngược toàn bộ bản rõ

Bản gốc được viết theo thứ tự ngược lại từ sau ra trước để tạo ra bản mã, đây là phương pháp mã hóa đơn giản nhất nhưng không đảm bảo an toàn.

Ví dụ Plaintext: SECURE EMAIL

2.2.2 Mã hóa theo mẫu hình học

Bản gốc được sắp xếp lại theo một mẫu hình học nào đó, thường là một mảng hoặc ma trận hai chiều.

Ví dụ: Bản rõ “KHOA CONG NGHE THONG TIN” được viết theo ma trận 4x5 như sau:

Nếu lấy các ký tự ra theo số thứ tự cột 3, 1, 4, 2, 5 thì ta thu được bản mã

2.2.3 Đổi chổ cột Đầu tiên đổi chổ các ký tự trong ban rõ thành dạng hình chữ nhật theo cột, sau đó các cột được sắp xếp lại và các chữ cái được lấy ra theo hàng ngang.

Ví dụ: Bản rõ là “KHOA CONG NGHE THONG TIN” được viết dưới dạng ma trận 4x5 theo cột như sau:

Với 5 cột, chúng ta có thể sắp xếp lại theo 5!0 cách khác nhau, giúp tăng cường độ an toàn bằng cách lựa chọn một trong những cách sắp xếp này.

Nếu ta chuyển vị các cột theo thứ tự 3, 5, 2, 4, 1 rồi lấy các ký tự ra theo hàng ngang ta sẽ đợc bản mã là

“NGCTKGTOHHHINOOENGNA” Lu ý rằng các ký tự cách đợc bỏ ®i.

2.2.4 Hoán vị các ký tự của bản rõ theo chu kì cố định

Nếu hàm f là một hoán vị của một khối gồm d ký tự thì khoá mã hoá đợc biểu diễn bởi K(d,f).

Với mi là các ký tự , và bản rõ sẽ đợc mã hoá thành:

Ek(M) = mf(1)mf(2) mf(d)md+f(1) md+f(d)

Trong đó mf(1)mf(2) mf(d) là một hoán vị của m1m2 md.

Ví dụ: Mã hóa bản rõ “BAO MAT” chọn d=6 và f hoán vị dãy i= 123456 thành f(i)51462

Sau khi thực hiện hoán vị, ký tự đầu tiên được chuyển đến vị trí thứ 3, ký tự thứ hai đến vị trí thứ 5, và ký tự thứ ba đến vị trí thứ 1 Kết quả của quá trình mã hóa này là bản mã “OABMTA”.

Nếu kích thước bản rõ lớn hơn nhiều so với d, chúng ta cần chia bản rõ thành các khối d ký tự và mã hóa từng khối một.

Bản rõ “KHOA CONG NGHE THONG TIN”, giả sử d=6, và f hoán vị dãy i= 12345 thành f(i)5142

Ta thu được bản mã “OCKAHGGONNTOHHETNIG”

MỘT SỐ THUẬT TOÁN MÃ HÓA HIỆN ĐẠI

Thuật toán mã hóa DES

Khoảng những năm 1970, tiến sĩ Horst Feistel đã đặt nền móng đầu tiên cho chuẩn mã hóa DES với phương pháp mã hóa Feistel Cipher Vào năm

Năm 1976, Cơ quan Bảo mật Quốc gia Hoa Kỳ (NSA) đã công nhận tiêu chuẩn mã hóa dữ liệu DES dựa trên phương pháp Feistel Mặc dù kích thước khóa ban đầu của DES là 128 bit, nhưng trong bản công bố FIPS, kích thước này đã được rút xuống còn 56 bit nhằm tăng tốc độ xử lý và thiết lập các tiêu chuẩn cho mã hóa dữ liệu.

Nội dung phương pháp mã hóa DES.

DES mã hóa dữ liệu thông qua 16 vòng lặp, mỗi vòng sử dụng khóa chu kỳ 48 bit được tạo từ khóa 56 bit ban đầu Quá trình này sử dụng 8 bảng S-box hằng số để thực hiện các thao tác mã hóa.

3.1.2 Mô tả thuật toán DES

Phương pháp DES mã hóa khối thông tin x có độ dài 64 bít với khóa k có độ dài 56 bit thành khối y có độ dài 64 bít.

DES được xây dựng dựa trên sự kết hợp giữa các kỹ thuật thay thế và hoán vị bản rõ, dựa trên khóa trong một vòng lặp.

16 vòng lặp áp dụng cùng một kiểu kết hợp các kỹ thuật trên khối bản rõ.

Thuật toán sử dụng các phép toán số học và logic cơ bản trên số 16 bít, điều này giúp cho việc triển khai vào những năm 1970 trở nên dễ dàng, phù hợp với công nghệ phần cứng thời bấy giờ.

Hình 3.1: Sơ đồ tổng quát mã hóa DES.

Quá trình xử lý bao gồm 16 vòng thực hiện giống nhau, cùng với hai lần hoán vị ở đầu IP và cuối IP-1 Hai hoán vị này được thiết kế để đưa thông tin vào và lấy thông tin ra hiệu quả.

Để vào vòng mã hóa, khối thông tin ban đầu 64 bít được chia thành hai khối 32 bít Hàm f sẽ biến đổi một nửa của khối đang xử lý bằng cách sử dụng khóa con tương ứng với vòng mã hóa.

Trong đầu ra của hàm, hàm f được kết hợp với nửa khối còn lại thông qua phép toán XOR, sau đó hai phần này sẽ được trao đổi để tiếp tục xử lý trong chu trình kế tiếp.

Quá trình mã hóa và giải mã giống nhau vì thực hiện các vòng cho đến vòng cuối cùng sẽ không làm tráo đổi hai phần nữa.

Quá trình mã hóa được thực hiện 16 vòng, mỗi vòng cần một khóa Như vậy từ khóa ban đầu tạo ra 16 khóa con cho 16 vòng lặp tương ứng.

Sơ đồ quá trình tạo khóa.

Hình 3.2: Sơ đồ tạo khóa

Khóa K ban đầu có độ dài 64 bít, nhưng sau khi loại bỏ 8 bít chẵn lẽ, độ dài của nó được giảm xuống còn 56 bít Quá trình loại bỏ này được thực hiện thông qua bước PC1.

Các bít ở vị trí 8, 16, 24, 32, 40, 48, 56, 64 bị loại bỏ, và 56 bít còn lại được chia thành hai phần, mỗi phần 28 bít, được xử lý độc lập Việc dịch các phần này 1 hoặc 2 bít phụ thuộc vào vòng đó, với số bít dịch được chỉ định trong bảng kèm theo.

Sau khi dịch bit, 56 bit được chọn ra 48 bit thông qua quá trình hoán vị nén hay hoán vị lựa chọn Quá trình này thực hiện việc đổi chỗ thứ tự các bit, cung cấp một tập hợp các bit có kích thước tương đương với đầu ra của hoán vị mở rộng Ví dụ, bit ở vị trí 33 của khóa được chuyển đến vị trí 35 của đầu ra, trong khi bit ở vị trí 8 của khóa bị loại bỏ.

Bảng PC2( hoán vị nén).

Như vậy sau khi đi qua PC2 còn lại 48 bít, 48 bít này sẽ được sử dụng làm khóa K1 để sử dụng trong vòng mã hóa.

Hai phần, mỗi phần 28 bít, sau khi được dịch bít lần đầu tiên, sẽ tiếp tục được dịch bít lần thứ hai Sau đó, thông qua bảng PC2, tiến hành hoán vị nén 48 bít và tạo ra K2.

Quá trình cứ tiếp tục như vậy ta thu được 16 khóa Ki (i=1…16).

Mục đích của hoán vị khởi đầu trong DES là thay đổi vị trí các bit của khối dữ liệu thông qua bảng IP, mà không làm ảnh hưởng đến tính an toàn của thuật toán này.

Với một bản rõ x đã cho, xâu bít x0 được tạo ra bằng cách hoán vị các bít của x theo phép hoán vị cố định ban đầu IP Chúng ta có thể biểu diễn x0 dưới dạng x0=IP(x)=L0R0, trong đó L0 là 32 bít đầu tiên và R0 là 32 bít cuối cùng.

Hình 3.3: Biểu diễn dãy 64 bít x chia thành 2 thành phần L 0 ,R 0

Bảng hoán vị khởi đầu IP.

3.1.2.4 Mã hóa chi tiết một vòng

Quá trình xử lý các vòng là giống nhau, ta xét quá trình xử lý của một vòng i với 1 i  16.

Hình 3.4: Sơ đồ chi tiết một vòng.

Hàm f có hai tham số là R và K Được thực hiện theo sơ đồ sau :

Hình 3.5: Sơ đồ hoạt động của hàm f.

Ri được mở rộng từ 32 bít thành 48 bít thông qua việc hoán vị và lặp lại một số bít Đầu vào 32 bít được chia thành 8 bộ, mỗi bộ gồm 4 bít Bít đầu tiên và bít cuối cùng của mỗi bộ tương ứng với 2 bít trong khối dữ liệu ra, trong khi bít thứ 2 và bít thứ 3 của mỗi bộ tương ứng với một bít trong khối dữ liệu ra Chẳng hạn, bít ở vị trí thứ 3 của đầu vào được chuyển đến vị trí thứ 4 trong đầu ra, và bít thứ 8 trong đầu vào được chuyển đến vị trí 11 và 13 trong đầu ra.

Hình 3.6: Hoán vị mở rộng.

Thuật toán mã hóa RSA

Thuật toán RSA, được mô tả lần đầu tiên vào năm 1977 bởi Ron Rivest, Adi Shamir và Len Adleman tại Học viện Công nghệ Massachusetts (MIT), là một trong những phương pháp mã hóa quan trọng nhất hiện nay Tên gọi của thuật toán này được hình thành từ ba chữ cái đầu của tên ba tác giả.

Vào năm 1973, nhà toán học người Anh Clifford Cocks đã mô tả một thuật toán tương tự, nhưng do hạn chế về khả năng tính toán thời bấy giờ, thuật toán này không thể thực hiện và chưa từng được thử nghiệm Phát minh này chỉ được công bố vào năm 1997 vì lý do bảo mật.

Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm

Bằng sáng chế RSA, được cấp vào năm 1983, đã hết hạn vào ngày 21 tháng 9 năm 2000 Tuy nhiên, do thuật toán đã được công bố trước khi đăng ký bảo hộ, nên sự bảo hộ của nó hầu như không có giá trị bên ngoài Hoa Kỳ Hơn nữa, nếu công trình của Clifford Cocks được công bố trước đó, thì bằng sáng chế RSA sẽ không thể được đăng ký.

3.2.2 Mô tả về thuật toán

Thuật toán RSA sử dụng hai loại khóa: khóa công khai và khóa bí mật Khóa công khai được phát tán rộng rãi và dùng để mã hóa thông tin, trong khi khóa bí mật chỉ được người sở hữu biết và dùng để giải mã Điều này có nghĩa là bất kỳ ai cũng có thể mã hóa dữ liệu, nhưng chỉ người nắm giữ khóa bí mật mới có khả năng giải mã thông tin đó.

Hệ mật mã khoá công khai có thể được mô phỏng qua ví dụ sau: Nam muốn gửi thông tin mật cho Nga, chỉ mình Nga có thể đọc Nga gửi cho Nam một chiếc hộp đã mở khóa và giữ chìa khóa Nam cho thông tin vào hộp, khóa lại, và gửi lại cho Nga Nga sử dụng chìa khóa của mình để mở hộp và đọc thông tin Trong ví dụ này, chiếc hộp mở tượng trưng cho khóa công khai, trong khi chìa khóa là khóa bí mật.

Để Nga và Nam có thể trao đổi thông tin bí mật qua một kênh không an toàn như Internet, Nga cần sử dụng thuật toán RSA để tạo ra một cặp khóa bao gồm khóa công khai và khóa bí mật Các bước thực hiện sẽ giúp đảm bảo an toàn cho thông tin được truyền tải.

1 Chọn 2 số nguyên tố lớn p và q với p≠q, lựa chọn ngẫu nhiên và độc lập.

3 Tính: giá trị hàm số Ơle (n)= (p-1)(q-1).

4 Chọn một số tự nhiên e sao cho 1< e< (n) và là số nguyên tố cùng nhau với (n)

5 Tính: d sao cho (de -1)*k= (n), k là số nguyên dương Hay d=e -

Khóa công khai bao gồm:

 e, số mũ công khai (cũng gọi là số mũ mã hóa).

Khóa bí mật bao gồm:

 n, môđun, xuất hiện cả trong khóa công khai và khóa bí mật, và

 d, số mũ bí mật (cũng gọi là số mũ giải mã).

Nga chia sẻ khóa công khai với Nam, trong khi giữ bí mật khóa cá nhân của mình Trong quá trình này, các số p và q đóng vai trò quan trọng, vì chúng là các phân tố của n và giúp tính toán giá trị d khi đã biết e.

Nam muốn gửi thông tin M cho Nga bằng cách chuyển đổi M thành một số m nhỏ hơn n thông qua một hàm có thể đảo ngược, từ đó có thể xác định lại M.

M) được thỏa thuận trước Quá trình này được mô tả ở phần sau:

Lúc này Nam có m và biết n cũng như e do Nga gửi Nam sẽ tính c là bản mã hóa của m theo công thức:

Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo môđun) bằng thuật toán bình phương và nhân Cuối cùng Nam gửi c cho Nga.

Nga nhận c từ Nam và biết khóa bí mật d Nga có thể tìm được m từ c theo công thức sau:

Biết m, Nga tìm lại M theo phương pháp đã thỏa thuận trước

Hình 3.7: Sơ đồ thuật toán RSA

Dưới đây là một ví dụ cụ thể với các số liệu nhỏ để dễ dàng tính toán; tuy nhiên, trong thực tế, cần sử dụng các giá trị lớn hơn để đảm bảo tính chính xác và áp dụng hiệu quả.

Để tạo khóa, chúng ta sử dụng hai số nguyên tố: p = 5 và q = 7 Môđun n được tính bằng cách nhân hai số nguyên tố này, n = pq = 35, và đây sẽ là thông tin công bố công khai Cần lưu ý rằng p và q phải được giữ bí mật hoặc hủy bỏ ngay sau khi khóa được tạo.

(q-1)=24 - Giá trị hàm số Ơle e = 5 - số mũ công khai (chọn e thoả điều kiện 1< e< n) d= 29 - số mũ bí mật ( chọn d sao cho e * d -1 chia hết cho (n)) Như vậy ta có cặp khóa:

Private Key = (d,n) = (29,35) Áp dụng để mã hoá chuổi : SECURE

Trong bảng chữ cái, có tất cả 26 ký tự, các ký tự ứng với một con số Do đó, ta có bảng sau:

Nếu dữ liệu trên đường chuyển đến người nhận bị chặn, kẻ tấn công chỉ nhận được những con số mà không thể hiểu được nội dung Để đọc được dữ liệu, người đó cần có Private Key tương ứng với Public Key đã dùng để mã hóa, nhờ đó đảm bảo an toàn cho thông tin.

Khi dữ liệu đến tay người nhận, muốn khôi phục lại dữ liệu gốc ban đầu, ta sẽ decrypt lại với n = 35, d = 29.

Nội dung bị mã hoá M = c d mod n Dữ liệu gốc

3.2.3 Một số phương pháp tấn công

Phương pháp RSA đảm bảo tính an toàn dựa trên việc chi phí giải mã thông tin đã được mã hóa một cách bất hợp lệ là quá cao, khiến cho việc này gần như không thể thực hiện được.

Khóa công cộng trong phương pháp RSA dễ bị tấn công bẻ khóa, vì kẻ tấn công có thể sử dụng khóa công cộng để xác định khóa riêng tương ứng Để thực hiện điều này, việc tính toán giá trị n là rất quan trọng, từ đó có thể xác định các số nguyên tố p và q, giúp tính toán khóa riêng d.

Khi kẻ tấn công biết giá trị φ(n), việc xác định hai số nguyên tố p và q trở nên khả thi thông qua việc giải hai phương trình: n = p*q và φ(n) = (p-1)*(q-1) Bằng cách thay thế q = n/p, ta có được một phương trình bậc hai: p² + p*(φ(n) - n - 1) + n = 0 Hai nghiệm p và q chính là các thừa số nguyên tố cần tìm Tuy nhiên, việc phát hiện giá trị φ(n) lại khó khăn hơn so với việc xác định hai thừa số nguyên tố của n.

3.2.3.2 Áp dụng thuật toán phân tích ra thừa số

Thuật toán Pollard p-1 là một trong những phương pháp hiệu quả để phân tích thừa số nguyên tố của các số nguyên lớn Thuật toán này hoạt động bằng cách phân tích số nguyên n dựa trên p-1, trong đó p là một ước nguyên tố của n.

Các bước của thuật toán:

Bước 1: Xác định đầu vào là hai số n và b ( n là số nguyên lẻ cần phân tích, b là

Bước 3: for j = 2 to b do a = a j mod n

Bước 4: Tìm d = gcd(a-1,n) d là ước chung lớn nhất của a-1 và n.

Bước 5: Nếu 1< d < n then d là thừa số nguyên tố của n (thành công).

Không xác định được thừa số nguyên tố của n.

Thuật toán mã hóa MD5

MD5 (Message-Digest algorithm 5) là một hàm băm mã hóa 128 bit, từng là tiêu chuẩn trên Internet và được sử dụng phổ biến trong các ứng dụng an ninh mạng Nó cũng thường được áp dụng để kiểm tra tính nguyên vẹn của tập tin.

MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước MD4 (cũng do ông thiết kế, trước đó nữa là MD2).

MD5 có 2 ứng dụng quan trọng:

MD5 là một thuật toán phổ biến trong lĩnh vực phần mềm, giúp người dùng xác minh tính toàn vẹn của các tệp tải về Bằng cách so sánh mã kiểm tra MD5 được công bố với mã kiểm tra của tệp đã tải, người dùng có thể đảm bảo rằng tệp không bị hỏng Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói tin phân phối, trong khi Windows thường dựa vào phần mềm từ bên thứ ba để thực hiện việc này.

MD5 là một thuật toán mã hóa thường được sử dụng để bảo vệ mật khẩu Mục tiêu của việc mã hóa này là chuyển đổi mật khẩu thành một chuỗi mã hóa khác, nhằm đảm bảo rằng việc khôi phục lại mật khẩu gốc là rất khó khăn, đủ để ngăn chặn các hacker.

MD5 là thuật toán biến đổi thông điệp có chiều dài tùy ý thành một khối dữ liệu cố định 128 bits Quá trình này bắt đầu bằng việc chia thông điệp thành các khối có kích thước 512 bits Để đảm bảo tính toàn vẹn, thông điệp cần được đưa vào bộ đệm sao cho chiều dài của nó chia hết cho một số nhất định.

512 Bộ đệm hoạt động như sau:

- Trước tiên chèn bit 1 vào cuối thông điệp

- Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng 64 bit

MD5 là một thuật toán mã hóa hoạt động trên dữ liệu 128 bit, được chia thành 4 từ 32 bit (A, B, C, D) với các giá trị cố định Để xử lý thông điệp, phần còn lại sẽ được lấp đầy bằng số nguyên 64 bit biểu diễn chiều dài ban đầu của thông điệp Thuật toán này hoạt động trên các khối 512 bit, mỗi khối trải qua 4 vòng (round), và mỗi vòng bao gồm 16 bước xử lý tương tự dựa trên hàm một chiều F, phép cộng module và phép xoay trái.

Hình bên dưới mô tả một quá trình trong một vòng Có 4 hàm một chiều F có thể sử dụng Mỗi vòng sử dụng một hàm khác nhau

Hình 3.8: Mô hình một vòng.

Hàm băm MD5 (còn được gọi là hàm tóm tắt thông điệp - message degests) sẻ trả về một chuổi số thập lục phân gồm 32 số liên tiếp

Dưới đây là các ví dụ mô tả các kết quả thu được sau khi băm

MD5("cộng hòa xã hội chủ nghĩa việt nam")

Thậm chỉ chỉ cần một thay đổi nhỏ cũng làm thay đổi hoàn toàn kết quả trả về :

MD5(“ Cộng Hòa Xã Hội Chủ Nghĩa Việt Nam “)

Ngay cả một chuổi rỗng cũng cho ra một kết quả phức tạp:

3.3.2.1 Mô tả Đầu vào là những khối 512-bit, được chia cho 16 khối con 32-bit Đầu ra của thuật toán là một thiết lập của 4 khối 32-bit để tạo thành một hàm Băm 128-bit duy nhất Đầu tiên, ta chia thông điệp thành các khối 512-bit, với khối cuối cùng (đặt là x và x

Ngày đăng: 15/10/2021, 08:26

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Phan Đình Diệu, Lý thuyết mật mã và an toàn thông tin, Đại học Quốc gia Hà Nội, 1999 Sách, tạp chí
Tiêu đề: Lý thuyết mật mã và an toàn thông tin
[2] TS. Dương Anh Đức, ThS. Trần Minh Triết, Mã hóa và ứng dụng, Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia thành phố Hồ Chí Minh, 2005 Sách, tạp chí
Tiêu đề: Mã hóa và ứng dụng
[4] R. Rivest, The MD5 Message-Digest Algorithm, MIT Laboratory for Computer Science and RSA Data Security, Inc, April 1992 Sách, tạp chí
Tiêu đề: The MD5 Message-Digest Algorithm
[5] Federal Information Processing Standards Publication 180-2 Specifications for the SECURE HASH STANDARD, 2002 Sách, tạp chí
Tiêu đề: Federal Information Processing Standards Publication 180-2Specifications for the SECURE HASH STANDARD
[6] Mohan Atreya, Ben Hammond, Stephen Paine, Paul Starrett, Stephen Wu (2002), Digital Signatures, RSA Khác
[8] Xiaoyun Wang, Dengguo Feng, Xuejia Lai, Hongbo Yu (2004), Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD, International Association for Cryptologic Research Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Mô hình mã hóa - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 1.1 Mô hình mã hóa (Trang 6)
Hình 1.2: Mô hình mã hóa khóa bí mật Trong đó : - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 1.2 Mô hình mã hóa khóa bí mật Trong đó : (Trang 9)
Hình 3.1: Sơ đồ tổng quát mã hóa DES. - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 3.1 Sơ đồ tổng quát mã hóa DES (Trang 18)
Sơ đồ quá trình tạo khóa. - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Sơ đồ qu á trình tạo khóa (Trang 19)
Bảng PC1 : - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
ng PC1 : (Trang 20)
Hình 3.4: Sơ đồ chi tiết một vòng. - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 3.4 Sơ đồ chi tiết một vòng (Trang 21)
Bảng hoán vị khởi đầu IP. - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Bảng ho án vị khởi đầu IP (Trang 21)
Hình 3.3: Biểu diễn dãy 64 bít x chia thành 2 thành phần L 0 ,R 0 - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 3.3 Biểu diễn dãy 64 bít x chia thành 2 thành phần L 0 ,R 0 (Trang 21)
Hình 3.5: Sơ đồ hoạt động của hàm f. - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 3.5 Sơ đồ hoạt động của hàm f (Trang 22)
Hình 3.6: Hoán vị mở rộng. - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 3.6 Hoán vị mở rộng (Trang 23)
Hình 3.7: Sơ đồ thuật toán RSA - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 3.7 Sơ đồ thuật toán RSA (Trang 30)
Hình 3.9: Sơ đồ vòng lặp của MD5. - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 3.9 Sơ đồ vòng lặp của MD5 (Trang 37)
Sơ đồ hoạt động của MD5. - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Sơ đồ ho ạt động của MD5 (Trang 42)
Hình 3.11: Sơ đồ xử lý 512 bits Với R[i] là hệ số quay trái của mỗi chu kì - Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng
Hình 3.11 Sơ đồ xử lý 512 bits Với R[i] là hệ số quay trái của mỗi chu kì (Trang 44)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w