Chương 4 : XỬ LÝ GIAO DỊCH THẺ EMV
4.6 KIỂM TRA CHỦ THẺ
4.6.5 Phong bì số RSA chứa PIN
Hình 4.7 phác họa kỹ thuật "Thẻ thực hiện kiểm tra PIN đã mã hóa‖ (000100b). Lợi thế chính của kỹ thuật này là một kẻ tấn công không còn bất cứ cơ hội để nghe lén số PIN của chủ thẻ trên giao tiếp giữa thẻ và thiết bị đọc khi mà PIN được giữ kín trong một phong bì số RSA.
Trong giai đoạn cá thể hóa, NHPH tạo cặp khóa khóa bí mật mã hóa PIN của thẻ/khóa công khai mã hóa PIN của thẻ và đưa ra chứng chỉ khóa công khai mã hóa PIN của thẻ với khóa bí mật của NHPH. NHPH nạp khóa bí mật mã hóa PIN của thẻ (sử dụng kênh bí mật) và chứng chỉ khóa công khai mã hóa PIN của thẻ vào trong thẻ. Chú ý rằng để tiết kiệm bộ nhớ EEPROM trong thẻ, thì cặp khóa công khai/bí mật của thẻ có thể được sử dụng để thay thế cho cặp khóa công khai/bí mật mã hóa PIN của thẻ để thực hiện việc mở/đóng phong bì RSA. Mặc dù vậy, điều quan trọng ở đây là bất cứ khi nào thẻ có đủ bộ nhớ EEPROM thì bảo mật tốt nhất là giữ cặp khóa riêng để tạo/kiểm tra chữ ký và đóng/mở phong bì số RSA.
Khi một giao dịch chọn kỹ thuật "Thẻ thực hiện kiểm tra PIN đã mã hóa‖, thì thiết bị đọc kiểm tra sự tồn tại trong đống những đối tượng dữ liệu EMV những đối tượng sau:
- Tất cả những đối tượng dữ liệu cần thiết của thiết bị đọc để thực hiện xác thực dữ liệu tĩnh ngoại tuyến, loại trừ Dữ liệu ứng dụng tĩnh đã ký (nhãn 93);
- Chứng chỉ khóa công khai mã hóa PIN của thẻ (nhãn 9F2D);
- Phần còn lại khóa công khai mã hóa PIN của thẻ (nhãn 9F2F), nó chỉ có khi NPE > N – 42;
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 C trên khóa công khai của NHPH
Tạo cặp khóa bí mật mã hóa PIN của thẻ/ khóa công khai mã hóa PIN của thẻ Nạp C
Lưu C
Sử dụng khóa bí mật của NHPH để tính chứng chỉ của NHPH C2 trên khóa công khai mã hóa PIN của thẻ
Nạp C2
Nạp khóa bí mật mã hóa PIN của thẻ (Sử dụng kênh bảo mật) Lưu C2
Lưu khóa bí mật mã hóa PIN của thẻ trong một file bí mật bên trong
Giai đoạn sử dụng
Thiết bị đọc Thẻ EMV
Lấy lại C = Chứng chỉ khóa công khai của NHPH
C
Lấy lại C2 = chứng chỉ khóa công khai mã hóa PIN của thẻ
Lấy lại khóa công khai của CA thích hợp Sử dụng nó để kiểm tra C và thu được một bản sao xác thực khóa công khai mã hóa PIN của thẻ
Yêu cầu một số ngẫu nhiên r từ thẻ
C2
GET CHALLENGE
Tạo một số ngẫu nhiên r trên 8 byte Bắt được PIN từ chủ thẻ và tính toán PINBlock r
Tạo một phong bì số E, đóng gói PINBlock và r
VERIFY(E)
Sử dụng khóa bí mật mã hóa PIN của thẻ để mở gói E Kiểm tra xem r có là mới hay không
Tính toán PIN từ PINBlock đã nhận và so sánh nó với PIN đã lưu trong thẻ
SW1SW2
Chập nhận chủ thẻ là hợp pháp trong trường hợp SW1SW2 = 9000
Sử dụng khóa công khai của NHPH để kiểm tra C2 và thu được một bản sao xác thực khóa công khai mã hóa PIN của thẻ
Nếu thiết bị đọc không thể lấy lại ba đối tượng dữ liệu cuối cùng, thì nó tìm kiếm ba đối tượng dữ liệu sau:
- 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), nó chỉ có khi NIC>NI– 42;
- Mũ khóa công khai của thẻ (nhãn 9F47).
Nếu tập những đối tượng dữ liệu đưa ra bên trên bị thiếu, thì việc kiểm tra PIN đã mã hóa được thẻ thực hiện bị lỗi.
Nếu có tập đối tượng dữ liệu thứ nhất, thì thiết bị đọc thu được một bản sao xác thực của khóa công khai mã hóa PIN của ICC (nPE, ePE).
Thiết bị đọc tạo một gói tin M của NPE (hoặc NIC) byte từ những trường sau:
- Tiêu đề dữ liệu: 1 byte với giá trị 7Fh; - Khối PIN (PIN Block): 8 byte;
- Số không đoán được của thẻ: trường giá trị 8 byte của đối tượng dữ liệu với nhãn 9F37, thu được từ thẻ với một lệnh GET CHALLENGE.
- Mẫu bổ sung ngẫu nhiên: một chuỗi NPE - 17 (hoặc NIC – 17) byte được tạo ngẫu nhiên bởi thiết bị đọc.
Phong bì số RSA thu được qua thuật toán RSA công khai trên M với modun nPE và mũ công khai ePE.
Sau khi nhận C-APDU của lệnh VERIFY với P2 = 88, thẻ lấy lại phong bì số RSA E từ trường dữ liệu. Thẻ áp dụng một thuật toán RSA bí mật trên phong bì số này với modun nPE và mũ bí mật dPE, với điều kiện (nPE, dPE) biểu diễn khóa bí mật mã hóa PIN của thẻ. Kết quả của phép toán này được ký hiệu là M’.
Thẻ thực hiện những kiểm tra sau:
- Byte đầu tiên của M’ cần phải bằng tiêu đề dữ liệu với giá trị 7Fh.
- Khôi phục lại 8 byte số không đoán được của ICC, bắt đầu với byte thứ 10 của M’. Kiểm tra xem 8 byte đó tương ứng dãy byte ngẫu nhiên được thẻ tạo ra hay không và được trả lại trong R-APDU của lệnh GET CHALLENGE.
- Khôi phục lại khối PIN 8 byte bắt đầu từ vị trí thứ hai của M’ và lấy lại PIN. Kiểm tra giá trị này với giá trị bằng chứng lưu trong thẻ.
Nếu tất cả những kiểm tra đưa ra bên trên đều thành công thì kiểm tra PIN đã mã hóa được xem là thành công.