Phương pháp mã hoá DES

Một phần của tài liệu Xây dựng mô hình nâng cao an toàn cho giao dịch trong TMĐT ứng dụng mã hoá, chữ ký số và chứng chỉ số (Trang 31)

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ã 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 này đã gây ra rất nhiều tranh cãi, do bao gồm các thành phần thiết kế mật, độ dài khóa tương đối ngắn.

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ó thể tham khảo hình 2.2 để thấy thời gian tìm khoá trong phương pháp vét cạn đối với độ dài khoá. Đã 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).

Hình 2.2 Độ dài khoá tương ứng với thời gian vét cạn

Thuật toán DES dựa trên feistel được mô tả trong hình 2.3. Có thể tóm tắt quá trình này như sau:

• Bản tin gốc là khối bit có kích thước 2W (thường là 64 bits) và khóa K • Chia khối thành hai phần Lo, Ro tại mỗi bước

• Tại mỗi vòng: vòng I có input là Li-1, Ri-1 và subkey là Ki

Hình 2.3 Cấu trúc thuật toán Feistel dùng trong DES 2.1.1.2 Phương pháp mã hoá 3DES

Một giải thuật đưa ra thay thế DES là 3DES. Thuật toán này tương tự DES nhưng sử dụng ba khoá, do đó độ dài của khoá là 3*56 = 168. Bộ xử lý thực hiện các bước sau : khóa đầu tiên dùng để mã hóa dữ liệu. Sau đó, khóa thứ hai sẽ dùng để giải mã dữ liệu vừa được mã hóa. Cuối cùng, khóa thứ ba sẽ mã hóa lần thứ hai. Toàn bộ quá trình xử lý của 3DES tạo thành một thuật giải có độ an toàn cao. Nhưng bởi vì đây là một thuật giải phức tạp nên thời gian thực hiện sẽ lâu hơn, gấp ba lần so với phương pháp DES. Có thể tham chiếu hình 2.4 để thấy cách xử lý của thụât toán 3DES với ba khoa K1, K2, K3.

Hình 2.4 Thuật toán 3DES

Phương pháp này có thể tổng kết như sau:

2.1.1.3 Phương pháp mã hoá AES

Khác với với DES sử dụng mạng Feistel, AES hay Rijndael sử dụng mạng thay thế-hoán vị. AES có thể dễ dàng thực hiện với tốc độ cao bằng phần mềm hoặc phần cứng và không đòi hỏi nhiều bộ nhớ. Do AES là một tiêu chuẩn mã hóa mới, nó đang được triển khai sử dụng đại trà. Kích thước khóa: 128, 192, 256 bit. Có thể tham khảo hình 2.5 sau để thấy cách mã hoá và giải mã trong AES:

Hình 2.5 Thuật toán AES (mã hoá và giải mã)

Công thức để tạo ra bản mã hoá:

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). Quá trình mã hóa bao gồm bốn bước:

C = EK3 [DK2 [EK1 [P

1. AddRoundKey — mỗi byte của khối được kết hợp với khóa con, các khóa con này được tạo ra từ quá trình tạo khóa con Rijndael.

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

3. ShiftRows — đổi chỗ, các hàng trong khối được dịch vòng.

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

Tại chu trình cuối thì bước MixColumns được thay thế bằng bước AddRoundKey

2.1.2 Mã hoá khoá công khai

Mật mã bất đối xứng hay còn gọi là mã hoá sử dụng public key. Nó sử dụng một cặp key đó là public key và private key thể hiển hình dưới đây (Hình 2.6). Trong mỗi quá trình truyền thông tin sử dụng mật mã bất đối xứng chúng cần một cặp key duy nhất. Nó tạo ra khả năng có thể sử dụng linh hoạt và phát triển trong tương lai hơn là giải pháp mật mã đối xứng. Private key cần phải lưu giữ riêng và đảm bảo tính bảo mật và nó không truyền trên mạng. Public key được cung cấp miễn phí và được công bố cho mọi người.

Hình 2.6 Hệ thông sử dụng mật mã bất đối xứng

Thuật toán mã hoá khoá công khai bắt đầu xuất hiện này năm 1976, do Diffie and Hellman phát minh. Việc tính toán khóa bí mật từ khóa công khai là rất phức tạp. Việc trao đổi khóa công khai không đòi hỏi phương pháp bảo mật. Điều đó giúp cho việc quản lý khoá trở nên dễ dàng hơn. Nếu người gửi sử dụng private key để mã hoá thì người nhận sẽ phải sử dụng public key của người gửi để giải mã. Nếu người gửi sử dụng public

key của người nhận để mã hoá thì người nhận sẽ sử dụng private của họ để giải mã thong tin.

Tương tự như mã hoá khoá bí mật, phương pháp này cũng có các thành phần chính như sau:

• Plaintext: bản tin gốc.

• Encryption Algorithm: phép biến đổi xuôi, thực hiện biến đổi bản tin gốc. • Public/Private keys: cặp khóa công khai/bí mật.

• Ciphertext: bản tin đã biến đổi.

• Decryption Algorithm: phép biến đổi ngược, khôi phục bản tin gốc. Quá trình sử dụng Public Key Encryption:

• Bên nhận sinh cặp khóa.

• Khóa công khai được thường được chứng thực bởi một bên thứ ba tin cậy và chuyển cho người gửi theo các phương thức truyển thông thông thường.

• Bên gửi nhận được khóa công khai, kiểm tra các thông tin chứng thực khoá và dùng khóa này để mã hóa thông điệp và gửi cho bên nhận.

• Bên nhận sử dụng khoá bí mật để giải mã thông điệp. D(Kd(E(Ke,M)) = M • Thông điệp có thể bị bên thứ ba lấy trộm, nhưng không thể đọc được nội dung. Từ đó cũng có thể đưa ra các ưu, nhược điểm của phương pháp này như sau:

- Ưu điểm: Rất thuận tiện cho người dùng khi tạo khoá private/public key. Việc gửi dữ liệu thực hiện dễ dàng nhờ sử dụng public key. Bên nhận cũng dễ dàng giải mã với private key. Ngoài ra, không cho phép thực hiện giải mã nếu chỉ có public key hoặc tính toán private key từ public key là điều hoàn toàn không thể. Hai khoá có thể thay đổi cho nhau trong quá trình mã hoá và giải mã.

- Nhược điểm: Phương pháp này chậm hơn mã hoá đối xứng vì đòi hỏi khối lượng tính toán rất lớn do kích thước khoá thường rất lớn.

Có các giải thuật mã hoá khoá công khai phổ biến: RSA, Stream chaining, diffie – Needham hellman, … Sau đây trình bày cụ thể đối với các thuật toán mã hoá phổ biến.

2.1.2.1 Thuật toán mã hoá RSA

Thuật toán RSA được phát minh năm 1978, sử dụng chế độ mã hóa khối. RSA là một thuật toán mật mã hóa khóa 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ã hóa. 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 khóa công cộng. Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.

Với M, C là một số nguyên ∈ (0, n) và là biểu diễn dạng số nguyên của bản rõ và bản mã

tương ứng. Ta có:

C = EPU (M) : mã hóa bản rõ với khóa PU

M = DPR(EPU (M)) : giải mã bản mã với khóa PR (ko cho phép tính được PR từ PU) Dạng mã hóa / giải mã:

C = Me mod n

M = cd mod n = Med mod n PU = {e, u} -> Public PR = {d, n} -> Private

Như vậy người gửi và người nhận biết giá trị của n và e, nhưng chỉ người nhận biết gía trị của d. Quá trình tạo khoá có thể mô tả theo hình 2.7 sau:

Hình 2.7 Quá trình tạo khoá trong thuật toán RSA

Quá trình mã hóa và giải mã có thể tham chiếu hình 2.8 sau:

Hình 2.8 Quá trình mã hoá và giải mã trong RSA Ví dụ:

Chon p, q là các số nguyên tố: p = 7, q = 17 - Tính n = p*q = 119

- Tính ο( )n = (p-1)(q-1) = 6*16 = 96

- Chọn e sao cho ƯSCLN (e, ο( )n ) = 1 (e < ο( )n ).

o Chọn e= 5 vì ƯSCLN (5,96) = 1

- Tính d: Xác định d sao cho de = 1 mod 96d < 96 (d = e-1 mod O(n)). => d = 77, vì 77 x 5 = 385 = 4 x 96 + 1

- Tính M: - Tính C

Từ đó có thể tóm tắt đặc điểm của thuật toán RSA như sau:

- Chuyển đổi văn bản rõ: Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ (chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không an toàn. Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau:

• Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng

• Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị me

cũng nhận giá trị nhỏ (so với n). Như vậy phép môđun không có tác dụng và có thể dễ dàng tìm được m bằng cách khai căn bậc e của c (bỏ qua môđun).

• RSA là phương pháp mã hóa xác định (không có thành phần ngẫu nhiên) nên kẻ tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản rõ và bản mã. Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra để tìm ra bản rõ tương ứng.

Để tránh gặp phải những vấn đề trên, RSA trên thực tế thường bao gồm một hình thức chuyển đổi ngẫu nhiên hóa m trước khi mã hóa. Quá trình chuyển đổi này phải đảm bảo rằng m không rơi vào các giá trị không an toàn. Sau khi chuyển đổi, mỗi bản rõ khi mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã. Điều này làm giảm tính khả thi của phương pháp tấn công lựa chọn bản rõ (một bản rõ sẽ có thể tương ứng với nhiều bản mã tuỳ thuộc vào cách chuyển đổi).

- An ninh: Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA. Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA. Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn.

Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số m sao cho

pháp triển vọng nhất giải bài toán này là phân tích n ra thừa số nguyên tố. Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật toán. Nếu kẻ tấn công tìm được 2 số nguyên tố p

q sao cho: n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1) và qua đó xác định d

từ e. Chưa có một phương pháp nào được tìm ra trên máy tính để giải bài toán này trong thời gian đa thức (polynomial-time). Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại (sự không tồn tại của thuật toán). Có thể tham chiếu bảng sau để thấy số thao tác và thời gian thực hiện phân tích số n thành số nguyên tố theo phương pháp General Number Field Sieve (GNFS):

Số bit của n

Số thao tác Thời gian

100 9,6× 108 16 phút 200 3,3 × 1012 38 ngày 300 1,3 × 1015 41 năm 400 1,7 × 1017 5313 năm 500 1,1 × 1019 3,5 × 105 năm 1024 1,3 × 1026 4,2 × 1012 năm 2048 1,5 × 1035 4,9 × 1021năm

Bảng 2.2 Số thao tác và thời gian thực hiện phân tích số n thành số nguyên tố theo phương pháp General Number Field Sieve

- Tốc độ: RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán mã hóa đối xứng khác. Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để mã hóa văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn hơn nhiều so với văn bản).

1 2

3 3

64

exp ( log ) (log log )

9 n n

  

Ο  ÷÷÷

 

2.1.2.2 Thuật toán trao đổi khóa Diffie-Hellman.

Năm 1976, Whitfield Diffie và Martin Hellman công bố một hệ thống mật mã hóa khóa bất đối xứng trong đó nêu ra phương pháp trao đổi khóa công khai. Trao đổi khóa Diffie-Hellman là phương pháp có thể áp dụng trên thực tế đầu tiên để phân phối khóa bí mật thông qua một kênh thông tin không an toàn. Thuật toán này tạo ra cơ chế giúp cho hai bên có thể thống nhất được khóa bí mật sau một số bước.

Quá trình tạo khoá và trao đổi có thể mô tả như hình sau:

Hình 2.10 Quá trình trao đổi khoá trong Diffie-Hellman

2.1.3 So sánh mã hoá đối xứng và bất đối xứng

Có thể tổng kết so sánh mã hoá đối xứng (bí mật ) và mã hoá công khai (bất đối xứng) theo bảng sau:

So sánh Mã hoá đối xứng Mã hoá công khai Khoá • Mã hoá và giải mã dùng

chung một khoá. • Khóa được giữ bí mật.

• Sử dụng một cặp khóa.

• Khóa công khai được dùng để mã hóa. Khóa này có thể được công bố rộng rãi.

• Khóa bí mật dùng để giải mã. Khóa này được giữ bí mật.

Yêu cầu hoạt động

• Mã hoá và giải mã dùng chung một giải thuật.

• Người gửi và người nhận phải sử dụng cùng giải thuật và cùng một khóa.

• Một giải thuật được dùng cho mã hóa và một giải thuật cho giải mã.

• Người gửi và người nhận sử dụng một cặp khóa để trao đổi thông tin. Người gửi dùng khóa công khai của người nhận để mã hóa thông tin. Còn người nhận dùng khóa bí mật của mình để giải mã thông tin nhận được.

Yêu cầu cho bảo mật

• Khóa phải được giữ bí mật • Không có tính thực tế hay ít

nhất không thể để giải mã đoạn tin nếu các thông tin khác không có sẵn.

• Kiến thức về giải thuật cộng với các mẫu về mã hóa không đủ để xác định khóa.

• Một trong hai khóa phải được giữ bí mật.

• Không thể hay ít nhất không có tính thực tế để giải mã bản tin nếu các thông tin khác không có sẵn.

• Kiến thức về giải thuật, một khóa công khai cộng với các mẫu về mã hóa không đủ để xác định khóa bí mật. Khả năng ứng dụng • Dùng để mã hóa/ giải mã. • Dùng để mã hóa/ giải mã. • Xây dựng chữ ký số (chữ ký điện tử). • Trao đổi khóa bí mật.

Tốc độ xử lý

• Rất nhanh • Chậm hơn rất nhiều lần so với khóa

2.2 Chữ ký số:

2.2.1 Chữ ký số:

Chữ ký số : Là một thể chứng thực được mã hóa bởi khoá bí mật của người gửi. Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video...) nhằm mục đích xác định người chủ của dữ liệu đó.

Chữ ký số dùng cho các văn bản số, cho biết toàn bộ văn bản đã được ký bởi người ký. Và người khác có thể xác minh điều này. Chữ ký số tương tự như chữ ký thông thường, đảm bảo tài liệu nội dung tài liệu là đáng tin cậy, chính xác, không hề thay đổi trên đường truyền và cho biết người tạo ra tài liệu là ai. Tuy nhiên, chữ ký số khác chữ ký thường, vì nó tuỳ thuộc vào văn bản. Chữ ký số sẽ thay đổi theo văn bản còn chữ ký

Một phần của tài liệu Xây dựng mô hình nâng cao an toàn cho giao dịch trong TMĐT ứng dụng mã hoá, chữ ký số và chứng chỉ số (Trang 31)

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

(67 trang)
w