THUẬT TÓAN MÃ HÓA BẢO MẬT AES

Một phần của tài liệu Các giải pháp bảo mật trong mạng UMTS (Trang 53)

ngoại trừ những ai được cho chép đọc. Mã hóa sử dụng thuật toán và khóa để biến đổi dữ liệu từ hình thức đơn giản rõ ràng (plain hay cleartext), làm biến dữ liệu sang hình tức mật mã vô nghĩa (code hay ciphertext). Chỉ có những ai có thông tin giải mã thì mới giải mã được và đọc được dữ liệu.

Có hai kỹ thuật mã hóa được sử dụng: thuật toán mã hóa đối xứng và thuật toán mã hóa không đối xứng.

• Thuật toán mã hóa đối xứng:

Là phương pháp sử dụng cùng một khóa để bảo mật dữ liệu, khóa này vừa dùng để mã hoá và giải mã dữ liệu luôn. Vì vậy khóa này phải được chuyển một an toàn giữa hai đối tượng giao tiếp, vì ai có được khóa này thì hoàn toàn có thể giaỉ mã được thông tin.

- Nhược điểm: Thuật toán mã hóa đối xứng nhìn chung thực hiện nhanh nhưng an toàn chưa cao vì có thể bị lộ khóa. Nên thuật toán này thường dùng cho việc mã hóa dữ liệu.

Ngày nay có 3 thuật toán mã hóa đối xứng được sử dụng nhiều: DES, 3DES, AES.

Data Encryption Standard (DES): DES được phát triển bởi Tiêu chuẩn Xử lý Thông tin Hoa Kỳ (National Institute of Standardard and Technology - NIST). DES mã hóa dữ liệu theo từng clock 64-bit với một khóa 56-bit với 8-bit chẵn lẽ. Chính vì độ dài của khóa ngắn nên DES là một thuật toán mã hóa yếu, để bẽ khóa này thì ít nhất phải mất 24 giờ

Triple Data Encryption Standard (3DES) :3DES là DES được bổ sung thêm một số tính năng cao cấp, nó thực hiện mã hóa dữ liệu thông qua việc xử lý mỗi block 3 lần và mỗi lần với một khóa khác nhau.Trước hết nó sẽ dùng một khóa để mã hóa plain-text thì ciphertext, sau đó lại tiếp tục dùng một khóa khác nửa để mã hóa ciphertext, và tiếp tiệp mã hóa ciphertext này với khóa thứ 3, nghĩa là 3DES sữ dụng một khóa 168-bit, nên đó an toàn hơn và tất nhiên là việc xử lý sẽ chậm hơn DES.

Avandted Encryption Standard (AES): AES được tạo ra để thay thế DES, nó không chỉ nhanh hơn mà còn mã hoá an toàn hơn nên ngày nay được sử dụng

rất nhiều. AES cũng thực hiện mã hóa dữ liệu theo từng clock, có khả năng hổ trợ clock 128-bit; 192-bit; 256-bit

+ Ưu điểm:

• Có độ an toàn rất cao. Đến cuối năm 2006, tấn công AES duy nhất thành

công là tấn công kênh bên (side channel attack).

• Hiện đang được sử dụng rộng rãi trong nhiều ứng dụng, thay thế các giải

thuật cũ như DES, 3DES.

• Cho phép thực hiện với tốc độ cao bằng phần mềm hoặc bằng phần cứng

mà không đòi hỏi nhiều bộ nhớ.

+ Nhược điểm: Có mô tả toán học khá đơn giản, tuy chưa dẫn đến mối nguy hiểm nào, nhưng có một số nhà nghiên cứu lo sẽ có người lợi dụng được tính giản đơn này trong tương lai

3.7.2 Mô tả thuật toán:

AES chỉ làm việc với khối dữ liệu 128 bít và khóa có độ dài 128, 192 hoặc 256 bít. Thuật toán AES hoạt động trên một khối dữ liệu có độ lớn 128 bit, được tổ chức và trong một ma trận có kích thước 4 x 4 gọi là một state(trạng thái). Kích cỡ của key mã hoá có chiều dài 128,192, hay 256 bit, đặc biệt Wimax sử dụng key 128 bit.)

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.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

AES làm việc với từng khối dữ liệu 4×4 byte (tiếng Anh: state, khối

trong Rijndael có thể có thêm cột).

3.7.3. Các khái niệm và kí hiệu

AES Chuẩn mã hóa cao cấp

Biến đổi

Affine

Phép biến đổi bao gồm một phép nhân với một ma trận sau đó là một phép cộng của một vecto

Bit Một số nhị phân nhận giá trị 0 và 1

Block Một dãy các bít nhị phân tạo thành input , output,

lượng các bít mà nó chứa.Các khối cũng có thể được xem là một dãy các byte

Byte Một nhóm 8 bit

Cipher Khóa của hệ mã, có thể được biểu diễn dưới dạng

một mảng 2 chiều gồm 4 hàng và Nk cột

Ciphertext Bản mã

Inverse Cipher Thuật toán giải mã Thủ tục sinh

khóa (Key Expansion)

Thủ tục được sử dụng để sinh ra các khóa sử dụng tại các vòng lặp của thuật toán mã hóa , giải mã từ khóa chính ban đầu.

Round Key Là các giá trị sinh ra từ khóa chính bằng cách sử

dụng thử sử dụng thử tục sinh khóa. Các khóa này được sử dụng tại các vòng lặp của thuật toán

Trạng thái (State)

Các giá trị mã hóa trung gian có thể biểu diễn dưới dạng một mảng 2 chiều gồm 4 hàng và Nb cột.

Word Một bảng thế phi tuyến được sử dụng trong thủ

tục sinh khóa và trong các biến đổi thay thế các byte để thực hiện các thay thế 1-1 đối với một giá trị một byte.

3.7.4 Input và Output

Input và Output chủa chuẫn mã hóa cao cấp đều là các dãy 128 bit còn gọi là các khối (block), độ dài của mỗi khối này là số bít dữ liệu mà nó chứa. Khóa của chuẩn mã hóa cao cấp là một dãy có độ dài I 128, 192 hoặc 256 bít. Chuẩn mã hóa dữ liệu cao cấp không làm việc với các giá trị input,output và khóa có các độ dài khác (mặc dù thuật toán cơ sở của nó cho phép điều này). Các bít của input , output và khóa của hệ mã được đánh số từ 0.

3.7.5 Đơn vị Byte

xem như là một mảng các byte. Các giá trị input, output và khóa của hệ mã được ký hiệu bởi tên mảng a và biểu diễn dưới dạng an hoặc a [n] trong đó n được nhận trong các khoảng sau:

Nếu độ dài khóa bằng 128bit: n trong khoảng từ 0tới 16 Nếu đọ dài khóa bằng 192 bít: n trong khoảng từ 0 tới 24 Nếu độ dài khóa bằng 256 bít: n trong khoảng từ 0 tới 32

Tất cả các giá trị Byte sử dụng trong thuật toán của AES đều được biểu diễn dưới dạng một dãy các bít 0 hoặc 1 theo định dạng {b7, b6, b5, b4, b3, b2, b1,b0} . Các Byte này sau được hiểu là các phần tử trên trường hữu hạn bằng cách sử dụng biểu diễn thành dạng đa thức:

Chẳng hạn giá trị {01100011} tương đương với phần tử trên trường hữu hạn x6+x5+x+1

Để thuận tiện . các giá trị Byte được biểu diễn sử dụng các kí hiệu của hệ Hexa sử dụng 4 bít cho một ký tự và hai ký tự cho một Byte như bảng sau:

Khi đó các Byte (8bit) sẽ được biểu diễn bằng hai ký tự, chẳng hạn {01100011} sẽ được biểu diễn thành {63}.

Bit ký t

0100 4

0110 5

0110 6

3.7.6 Trạng thái (State)

Các thao tác bên trong của AES được thực hiện trên một mảng 2 chiều các byte được gọi là trạng thái. Một trạng thái gồm bốn hang các byte, mỗi hang có Nb byte trong đó Nb là kích thước của khối chia cho 32. Mảng trạng thái kí hiệu là s trong đó mỗi byte của mảng có 2 chỉ số hàng r và cột c

Tại thời điểm bắt đầu input của thuật toán – mảng các byte in0, in1...in15 được copy vào mảng trạng thái theo qui tắc được minh họa bằng hình vẽ:

Trong đó các giá trị của mảng s và mảng output được tính như sau:

3.7.7 Thuật toán

Độ dài của input , output và các trạng thái (state) của chuẫn mã hóa cao cấp AES là 128bit tương ứng với giá trị của Nb=4 .Khóa của AES có độ dài 128, 192, 256 bit tương ứng với các giá trị của Nk là 4, 6, 8 và cũng là số cột của khóa mã hóa.

Tương ứng với độ dài của khóa sử dụng số vòng lặp của thuật toán Nr nhận các giá trị 10 (Nk=4), 12 (Nk=6) hoặc (Nk=8). Có thể minh họa qua bảng sau:

Cả quá trình mã hóa và giải mã AES sử dụng một hàm lặp là kết hợp của bốn hàm biến đổi (đơn vị xủ lý là byte) sau

2) Dịch các hàng của mảng trạng thái với số lần dịch của mỗi hàng là khác nhau

3) Kết hợp dữ liệu của mỗi cột trong mảng trạng thái 4) Cộng một khóa Round Key vào trạng thái

Quá trình mã hóa bao gồm 4 bước:

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 Rịnndael; mối khóa con có độ dài giống như các khối.Qúa 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.

Bước SubBytes

Đây là phép thế (phi tuyến) trong đó mỗi byte sẽ được thế bằng một byte khác theo bảng tra (Rijndael S-box). 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 nghịch đảo trong trường hữu hạn GF (28) 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. Sau đây là bảng thế S-box của AES

Các hàng trong khối được dịch vòng. Đối với AES, hàng đầu được giữ nguyên. Mỗi byte của hàng thứ 2 được dịch trái một vị trí. Tương tự, các hàng thứ 3 và 4 được dịch 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.

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 khuyế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 c(x) =3x3 + x2 + x + 2 (modulo x4 + 1). Vì thế, bước này có thể được xem là phép nhân ma trận trong trường hữu hạn.

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

Trong bước AddRoundKey, mỗi byte được kết hợp với một byte trong khóa con của chu trình sử dụng phép toán XOR.

Trong bước SubBytes, mỗi byte được thay thế bằng một byte theo bảng tra, S; bij =

S(aij).

Trong bước ShiftRows, các byte trong mỗi hàng được dịch vòng trái. Số vị

Trong bước MixColumns, mỗi cột được nhân với một hệ số cố định c(x).

3.7.9 Thuật toán giải mã

Thuật toán giải mã khá giống với thuật toán mã hóa về mặt cấu trúc nhưng 4 hàm cơ bản được sử dụng là các hàm ngược của các hàm trong thuật toán giải mã.

+) InShiftRows

Hàm này là hàm ngược của hàm ShìtRows. Các byte của ba hàng cuối của mảng trạng thái sẽ được dịch vòng với các vị trí khác nhau. Hàng đầu tiên không bị dịch và ba hàng cuối bị dịch với số lần khác nhau.

+) Hàm InvSubBytes

Hàm này là hàm ngược của hàm SubByte.Bảng thế được sử dụng trong hàm là:

+) Hàm InMixColumns

Hàm này là hàm ngược của hàm mixColumns , nó coi mỗi cột của mảng trạng thái như là một đa thức gồm 4 hạng tử . Các cột sẽ được xem như là các đa

thức trên GF(28) và được nhân theo modulo x4+1 với một đa thức cố định a-1x): a-1(x)={0b}x3+{0d}x2+{09}x+{0e}

Và có thể mô tả bằng phép nhân ma trận như sau:

+) Hàm nghịch đảo của hàm AddRoundKey

Hàm này là hàm nghịch đảo của chính nó là do hàm chỉ có phép toán XOR bit.

3.8. Giao diện chương trình:

Hình 20: Giao diện mô phỏng

`- groupBox1 : Chứa tiến độ chạy và tính thời gian chạy của chương trình.

- groupBox2 : Là Box mà chứa toàn bộ những thành phần để mã hóa cũng như giải mã file

- groupBox3 : Là Box mà chứa toàn bộ những thành phần để mã hóa cũng như giải mã text

Box Đầu vào Đầu ra Mã hóa và giải mã files - Kích vào ô “files”,

chọn đường dẫn đến file văn bản cần mã hóa. - Nhập key gồm 32 kí tự hệ thập lục nhị phân Nằm trong ô “ file đã thay đổi”, tên file giống file đầu vào nhưng có thêm “ _2”

Mã hóa và giải mã text - Là đoạn text

- Nhập key gồm 32 kí tự hệ thậ lục nhị phân

Chuỗi nhị phân

3.9 Chạy mô phỏng3.9.1Mã hóa với file 3.9.1Mã hóa với file * Mã hóa

Tạo một file có tên là tuyêt_đtvtk4, mã hóa file với khóa 32 bít được chọn là 10101010101010101010101010101010

Hình 21:Mã hóa file

Trên màn hình sẽ xuất hiện một file mới đã được mã hóa có tên là tuyet_dtvt2. Để đọc được file này phải thực hiện giải mã với khóa đã chọn trước.

* Giải mã

Để thực hiện quá trình giải mã với giao diện trên chọn đường dẫn tới file tuyet_dtvt2 đã được tạo.

Hình 22: Gỉai mã file

Trên màn hình lúc này sẽ xuất hiện them một file có tên là tuyet_dtvt2_2 và đó là file đã được giải mã bạn có thể truy cập vào file giải mã đó.

3.9.2 Mã hóa text* Mã hóa * Mã hóa

Tạo một đoạn văn bản có nội dung “chuc cac ban bao ve do anthanhcong” với khóa ngầm định 32 bít được chọn là

010101010101010101010101010100101

Giải mã

Đoạn text đã được mã hóa được dùng khóa đã chọn để thực hiện giải mã như trên giao diên dưới đây:

KẾT LUẬN

Trong viễn thông nói chung và trong thông tin di động nói riêng, đảm bảo an ninh thông tin là yêu cầu cấp thiết. Hệ thống thông tin di động thế hệ thứ 3 ra đời mang đến cho khách hàng những dịch vụ di động với nhiều ưu điểm vượt trội, dịch vụ mang lại phong phú và đa dạng. Thông tin di động đang ngày càng được ứng dụng sâu rộng vào mọi nghành nghề kinh tế cũng như đời sống sinh hoạt của người dân. Với chiếc điện thoại di động có hỗ trợ dịch vụ 3G khách hàng có thể thực hiện mọi công việc từ việc nhắn tin với bạn bè, giao lưu học hỏi để trao đổi kiến thức đến việc thực hiện các giao dịch ngân hàng trực tuyến. Nếu không đảm bảo an ninh thì thiệt hại về kinh tế sẽ vô cùng to lớn, lợi ích của khách hàng không được đảm bảo, uy tín nhà mạng bị giảm sút, chính vì thế đảm bảo mật thông tin trong hệ thống 3G UTMS là một việc làm hết sức quan trọng. Qua đồ án này em đã tìm hiểu được một số vấn đề sau:

Tổng quan về kĩ thuật bảo mật trong thông tin di động với các đe dọa an ninh, tạo lập một môi trường an ninh và các thuật toán bảo mật

Mô hình kiến trúc mạng UTMS và kĩ thuật bảo mật trong mạng UTMS, các hàm mật mã các thông số nhận thự, thủ tục AKA...và cuối cùng là chương trình mô phỏng thuật tóan mã hóa bảo mật.

Tuy đây là một đề tài không phải là mới nhưng khả năng, kiến thức của bản thân em còn hạn chế nên đề tài của em không tránh khỏi những sai sót. Em mong nhận được sự góp ý của các thầy cô trong bộ môn để đồ án của em được hoàn

Một phần của tài liệu Các giải pháp bảo mật trong mạng UMTS (Trang 53)

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

(76 trang)
w