Thuật toánmã hóa dữ liệu

Một phần của tài liệu Kỹ thuật xác thực và mã hóa dữ liệu trong công nghệ Wimax (Trang 45)

2.2.1.1 Giới thiệu:

DES (viết tắt của Data Encryption Standard, hay Tiêu chuẩn Mã hóa Dữ liệu) là một phƣơng pháp mật mã hóa đƣợc FIPS (Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ) chọn làm chuẩn chính thức vào năm 1976. Sau đó chuẩn này đƣợc sử dụng rộng rãi trên phạm vi thế giới. Ngay từ đầu, thuật toán của nó đã gây ra rất nhiều tranh cãi, do nó bao gồm các thành phần thiết kế mật, độ dài khóa tƣơng đối ngắn, và các nghi ngờ về cửa sau để Cơ quan An ninh quốc gia Hoa Kỳ (NSA) có thể bẻ khóa. Do đó, DES đã đƣợc giới nghiên cứu xem xét rất kỹ lƣỡng, việc này đã thúc đẩy hiểu biết hiện đại về mật mã khối (block cipher) và các phƣơng pháp thám mã tƣơng ứng.

Hiện nay DES đƣợc xem là không đủ an toàn cho nhiều ứng dụng. Nguyên nhân chủ yếu là độ dài 56 bit của khóa là quá nhỏ. Khóa DES đã từng bị phá trong vòng chƣa đầy 24 giờ.Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu về mặt lý thuyết của mã hóa có thể dẫn đến phá khóa, tuy chúng không khả thi trong thực tiễn. Thuật toán đƣợc tin tƣởng là an toàn trong thực tiễn có dạng Triple DES (thực hiện DES ba lần), mặc dù trên lý thuyết phƣơng pháp này vẫn có thể bị phá. Gần đây DES đã đƣợc thay thế bằng AES (Advanced Encryption Standard, hay Tiêu chuẩn Mã hóa Tiên tiến).

Trong một số tài liệu, ngƣời ta phân biệt giữa DES (là một tiêu chuẩn) và thuật toán DEA (Data Encryption Algorithm, hay Thuật toán Mã hóa Dữ liệu) - thuật toán dùng trong chuẩn DES.

46

2.2.1.2 Thuật toán :

DES là thuật toán mã hóa khối: nó xử lý từng khối thông tin của bản rõ có độ dài xác định và biến đổi theo những quá trình phức tạp để trở thành khối thông tin của bản mã có độ dài không thay đổi. Trong trƣờng hợp của DES, độ dài mỗi khối là 64 bit.DES cũng sử dụng khóa để cá biệt hóa quá trình chuyển đổi.Nhờ vậy, chỉ khi biết khóa mới có thể giải mã đƣợc văn bản mã.Khóa dùng trong DES có độ dài toàn bộ là 64 bit.Tuy nhiên chỉ có 56 bit thực sự đƣợc sử dụng; 8 bit còn lại chỉ dùng cho việc kiểm tra.Vì thế, độ dài thực tế của khóa chỉ là 56 bit.

Giống nhƣ các thuật toán mã hóa khối khác, khi áp dụng cho các văn bản dài hơn 64 bit, DES phải đƣợc dùng theo một phƣơng pháp nào đó. Trong tài liệu FIPS-81 đã chỉ ra một số phƣơng pháp, trong đó có một phƣơng pháp dùng cho quá trình nhận thực. Một số thông tin thêm về những cách sử dụng DES đƣợc miêu tả trong tài liệu FIPS-74.

Cấu trúc tổng thể của thuật toán đƣợc thể hiện ở Hình 1: có 16 chu trình giống nhau trong quá trình xử lý. Ngoài ra còn có hai lần hoán vị đầu và cuối (Initial and final permutation - IP & FP).Hai quá trình này có tính chất đối nhau (Trong quá trình mã hóa thì IP trƣớc FP, khi giải mã thì ngƣợc lại). IP và FP không có vai trò xét về mật mã học và việc sử dụng chúng chỉ có ý nghĩa đáp ứng cho quá trình đƣa thông tin vào và lấy thông tin ra từ các khối phần cứng có từ thập niên 1970. Trƣớc khi đi vào 16 chu trình chính, khối thông tin 64 bit đƣợc tách làm hai phần 32 bit và mỗi phần sẽ đƣợc xử lý tuần tự (quá trình này còn đƣợc gọi là mạng Feistel).

Cấu trúc của thuật toán (mạng Feistel) đảm bảo rằng quá trình mã hóa và giải mã diễn ra tƣơng tự. Điểm khác nhau chỉ ở chỗ các khóa con đƣợc sử dụng theo trình tự ngƣợc nhau. Điều này giúp cho việc thực hiện thuật toán trở nên đơn giản, đặc biệt là khi thực hiện bằng phần cứng.

Ký hiệu sau: thể hiện phép toán XOR. Hàm F làm biến đổi một nửa của khối đang xử lý với một khóa con. Đầu ra sau hàm F đƣợc kết hợp với nửa còn lại của khối và hai phần đƣợc tráo đổi để xử lý trong chu trình kế tiếp. Sau chu trình cuối cùng thì 2 nửa không bị tráo đổi; đây là đặc điểm của cấu trúc Feistel khiến cho quá trình mã hóa và giải mã trở nên giống nhau.

47 1. Mở rộng: 32 bit đầu vào đƣợc mở rộng thành 48 bit sử dụng thuật toán hoán vị mở rộng (expansion permutation) với việc nhân đôi một số bit. Giai đoạn này đƣợc ký hiệu là E trong sơ đồ.

2. Trộn khóa: 48 bit thu đƣợc sau quá trình mở rộng đƣợc XOR với khóa con. Mƣời sáu khóa con 48 bit đƣợc tạo ra từ khóa chính 56 bit theo một chu trình tạo khóa con (key schedule) miêu tả ở phần sau.

3. Thay thế: 48 bit sau khi trộn đƣợc chia làm 8 khối con 6 bit và đƣợc xử lý qua hộp thay thế S-box. Đầu ra của mỗi khối 6 bit là một khối 4 bit theo một chuyển đổi phi tuyến đƣợc thực hiện bằng một bảng tra. Khối S-box đảm bảo phần quan trọng cho độ an toàn của DES. Nếu không có S-box thì quá trình sẽ là tuyến tính và việc thám mã sẽ rất đơn giản.

4. Hoán vị: Cuối cùng, 32 bit thu đƣợc sau S-box sẽ đƣợc sắp xếp lại theo một thứ tự cho trƣớc (còn gọi là P-box).

Hàm F, nhƣ đƣợc miêu tả ở Hình 11, hoạt động trên khối 32 bit và bao gồm bốn giai đoạn:

Hình 11: Hàm F (F-function) dùng trong DES

Quá trình luân phiên sử dụng S-box và sự hoán vị các bít cũng nhƣ quá trình mở rộng đã thực hiện đƣợc tính chất gọi là sự xáo trộn và khuếch tán (confusion and diffusion). Đây là yêu cầu cần có của một thuật toán mã hoá đƣợc Claude Shannon phát hiện trong những năm 1940.

48 Hình 12: Quá trình tạo khóa con trong DES

Hình 12 mô tả thuật toán tạo khóa con cho các chu trình. Đầu tiên, từ 64 bit ban đầu của khóa, 56 bit đƣợc chọn (Permuted Choice 1, hay PC-1); 8 bit còn lại bị loại bỏ. 56 bit thu đƣợc đƣợc chia làm hai phần bằng nhau, mỗi phần đƣợc xử lý độc lập. Sau mỗi chu trình, mỗi phần đƣợc dịch đi 1 hoặc 2 bit (tùy thuộc từng chu trình, nêu đó là chu trình 1,2,9,16 thì đó là dịch 1bit, còn lại thì sẽ đƣợc dich 2bit). Các khóa con 48 bit đƣợc tạo thành bởi thuật toán lựa chọn 2 (Permuted Choice 2, hay PC-2) gồm 24 bit từ mỗi phần. Quá trình dịch bit (đƣợc ký hiệu là "<<<" trong sơ đồ) khiến cho các khóa con sử dụng các bit khác nhau của khóa chính; mỗi bit đƣợc sử dụng trung bình ở 14 trong tổng số 16 khóa con.

Quá trình tạo khóa con khi thực hiện giải mã cũng diễn ra tƣơng tự nhƣng các khóa con đƣợc tạo theo thứ tự ngƣợc lại. Ngoài ra sau mỗi chu trình, khóa sẽ đƣợc dịch phải thay vì dịch trái nhƣ khi mã hóa.

2.2.2 Thuật toán mã hóa 2.2.2.1 Giới thiệu: 2.2.2.1 Giới thiệu:

Trong mật mã học, AES (viết tắt của từ tiếng Anh: Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) là một thuật toánmã hóa khối đƣợc chính phủHoa kỳ áp dụng làm tiêu chuẩn mã hóa. Giống nhƣ tiêu chuẩn tiền nhiệm

49 DES, AES đƣợc kỳ vọng áp dụng trên phạm vi thế giới và đã đƣợc nghiên cứu rất kỹ lƣỡng. AES đƣợc chấp thuận làm tiêu chuẩn liên bang bởi Viện tiêu chuẩn và công nghệ quốc gia Hoa kỳ (NIST) sau một quá trình tiêu chuẩn hóa kéo dài 5 năm (Xem thêm: quá trình thiết kế AES).

Thuật toán đƣợc thiết kế bởi hai nhà mật mã học ngƣời Bỉ: Joan Daemen và Vincent Rijmen. Thuật toán đƣợc đặt tên là "Rijndael" khi tham gia cuộc thi thiết kế AES. Rijndael đƣợc phát âm là "Rhine dahl" theo phiên âm quốc tế.

Mặc dù 2 tên AES và Rijndael vẫn thƣờng đƣợc gọi thay thế cho nhau nhƣng trên thực tế thì 2 thuật toán không hoàn toàn giống nhau. AES chỉ làm việc với các khối dữ liệu (đầu vào và đầu ra) 128 bít và khóa có độ dài 128, 192 hoặc 256 bít trong khi Rijndael có thể làm việc với dữ liệu và khóa có độ dài bất kỳ là bội số của 32 bít nằm trong khoảng từ 128 tới 256 bít. Các khóa con sử dụng trong các chu trình đƣợc tạo ra bởi quá trình tạo khóa con Rijndael. Mỗi khóa con cũng là một cột gồm 4 byte. Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một trƣờng hữu hạn của các byte. Mỗi khối dữ liệu 128 bit đầu vào đƣợc chia thành 16 byte (mỗi byte 8 bit),có thể xếp thành 4 cột, mỗi cột 4 phần tử hay là một ma trận 4x4 của các byte,nó đƣợc gọi là ma trận trạng thái, hay vắn tắt là trạng thái (tiếng Anh: state, trang thái trong Rijndael có thể có thêm cột). Trong quá trình thực hiện thuật toán các toán tử tác động để biến đổi ma trận trạng thái này.

2.2.2.2 Thuật toán AES

Quá trình mã hóa : Bao gồm các bƣớc:

1. Khởi động vòng lặp

1. AddRoundKey — Mỗi cột của trạng thái đầu tiên lần lƣợt đƣợc kết hợp với một khóa con theo thứ tự từ đầu dãy khóa.

2. Vòng lặp

1. SubBytes — đây là phép thế (phi tuyến) trong đó mỗi byte trong trạng thái sẽ đƣợc thế bằng một byte khác theo bảng tra (Rijndael S-box). 2. ShiftRows — dịch chuyển, các hàng trong trạng thái đƣợc dịch vòng

theo số bƣớc khác nhau.

3. MixColumns — quá trình trộn làm việc theo các cột trong khối theo một phép biến đổi tuyến tính.

50 4. AddRoundKey 3. Vòng lặp cuối 1. SubBytes 2. ShiftRows 3. AddRoundKey

4. Tại chu trình cuối thì bƣớc MixColumns không thực hiện. Bƣớc SubBytes

Các byte đƣợc thế thông qua bảng tra S-box.Đây chính là quá trình phi tuyến của thuật toán.Hộp S-box này đƣợc tạo ra từ một phép biến đổi khả nghịch trong trƣờng hữu hạn GF có tính chất phi tuyến.Để chống lại các tấn công dựa trên các đặc tính đại số, hộp S-box này đƣợc tạo nên bằng cách kết hợp phép nghịch đảo với một phép biến đổi affine khả nghịch. Hộp S-box này cũng đƣợc chọn để tránh các điểm bất động (fixed point).

51 Bƣớc ShiftRows

Các hàng đƣợc dịch vòng một số bƣớc nhất định.Đối với AES, hàng đầu đƣợc giữ nguyên.Mỗi byte của hàng thứ 2 đƣợc dịch vòng trái một vị trí.Tƣơng tự, các hàng thứ 3 và 4 đƣợc dịch vòng 2 và 3 vị trí. Do vậy, mỗi cột khối đầu ra của bƣớc này sẽ bao gồm các byte ở đủ 4 cột khối đầu vào. Đối với Rijndael với độ dài khối khác nhau thì số vị trí dịch chuyển cũng khác nhau.

Hình 14: Bƣớc ShiftRows

Bƣớc MixColumns

Bốn byte trong từng cột đƣợc kết hợp lại theo một phép biến đổi tuyến tính khả nghịch. Mỗi khối 4 byte đầu vào sẽ cho một khối 4 byte ở đầu ra với tính chất là mỗi byte ở đầu vào đều ảnh hƣởng tới cả 4 byte đầu ra. Cùng với bƣớc ShiftRows, MixColumns đã tạo ra tính chất khuếch tán cho thuật toán. Mỗi cột đƣợc xem nhƣ một đa thức trong trƣờng hữu hạn và đƣợc nhân với đa thức (modulo ). Vì thế, bƣớc này có thể đƣợc xem là phép nhânma trận trong trƣờng hữu hạn.

52 Hình 15: Bƣớc MixColumns

Bƣớc AddRoundKey

Tại bƣớc này, khóa con đƣợc kết hợp với các khối. Khóa con trong mỗi chu trình đƣợc tạo ra từ khóa chính với quá trình tạo khóa con Rijndael; mỗi khóa con có độ dài giống nhƣ các khối. Quá trình kết hợp đƣợc thực hiện bằng cách XOR từng bít của khóa con với khối dữ liệu.

53 Tối ƣu hóa:

Đối với các hệ thống 32 bít hoặc lớn hơn, ta có thể tăng tốc độ thực hiện thuật toán bằng cách sát nhập các bƣớc SubBytes, ShiftRows, MixColumns và chuyển chúng thành dạng bảng. Có cả thảy 4 bảng với 256 mục, mỗi mục là 1 từ 32 bít, 4 bảng này chiếm 4096 byte trong bộ nhớ. Khi đó, mỗi chu trình sẽ đƣợc bao gồm 16 lần tra bảng và 12 lần thực hiện phép XOR 32 bít cùng với 4 phép XOR trong bƣớc AddRoundKey.

Trong trƣờng hợp kích thƣớc các bảng vẫn lớn so với thiết bị thực hiện thì chỉ dùng một bảng và tra bảng kết hợp với hoán vị vòng quanh.

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

Vào thời điểm năm 2006, dạng tấn công lên AES duy nhất thành công là tấn công kênh bên (side channel attack]).Vào tháng 6 năm 2003, chính phủ Hoa kỳ tuyên bố AES có thể đƣợc sử dụng cho thông tin mật.

"Thiết kế và độ dài khóa của thuật toán AES (128, 192 và 256 bít) là đủ an toàn để bảo vệ các thông tin đƣợc xếp vào loại TỐI MẬT (secret). Các thông tin TUYỆT MẬT (top secret) sẽ phải dùng khóa 192 hoặc 256 bít. Các phiên bản thực hiện AES nhằm mục đích bảo vệ hệ thống an ninh hay thông tin quốc gia phải đƣợc NSA kiểm tra và chứng nhận trƣớc khi sử dụng."

Điều này đánh dấu lần đầu tiên công chúng có quyền tiếp xúc với thuật toán mật mã mà NSA phê chuẩn cho thông tin TUYỆT MẬT. Nhiều phần mềmthƣơng mại hiện nay sử dụng mặc định khóa có độ dài 128 bít.

Phƣơng pháp thƣờng dùng nhất để tấn công các dạng mã hóa khối là thử các kiểu tấn công lên phiên bản có số chu trình thu gọn. Đối với khóa 128 bít, 192 bít và 256 bít, AES có tƣơng ứng 10, 12 và 14 chu trình. Tại thời điểm năm 2006, những tấn công thành công đƣợc biết đến là 7 chu trình đối với khóa 128 bít, 8 chu trình với khóa 192 bít và 9 chu trình với khóa 256 bít.

Một số nhà khoa học trong lĩnh vực mật mã lo ngại về an ninh của AES. Họ cho rằng ranh giới giữa số chu trình của thuật toán và số chu trình bị phá vỡ quá nhỏ. Nếu các kỹ thuật tấn công đƣợc cải thiện thì AES có thể bị phá vỡ.Ở đây, phá

54 vỡ có nghĩa chỉ bất cứ phƣơng pháp tấn công nào nhanh hơn tấn công kiểu duyệt toàn bộ.Vì thế một tấn công cần thực hiện 2120 cũng đƣợc coi là thành công mặc dù tấn công này chƣa thể thực hiện trong thực tế.Tại thời điểm hiện nay, nguy cơ này không thực sự nguy hiểm và có thể bỏ qua. Tấn công kiểu duyệt toàn bộ quy mô nhất đã từng thực hiện là do distributed.net thực hiện lên hệ thống 64 bít RC5 vào năm 2002 (Theo định luật Moore thì nó tƣơng đƣơng với việc tấn công vào hệ thống 66 bit hiện nay).

Một vấn đề khác nữa là cấu trúctoán học của AES. Không giống với các thuật toán mã hóa khác, AES có mô tả toán học khá đơn giản. Tuy điều này chƣa dẫn đến mối nguy hiểm nào nhƣng một số nhà nghiên cứu sợ rằng sẽ có ngƣời lợi dụng đƣợc cấu trúc này trong tƣơng lai.

Vào năm 2002, Nicolas Courtois và Josef Pieprzyk phát hiện một tấn công trên lý thuyết gọi là tấn công XSL và chỉ ra điểm yếu tiềm tàng của AES. Tuy nhiên, một vài chuyên gia về mật mã học khác cũng chỉ ra một số vấn đề trong cơ sở toán học của tấn công này và cho rằng các tác giả đã có sai lầm trong tính toán. Việc tấn công dạng này có thực sự trở thành hiện thực hay không vẫn còn để ngỏ và cho tới nay thì tấn công XSL vẫn chỉ là suy đoán.

Trong mật mã học, RSA là một thuật toán mật mã khoá công khai. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hoá. Nó đánh dấu một sự tiến bộ vƣợt bậc của lĩnh vực mật mã học trong việc sử dụng khoá công cộng. RSA đang đƣợc sử dụng phổ biến trong thƣơng mại điện tử và đƣợc cho là đảm bảo an toàn với điều kiện độ dài khoá đủ lớn.

Tuy vậy, để các hoạt động trong thế giới số có đƣợc các điều kiện nhƣ hoạt động rong thế giới thực thì chúng ra cần có: Các chính sách bảo mật tạo ra khung pháp lý cho hoạt động mã hoá; các công cụ tạo lập; lƣu trữ và quản lý khoá; các thủ tục tạo lập, phân phối, sử dụng khoá và chứng chỉ số. Tức là, chúng ta cần cơ sở hạ tầng mã khoá công khai (PKI).

Một cơ sở hạ tầng mã khoá công khai là sự kết hợp giữa sản phẩm phần mềm, phần ứng, chính sách phục vụ và thủ tục. Nó cung cấp nền tảng bảo mật cơ bản, cần thiết để thực hiện các giao dịch, trao đổi thông tin. PKI dựa trên cơ sở các nhận

Một phần của tài liệu Kỹ thuật xác thực và mã hóa dữ liệu trong công nghệ Wimax (Trang 45)

Tải bản đầy đủ (PDF)

(82 trang)