CHƯƠNG I: TỔNG QUAN VỀ MẬT MÃ HỌC VÀ MÃ HÓA 1. TỔNG QUAN VỀ MẬT MÃ HỌC VÀ MÃ HÓA 1. Khái niệm mật mã học và mã hóa Mật mã trước hết là một loại hoạt động nhằm giữ bí mật thông tin. Kỹ thuật mật mã được thể hiện thông qua việc biến đổi thông tin rõ nghĩa thành những đoạn ký tự mã hóa có dạng ngẫu nhiên không rõ nghĩa.
Từ đó đạt được hai mục tiêu: + Một là, làm cho kẻ tin tặc đánh cắp thông tin không biết cách giải mã nên không thể thu được thông tin có ý nghĩa từ chuỗi ký tự ngẫu nhiên. + Hai là, kẻ tin tặc không có khả năng làm giả thông tin để giả mạo người gửi. Khoa học nghiên cứu kỹ thuật mật mã gọi là mật mã học, mật mã học bao gồm hai lĩnh vực là: mật mã học lập mã và mật mã học phân tích. + Mật mã học lập mã là ngành học nghiên cứu mã hóa thông tin để thực hiện che giấu thông tin.
+ Mật mã học phân tích là ngành học nghiên cứu và phân tích việc giải mã. Mã hóa là một quá trình dùng để biến đổi thông tin từ dạng này sang dạng khác và ngăn chặn những đối tượng không được phép có thể xem được thông tin. Bản thân việc mã hóa không ngăn chặn được việc đánh cắp thông tin, nó chỉ làm biến dạng thông tin để cho dù có bị đánh cắp thì cũng không thể xem được nội dung thông tin. Thông tin trước khi chuyển đổi được gọi là bản rõ, thông tin sau khi chuyển đổi được gọi là bản mật.
Quá trình chuyển đổi thông tin từ dạng bản rõ sang dạng bản mật được gọi là quá trình mã hóa và ngược lại, quá trình chuyển đổi thông tin từ dạng bản mật sang dạng bản rõ được goi là quá trình giải mã. Để thực hiện được một quá trình mã hóa và giải mã, ta còn cần có một thuật toán và khóa mật mã để 6 TIEU LUAN MOI download : skknchat@gmail.com biến bản tin rõ thành bản mật và một thuật toán làm ngược lại biến bản mật cùng với khoá mật mã thành bản rõ. Các thuật toán đó được gọi tương ứng là thuật toán mã hóa và thuật toán giải mã. Các thuật toán này thường không nhất thiết phải giữ bí mật, cái cần được giữ bí mật là khoá mật mã.
Một hệ mã hóa tiêu biểu được định nghĩa gồm 5 thành phần (P, C, K, E, D), trong đó: + P là tập hữu hạn các các bản rõ. + C tập hữu hạn các bản mã. + K là tập hữu hạn các khoá. + E là tập các hàm mã hóa.
+ D là tập các hàm giải mã. Với mỗi khóa k ∈ K, có một hàm mã hóa ek ∈ E, ek : P → C và một hàm giải mã dk∈ D, đk: C → P sao cho dk(ek(x)) = x , ∀ x ∈ P. Mô hình quá trình mã hóa và giải mã chi tiết như hình sau: Hình 1.1: Quá trình mã hóa và giải mã (Nguồn: https://voer.vn) Ví dụ: Người gửi A muốn gửi một văn bản đến người nhận B, A phải tạo cho văn bản đó một bản mã mật tương ứng và thay vì gửi văn bản rõ thì A chỉ gửi bản mật cho B, B nhận được bản mật và khôi phục lại dạng bản rõ để hiểu được thông tin mà A gửi. Do văn bản gửi đi thường được chuyển qua các đường công khai nên người ngoài có thể “lấy trộm” hoặc “xem trộm”, nhưng vì đó là bản mật mã nên kẻ 7 TIEU LUAN MOI download : skknchat@gmail.com lấy cắp không đọc hiểu được; Còn A có thể biến đổi bản rõ thành bản mã mật và B có thể giải bản mã mật thành bản rõ để hiểu được là do hai người đã có một thoả thuận về khoá để mã hóa và giải mã, chỉ với khoá này thì A mới tạo được bản mã mật từ bản rõ và B mới khôi phục được bản rõ từ bản mã mật.
Khoá này được gọi là khoá mật mã. Chức năng của mã hóa Đảm bảo tính bí mật: Chức năng này giải quyết vấn đề bảo vệ thông tin chống lại sự tìm hiểu nội dung thông tin từ các đối tượng không có quyền truy cập nội dung hay tìm hiểu nội dung. Chỉ có những đối tượng có quyền truy cập và có khóa hợp lệ mới có thể truy cập và đọc được thông tin. Đảm bảo tính toàn vẹn: Chức năng này đảm bảo khả năng phát hiện sự sửa đổi thông tin trái phép.
Việc đảm bảo toàn vẹn dữ liệu cần phải có các phương pháp đơn giản và tin cậy, không gây lãng phí tài nguyên đường truyền. Hiện nay, việc sử dụng các hàm băm một chiều được sử dụng rất hiệu quả. Dữ liệu gửi đi được đính kèm thêm giá trị hàm băm của dữ liệu gốc bên nhận sẽ tính lại giá trị băm của dữ liệu gốc nhận được, nếu giá trị hàm băm tính được và giá trị hàm băm của bên gửi đính kèm là giống nhau, chứng tỏ dữ liệu nhận được là toàn vẹn không bị thay đổi. Đảm bảo tính xác thực: Chức năng này có chức năng xác minh thông tin, nguồn gốc thông tin của bên gửi, đảm bảo quyền hợp pháp của chủ thể gửi và nhận thông tin, chống sự giả mạo.
Ví dụ như việc sử dụng mã PIN cá nhân trong các giao dịch ngân hàng. Đảm bảo tính chống từ chối: Chức năng này đảm bảo xác định rõ trách nhiệm của các chủ thể trong việc quản lý, phân phối khóa đồng thời làm rõ được nguồn gốc của thông tin khi trao đổi, chống chối bỏ trách nhiệm. 8 TIEU LUAN MOI download : skknchat@gmail. CÁC HỆ MÃ HÓA TIÊU BIỂU 1.
Hệ mã hóa đối xứng Hệ mã hóa đối xứng (hay còn gọi là hệ mã hóa khóa bí mật) là hệ mã hóa sử dụng chung một khóa cho việc mã hóa và giải mã. Trước khi dùng hệ mã hóa đối xứng, người gửi và người nhận phải thỏa thuận thuật toán và khóa dùng để mã hóa hay giải mã qua một kênh an toàn. Nơi gửi sẽ dùng khóa đã thỏa thuận và một thuật toán mã hóa đã thỏa thuận trước để mã hóa thông điệp. Phía nhận sẽ sử dụng khóa đã thõa thuận và một thuật toán giải mã đã thỏa thuận để giải mã.
Độ an toàn của hệ mã hóa loại này phụ thuộc vào khóa. Hệ mã hóa đối xứng tổng quan được biểu diễn bằng mô hình sau: Bộ tạo khóa Kênh truyền an toàn P P Kênh truyền thường Nơi gửi Mã hóa Giải mã Nơi nhận C Hình 1.2: Mô hình hệ mã hóa đối xứng [4] Mô hình trên gồm 5 thành phần: + Bản rõ P (plaintext) + Thuật toán mã hóa E (encrypt algorithm) + Khóa bí mật K (secret key) + Bản mã C (ciphertext) + Thuật toán giải mã D (decrypt algorithm) Trong đó: C = E (P, K) P = D (C, K) 9 TIEU LUAN MOI download : skknchat@gmail.com Các thuật toán sử dụng trong hệ mã hóa đối xứng được chia ra làm hai loại: Mã hóa luồng (stream ciphers) và Mã hóa khối (block ciphers). Mã hóa luồng Mã hóa luồng là loại mã hóa mà dữ liệu đầu vào sẽ được mã hóa từng đoạn bít có độ dài cố định với một chuỗi số ngẫu nhiên. Các thuật toán mã hóa luồng có tốc độ nhanh, thường được sử dụng trong các trường hợp khi khối lượng dữ liệu cần mã hóa không biết trước được.
Ví dụ trong kết nối không dây. Mã hóa luồng có các đặc điểm sau: - Kích thước một đơn vị mã hóa: Gồm k bít. Bản rõ được chia thành các đơn vị mã hóa có độ dài bằng độ dài của khóa: P 𝑝0 𝑝1 𝑝2 𝑝3 … 𝑝𝑛−1 (𝑝𝑖 : có độ dài là k bít) - Bộ sinh dãy số ngẫu nhiên: Dùng một khóa K ban đầu để sinh ra các số ngẫu nhiên có kích thước bằng kích thước của đơn vị mã hóa: StreamCipher(K) S = 𝑠0 𝑠1 𝑠2 𝑠3 … 𝑠𝑛−1 (𝑠𝑖 : có độ dài là k bít) Và 𝑠0 = 𝑠1 = 𝑠2 = 𝑠3 = … = 𝑠𝑛−1 - Bản mã: Gồm k bít. Mỗi đơn vị bản mã được tính bằng cách tính XOR một đơn vị mã hóa của bản rõ với khóa s.
𝑐0 = 𝑝0 ⨁ 𝑠0, 𝑐1 = 𝑝1 ⨁ 𝑠1 , … 𝑐𝑛−1 = 𝑝𝑛−1 ⨁ 𝑠𝑛−1 C = 𝑐0 𝑐1 𝑐2 𝑐3 … 𝑐𝑛−1 (𝑐𝑖 : có độ dài là k bít) Quá trình mã hóa để tính bản mã C = P ⨁ S và quá trình giải mã được thực hiện ngược lại, bản rõ P = C ⨁ S. Quá trình mã hóa và giải mã được mô tả như hình sau: 10 TIEU LUAN MOI download : skknchat@gmail.com P 𝑝0 𝑝1 … 𝑝𝑛−1 ⨁ ⨁ ⨁ Quá trình mã hóa 𝑠0 𝑠1 𝑠𝑛−1 C 𝑐0 𝑐1 … 𝑐𝑛−1 C 𝑐0 𝑐1 … 𝑐𝑛−1 ⨁ ⨁ ⨁ Quá trình giải mã 𝑠0 𝑠1 𝑠𝑛−1 P 𝑝0 𝑝1 … 𝑝𝑛−1 Hình 1.3: Mô hình mã hóa và giải mã của mã hóa luồng [2] Độ an toàn và tốc độ của mã hóa luồng phụ thuộc vào bộ sinh ngẫu nhiên. Nếu số ngẫu nhiên 𝑠𝑖 có chiều dài ngắn thì dễ bị đoán, dễ bị vét cạn không đảm bảo an toàn, nếu số ngẫu nhiên 𝑠𝑖 dài và có chiều dài bằng chiều dài bản tin P thì không thực tế khó có thể thực hiện được. Vì vậy, bộ sinh số của mã hóa dòng phải chọn độ dài hợp lý cần bằng giữa hai điểm này nhưng vẫn đảm bảo độ an toàn cũng như độ ngẫu nhiên của dãy số S.
Một số thuật toán dòng được sử dụng rộng rải như: RC4, A5/1, A5/2, Chameleon. Mã hóa khối Mã hóa luồng có hạn chế là chỉ cần biết một cặp khối bản rõ và khối bản mã, người ta có thể suy ra được khóa và dùng nó để giải mã các khối bản mã khác của bản tin. Do đó để chống việc phá mã thì người ta phải làm cho P và C không có mối liên hệ nào về toán học. Điều này chỉ thực hiện được khi ta lập được một bảng tra cứu ngẫu nhiên theo cặp các khối bản rõ và bản mã để mã hóa và giải mã.
Ví dụ: 11 TIEU LUAN MOI download : skknchat@gmail.com Bản rõ Bản mã 000 101 001 100 010 110 011 001 100 111 101 011 110 000 111 010 Khi đó, khóa là toàn bộ bảng trên, cả hai bên gửi và bên nhận đều phải biết toàn bộ bảng trên để thực hiện mã hóa và giải mã. Đối với kẻ tấn công, nếu biết một số cặp bản rõ và bản mã thì cũng chỉ biết được một phần khóa của bảng tra cứu trên. Do đó không thể giải mã được các khối bản mã còn lại.