CÁC THUẬT TOÁN MÃ HOÁ

Một phần của tài liệu Nghiên cứu giải pháp và xây dựng chương trình phát hành thẻ thông minh theo chuẩn EMV (Trang 39)

Cú hai lớp thuật toỏn mó hoỏ: thuật toỏn mó hoỏ đối xứng và khụng đối xứng. Thuật toỏn mó hoỏ đối xứng sử dụng cựng một khoỏ cho việc mó hoỏ và giải mó dữ liệu. Nú cũn được gọi là thuật toỏn mó hoỏ khoỏ đối xứng.

Thuật toỏn mó hoỏ bất đối xứng dựng hai khúa - một để mó hoỏ và một để giải mó. Nú cũn được gọi là thuật toỏn mó hoỏ khoỏ cụng khai.

Cỏc thuật toỏn mó hoỏ đối xứng thực hiện nhanh. Nhưng trờn thực tế cựng một khoỏ dựng cho mó hoỏ và giải mó thường gặp khú khăn về giữ bớ mật. Bờn gửi và nhận phải cú cựng khoỏ. Chỉ cú bờn nhận biết khoỏ của bờn gửi để đảm bảo tớnh riờng tư của việc truyền tin. Bờn nhận phải biết khoỏ của tất cả cỏc bờn gửi tiềm năng để cú thể giải mó cỏc thụng điệp đến. Khi số thực thể trong mạng lớn thỡ giải phỏp này là khú khả thi. Giải phỏp cho vấn đề này là kết hợp thuật toỏn đối xứng và khụng đối xứng.

3.1.1 Mó hoỏ khoỏ đối xứng

3.1.1.1 Thuật toỏn mó hoỏ DES

Thuật toỏn chuẩn mó hoỏ dữ liệu (Data Encryption Standard - DES) là thuật toỏn mó hoỏ khối, nú chia dữ liệu được mó hoỏ thành cỏc khối và thao tỏc với một khối ở một thời điểm. DES dựng khối kớch thước 64 bit và khoỏ cú kớch thước 56 bit. Thực tế, khoỏ DES được giới thiệu 64 bit, nhưng bit thấp nhất của mỗi byte được dựng để kiểm tra mó chẵn lẻ và khụng dựng trong thuật toỏn.

Nền tảng xõy dựng khối của DES là sự thay thế kế tiếp của hoỏn vị trong một vũng lặp. DES cú 16 vũng lặp, như vậy cú 16 thay thế và hoỏn vị được ỏp dụng cho khối 64 bit. Bởi vỡ tớnh chất lặp lại của nú, DES cú thể dễ dàng thực hiện bởi phần cứng.

Kớch thước khoỏ 56 bit được dựng trong thuật toỏn DES là khỏ nhỏ. Với cỏc mỏy tớnh hiện đại ngày nay, thuật toỏn DES trở nờn tầm thường về mặt bảo mật. Ở hội nghị RSA năm 1999, DES đối mặt với thụng bỏo rằng khoỏ 56 bit bị phỏ dưới 24 giờ dự rằng hơn 50% khụng gian khoỏ phải dựng đến nhiều mỏy tớnh cựng xử lý để tỡm ra.

a. Thut toỏn triple DES

Triple DES (3DES) dựa trờn DES, nhưng dựng khoỏ 112 bit. Khoỏ được chia làm hai phần: K1 và K2. Dữ liệu đầu tiờn được mó hoỏ bởi K1, rồi giải mó bởi K2 rồi lại

mó hoỏ bởi K1. Đú là chế độ encrypt - decrypt - encrypt (EDE). Để giải mó, bản mó được giải mó bởi K1, mó hoỏ bởi K2 và giải mó lại bởi K1.

Triple DES cú độ bảo mật cao. Tấn cụng vột cạn chống lại là khụng khả thi, bởi vỡ khụng gian khoỏ được tỡm kiếm tăng theo tỷ lệ số mũ với kớch thước của khoỏ. Vớ dụđể tỡm khoỏ 112 bit bằng cỏch vột cạn tốn hơn 2 mũ 56 so với tỡm khoỏ 56 bit.

b. Phương thc mó hoỏ DES-ECB

Cú một số phương thức mó hoỏ DES khỏc nhau, thường được sử dụng với thẻ thụng minh. Phương thức đơn giản nhất là ECB (Electronic Code Book). Thao tỏc mó hoỏ được ỏp dụng cho từng khối bản rừ 64 bit.

Thao tỏc giải mó cho từng khối 64 bit tỏch biệt.

Hỡnh 25: Chếđộ mó húa DES - ECB.

c. Phương thc mó hoỏ DES-CBC

Đ Lập mó:

Với phương thức CBC (Cipher Block Chaining), kết quả của mỗi thao tỏc DES được sử dụng cho thao tỏc tiếp theo.

Thao tỏc đầu tiờn là tạo giỏ trị chuỗi khởi tạo (Initial Chaining Value - ICV ), trong hầu hết cỏc trường hợp là khối 64 bit ngẫu nhiờn hoặc 64 bit 0.

Khối bản rừ đầu tiờn được XOR với ICV và kết quảđược mó hoỏ, nhận được bản mó đầu tiờn.

Mỗi khối dữ liệu tiếp theo được XOR với kết quả của thao tỏc DES ở bước trước, kết quả lại được mó hoỏ để nhận được bản mó tiếp theo.

Hỡnh 26: Chếđộ mó húa DES - CBC.

Đ Giải mó

Đầu tiờn giải mó cho từng khối bản mó, và sau đú ỏp dụng toỏn tử XOR với ICV cho khối đầu tiờn, với kết quả của thao tỏc trước cho tất cả cỏc khối tiếp theo.

Hỡnh 27: Chếđộ giải mó DES - CBC.

d. ng dng DES: To mó xỏc thc thụng đip

DES khụng chỉ dựng để mó hoỏ dữ liệu mà cũn cú thể dựng để tớnh toỏn mó xỏc thực thụng điệp (Message Authentication Codes - MAC). MAC dựng để đảm bảo tớnh toàn vẹn dữ liệu và để xỏc thực. Ta xem xột việc tớnh toỏn MAC theo ANSI X9.9

Hỡnh 28: Sơđồ tớnh MAC trong chếđộ mó húa DES - CBC.

Chỳng ta cú thế nhận thấy kết quả bằng với khối bản mó cuối cựng nhận được từ mó hoỏ CBC. Điều đú cú nghĩa là khi thực hiện mó hoỏ DES dạng CBC, MAC cú thể nhận được bằng cỏch mó hoỏ cỏc dữ liệu liờn quan và ta lấy kết quả là khối 64 bit cuối cựng của bản mó.

3.1.1.2 Thuật toỏn mó húa AES (adsbygoogle = window.adsbygoogle || []).push({});

Tiờu chuẩn mó hoỏ tiờn tiến ( Advanced Encryption Standard - AES ) là sự kế thừa của hệ mó hoỏ DES. Rất nhiều thuật toỏn đó được đưa ra như là chuẩn mới và qua quỏ trỡnh lựa chọn rộng rói. Trong năm thuật toỏn lọt vào vũng cuối cựng, NIST chọn thuật toỏn Rijndael được thiết kế bởi Joan Daemen và Vincent Rijmen.

Rijndael là thuật toỏn mó hoỏ khối với độ dài khối thay đổi và khoỏ cú độ dài 128, 192 hoặc 256 bit để mó hoỏ khối với độ dài 128, 192 hoặc 256 bit. Tất cả chớn sự kết hợp độ dài khoỏ với độ dài khối cú thểđược thực hiện trong Rijndael và nú cú thể mở rộng cảđộ dài khoỏ và độ dài khối tới bội số của 32 bit.

Lựa chọn những tuỳ chọn trờn, AES cho phộp kớch thước khối 128 bit và độ dài khoỏ 128, 192 hoặc 256 bit, cỏc tuỳ chọn khỏc khụng được chấp nhận trong chuẩn. Thuật toỏn AES cú thể thực hiện một cỏch hiệu quả bởi phần mềm cũng như phần cứng.

3.1.2 Mó hoỏ khoỏ cụng khai

í tưởng cơ bản dẫn đến mó hoỏ khoỏ cụng khai là cặp khoỏ, một cho mó hoỏ và một cho giải mó, đồng thời khú thể tớnh được một khoỏ nếu biết khoỏ kia. Khỏi niệm

này được phỏt minh đồng thời bởi Whitfield Diffie và Martin Hellman và độc lập bởi Ralph Merkle.

Rất nhiều thuật toỏn đó được đưa ra nhưng hầu hết khụng an toàn hoặc khụng khả thi. Cỏc thuật toỏn mó hoỏ khoỏ cụng khai rất chậm so với thuật toỏn mó hoỏ khoỏ bớ mật. Thuật toỏn RSA chậm hơn 1000 lần so với DES khi thực hiện bởi phần cứng và 100 lần khi thực hiện bằng phần mềm.

Tuy vậy thuật toỏn mó hoỏ khoỏ cụng khai cú ưu điểm rất lớn khi được dựng để đảm bảo tớnh riờng tư của kết nối. Thuật toỏn khoỏ cụng khai dựng cỏc khoỏ khỏc nhau cho việc mó hoỏ và giải mó. Khoỏ bớ mật chỉđược người sở hữu biết và giữ bớ mật. Nú cú thể dựng để tạo chữ ký điện tử và giải mó thụng tin đó được mó hoỏ bởi khoỏ cụng khai. Khoỏ cụng khai dựng để kiểm tra chữ ký điện tử hoặc để mó hoỏ thụng tin. Khụng cần phải giữ bớ mật khoỏ cụng khai, vỡ khú cú thể tớnh được khoỏ bớ mật nếu biết khoỏ cụng khai.

3.1.2.1 Hệ mó hoỏ RSA

Sơ đồ

Cho n = p*q, trong đú p, q là hai số nguyờn tố lớn và F(n) = (p-1)(q-1). Đặt P = C = Zn . Chọn b nguyờn tố với F(n).

Tập khoỏ: K = {(n, a, b): a*b º1 mod F(n)}.

Với mỗi k = (n , a, b), mỗi x ẻ P, y ẻ C, định nghĩa: Hàm mó hoỏ : ek (x) = xb mod n Hàm giải mó : dk(y) = ya mod n Cỏc giỏ trị n, b là cụng khai. Cũn p, q, a là bớ mật. Kiểm tra quy tắc giải mó Do ab º1mod F(n), F(n) = (p -1)(q - 1) = F(p) F(q) nờn ab = 1 + tF(n), với t là số nguyờn khỏc 0. Chỳ ý rằng 0 Êx < n. Giả sử (n, x) = 1 ta cú.

yamod n º (xb)a mod nºx 1 + tF(n) mod n ºx {xF(n) mod n} mod n. º x .1 mod n (vỡ (x, n) = 1, nờn xF(n) mod n =1) = x (d x < n). Nếu (x, n) = d > 1 thỡ d = p hoặc d =q hoặc d = n.

Nếu d = n thỡ x = 0 và đương nhiờn y = 0. Do đú ya mod n = 0 = x. Giả sử d = p khi đú do 0 Êx < n nờn x = p.

Ta cú: ya mod n º xab mod n º pab mod n. Ký hiệu: u = pab mod n.

Thế thỡ: u + kn = pa, 0 Ê u < n, hay u + kpq = pab. Do đú: u = p (pab – 1 - kp) = p (ptF(n) - kp).

Vế phải chia hết cho p nờn vế trỏi phải chia hết cho p, nghĩa là u phải chia hết cho p. Nhưng 0 Êu <n nờn hoặc u = 0 hoặc u = p.

Nếu u = 0 thỡ pab – 1 chia hết cho p. Suy ra p chia hết cho q. Vụ lý vỡ p, q là hai số nguyờn tố khỏc nhau.

Thế thỡ u = p = x tức là ya mod n = x. Vậy (xb)a mod n = x, "x ẻ {1, n - 1}.

3.1.2.2 Mó hoỏ đường cong Elliptic

Đường cong Elliptic được đề nghị lần đầu tiờn cho cỏc hệ mó húa khoỏ cụng khai vào năm 1985. Cỏc thuật toỏn dựng đường cong Elliptic nhanh hơn RSA hoặc DSA và yờu cầu kớch thước khoỏ nhỏ hơn với cựng mức độ yờu cầu bảo mật. Đường cong Elliptic trờn trường xỏc định GF (2n) đặc biệt thỳ vị bởi vỡ chỳng cho phộp thực hiện hiệu quả.

Ưu điểm của đường cong Elliptic làm cho chỳng là ứng cử viờn tiềm năng để ỏp dụng cho thẻ thụng minh. Bởi vỡ việc tớnh toỏn cú thể được thực hiện trờn thẻ mà khụng cần bộđồng xử lý mó hoỏ, kớch thước khoỏ nhỏ, tiết kiệm khụng gian lưu trữ.

Tuy nhiờn hệ mó hoỏ này chỉ được một số ớt thẻ thụng minh hỗ trợ. Hầu hết cỏc sản phẩm thương mại điện tử trờn thị trường như Web Server, Certificate Authorities, middle – ware, cỏc thư viện mó hoỏ , SSL… đó hỗ trợ RSA và DSA, nờn thẻ thụng minh phải hỗ trợ cỏc thuật toỏn này để cú thể sử dụng trờn cơ sở hạ tầng khoỏ cụng khai đang tồn tại.

Để hỗ trợ RSA và DSA trong thẻ thụng minh yờu cầu bộ đồng xử lý mó hoỏ và bộ nhớ cốđịnh ớt nhất là 8 Kbytes.

Thuật toỏn mó húa và giải mó như sau:

Đ Mó húa bất kỳ thụng tin M nào dựa trờn một điểm của đường cong elliptic Pm. Đ Chọn đường cong phự hợp và điểm G trờn đường E(Fp) .

Đ Mỗi người chọn một khúa riờng Private Key nA <n. Đ Sinh ra khúa cụng khai Public Key PA = nA x G. Đ Mó húa Pm: Cm = {kG, Pm+kPB}, với k là ngẫu nhiờn.

Đ Giải mó Cm: Pm + kPB – nB(kG) = Pm + k(nBG) – nB(kG) = Pm.

3.2 GIAO THỨC XÁC THỰC VÀ BẢO MẬT VỚI THẺ THễNG MINH 3.2.1 Giao thức xỏc thực với thẻ thụng minh 3.2.1 Giao thức xỏc thực với thẻ thụng minh (adsbygoogle = window.adsbygoogle || []).push({});

Trong phần này ta xem xột cỏc giao thức để thiết lập sự tin tưởng giữa cỏc thực thể tham gia - sử dụng thẻ thụng minh. Đú là cỏc giao thức xỏc thực, trong đú thực thể ngoài luụn là ”chủ”, thẻ thụng minh luụn là ”tớ”.

a. Th thụng minh xỏc thc thc th ngoài

Thẻ thụng minh (thẻ TM) đi kiểm tra thực thể ngoài (TTN). Thẻ thụng minh và TTN xõy dựng giao thức yờu cầu - đỏp ứng (challenge - response) như sau:

TTN Thẻ TM

Yêu cầu thẻ TM gửi số ngẫu nhiên r

Thông báo kết quả kiểm tra

Tạo và ghi lại số ngẫu nhiên r

Mã hoá r thành bản mã

e (r)

Gửi bản mã (e (r))

Giải mã và kiểm tra d (e (r)) = r ? ext k_ ext k_ ext k_ card k_

Gửi số ngẫu nhiên r

Hỡnh 29: Sơđồ xỏc thực giữa thẻ thụng minh với thực thể ngoài.

1. TTN yờu cầu số ngẫu nhiờn r từ thẻ TM.

2. Thẻ TM tạo ra số ngẫu nhiờn r, ghi lại và gửi nú tới TTN.

3. TTN dựng khoỏ mó hoỏ (đó thoả thuận với thẻ TM) để mó hoỏ r. Nú gửi lệnh xỏc thực gồm số ngẫu nhiờn đó được mó húa tới thẻ TM.

4. Thẻ TM nhận lệnh xỏc thực, giải mó số ngẫu nhiờn đó được mó hoỏ trong lệnh đú. Nếu kết quả bằng số r, xem như thẻ TM đó xỏc thực được TTN.

Giải thuật mó hoỏ cú thể là mó hoỏ khoỏ đối xứng như DES hoặc mó hoỏ khúa cụng khai như RSA. Trong trường hợp mó hoỏ khúa đối xứng, TTN và thẻ TM phải chia sẻ cựng khoỏ bớ mật.

Nếu mó hoỏ khoỏ cụng khai được sử dụng, TTN dựng khoỏ cụng khai để mó hoỏ, thẻ TM dựng khoỏ bớ mật để giải mó[7].

b. Thc th ngoài xỏc thc th thụng minh

TTN Thẻ TM Gửi (r, n) tới thẻ TM Tính e (r) e (r) ] [ _cardn k ] [ _card n k

Tạo và ghi lại số ngẫu nhiên r. Tính khoá n chung với thẻ TM d (e (r)) = r ? ] [ _ext n k ] [ _ext n k

Thông báo kết quả kiểm tra

Hỡnh 30: Sơđồ thực thể ngoài xỏc thực với thẻ thụng minh.

1. TTN gửi yờu cầu xỏc thực chứa số ngẫu nhiờn r và khoỏ chung với thẻ TM. 2. Thẻ TM dựng khoỏ n mó hoỏ số ngẫu nhiờn r nhận được từ TTN và gửi trở lại

TTN.

3. TTN dựng khoỏ n giải mó số r đó được mó hoỏ. Nếu kết quả bằng r, TTN xem nhưđó xỏc thực được thẻ TM.

Nếu thuật toỏn khoỏ đối xứng được dựng, TTN và thẻ TM phải sử dụng chung khoỏ bớ mật. Nếu thuật toỏn khoỏ cụng khai được dựng, TTN dựng khoỏ bớ mật tương ứng với khoỏ cụng khai được dựng trong thẻ thụng minh[7].

3.2.2 Bảo toàn dữ liệu với thẻ thụng minh

Thụng điệp trờn đường truyền cú thể được bảo vệ bởi mó xỏc thực thụng điệp (Message Authentication Code - MAC) hoặc được bảo vệ bởi MAC và mó hoỏ. (adsbygoogle = window.adsbygoogle || []).push({});

Để tớnh toỏn MAC hoặc mó hoỏ dữ liệu, khoỏ bớ mật được chia sẻ bởi TTN và thẻ thụng minh.

a. Bo toàn d liu ghi vào th thụng minh

TTN Thẻ TM

Gửi số ngẫu nhiên r

Ghi có bảo vệ (file, offset, len, MAC)

ext file

Tạo và ghi lại số ngẫu nhiên r

Tính MAC cho

dữ liệu, dùng r và k dữ liệu, dùng r và kTính MAC’ cho

Ghi dữ liệu vào thẻ nếu MAC = MAC’ Yêu cầu gửi số ngẫu nhiên r

1. TTN yờu cầu thẻ TM gửi số ngẫu nhiờn r.

2. Thẻ TM tạo và ghi lại số ngẫu nhiờn r, gửi nú tới TTN.

3. TTN tớnh MAC cho phần đầu (header) của lệnh APDU ghi và dữ liệu sẽ ghi vào thẻ. Để tớnh MAC, nú dựng số ngẫu nhiờn r làm vector khởi tạo ICV và khoỏ kext, phự hợp với khoỏ kfile bảo vệ file trong thẻ. Nú xõy dựng cõu lệnh gồm phần đầu APDU, dữ liệu, MAC, và gửi lại cho thẻ.

4. Thẻ TM nhận lệnh ghi. Nú tớnh MAC’ cho phần đầu của lệnh APDU và dữ liệu vừa nhận được (sử dụng số ngẫu nhiờn r làm vector khởi tạo ICV và khoỏ kfile). Nếu MAC = MAC’, dữ liệu chứa trong lệnh sẽ được ghi vào bộ nhớ thường trỳ của thẻ TM[7].

b. Bo toàn d liu đọc t th thụng minh

TTN Thẻ TM

Gửi số ngẫu nhiên r

Dữ liệu + MAC

Ghi lại số r

Đọc có bảo vệ (file, offset, len)

ext file

Tạo và ghi lại số ngẫu nhiên r

Tính MAC’ cho dữ liệu, dùng r và k

MAC = MAC’ ?

Đọc dữ liệu, tính MAC cho dữ liệu,

dùng r và k Gửi lại dữ liệu

và MAC Gửi đáp ứng đã có r

Hỡnh 32: Sơđồ thực hiện quỏ trỡnh mó húa bản tin đọc từ thẻ thụng minh ra.

1. TTN tạo số ngẫu nhiờn r và gửi tới thẻ TM như một yờu cầu. 2. Thẻ TM ghi lại số ngẫu nhiờn r, gửi lại đỏp ứng rằng đó cú số r.

3. TTN gửi lệnh đọc dữ liệu từ thẻ TM. Dữ liệu cú độ dài xỏc định, từ một file bắt đầu ở chỉ mục cho trước, trong chếđộđược bảo vệ. (adsbygoogle = window.adsbygoogle || []).push({});

4. Thẻ TM nhận lệnh đọc dữ liệu từ file thuộc vựng lưu trữ cốđịnh trong thẻ. Thẻ TM dựng khoỏ kfilevà số r (như là vector khởi tạo ICV), để tớnh MAC cho dữ liệu. Thẻ gửi dữ liệu và MAC cho TTN.

5. TTN nhận dữ liệu từ thẻ cựng với MAC. Nú tớnh MAC’ cho dữ liệu vừa nhận được với khoỏ kext phự hợp với kfile và số r (như là vector khởi tạo ICV). Nếu

Một phần của tài liệu Nghiên cứu giải pháp và xây dựng chương trình phát hành thẻ thông minh theo chuẩn EMV (Trang 39)