3.1. THẺ THANH TOÁN
3.1.2.1. Giao thức truyền thông với thẻ thông minh
Thẻ thông minh và máy chủ quản lý thẻ thông minh giao tiếp với nhau thông qua một thiết bị chấp nhận thẻ. Thiết bị này có thể là đầu đọc thẻ hoặc thiết bị đầu cuối.
Đầu đọc thẻ kết nối tới cổng nối tiếp, cổng song song hoặc cổng USB của máy tính, qua đó thẻ thông minh đƣợc truyền thông. Đầu đọc có khe cắm chứa thẻ thông minh, hoặc có thể nhận dữ liệu thông qua trƣờng điện từ đối với thẻ không tiếp xúc.
Thiết bị đầu cuối tích hợp đầu đọc thẻ nhƣ là một phần của nó. Bên cạnh chức năng của đầu đọc thẻ, thiết bị đầu cuối có khả năng xử lý dữ liệu truyền giữa nó và thẻ thông minh. Các thiết bị đầu cuối hiện nay nhƣ các điểm bán hàng POS – Point Of Sales hoặc máy rút tiền tự động ATM – Automatic Teller Machines.
Truyền thông giữa thẻ thông minh và máy chủ quản lý thẻ thông minh là bán song công, nghĩa là dữ liệu chỉ có thể truyền từ thẻ đến máy chủ hoặc từ máy chủ đến thẻ chứ không thể theo hai hƣớng cùng một thời điểm.
Thẻ thông minh tƣơng tác với máy tính bằng cách sử dụng gói tin riêng của nó đƣợc gọi là APDUs (Application Protocol Data Units – đơn vị dữ liệu giao thức ứng dụng). Một APDU chứa một lệnh hoặc một thông điệp trả lời.
Thẻ thông minh đóng vai trò thụ động trong mô hình “chủ - tớ” với máy chủ. Nó đợi lệnh APDU từ máy chủ. Sau đó thực hiện chỉ thị trong lệnh và trả lời máy chủ với APDU phản hồi. Các lệnh APDU và APDU phản hồi đƣợc truyền đan xen giữa máy chủ và thẻ.
1) Giao thức APDU
APDU là một giao thức ở mức ứng dụng giữa thẻ thông minh và ứng dụng của máy chủ, đƣợc chỉ ra trong chuẩn ISO 7816-4. Các thông điệp APDU gồm hai loại cấu trúc: một đƣợc sử dụng bởi ứng dụng của máy chủ từ phía thiết bị chấp nhận thẻ để gửi lệnh tới thẻ và một đƣợc sử dụng bởi thẻ để gửi thông điệp trả lời ứng dụng của máy chủ. Tƣơng ứng với hai cấu trúc này là hai lớp: APDU lệnh và APDU phản hồi. Một APDU lệnh luôn có một APDU phản hồi tạo thành một cặp tƣơng ứng.
a) Cấu trúc của APDU lệnh
Hình 3.4 : Cấu trúc của APDU lệnh
APDU lệnh có cấu trúc hai phần: phần Header (tiêu đề), phần Body (thân).
Header của APDU lệnh gồm 4 byte:
- Byte CLA (Class of instruction): “lớp” chỉ thị, xác định loại APDU lệnh và APDU phản hồi.
- INS (Instruction code): “mã” chỉ thị, xác định chỉ thị của lệnh. - P1, P2: tham số 1 và 2, xác định thêm thông tin cho chỉ thị.
Phần thân của APDU lệnh là phần tuỳ chọn có độ dài đa dạng gồm các trƣờng: - Lc-feld (Length of data for Command) chỉ độ dài của trƣờng „data‟ (theo
byte).
- Trƣờng „data‟ chứa dữ liệu truyền đến thẻ để thực hiện lệnh đƣợc chỉ rõ trong header của APDU.
- Byte Le-Feld (Length of data expected for response) chỉ ra số byte mà máy chủ chờ thẻ phản hồi.
b) Cấu trúc của APDU phản hồi
Hình 3.4: Cấu trúc của APDU phản hồi
APDU phản hồi đƣợc gửi bởi thẻ để trả lời cho APDU lệnh. Cấu trúc của APDU phản hồi bao gồm một chi tiết tuỳ chọn (phần body) và phần bắt buộc kèm theo.
Phần chi tiết bao gồm trƣờng „data‟ có độ dài đƣợc xác định bởi trƣờng Le-Feld trong APDU lệnh tƣơng ứng.
Phần bắt buộc bao gồm hai trƣờng SW1 và SW2 đi cùng với nhau đƣợc gọi là từ trạng thái (Status Word), biểu thị trạng thái xử lý của thẻ sau khi thực hiện APDU lệnh. Chúng ta có lƣợc đồ phân loại cho mã trả về (SW1, SW2) nhƣ sau:
Hình 3.5: Mã trả về của SW1, SW2
Từ hình 3.5, nếu từ trạng thái là „0x9000‟ có nghĩa là một lệnh đã đƣợc thực hiện thành công và trọn vẹn.
Trƣờng „data‟ là tuỳ chọn đối với cả APDU lệnh và APDU phản hồi. Do đó, APDU còn đƣợc phân loại thêm 4 loại sau, dựa trên đặc điểm có chứa trƣờng „data‟ trong APDU lệnh và APDU phản hồi hay không.
- Trường hợp 1: Không có dữ liệu đƣợc truyền tới hoặc nhận từ thẻ. APDU lệnh chỉ chứa header, APDU phản hồi chỉ chứa từ trạng thái.
- Trường hợp 2: Không có dữ liệu đƣợc truyền tới thẻ, nhƣng có dữ liệu phản hồi từ thẻ. Chi tiết APDU lệnh chỉ chứa 1 byte trƣờng Le-Feld, nó chỉ rõ số byte dữ liệu cần có trong APDU phản hồi.
- Trường hợp 3: Dữ liệu đƣợc truyền tới thẻ, nhƣng không có dữ liệu đƣợc trả về do kết quả của quá trình xử lý lệnh. Chi tiết của APDU lệnh bao gồm trƣờng Lc- Feld và trƣờng „data‟. Trƣờng Lc-Feld chỉ ra độ dài của trƣờng „data‟. APDU phản hồi chỉ chứa từ trạng thái.
- Trường hợp 4: Dữ liệu đƣợc truyền tới thẻ và dữ liệu đƣợc trả về từ thẻ là kết quả của quá trình xử lý lệnh. Chi tiết APDU lệnh bao gồm trƣờng Lc-Feld, trƣờng „data‟ và trƣờng Le-Feld. APDU phản hồi bao gồm cả dữ liệu và từ trạng thái.
2) Mã hoá bit
Mã hoá bit trực tiếp hay đảo bit đều đƣợc sử dụng trong thẻ thông minh. S (Start bit): bit khởi tạo.
P (Parity bit): bit chẵn lẻ đƣợc sử dụng để phát hiện lỗi. G (Guardtime): phân tách giữa các ký tự.
T (Next Start bit): bit khởi tạo của chuỗi ký tự tiếp theo.
a) Trực tiếp
Hình 3.6: Mã hoá bit trực tiếp
b) Đảo bit Hình 3.7: Đảo bit T G b6 b5 b4 b3 b2 b1 b0 P S b7 1 0 0 T G b1 b2 b3 b4 b5 b6 b7 P S b0 1 0 0
3) Giao thức TPDU
APDU đƣợc truyền bởi giao thức mức tiếp theo – giao thức truyền thông. Cấu trúc dữ liệu đƣợc trao đổi giữa máy chủ và thẻ sử dụng giao thức truyền thông đƣợc gọi là giao thức truyền thông đơn vị dữ liệu (Transport Protocol Data Unit – TPDU). Giao thức TPDU đƣợc định nghĩa trong chuẩn ISO 7816-3.
Hai giao thức truyền thông đƣợc dùng chủ yếu trong các hệ thống thẻ thông minh hiện nay là giao thức T = 0 và giao thức T = 1.
a) Giao thức T = 0
Giao thức T = 0 là giao thức hƣớng byte, có nghĩa là đơn vị nhỏ nhất đƣợc xử lý và truyền đi bởi giao thức là một byte. Giao thức này truyền ký tự theo chế độ bán song công không đồng bộ. Hầu hết các thẻ thông minh đều sử dụng giao thức T = 0. Tất cả các thẻ cho mạng di động GSM đều sử dụng giao thức này.
Nhƣ vậy, giao thức T = 0 có các đặc điểm sau:
Giao thức truyền ký tự bán song công không đồng bộ
Thẻ có thể phát và nhận dữ liệu
Một lệnh không thể gửi dữ liệu tới thẻ và nhận dữ liệu phản hồi đồng thời.
Giao thức không chỉ ra hƣớng của dữ liệu. Ví dụ:
Hình 3.8: Lệnh ghi dữ liệu vào thẻ
Hình 3.9: Lệnh đọc dữ liệu từ thẻCLA CLA SW2 INS P1 P2 P3 INS D1 D2 D3 DP3 SW1 CLA INS P1 P2 P3 INS D1 D2 D3 DP3 SW2 SW1
b) Giao thức T = 1
Giao thức T = 1 là giao thức hƣớng khối, có nghĩa là một khối gồm một số byte liên tiếp, là đơn vị dữ liệu nhỏ nhất có thể truyền giữa thẻ và máy chủ. Giao thức này truyền khối dữ liệu theo chế độ bán song công không đồng bộ. Thẻ có thể hỗ trợ cả hai giao thức T = 0 và T = 1, khi đó thiết bị đầu cuối sẽ lựa chọn giao thức nào đƣợc sử dụng (PTS – Protocol Type Selection).
Nhìn chung, giao thức T = 1 có các đặc điểm sau: + Giao thức truyền khối bán song công không đồng bộ. + Dữ liệu có thể đƣợc truyền theo cả hai hƣớng
- Lệnh và dữ liệu trong trƣờng thông tin - Lệnh và dữ liệu trong khung độc lập. + Không có byte kiểm tra chẵn lẻ
Hình 3.10: Cấu trúc của một khối truyền
+ Trƣờng mở đầu gồm 3 byte: NAD (Node Address - địa chỉ nút), PCB (Protocol Control Byte - byte điều khiển giao thức) và LEN (Data Length - kích thƣớc dữ liệu).
- Byte NAD sử dụng các bit 1-3 để xác định địa chỉ nguồn và các bit 5-7 để xác định địa chỉ đích, bit 4 và bit 8 đƣợc sử dụng cho Vpp.
- Byte PCB xác định 3 loại khối:
o Khối thông tin (I – block): đƣợc sử dụng để truyền các lệnh và dữ liệu ứng dụng giữa thẻ thông minh và ứng dụng máy chủ.
o Khối sẵn sàng nhận (R – block): đƣợc dùng nhƣ một biên nhận khi giao thức đang gửi dữ liệu nhƣ một chuỗi của các khối đƣợc truyền.
o Khối giám sát (S – block): đƣợc sử dụng để thiết lập các tham số điều khiển giao thức.
- Byte LEN chỉ rõ số byte (nếu có) trong trƣờng thông tin.
o Trƣờng thông tin đƣợc sử dụng để truyền các lệnh và dữ liệu ứng dụng o Trƣờng kết thúc bao gồm mã phát hiện lỗi khối EDC (Error detection code), có thể là mã CRC (cyclic redundancy check) hoặc mã LRC (longitudinal redundancy check). LRC chiếm 1 byte, còn CRC chiếm 2 byte.
4)Thông điệp trả lời để xác lập lại – ATR
Ngay sau khi bật nguồn, thẻ thông minh gửi thông điệp trả lời để xác lập lại ATR (Answer To Reset) tới máy chủ. Thông điệp này truyền tới máy chủ các thông tin yêu cầu bởi thẻ để thiết lập kênh kết nối truyền dữ liệu.
ATR có thể có từ 2 đến 33 byte. Byte đầu tiên định nghĩa kiểu mã bit (trực tiếp hay đảo ngƣợc). ATR còn chứa các tham số truyền tín hiệu nhƣ giao thức truyền thông đƣợc thẻ hỗ trợ (T = 0 hoặc T = 1), tốc độ truyền dữ liệu, các tham số phần cứng của thẻ nhƣ phiên bản làm mặt nạ cho chip, nhà sản xuất, số thứ tự chip…