Chương 4 : XỬ LÝ GIAO DỊCH THẺ EMV
4.4 XÁC THỰC DỮ LIỆU NGOẠI TUYẾN
4.4.4 Xác thực dữ liệu động ngoại tuyến – offline DDA
4.4.4.1 Khái niệm xác thực dữ liệu động ngoại tuyến
Xác thực dữ liệu động ngoại tuyến được thiết bị đọc thực hiện sử dụng một sơ đồ chữ ký số dựa trên kỹ thuật khóa công khai để xác thực thẻ và xác nhận tính hợp pháp của dữ liệu trong thẻ và dữ liệu nhận được từ thiết bị đọc
DDA ngoại tuyến đảm bảo sự xác thực dữ liệu đã được NHPH cá thể hóa trong thẻ. Khả năng này là có thể bởi vì thẻ có năng lực xử lý và có thể tính toán tích cực một mã hóa bất đối xứng trên Một số không thể đoán được của thiết bị đọc. Một chiếc thẻ thật có thể đưa ra một mã hóa đúng cho Mỗi số không thể đoán được mới. Khi thiết bị đọc quyết định mã hóa đúng ngoại tuyến, thì nó chấp nhận rằng thẻ là thẻ thật. Điều này là đúng với khả năng có thể vượt trội, trừ khi tội phạm giỏi phá hỏng được yếu tố chống giả mạo của EMV để đọc khóa bí mật của thẻ hoặc giải quyết được vấn toán học ―rất khó‖ bằng việc tính toán mã hóa bất đối xứng. Đây là một bước chuyển lớn khi so sánh với thực hiện trong thẻ từ hoặc thẻ EMV chỉ có SDA. Mã hóa bất đối xứng được thẻ tính toán thẻ bao gồm một chữ ký số được đưa ra trên dữ liệu nhận được từ thiết bị đọc cùng với khóa bí mật của thẻ. Để kiểm tra chữ ký này, thiết bị đọc phải thu được một bản sao xác thực khóa công khai của thẻ tương ứng, khóa công khai tương ứng này được khôi phục lại qua chuỗi chuỗi chững chỉ EMV, khóa công khai của CA, NHPH, thẻ. Quan trọng là thiết bị đọc có những yêu cầu tương tự trong
có khả năng tính toán thuật toán RSA, thuật toán này yêu cầu phải có một bộ vi xử lý mã hóa trong cấu trúc của thẻ.
DDA ngoại tuyến yêu cầu hai giai đoạn riêng biệt sau:
1) Khi cá thể hóa NHPH nạp chứng chỉ khóa công khai của NHPH vào trong thẻ. NHPH cũng tạo cặp khóa bí mật/công khai của thẻ và đưa ra chứng chỉ khóa công khai của thẻ cùng với khóa bí mật của NHPH. Ngân hàng nạp vào trong thẻ cả hai khóa bí mật của thẻ và chứng chỉ khóa công khai của thẻ.
Thẻ có thể tự tạo cặp khóa bí mật/khóa công khai của thẻ và chỉ chuyển khóa công khai của thẻ cho thiết bị đọc xác thực thông tin cá thể của NHPH.
Trong trường hợp này, NHPH sẽ chỉ tính toán chứng chỉ khóa công khai của thẻ cho việc tải nó về trong thẻ. Việc thẻ tự tạo cặp khóa RSA có thể tốt hơn đối với dịch vụ bảo mật chống chối bỏ giao dịch EMV.
2) Trong giai đoạn sử dụng, thẻ cung cấp cả chứng chỉ khóa công khai của NHPH và chứng chỉ khóa công khai của ICC cho thiết bị đọc. Thiết bị đọc kiểm tra tính xác thực của chứng chỉ khóa công khai của NHPH với khóa công khai của CA tương ứng và lấy lại một bản sao xác thực khóa công khai của NHPH. Sử dụng bản sao này, thiết bị đọc có thể kiểm tra sự xác thực chứng chỉ khóa công khai của thẻ và xác thực dữ liệu đã được NHPH cá thể hóa trong thẻ. Nếu tất cả việc kiểm tra trên là thành công, thì thiết bị đọc khôi phục lại một bản sao xác thực khóa công khai của thẻ. Thiết bị đọc yêu cầu thẻ lệnh INTERNAL AUTHENTICATE sẽ đưa ra một chữ ký số trên chuỗi byte đã xây dựng từ những đối tượng dữ liệu trong thiết bị đọc. Chuỗi byte này được định dạng theo những chỉ dẫn của Danh sách đối tượng dữ liệu xác thực dữ liệu động (DDOL) được cung cấp bởi thẻ. Để thực hiện DDA, DDOL phải bao gồm đối tượng dữ liệu Số không thể dự đoán được (nhãn 9F37), số này là một số ngẫu nhiên được thiết bị đọc tạo ra cho mỗi phiên EMV mới. Sau khi nhận lệnh INTERNAL AUTHENTICATE với chuỗi byte từ thiết bị đọc, thẻ đưa ra một chữ ký số trên chuỗi byte này như trên dữ liệu khác từ thẻ. Chữ ký này được xem trong thẻ như đối tượng dữ liệu của ứng dụng động đã ký với nhãn 9F4B. Thẻ gửi chữ ký này lại cho thiết bị đọc, thiết bị đọc sẽ kiểm tra nó với bản sao xác thực của khóa công khai của ICC. Nếu việc kiểm tra này là thành công, thì thiết bị đọc chấp nhận thẻ này.
Giai đoạn cá thể hóa
Thẻ EMV Ngân hàng phát hành
Lấy lại chứng chỉ của CA là C trên khóa công khai của ngân hàng phát hành
Tạo cặp khóa bí mật/khóa công khai của thẻ Sử dụng khóa bí mật của NHPH để tính chứng chỉ của NHPH C1 trên khóa công khai của thẻ Nạp C
Nạp C1
Nạp khóa bí mật của thẻ (sử dụng một kênh bảo mật) Lưu C và C1
Lưu khóa bí mật của thẻ trong một file bí mật bên trong
Giai đoạn sử dụng
Thẻ EMV Thiết bị đọc
Lấy lại C = chứng chỉ khóa công khai của NHPH
Lấy lại khóa công khai của CA thích hợp
C
Sử dụng nó để kiểm tra C và thu được một bản sao xác thực của khóa công khai của NHPH
C1
Lấy lại C1 = chứng chỉ khóa công khai của thẻ
Sử dụng khóa công khai của NHPH để kiểm tra C1 và để thu được bản sao xác thực khóa công khai của NHPH
Tạo ngẫu nhiên R
Tạo dữ liệu động của thiết bị đọc qua DDOL và bao gồm cả R
INTERNAL AUTHENTICATE (Dữ liệu động của thiết bị đọc,
bao gồm R)
Sử dụng khóa bí mật của thẻ để đưa ra một chữ ký trên dữ liệu động của thiết bị đọc và dữ liệu khác từ thẻ
s
Sử dụng khóa công khai để kiểm tra s và chấp nhận hoặc từ chối chấp nhận thẻ thật
4.4.4.2 Xác thực dữ liệu của thẻ EMV
Đầu tiên, thiết bị đọc kiểm tra sự xác thực của dữ liệu đã cá thể hóa trong thẻ và khóa công khai của thẻ qua chuỗi chứng chỉ của EMV gồm có chứng chỉ khóa công khai của NHPH và chứng chỉ khóa công khai của thẻ. Xử lý được thực hiện hoàn toàn bởi thiết bị đọc, trong khi thẻ chỉ truyền những đối tượng dữ liệu cần thiết này để hoàn thành việc kiểm tra này.
Giai đoạn 1:
Thiết bị đọc kiểm tra sự tồn tại của những đối tượng dữ liệu sau trong đống những đối tượng dữ liệu của thẻ EMV:
- Tất cả những đối tượng dữ liệu cần thiết cho thiết bị đọc thực hiện xác thực SDA ngoại tuyến, ngoại trừ Dữ liệu ứng dụng tĩnh đã ký (nhãn 93);
- Chứng chỉ khóa công khai của thẻ (nhãn 9F46);
- Phần còn lại khóa công khai của thẻ (nhãn 9F48), phần này chỉ có trong một số điều kiện nào đó;
- Mũ khóa công khai của thẻ (nhãn 9F47).
Nếu bất cứ đối tượng dữ liệu nào được đưa ra bên trên không có trong thẻ (ngoại trừ cho nhãn 9F48 và 9F49), thì đặt bit 6, ―Dữ liệu thẻ bị thiếu‖, trong byte 1 của TVR và xem là DDA bị lỗi.
Nếu thiết bị đọc không xác định được DDOL (nhãn 9F49) trong đống những đối tượng dữ liệu của EMV, thì thiết bị đọc nên sử dụng một DDOL ngầm định đã được NHTT cá thể hóa trong ứng dụng của thiết bị đọc EMV. Nếu DDOL mặc định cũng bị thiếu, thì DDA bị lỗi.
Giai đoạn 2:
Thiết bị đọc xây dựng chuỗi byte dữ liệu tĩnh được xác thực. Nếu danh sách nhãn xác thực tĩnh lưu bất kỳ nhãn nào khác những nhãn đã được chấp nhận, thì DDA bị lỗi.
Giai đoạn 3:
Thiết bị đọc kiểm tra sự xác thực của chứng chỉ khóa công khai của NHPH (nhãn 90) và khôi phục lại khóa công khai của NHPH (nI, eI).
Giai đoạn 4:
Thiết bị đọc kiểm tra sự xác thực chứng chỉ khóa công khai của ICC (nhãn 9F46) nhận được từ thẻ cùng với bản sao xác thực khóa công khai của NHPH (nI, eI), thu được từ Giai đoạn 3. NI là độ dài modun nI.
Nếu bất cứ kiểm tra nào bên trên bị lỗi, thì DDA bị lỗi.
Thiết bị đọc lưu khóa công khai của thẻ (nIC, eIC) để kiểm tra tiếp theo Dữ liệu ứng dụng động đã ký được thẻ đưa ra. Thiết bị đọc tiếp tục giai đoạn tiếp theo.
Giai đoạn 5: Thiết bị đọc bắt đầu tính Dữ liệu ứng dụng động đã ký trong thẻ với lệnh INTERNAL AUTHENTICATE.
Bước 1:
Thiết bị đọc tạo một số ngẫu nhiên 4 byte, giá trị của số ngẫu nhiên này được chỉ định là đối tượng dữ liệu Số không thể đoán được (nhãn 9F37). Vai trò của nó là đảm bảo tính duy nhất của chữ ký số đã được thẻ tính toán, chống lại những cuộc tấn công nghe lén tiềm tàng.
Bước 2:
Thiết bị đọc tạo chuỗi byte dữ liệu động của thiết bị đọc, liên kết những trường giá trị của tất cả những đối tượng dữ liệu định danh độ dài nhãn được liệt kê trong DDOL. DDOL nên lưu ít nhất định danh độ dài nhãn của Số không thể đoán được, nhưng cũng có thể bao gồm định danh của những đối tượng dữ liệu khác từ thiết bị đọc giống như Định danh của thiết bị đọc (nhãn 9F1C), Mã quốc gia của thiết bị đọc (nhãn 9F1A), và (nhãn 9A).
- Nếu DDOL nhận được từ thẻ không có định danh Số không thể đoán được thuộc định danh của nó, thì DDA bị lỗi.
- Nếu thẻ không gửi DDOL, thiết bị đọc phải sử dụng DDOL mặc định. Thiết bị đọc phải kiểm tra định danh độ dài nhãn của Số không thể đoán được thuộc những trường được liệt kê trong DDOL mặc định. Nếu không , thì DDOL
Bước 3:
Thiết bị đọc tạo C-APDU tương ứng với lệnh INTERNAL AUTHENTICATE. C-APDU này được tóm tắt trong Bảng 4.3
Bảng 4.3 C-APDU phù hợp với lệnh INTERNAL AUTHENTICATE
Mã Giá trị
CLA 00
INS 88
P1 00
P2 00
Lc Thay đổi (độ dài của những trường giá trị có kết hợp với nhau của những đối tượng dữ liệu được liệt kê trong DDOL hoặc DDOL ngầm định
Dữ liệu Dữ liệu động của thiết bị đọc – đây là chuỗi byte mang sự kết hợp với nhau của những trường giá trị của những đối tượng dữ liệu được chỉ ra bởi thẻ trong DDOL
Le 00
Tham số điều khiển P1 ghi thuật toán liên quan cho việc tính toán dữ liệu ứng dụng động đã ký. Giá trị thực tế được chấp nhận cho P1 là 00, điều này có nghĩa là không có thông tin nào trên thuật toán được đưa ra qua P1. Tại đây, thẻ sử dụng thuật toán cho việc tạo Dữ liệu ứng dụng động đã ký là thuật toán RSA. Sau khi định dạng C-APDU của lệnh INTERNAL AUTHENTICATE, thiết bị đọc sẽ gửi nó cho thẻ.
Nếu việc xác thực dữ liệu động/hệ mã hóa ứng dụng kết hợp được lựa chọn để thực hiện dịch vụ xác thực dữ liệu off-line, thì tất cả xử lý được mô tả bên trên được thực hiện loại trừ bước 3 trong giai đoạn 5. Trong trường hợp này, thiết bị đọc không gửi một lệnh INTERNAL AUTHENTICATE riêng tới thẻ.
4.4.4.3 Tạo chữ ký của thẻ EMV
Trước khi tính toán chữ ký, thẻ kiểm tra xem tham số P1 và P2 của lệnh INTERNAL AUTHENTICATE có bằng 00 hay không. Sau đó thẻ kiểm tra xem NHPH có khóa ứng dụng đã chọn hiện tại trước đó hay không thông qua một lệnh post-script. Thẻ cũng kiểm tra xem ở phiên thi hành hiện tại lệnh GET PROCESSING OPTIONS có được thực hiện thành công hay không và có C- APDU của lênh INTERNAL AUTHENTICATE nào khác được gửi cho thẻ hay không. Còn không thì thẻ trả về SW1SW2 = 6985, ―Lệnh không được phép thực hiện; những điều kiện sử dụng không được thỏa mãn‖.
Sau đó thẻ tính toán Số động của thẻ (nhãn 9F4C). Đây là một tham số biến thời gian được thẻ tạo ra. Khi nhận tham số này trong yêu cầu xác thực được gửi trực tuyến hoặc trong một gói tin thanh toán khi thanh toán, NHPH có thể kiểm tra tính mới của tham số này. Bởi vậy, NHPH kiểm tra xem thiết bị đọc đã thực hiện giai đoạn DDA hay chưa, khi mà hồ sơ giao dịch EMV yêu cầu điều này. Tham số có thể là một dãy số được tăng lên mỗi lần lệnh INTERNAL AUTHENTICATE được gửi cho thẻ, NHPH giữ biến đếm đồng bộ này trong IH. Tham số cũng có thể là một mã hóa đối xứng, và là duy nhất cho mỗi thẻ và cho mỗi giao dịch. Mã hóa này có thể là một MAC được thẻ tính toán trên ATC, biến này được tăng lên sau mỗi lần giao dịch. MAC này được tính với một khóa duy nhất cho mỗi mỗi thẻ từ một khóa chủ duy nhất của NHPH được chỉ định cho mục đích tính toán Số động của ICC.
NHPH có thể yêu cầu thiết bị đọc gửi toàn bộ dữ liệu của ứng dụng động đã ký đến IH để kiểm tra. Nhưng điều này có thể làm quá tải gói tin yêu cầu xác thực với NIC byte, gói tin này có thể lên đến 248 byte thay cho 3 đến 9 byte cần thiết của số động thẻ. Khi việc không thể chối bỏ không là một đặc điểm bảo mật được NHPH yêu cầu, thì sử dụng số động thẻ là kinh tế hơn.
Thẻ áp dụng sơ đồ chữ ký số đưa ra cho việc khôi phục lại gói tin được thực hiện với thuật toán RSA. Thuật toán này được áp dụng trên gói tin M = MR
|| M’ với những tham số RSA là nS = nIC và dS = dIC để thu được chữ ký S, chữ ký được xem như dữ liệu ứng dụng động đã ký, được lưu trong thẻ với nhãn 9F4B.
- Phần M’ bao gồm chuỗi byte dữ liệu động của thiết bị đọc, nhận được trong lệnh INTERNAL AUTHENTICATE từ thiết bị đọc.
- Phần MR bao gồm 5 trường:
1) Trường 1–định dạng dữ liệu đã ký (1 byte): nó có giá trị cố định là 05h. 2) Trường 2–chỉ dẫn thuật toán băm (1 byte): nó chỉ ra thuật toán băm được sử dụng để đưa ra mã băm H.
3) Trường 3–độ dài dữ liệu động của thẻ (1 byte): Xác định độ dài byte
LDD dữ liệu động của thẻ trong trường 4. Tham số này phải thỏa mãn mối quan hệ 0 ≤ LDD ≤ NIC – 25.
4) Trường 4–dữ liệu động của thẻ (LDD byte): bao gồm LDD byte, byte cực trái ghi độ dài của Số động của thẻ (giữa 2 và 8 byte), và theo 2 đến 8 byte tiếp theo biểu diễn Số động của thẻ. Phần còn lại dữ liệu động ICC, tận cùng của LDD
byte, có thể được NHPH sử dụng theo một cách riêng.
5) Trường 5–mẫu bổ sung (pad pattern): bao gồm một số NIC – LDD – 25 byte có giá trị là BBh.
Sau khi hành thành thành công tính toàn này, thẻ cài đặt một cờ (flag) bên trong để đánh dấu DDA đã hoàn thành. Thẻ có thể tạo lên R-APDU được trả về cho thiết bị đọc theo hai cách sau:
1) Định dạng mẫu gói tin phản hồi 1: Đây là một đối tượng dữ liệu nguyên thủy với nhãn 80 có độ dài là NIC. Trường giá trị của đối tượng dữ liệu này chỉ lưu trường giá trị của dữ liệu xác thực động đã ký.
2) Định dạng mẫu gói tin phản hồi 2: Đây là một đối tượng dữ liệu có cấu trúc với nhãn 77, đối tượng này có thể bao gồm nhiều đối tượng dữ liệu được được ghi trong một định dạng BER-TLV, nhưng sẽ luôn luôn lưu dữ liệu xác thực động đã ký. Với những đối tượng dữ liệu khác là riêng cho mỗi NHPH.
4.4.4.4 Kiểm tra dữ liệu
Sau khi nhận dữ liệu xác thực động đã ký trong R-APDU được thẻ trả về qua lệnh INTERNAL AUTHENTICATE, thì thiết bị đọc kiểm tra tính xác thực của nó.
Bước 1: Kiểm tra xem độ dài của dữ liệu ứng dụng động đã ký có phải là NIC.
Bước 2: Áp dụng thuật toán kiểm tra/khôi phục lại chữ ký. S là dữ liệu của ứng dụng động đã ký, nS = nIC, và eS = eIC. Độ dài N của tham số là NIC.
Dữ liệu được khôi phục X được phân thành X = B || MR || H || E. Xử lý