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

Tìm hiểu về mã dòng (Mật mã nâng cao)

33 2,1K 4

Đ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

Cấu trúc

  • MỤC LỤC

  • Thuật ngữ

  • Danh mục hình ảnh

  • Hình 1. Logo GSM.

  • Hình 2. Sự khác nhau giữa mã khối và mã dòng.

  • Hình 3. Mã dòng đồng bộ cộng.

  • Hình 4. Mã dòng tự đồng bộ cộng.

  • Hình 5. Bộ đếm với hàm ra phi tuyến.

  • Hình 6. Một số generator dựa trên bộ đếm.

  • Hình 7: Thanh ghi dịch hồi tiếp tuyến tính(LFSR)

  • I.Mở đầu

  • II. Lý thuyết mã dòng

    • 2.1 So sánh mã dòng với mã khối

    • 2.2. Phân loại mã dòng

    • 2.3. Một số kiến trúc mã dòng

      • 2.3.1. Mã dòng đồng bộ cộng

      • 2.3.2. Mã dòng tự đồng bộ cộng

      • 2.3.3. Mã dòng đồng bộ không cộng

      • 2.3.4. Phương pháp mã dòng sử dụng mã khối

    • 2.4. Các loại Generator

      • 2.4.1. Phần tử sinh dựa trên bộ đếm

      • 2.4.2. Phần tử sinh số học

      • 2.4.3. Generator đồng dư tuyến tính

  • III. Một số ví dụ về mã dòng

    • 3.1.Ví dụ

    • 3.2.Demo

Nội dung

MỤC LỤC Contents Thuật ngữ GSM Hệ thống thông tin di động toàn cầu 3GPP Hiệp hội dự án đối tác hệ thứ CD Mã phân phối hợp tác SG Phần tử sinh (bộ sinh) dãy GF Trường Galois (ví dụ GF(2n)) LCG Phần tử sinh đồng dư tuyến tính LFSR Thanh ghi dịch chuyển hồi quy tuyến tính Danh mục hình ảnh Hình Logo GSM Hình Sự khác mã khối mã dòng Hình Mã dòng đồng cộng Hình Mã dòng tự đồng cộng Hình Bộ đếm với hàm phi tuyến Hình Một số generator dựa đếm Hình 7: Thanh ghi dịch hồi tiếp tuyến tính(LFSR) Hình 8: Thuật toán A5 mô hình mạng GSM I.Mở đầu Ngày nay, với phát triển vượt bật công nghệ thông tin truyền thông, đem lại nhiều ứng dụng tiện dụng đến với người dùng Xu hướng phát triển công nghệ ngày môi trường mạng, mạng di động có nhiều hứa hẹn đem đến nhiều tiện dụng cho người dùng Trong tương lai gần ứng dụng đưa lên điện thoại gọn nhẹ Vấn đề bảo mật ngày không cấp bách mạng internet toàn cầu, mà mạng di động cần quan tâm Nhu cầu đảm bảo bí mật thực gọi, hay dịch vụ thông qua mạng di động điều mà người dùng quan tâm Điều quan tâm có xuất thêm hàng loạt công nghệ mạng di động GPRS, 3G, … Chúng phiên chuẩn GSM (hệ thống thông tin di động toàn cầu) Hình Logo GSM Để đáp ứng nhu cầu bảo mật mạng di động, công nghệ di động nói áp dụng kỹ thuật mã hóa phù hợp Trong tất kỹ thuật mã hóa, mã dòng (stream cipher) thích hợp để áp dụng mạng di động Đây kỹ thuật mã hóa thuộc loại mã đối xứng (symmetric cryptography) Việc bảo mật cách dùng mã dòng GSM có mục đích như: mã hóa đảm bảo bí mật liệu, chứng thực, đảm bảo tính toàn vẹn Có hai loại mã đối xứng là: mã khối (block cipher) mã dòng (stream cipher) Trong ta biết, mã khối làm việc cách chia khối liệu cần mã hóa ban đầu thành khối liệu định, nghĩa phải biết trước kích thước thân khối liệu Điều chứng tỏ mã khối không thích hợp để ứng dụng mã hóa vào mạng di động, liệu lưu thông mạng di động điển hình liệu gọi dường trước kích thước, hay gọi liệu sinh biến thiên theo thời gian (timevarying) Do yêu cầu xử lý tín hiệu biến thiên theo thời gian mạng di động nên đòi hỏi kỹ thuật mã hóa áp dụng phải thỏa mãn chế Mã dòng hoạt động với biến đổi biến thiên theo thời gian khối rõ (plaintext) riêng biệt , phần sau luận văn làm sáng tỏ chi tiết khả đáp ứng yêu cầu mã dòng mạng di động Đó lý cho thấy tầm quan trọng việc ứng dụng mã dòng vấn đề bảo mật mạng di động Nhìn khứ, ta thấy kỷ nguyên mã dòng thực vào năm 1960 Vào thời gian đó, nhiều tổ chức sử dụng đến mã dòng như: nhu cầu quân đội ngoại giao, tổ chức gián điệp, tổ chức cung cấp dịch vụ viễn thông, doanh nghiệp,… Vào thời gian thiết bị mã hóa điện tử bán dẫn bắt đầu xuất Nhiều thiết bị có nhớ với dung lượng thấp, nên mã dòng trở nên phổ biến mã khối Tuy nhiên ngày với phát triển công nghệ thiết bị, vấn đề không trở ngại, nên mã khối lại chiếm ưu Bằng chứng tảng GSM, hệ thứ mã khối Kasumi thay mã dòng A5/x hệ thứ Trên công nghệ Wi-Fi, phiên 802.11a/b sử dụng mã dòng RC4, sang phiên 802.11i thay mã khối AES Nhưng không mà mã dòng lại phát triển Hội thảo The State of the Art of Stream Ciphers, hội thảo chuyên mã dòng, thu hút Ông Steve Babbage (công tác Vodafone Group R&D) có đề cập, mã dòng hữu dụng “tốc độ nhanh”, có hiệu lực nhỏ gọn thiết bị bị hạn chế như: thiết bị có nguồn lượng (pin) thấp RFID; hay Smart cards (8-bit processors) Trong báo , Adi Shamir (một người phát minh RSA) có đề cập, ứng dụng mật mã RFID nghiên cứu rộng rãi Hàn Quốc, ông cho công nghệ quan trọng thành công thập kỷ tới Và ông mong đợi ứng dụng RFID sử dụng mã dòng nhiều mã khối Cuối ông nhận xét rằng, tình trạng kiến thức tự tin mã dòng yếu Nghĩa hoàn toàn tin tưởng vào tương lai việc ứng dụng mã dòng Các thuật toán bảo mật mạng GSM xuất phát từ ba thuật toán mã hóa A3, A5 A8 GSM sử dụng số thuật toán có A5/1, A5/2 A5/3 cho việc bảo mật Tuy nhiên chúng bị bẻ vài công Để nâng cao tính bảo mật, kỹ thuật bảo mật GSM tiếp tục nghiên cứu phát triển Bởi có thảo thuật toán bảo mật để ứng dụng vào mạng GSM, điển hình thảo thuật toán tổ chức 3GPP 128-EEA3 128-EIA3 Mã dòng thích hợp cho việc thực hóa phần mềm hay phần cứng Nó thích hợp để cài đặt trực tiếp thiết bị phần cứng có cấu hình thấp Nên thực hóa máy điện thoại di động II Lý thuyết mã dòng 2.1 So sánh mã dòng với mã khối Mã hóa đối xứng chia làm hai loại là: mã khối (block ciphers) mã dòng (stream ciphers) Đối với mã khối, mã hóa, liệu ban đầu chia thành khối (block) thường có kích thước nhau, kích thước tùy thuộc vào thuật toán mã hóa dùng DES, 3DES, AES, RC2,… Nếu áp dụng DES khối liệu phải có kích thước 64 bits, áp dụng AES kích thước phải 128 bits Mã khối cần đến khóa k suốt trình mã hóa, khóa tùy thuộc vào thuật toán mã hóa áp dụng Trong thực tế áp dụng mã khối liệu ban đầu phải biết trước kích thước Nghĩa áp dụng mã khối cho liệu biết trước cụ thể Sau liệu ban đầu chia thành khối có kích thước định, trình mã hóa sử dụng đến kiểu hoạt động (mode of operation) để tạo thành mã tương ứng cho liệu ban đầu Các mode of operations ECB, CBC, CFB, OFB, CTR Hình Sự khác mã khối mã dòng Đối với mã dòng, thực tế áp dụng liệu thường dạng biến thiên theo thời gian Nghĩa trước liệu ban đầu Mỗi phần liệu mã hóa với khóa zj tương ứng, j ∈ [0, ∞) Các zj tạo thành dòng khóa (keystream), zj gọi keyword Hàm mã hóa đơn giản thực tế đơn giản phép XOR bits rõ keystream tương ứng Chính xác ký tự (character) rõ XOR với zj Mô hình mã dòng sử dụng khóa k ban đầu để sinh zj Thực thể đảm nhiệm chức sinh dòng khóa gọi phần tử sinh dòng khóa (keystream generator) Ta biểu z ∞ = z0 z1 z thị keystream Một mô hình mã dòng có tính tuần hoàn (có chu kỳ - periodic) keystream lập lại sau d ký tự với d cụ thể Nghĩa số giá trị keyword zj hữu hạn (d) chuỗi keystream vô hạn trường hợp tổng quát Hay ta có định nghĩa tổng quát mã dòng: Định nghĩa mã dòng : Cho K không gian khóa hệ mã cho k1k ⋅ ⋅⋅ ∈ K dòng khóa Hệ mã gọi mã dòng việc mã hóa chuỗi rõ m1m2 ⋅ ⋅ ⋅ thu cách áp dụng lặp lặp lại phép mã hóa đơn Ek j (m j ) = c j vị thông điệp rõ, Dd j ( c j ) = m j với , dj nghịch đảo kj, việc giải mã xảy j ≥1 Nếu tồn giá trị l∈N k j +l = k j cho với j∈N , ta gọi mã dòng tuần hoàn với chu kỳ l Còn nữa, thực tế khác mã khối mã dòng dư thừa ngôn ngữ tự nhiên lại mã mã khối, xảy mã dòng thiết kế tốt Điều giải thích mã dòng phổ biến thực tế 2.2 Phân loại mã dòng Về thuật toán mã dòng thuộc hai loại, là: mã dòng đồng (synchronous cipher), mã dòng tự đồng (self-synchronous cipher) hay có tên gọi khác bất đồng (asynchronous) Tuy nhiên, người từ dự án eSTREAM cho định nghĩa tổng quát mã dòng, họ xem mã dòng thực thể có trạng thái nội biến thiên theo thời gian (time-varying internal state), xem mã dòng đồng mã dòng tự đồng hai trường hợp đặc biệt Trong mã dòng đồng bộ, trạng thái (next state) hệ thống mã hóa mô tả độc lập với rõ mã Trạng thái giá trị tập hợp biến mang lại mô tả cho trạng thái thiết bị Ta hiểu trạng thái giá trị mảng nhiều phần tử Thiết bị hiểu thành phần cấu tạo phần tử sinh dòng khóa (generator) Nó tập hợp bao gồm nhiều ghi (register) Hình Mã dòng đồng cộng Hình diễn đạt quy tắc mã hóa giải mã mô hình mã dòng đồng cộng Khi mã hóa, ký tự rõ “+” (cộng) với keyword zi để sinh ký tự mã tương ứng Khi giải mã làm ngược lại cách “-” (trừ) “+” “-” mang nghĩa đặc trưng cho trình mã hóa giải mã Chúng đơn giản phép XOR chẵng hạn Từ hình rõ ràng ta thấy trình sinh keystream hoàn toàn độc lập với rõ mã Ngược lại, mã dòng tự đồng bộ, ký tự keystream suy từ số n cố định ký tự mã trước Vì vậy, ký tự mã bị bị hư (thay đổi) trình truyền liệu, lỗi bị lan truyền cho n ký tự trình giải mã Nhưng tự đồng lại sau n ký tự mã nhận Chẵng hạn ta khảo sát trường hợp n 1: c j −1 Giả sử ta có chuỗi ký tự mã C bị thay đổi - Khi dùng mã dòng tự đồng theo công thức mã hóa: c j = E z j ( m j ); z j = f ( k , c j −1 ) Suy công thức giải mã: m j = Dz j ( c j ); z j = f ( k , c j −1 ) c j −1 Do zj bị thay đổi làm cho bị sai, nên kết mj giải mã bị lỗi (không ban đầu trước mã hóa) Trong đó, m j +1 việc giải mã cj lại phụ thuộc vào cj ( không bị thay đổi) nên kết giải m j +1 mã không bị lỗi Như cần sau ký tự mã, trình giải mã c j −1 tự đồng Điều cho trường hợp bị cj = zj ⊕ mj - Còn dùng mã dòng đồng theo công thức mã hóa: mj = zj ⊕ cj công thức giải mã Suy c j −1 Trong trường hợp bị thay đổi dễ dàng nhìn thấy trình giải mã bị lan truyền lỗi mã dòng tự đồng c j −1 Tuy nhiên, bị mất, lúc chuỗi ký tự mã bị thụt lùi lại cj ký tự Nghĩa c j −1 c j +1 đóng vai trò , cj đóng vai trò ,… Nói cách c j −1 khác, kể từ tất ký tự mã bị lỗi Dẫn đến trình giải mã tất ký tự sau bị lỗi Như ta giải thích khác thú vị hai loại mã dòng Ngoài ra, mã dòng tự đồng tính tuần hoàn ký tự khóa zj phụ thuộc vào toàn ký tự rõ trước Điều ngược lại mã dòng đồng thông thường có tính tuần hoàn 2.3 Một số kiến trúc mã dòng Có nhiều phương pháp mã dòng khác nhau, thuộc vào loại Đặc biệt với số phương pháp, ta thấy bóng dáng mã khối việc ứng dụng vào mã dòng 2.3.1 Mã dòng đồng cộng Như đề cập trên, mã dòng đồng cộng (additive synchronous stream ciphers) sinh dòng khóa độc lập với liệu rõ Thuật toán sinh dòng khóa phải thực cho dòng khóa tái lập cho trình giải mã Mã dòng đồng cộng theo Hình loại mã dòng đồng quan trọng Nhận xét: Vấn đề loại mã dòng thiết kế phần tử sinh dòng khóa Bởi việc kết hợp ký tự rõ mã đơn giản, đòi hỏi phần tử sinh dòng khóa cho mã dòng đồng cộng phải đủ mạnh 2.3.2 Mã dòng tự đồng cộng Hình Mã dòng tự đồng cộng Trong mã dòng đồng bộ, ký tự dòng khóa nhận từ số n cố định ký tự mã trước Những mã mã khóa tự động (autokey ciphers) hệ thống mã hồi quy (cipher feedback systems) ví dụ mã dòng tự đồng cộng (additive self-synchronous stream ciphers) 10 Một keystream generator thiết kế không đắn bị bẻ công sai phân số công khác Nếu generator thiết kế đắn, NSG kháng lại tất công NSG đối tượng mà nhà nghiên cứu mã hay đề cập nghiên cứu mã dòng 2.4.2 Phần tử sinh số học Một số hệ thống thực tế sớm dụng ý để hoạt động generator số giả ngẫu nhiên (pseudo – random number generator) generator dòng khóa (keystream generator) Các số giả ngẫu nhiên cần đến không mật mã, mà mô số học cho phương thức Monte Carlo, lấy mẫu, phân tích số học, kiểm tra sai sót chíp máy tính, lập trình máy bán hàng tự động (slot machine) Tuy nhiên, ứng dụng khác yêu cầu thuộc tính ngẫu nhiên số khác Chẵng hạn số ngẫu nhiên cho mô (Monte Carlo) khác so với cho mục đích mật mã Một số generator thuộc vào loại như: generator đồng dư tuyến tính (congruential generator), generator 1/p, generator lũy thừa (power generator), generator dựa phép mũ (generator based on the exponential operation) 2.4.3 Generator đồng dư tuyến tính Một generator đồng dư tuyến tính (Linear Congruential Generator – LCG) thường dùng để sinh số ngẫu nhiên, số Xi+1 dãy số Xi định nghĩa cách sau: X i +1 = ( aX i + b) mod M , ≤ Xi ≤ M −1 (2.4.3.1) Trong (a, b, M) tham số định nghĩa generator X0 giá trị khởi đầu dãy (có thể cho bốn số a, b, M, X0 khóa generator) Các generator đồng dư tuyến tính sử dụng rộng rãi thực tế phương thức Monte Carlo, chúng yếu mặt mật mã 19 Rõ ràng phương pháp tính an toàn mật mã môđun M biết Trong trường hợp này, ( X − X ) ≡ x ( X − X ) mod M giải tìm x nhờ vào đồng dư thức: ; (Giá trị x a, từ tính b) Sau phần lại dãy tính xác cách dùng hệ thức: X i +1 = x ( X i ) + ( X − x ( X )) mod M , Ngoài ra, vấn đề đặt a, b, M X0 Cần phải có cách thức suy đoán để tìm giá trị dãy Ta có thuật toán sau để giải vấn đề này: Thuật toán Plumstead: Giả sử LCG cho theo công thức (2.4.3.1) với a, b, M X0 không biết, thuộc tính chúng giả định gì, trừ M > max( a, b, X ) Thuật toán tìm đồng dư thức: X i +1 = ( aˆ X i + bˆ) mod M , với a b khác sinh dãy tương tự đồng dư thức ban đầu Quá trình suy đoán bao gồm hai giai đoạn sau Cho Yi = X i +1 − X i aˆ Giai đoạn 1: Trong giai đoạn này, ta tìm Tìm t nhỏ cho Với i với 0≤i≤t bˆ d = gcd(Y0 , Y1 , , Yt ) sau: d chia hết Yt+1 , tìm ui cho: t ∑u Y i i = d i =0 20 aˆ = Gán t ∑ uiYi +1 d i =0 Giai đoạn cho , bˆ = X − aˆX X i +1 = ( aˆ X i + bˆ) mod M , với tất i≥0 Giai đoạn 2: Trong giai đoạn này, ta bắt đầu dự đoán X i+1 cần thiết thay đổi môđun M Khi dự đoán X i thực hiện, giá trị thực sẵn sàng cho thuật toán suy đoán (để đối chiếu – sai) Ban đầu, gán i = 0, M =∞ giả sử X0 X1 biết trước (chúng ta tái sử dụng số giai đoạn trước) Lặp bước sau: Gán i = i + dự đoán: X i +1 = ( aˆ X i + bˆ) mod M Nếu Xi+1 không đúng, gán M = gcd(M , aˆYi −1 − Yi ) Phân tích thuật toán Plumstead: rõ ràng bước hai giai đoạn thực thời gian đa thức theo độ lớn M Plumstead chứng minh t Giai đoạn giới hạn đoạn giới hạn t ≤  log2 M  + log2 M , số dự đoán sai thực Giai Vì thuật toán tối ưu với độ phức tạp O (log M ) trường hợp xấu 21 III Một số ví dụ mã dòng 3.1.Ví dụ  Ví dụ1 : Giả sử m = dòng khóa tạo quy tắc: Zi+4 = Zi + Zi+1 mod Nếu dòng khóa bắt đầu vector khác với vector (0, 0, ,0) ta thu dòng khóa có chu kì 15 Ví dụ bắt đầu vector (1, 0, 0, 0) dòng khóa là: 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, Một vector khởi đầu khác không khác tạo hoán vị vòng (cyclic) dòng khóa Một hướng đáng quan tâm khác phương pháp tạo dòng khóa hiệu phần cứng sử dụng ghi dịch hồi tiếp tuyến tính (LFSR) Ta dùng ghi dịch có m tầng Vector (k1… km) dùng để khởi tạo( đặt giá trị ban đầu) cho ghi dịch Ở đơn vị thời gian, phép toán sau thực đồng thời K1 tính dùng làm bit dòng khóa K2,….,Km dịch tầng phía trái Giá trị km tính : ( hồi tiếp tuyến tính) Ta thấy rằng, thao tác tuyến tính tiến hành cách lấy tín hiệu từ số tầng định ghi ( xác định số cj có giá trị “1”) tính tổng theo modulo 2( phép loại trừ) + K1 K2 K3 K4 22 Hình 7: Thanh ghi dịch hồi tiếp tuyến tính(LFSR)  Ví dụ 2: Mật mã khóa tự sinh Giả sử khóa k = rõ “ RENDEZVOUS” Trước tiên, ta biến đổi rõ thành dãy số nguyên: 17 13 25 21 14 20 18 13 25 21 14 20 Dòng khóa sau: 17 Bây ta cộng phần tử tương ứng rút gọn theo Modulo26; 25 21 17 16 20 12 20 12 Bản mã dạng ký tự : ZVRQHDUJIM Giải mã: Biến đổi xâu ký tự thành dãy số: 25 21 17 16 Sau ta tính: X1=d8(25)= 25 – mod 26 = 17 X2= d17(21) = 21- 17mod26= Và tiếp tục để giải mã mã 23 3.2.Demo Hình 8: Thuật toán A5 mô hình mạng GSM  Chương trình chạy mô thuật toán A5/1 dùng mạng GSM #include /* định nghĩa cho ghi dịch */ #define R1MASK 0x07FFFF /* 19 bits, numbered 18 */ #define R2MASK 0x3FFFFF /* 22 bits, numbered 21 */ #define R3MASK 0x7FFFFF /* 23 bits, numbered 22 */ /* Bit ghi dung làm bit điều khiển clock */ #define R1MID 0x000100 /* bit */ #define R2MID 0x000400 /* bit 10 */ 24 #define R3MID 0x000400 /* bit 10 */ /* Feedback taps, for clocking the shift registers * These correspond to the primitive polynomials * x^19 + x^5 + x^2 + x + 1, x^22 + x + 1, * and x^23 + x^15 + x^2 + x + */ #define R1TAPS 0x072000 /* bits 18,17,16,13 */ #define R2TAPS 0x300000 /* bits 21,20 */ #define R3TAPS 0x700080 /* bits 22,21,20,7 */ /* Output taps, for output generation */ #define R1OUT 0x040000 /* bit 18 (the high bit) */ #define R2OUT 0x200000 /* bit 21 (the high bit) */ #define R3OUT 0x400000 /* bit 22 (the high bit) */ typedef unsigned char byte; typedef unsigned long word; typedef word bit; /* Tính toán nhị phân 32 bit, tổng bội số */ 25 bit parity(word x) { x ^= x>>16; x ^= x>>8; x ^= x>>4; x ^= x>>2; x ^= x>>1; return x&1; } /* Clock ghi */ word clockone(word reg, word mask, word taps) { word t = reg & taps; reg = (reg = 2) return 1; else return 0; } void clock() { bit maj = majority(); if (((R1&R1MID)!=0) == maj) R1 = clockone(R1, R1MASK, R1TAPS); if (((R2&R2MID)!=0) == maj) R2 = clockone(R2, R2MASK, R2TAPS); if (((R3&R3MID)!=0) == maj) R3 = clockone(R3, R3MASK, R3TAPS); } void clockallthree() { R1 = clockone(R1, R1MASK, R1TAPS); R2 = clockone(R2, R2MASK, R2TAPS); R3 = clockone(R3, R3MASK, R3TAPS); } 27 bit getbit() { return parity(R1&R1OUT)^parity(R2&R2OUT)^parity(R3&R3OUT); } void keysetup(byte key[8], word frame) { int i; bit keybit, framebit; R1 = R2 = R3 = 0; for (i=0; i> (i&7)) & 1; /* The i-th bit of the key */ R1 ^= keybit; R2 ^= keybit; R3 ^= keybit; } for (i=0; i> i) & 1; /* The i-th bit of the frame # */ R1 ^= framebit; R2 ^= framebit; R3 ^= framebit; 28 } for (i=0; i[...]...Một mã khóa tự động có khóa nhận được từ dữ liệu bản rõ mà nó mã hóa Một lớp quan trọng các mã dòng tự đồng bộ cộng khác, trong đó quá trình mã phản hồi tới phần tử sinh dòng khóa như trong Hình 4 Nhận xét: Những vấn đề chính liên quan đến loại mã dòng này là việc thiết kế phần tử sinh dòng khóa và cách mà ký tự bản mã phản hồi được dùng trong phần tử sinh dòng khóa Loại mã dòng dòng này thì... động của mã khối như ở trên, đã có ba kiểu được dùng trong mã dòng Một cách tự nhiên, có rất nhiều cách sử dụng mã khối cho mã dòng Ngay cả mã dòng đồng bộ không cộng như đã được đề cập ở phần trước cũng dựa trên mã khối Nhận xét: Rõ ràng một mã được an toàn chống lại các tấn công dựa vào duy nhất bản mã nếu nó được an toàn chống lại các tấn công biết trước bản rõ Cho một số cặp khối bản rõ-bản mã, việc... giải mã như sau: M i = Ci − rchop n −m ( E k ( X i )), X i +1 = lchop m ( X i ) || Ci Một thanh ghi nội tại (internal register) được cần để cập nhật Xi Kiểu OFB cũng dùng một mã khối cho quá trình mã dòng Như trong kiểu CFB, ta có ban đầu một mã khối với không gian cả bản rõ và bản mã là An, ở đây bộ (A, +) là một nhóm Aben Mã dòng dựa trên mã khối được mô tả như sau Không gian bản rõ và bản mã của mã. .. dòng này thì khó hơn để thiết kế và phân tích do liên quan đến sự phản hồi 2.3.3 Mã dòng đồng bộ không cộng Cả hai loại mã khối và mã dòng cộng đều có những điểm thuận lợi và bất lợi Mã dòng đồng bộ cộng có điểm bất lợi ở chỗ, với một cặp ký tự bản mã- bản rõ sẽ tiết lộ ngay ký tự khóa dòng tương ứng khi ký tự bản rõ được mã hóa Điều này có thể tạo điều kiện cho một số loại tấn công phục hồi khóa (key-recovering... −1 ) với i = 2, 3, …, t Để giải mã, khối bản rõ đầu tiên thu được như: M 1 = Dk (C1 ) − IV , ở đây “–“ là toán tử ngược của “+” Những khối bản rõ khác sau đó được tính như: M i = Dk (Ci ) − Ci −1 , với i = 2, 3, …, t Nếu ta so sánh các công thức mã của CBC trên với công thức mã của mã dòng tổng quát ở Hình 2, rõ ràng có thể xem kiểu CBC làm cho mã khối trở thành mã dòng với bộ nhớ nội tại (internal... khối bản mã ở lần thứ i Từ khi khóa ki biến thiên theo thời gian, phương pháp mã này là mã khối động hay còn gọi là phương pháp mã dòng đồng bộ không cộng (nonadditive synchronous stream cipher) Khóa của hệ thống bao gồm cả phần tử sinh dòng khóa SG Nhận xét: Trong hệ thống mã này, không cần thiết yêu cầu một độ phức tạp tuyến tính (linear complexity) lớn đối với dãy sinh ra của SG nếu thuật toán mã khối... được biết đối với mã dòng cộng và mã khối không áp dụng được cho hệ thống này Để tấn công nó, cần đến những phương thức mới 12 Mục đích khác của hệ thống này là để có một thuật toán mã nhanh Điều này có thể nhờ vào việc sử dụng những phần tử sinh dãy nhanh và những thuật toán mã khối nhanh trong hệ thống, để có được thuật toán tốc độ và có tính bảo mật 2.3.4 Phương pháp mã dòng sử dụng mã khối Có một... dụ về mã dòng 3.1.Ví dụ  Ví dụ1 : Giả sử m = 4 và dòng khóa được tạo bằng quy tắc: Zi+4 = Zi + Zi+1 mod 2 Nếu dòng khóa bắt đầu một vector bất kì khác với vector (0, 0, 0 ,0) thì ta thu được dòng khóa có chu kì 15 Ví dụ bắt đầu bằng vector (1, 0, 0, 0) dòng khóa sẽ là: 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1 Một vector khởi đầu khác không bất kì khác sẽ tạo một hoán vị vòng (cyclic) của cùng dòng. .. khối trở thành mã dòng với bộ nhớ nội tại (internal memory) Bộ nhớ nội tại trong CBC ở đây, có thể hiểu là để mã hóa Ci phải cần đến Ci-1, vậy phải cần một sự nhớ lại khối bản mã đã mã hóa được trước đó, điều này cần đến một “bộ nhớ” Đối với mã dòng đồng bộ cộng, bộ nhớ nội tại này nằm trong phần tử sinh dòng khóa của hệ thống, mà một ví dụ điển hình là LFSR (xem thêm ở các phần sau của luận văn) Nó... tập hợp những thanh ghi (register) nếu hiện thực bằng phần cứng, đóng vai trò quan trọng trong việc tạo ra dòng khóa Kiểu CFB còn dùng một mã khối cho quá trình mã dòng Giả sử rằng ta có một mã khối với không gian khối bản rõ và bản mã là An, ở đây bộ (A, +) là một nhóm Aben Cho Ek(x) là hàm mã hóa, rchopu là ký hiệu hàm có chức năng xóa bỏ u ký tự phải nhất của tham số của nó, và lchopu là ký hiệu ... dùng mã khối cho trình mã dòng Như kiểu CFB, ta có ban đầu mã khối với không gian rõ mã An, (A, +) nhóm Aben Mã dòng dựa mã khối mô tả sau Không gian rõ mã mã dòng Am, m chọn tùy ý n Mã dòng. .. dòng khóa cho mã dòng đồng cộng phải đủ mạnh 2.3.2 Mã dòng tự đồng cộng Hình Mã dòng tự đồng cộng Trong mã dòng đồng bộ, ký tự dòng khóa nhận từ số n cố định ký tự mã trước Những mã mã khóa tự... nghĩa tổng quát mã dòng: Định nghĩa mã dòng : Cho K không gian khóa hệ mã cho k1k ⋅ ⋅⋅ ∈ K dòng khóa Hệ mã gọi mã dòng việc mã hóa chuỗi rõ m1m2 ⋅ ⋅ ⋅ thu cách áp dụng lặp lặp lại phép mã hóa đơn

Ngày đăng: 24/12/2015, 14:20

TỪ KHÓA LIÊN QUAN

w