Hàm băm (hàm Hash) 6 6-

Một phần của tài liệu Nghiên cứu và đề xuất giải pháp an toàn thông tin cho hệ thống rút tiền tự động ATM (Trang 68)

2.3.4.1. Định nghĩa

Hàm băm (hash) là một ánh xạ từ không gian các bản rõ (đã số hóa) có độ dài tùy ý vào không gian {0, 1}k với k là một số cố định. Nếu độ dài bản rõ mà nhỏ hơn k thì ta thêm vào các bít để cho độ dài ≥ k.

Hàm băm là thuật toán không sử dụng khóa để mã hóa, nó “lọc” (băm) thông điệp đƣợc đƣa vào rồi đƣa ra một bản băm (văn bản đại diện) có kích thƣớc cố định.

2.3.4.2. Tính chất

Để sử dụng đƣợc trong thực tế, hàm băm phải có các tính chất sau :

1) Hàm băm h là hàm một chiều, nghĩa là một hàm mà biết giá trị đầu vào việc xác định giá trị đầu ra là dễ thực hiện, còn nếu biết giá trị đầu ra thì việc xác định giá trị đầu vào là bài toán „khó‟.

2) Hàm băm „không‟ có va chạm tức là „khó‟ tìm đƣợc hai giá trị đầu vào khác nhau x1 ≠ x2 mà h(x1) = h(x2).

Ý nghĩa:

- Giá trị băm tƣơng ứng– duy nhất có kích thƣớc cố định nào đó cho trƣớc.

- Hàm băm đã trợ giúp cho chữ ký số, nhằm giảm dung lƣợng của chữ ký để truyền qua mạng, tƣơng đƣơng với việc giảm thời gian truyền tin qua mạng.

- Hàm băm đƣợc ứng dụng rất mạnh trong bảo đảm an toàn thông tin trên đƣờng truyền. Các ứng dụng có sử dụng hàm băm tạo đƣợc lòng tin của ngƣời dùng, vì họ có thể phát hiện đƣợc thông tin của mình có còn toàn vẹn hay không.

2.3.4.3. Ví dụ đơn giản về hàm băm

Một ví dụ đơn giản về hàm băm. Giả sử m là một thông điệp nào đó có độ dài tùy ý. Trƣớc hết ta chuyển m thành dãy nhị phân (theo bộ mã nào đó, chẳng hạn sang cơ số 16), ký hiệu là x = x1, x2,…, xn, trong đó xi {0,1}, i = 1, 2, 3, … n.

Ta “băm” (hash) x có độ dài n bit thành dãy y = y1, y2,…, yk nhƣ sau: Ta viết dãy x1, x2,…, xn thành m dòng k cột, trong đó n = m*k.

                  mk k m k m k k k k x x x x x x x x x . . . . . . . ) 2 ( ) 1 ( 2 2 1 2 1 =             mk m m k k a a a a a a a a a . . . . . . . 2 1 2 22 21 1 12 11

Ta thực hiện XOR theo từng cột, sẽ có kết quả nhƣ sau y1, y2,…, yk. Trong đó: y1 = x1  xk+1…  xm(k-1) =   m i i a 1 1 y2 = x2  xk+2…  xm(k-2) =   m i i a 1 2 ……… yk = xk  x2k…  xmk =   m i ik a 1 Đó là một hàm hash đơn giản.

Một cách tổng quát yj =   m i ij a 1 , j = 1, 2, .., k, trong đó phép cộng là phép XOR (phép cộng không nhớ)

2.3.4.4. Hàm băm MD4

INPUT : Thông điệp có độ dài tùy ý.

OUTPUT : Bản băm, đại diện cho thông điệp gốc, độ dài cố định 128bit.

Mô tả thuật toán:

Giả sử đầu vào là một xâu a có độ dài b bit (b có thể bằng 0)

Bước 1: Khởi tạo các thanh ghi

Có 4 thanh ghi đƣợc sử dụng để tính toán nhằm đƣa ra các đoạn mã: A, B, C, D. Bản tóm lƣợc của thông điệp đƣợc xây dựng nhƣ sự kết nối của các thanh ghi. Mỗi thanh ghi có độ dài 32 bit. Các thanh ghi này đƣợc khởi tạo giá trị hecxa.

word A := 67 45 23 01

word B := EF CD AB 89

word C := 98 BA DC FE

word D := 10 32 54 76

Bước 2: Xử lý thông điệp a trong 16 khối word

Xử lý thông điệp a trong 16 khối word, có nghĩa là xử lý cùng một lúc 16 word = 512 bit (chia mảng M thành các khối 512 bit, đƣa từng khối 512 bit đó vào mảng T[j]). Mỗi lần xử lý một khối 512 bit. Lặp lại [N/16] lần.

Ba vòng trong MD4 là hoàn toàn khác nhau. Mỗi vòng gồm một trong 16 word

trong T đƣợc xử lý. Các phép toán đƣợc thực hiện trong ba vòng tạo ra các giá trị mới trong bốn thanh ghi. Cuối cùng, bốn thanh ghi đƣợc cập nhật ở 3.4 bằng cách cộng ngƣợc các giá trị lƣu trƣớc đó ở 2.3. Phép cộng này đƣợc xác định là cộng các số nguyên dƣơng, đƣợc rút gọn theo modulo 232.

Kết quả ra là đoạn mã có độ dài 128 bit, đƣợc thu gọn từ thông điệp a có độ dài b bit. Đoạn mã này thu đƣợc từ 4 thanh ghi A, B, C, D: bắt đầu từ byte thấp của thanh ghi A cho đến byte cao của thanh ghi D.

2.3.4.5. Hàm băm MD5

Hiê ̣n nay, phiên bản MD 4 bị phát hiện đã vi phạm tính chất 2 ở mục 2.3.4.2 là „không‟ có va chạm. Phiên bản mạnh hơn của dòng MD là MD5 đƣợc công bố năm 1991. MD5 dùng bốn vòng thay cho ba và chậm hơn 30% so với MD4.

INPUT : Thông điệp (văn bản) có độ dài tùy ý.

OUTPUT : Bản băm, đại diện cho thông điệp gốc, đồ dài cố định 128bit.

Mô tả thuật toán:

Bước 1, 2 của MD5 tƣơng tự nhƣ của MD4.

Bước 3: Thực hiện bốn vòng băm

Các vòng 1, 2, 3 và 4 dùng tƣơng ứng ba hàm F, G, H và I. Mỗi hàm này là một hàm boolean tính theo bit. Chúng đƣợc xác định nhƣ sau:

F(X, Y, Z) = (XY)((X) Z) G(X, Y, Z) = (XZ) (Y(Z)) H(X, Y, Z) = XYZ

I(X, Y, Z) = Y(X(Z))

lần lƣợt chỉ phép XOR, AND, OR và NOT.

Hình 2.2 Quá trình tạo bản băm của MD5.

Bước 4: Output

Kết quả ra là đoạn mã có độ dài 128 bit, đƣợc thu gọn từ thông điệp a có độ dài b

bit. Đoạn mã này thu đƣợc từ 4 thanh ghi A, B, C, D: bắt đầu từ byte thấp của thanh ghi A cho đến byte cao của thanh ghi D.

Chương 3. CƠ CHẾ AN TOÀN THÔNG TIN TRONG HỆ THỐNG ATM 3.1. MÃ HÓA TRONG HỆ THỐNG ATM

ATM là một phần trong hệ thống mạng không tập trung, nằm phân bố ở các địa điểm khác nhau, do đó việc bảo đảm an toàn thông tin đƣợc đặt lên rất cao. Không những bảo đảm an toàn trên từng máy ATM mà còn bảo đảm an toàn trong toàn bộ hệ thống mạng.

Hình 3.1 Sơ đồ tổng thể mạng lƣới ATM của một Ngân hàng.

ATM đƣợc coi nhƣ là một máy PC trong hệ thống mạng. Do đó, cần có những giải pháp nhằm đảm bảo an toàn khi các giao dịch đƣợc thực hiện.

Để đảm bảo an toàn thông tin giao dịch trong quá trình truyền thông giữa ATM và Switch, hệ thống sử dụng thiết bị mã hóa cứng để mã hóa và giải mã thông tin. Máy ATM có thiết bị EPP (Encrypting PIN Pad), hệ thống Switch có thiết bị HSM (Hardware Security Module).

Network Core Bank Validate, Authorize& Process Data Message EPP EPP SWITCH ATM Monitoring ATM ATM

0123456789ABCDEF|FEDCBA9876543210|89ABCDEF01234567 |<---K1--->|<---K2--->|<---K3--->| 3.1.1. Thuật toán mã hóa

Trong hệ thống ATM hiện nay thƣờng dùng thuật toán DES và 3DES để mã hóa và giải mã dữ liệu.

Khóa đƣợc sử dụng trong thuật toán có độ dài 64bit, 128bit hoặc 192bit tùy theo cách sử dụng khóa hoặc chọn mã hóa DES hay 3DES.

3.1.1.1 Thuật toán mã hoá 3DES - Triple DES

Thuật toán 3DES chính là DES, gọi là 3DES bởi vì ngƣời ta dùng liên tiếp ba lần DES với ba khóa K1, K2, K3. Khóa K đƣợc xây dựng từ bộ ba khóa 64bit (K1, K2, K3) có độ dài 3*64 = 192 bit.

1) Khi mã hóa sử dụng K1 mã hóa, K2 giải mã, K3 mã hóa. 2) Khi giải mã sử dụng K3 giải mã, K2 mã hóa, K3 giải mã.

3.1.1.2 Xây dựng khóa K1, K2, K3

1) Key single length (Bộ một khóa 64bit) K1 = K2 = K3, độ dài khóa 64bit 2) Key double length (Bộ hai khóa 64bit)

K1 # K2 và K3=K1, độ dài khóa 128bit 3) Key triple length (Bộ ba khóa 64bit)

K1 # K2 # K3 # K1, độ dài khóa 192bit

Trƣờng hợp này không gian khóa 3*56=168bit

3.1.1.3 Ví dụ

Xây dựng khóa Key triple length

K = 0123456789ABCDEFFEDCBA987654321089ABCDEF01234567 Khi đó các khóa con K1, K2, K3 đƣợc tách nhƣ sau :

3.1.1.4 Quá trình mã hóa và giải mã

Quá trình mã hóa và giải mã của 3DES đƣợc thực hiện nhƣ hình vẽ.

Hình 3.2 Các bƣớc thực hiện trong quá trình mã hóa và giải mã theo 3DES.

1/. Mô tả quá trình mã hóa theo 3DES

Bản rõ 64bit đƣợc mã hóa theo DES với khóa K1 ta đƣợc bản mã 64bit. Bản mã 64bit đƣợc giải mã theo DES với khóa K2 ta đƣợc bản “rõ” 64bit. Bản “rõ” 64bit đƣợc mã hóa theo DES với khóa K3 ta đƣợc bản mã 64bit. Kết quả là bản rõ đƣợc mã hóa theo 3DES.

2/. Quá trình giải mã theo 3DES

Bản mã 64bit đƣợc giải mã theo DES với khóa K3 ta đƣợc bản “rõ”. Bản “rõ” đƣợc mã hóa theo DES với khóa K2 ta đƣợc bản mã. Bản mã đƣợc giải mã theo DES với khóa K3 ta đƣợc bản rõ. Kết quả là bản mã đã đƣợc giải mã theo 3DES.

Mã hóa DES Bản rõ 64bit Giải mã DES Mã hóa DES Bản mã 64bit K1 K2 K3 Mô tả quá trình mã hóa 3DES Mã hóa DES Bản mã 64bit Giải mã DES Bản rõ 64bit K3 K2 K1

Mô tả quá trình giải mã 3DES Giải mã DES

3.1.2. Khóa bí mật trong hệ thống ATM

Khóa đƣợc sử dụng trong hệ thống ATM gồm có CVK, PVK, WK, LMK, TMK và đƣợc đảm bảo một số tính chất sau:

- Với các khóa đƣợc lƣu trong EPP và HSM, khi bị xâm nhập một cách bất hợp pháp, khóa bí mật sẽ tự bị hủy.

- Khóa có độ dài 64bit, 128bit hoặc 192bit tùy theo cách sử dụng khóa hoặc chọn mã hóa DES hay 3DES.

Tất cả các khóa trên đều đƣợc tạo ra trong thiết bị HSM và khóa LMK phải đƣợc tạo trƣớc tiên còn các khóa CVK, PVK, WK, TMK tạo ra sau.

Khóa chia làm hai loại khi lƣu: Lƣu dƣới dạng bản rõ, lƣu dƣới dạng bản mã : - Khóa LMK và TMK đƣợc lƣu dƣới dạng bản rõ trong HSM và EPP.

- Khóa CVK, PVK, WK, TMK đƣợc lƣu dƣới dạng bản mã trong CSDL của Switch và của ATM.

3.1.2.1. Định nghĩa các khóa trong hệ thống ATM 1/. Khóa LMK- Local Master Keys

LMK đƣợc tạo trƣớc tiên trong HSM sau đó đƣợc lƣu trong HSM và một bản sao đƣợc lƣu trong smartcard. Nếu HSM bị mở ra vì bất cứ lý do gì hay xâm nhập trái phép, thì LMK sẽ bị xóa và phải đƣợc nhập lại vào HSM.

Để sinh khóa LMK và tải vào HSM thì phải có ít nhất 3 thành phần khác nhau dƣới dạng bản rõ (3 clear LMK component khác nhau, trong HSM ta có thể cấu hình khóa LMK đƣợc sinh ra từ 3 đến 9 thành phần clear LMK component). Để đảm bảo an toàn thì mỗi thành phần khóa bản rõ sẽ do mỗi ngƣời giữ.

Để tạo ra LMK thì ngƣời ta sử dụng phép XOR từ các clear LMK component. Khóa LMK có các thông tin sau:

- Khóa đƣợc lƣu trong HSM dƣới dạng bản “rõ” (từ các clear LMK component). - Khóa đƣợc dùng để mã hóa và giải mã các khóa CVK, PVK, WK và TMK. - Khóa này chỉ đƣợc thay đổi khi có yêu cầu.

2/. Khóa CVK-Card Verification Keys

Khóa CVK đƣợc sinh ngẫu nhiên trong HSM và đƣợc mã hóa bởi khóa LMK. Khóa dùng để sinh số CVV/CVC, để đảm bảo thẻ không bị làm giả, khi phát hành ngƣời ta dựa trên thông tin về thẻ để sinh số CVV/CVC, đƣợc lƣu trên thẻ.

Bản mã của khóa CVK sẽ đƣợc lƣu vào hệ thống Switch. Không lƣu bản rõ Khóa có độ dài 64bit, 128bit hoặc 192bit.

3/. Khóa PVK- PIN Verification Keys

Khóa PVK đƣợc sinh ngẫu nhiên trong HSM và đƣợc mã hóa bởi khóa LMK. Khóa đƣợc dùng để mã hóa và giải mã số PIN của chủ thẻ, số PIN này đƣợc mã hóa và lƣu trong CSDL của CoreBank.

Bản mã của khóa PVK sẽ đƣợc lƣu vào hệ thống Switch. Không lƣu bản rõ Nếu thay đổi khóa này, thì phải thay đổi toàn bộ số PIN mới cho chủ thẻ. Khóa có độ dài 64bit, 128bit hoặc 192bit.

4/. Khóa WK- Working Keys (hay PIN Encryption Key)

Khóa WK đƣợc sinh ngẫu nhiên trong HSM và đƣợc lƣu dƣới hai bản mã tại Switch và ATM.

- Bản mã thứ nhất đƣợc mã bởi khóa LMK và lƣu trong CSDL của Switch. - Bản mã thứ hai đƣợc mã bởi khóa TMK và lƣu trong CSDL của ATM.

Sự đồng bộ khóa giữa ATM và Switch thông qua quá trình trao đổi khóa.

Khóa đƣợc dùng để mã hóa và giải mã số PIN trong quá trình trao đổi thông điệp giữa ATM và Switch.

Khóa đƣợc thay đổi thƣờng xuyên tùy theo yêu cầu của NH, để đảm bảo an toàn thông tin giao dịch, sau mỗi lần giao dịch, khóa này sẽ đƣợc thay đổi.

Khóa có độ dài 64bit, 128bit hoặc 192bit.

5/. Khóa TMK- Terminal Master Keys

Khóa TMK đƣợc sinh ngẫu nhiên trong HSM và đƣợc mã hóa bởi khóa LMK. Khóa đƣợc sử dụng để giải mã khóa WK.

Khóa đƣợc lƣu tại hai nơi là tại EPP và Switch: - Tại EPP khóa đƣợc lƣu dƣới dạng bản rõ.

- Tại Switch khóa đƣợc lƣu trong CSDL dƣới dạng bản mã, mã hóa bởi LMK.

Khóa chỉ thay đổi khi có yêu cầu, khi thay đổi thì nhân viên kỹ thuật sẽ thực hiện. Khóa có độ dài 64bit, 128bit hoặc 192bit.

3.1.2.2. Sơ đồ phân cấp khóa trong hệ thống ATM

Các khóa trên đƣợc phân cấp nhƣ sau:

Hình 3.3 Phân lớp các khóa sử dụng trong hệ thống ATM. Mô tả vị trí các khóa trong hệ thống ATM:

Hình 3.4 Mô tả các vị trí khóa trong hệ thống ATM.

 Tại ATM

+ TMK đƣợc lƣu dƣới dạng bản rõ trong thiết bị EPP.

+ WK đƣợc mã hóa bởi TMK và lƣu trong CSDL của máy ATM.

 Tại SWITCH

+ LMK đƣợc lƣu dƣới dạng bản rõ trong thiết bị HSM.

+ CVK, PVK, WK, TMK đƣợc mã hóa bởi LMK và lƣu trong CSDL của Switch.

LMK

CVK PVK WK TMK WK

TMK

Khóa LMK dùng để mã hóa và giải mã các khóa CVK,PVK, WK, TMK Khóa TMK dùng để mã hóa và giải mã khóa WK ATM EPP TMK clear ETMK(WK): WK Encrypted SWITCH ELMK(PVK): PVK Encrypted HSM LMK clear ELMK(WK): WK Encrypted ELMK(TMK): TMK Encrypted ELMK(CVK): CVK Encrypted

3.1.2.3. Trao đổi khóa giữa ATM và Switch 1/. Thiết lập khóa LMK cho HSM

Hình 3.5 Thiết lập khóa LMK cho HSM (a) Tạo khóa LMK ngay trong HSM.

(b) Lƣu LMK dƣới dạng bản ”rõ” trong HSM và một bản dự phòng đƣợc lƣu trong một Smartcard (Smrtcard cũng đƣợc bảo mật).

2/. Thiết lập khóa TMK cho EPP

Hình 3.6 Thiết lập khóa TMK cho EPP. (a) Khóa TMK đƣợc tạo trong HSM.

(b) Một bản rõ lƣu tại EPP.

(c) Một bản mã lƣu tại Switch (đƣợc mã hóa bởi khóa LMK).

3/. Thiết lập các khóa khác tại Switch

Hình 3.7 Thiết lập khóa khác tại Switch.

(a) Các khóa trên đều đƣợc sinh trong HSM và đƣợc mã hóa bởi khóa LMK. (b) Bản mã của các khóa trên đƣợc lƣu trong CSDL của Switch, không lƣu bản rõ.

SWITCH ELMK(TMK): TMK Encrypted LMK clear HSM ATM TMK clear EPP SWITCH HSM LMK clear SWITCH HSM LMK clear ELMK(PVK): PVK Encrypted ELMK(WK): WK Encrypted ELMK(CVK): CVK Encrypted ELMK(TMK): TMK Encrypted

4/. Trao đổi khóa WK giữa ATM và Switch

Hình 3.8 Các bƣớc trao đổi khóa WK giữa ATM và Switch.

Khi có yêu cầu trao đổi khóa WK giữa ATM và Swith thì quá trình đƣợc thực hiện nhƣ sau:

- HSM tạo ra bản rõ khóa WK.

- Bản mã TMK đƣợc giải mã bởi khóa LMK trong HSM. - Bản rõ WK sẽ đƣợc mã hóa bởi khóa LMK và TMK.

- Bản mã bởi LMK đƣợc lƣu tại Switch, bản mã bởi TMK sẽ đƣợc gửi cho ATM, bản mã này sẽ đƣợc lƣu tại ATM.

(Tham khảo tài liệu [10])

ELMK(TMK): TMK Encrypted SWITCH D ec ryp t LMK HSM TMK clear ETMK(WK) ELMK(WK) Response Key Exchange

En cr yp

Một phần của tài liệu Nghiên cứu và đề xuất giải pháp an toàn thông tin cho hệ thống rút tiền tự động ATM (Trang 68)