Giao tiếp truyền thông

Một phần của tài liệu Nghiên cứu tích hợp bài toán nhận dạng vân tay với ứng dụng thẻ thông minh (Trang 26)

Việc truyền thông giữa thẻ thông minh và Terminal theo chế độ bán công (half- duplex), nghĩa là thẻ thông minh và thiết bị đầu cuối chỉ có thể hoặc gửi hoặc nhận dữ liệu chứ không bao giờ đồng thời vừa gửi vừa nhận đƣợc.

Việc truyền thông với thẻ luôn đƣợc khởi tạo bởi thiết bị đầu cuối. Thẻ luôn luôn phản hồi các lệnh từ thiết bị đầu cuối. Thẻ không bao giờ gửi dữ liệu khi không có kích thích từ bên ngoài. Điều này tạo ra một mối quan hệ chủ-tớ (master/slave) với thiết bị đầu cuối là chủ, thẻ là tớ.

Sau khi thẻ đƣợc đặt vào thiết bị đầu cuối, các điểm tiếp xúc của nó đƣợc kết nối với các điểm tiếp xúc của thiết bị. Các điểm tiếp xúc sau đó đƣợc kích hoạt theo trình tự định sẵn. Thẻ tự động thi hành việc khởi động lại nguồn (power-on reset) và gửi Trả lời cho việc khởi động lại ATR (Answer to Reset) đến đầu đọc. Đầu đọc nhận ATR (trong ATR chứa các tham số liên quan tới thẻ và việc truyền dữ liệu) rồi sau đó gửi các lệnh cho thẻ. Thẻ xử lý các lệnh rồi tạo ra phản hồi gửi trả lại cho đầu đọc. Quá trình gửi lệnh và trả lời tiếp tục cho đến khi thẻ không đƣợc kích hoạt nữa.

Giữa ATR và lệnh gửi cho thẻ, đầu đọc có thể gửi lệnh Lựa chọn tham số giao thức PPS (Protocol Parameter Selection) PPS có thể đƣợc xem nhƣ phần mở rộng của ATR. Đầu đọc dùng lệnh này để đặt các tham số truyền thông cho giao thức truyền thông. CPU ROM Card OS V M A pps. RAM EEPROM CO- PROCESSOR

Hình 8. Truyền dữ liệu khởi tạo giữa thẻ thông minh và Terminal

Toàn bộ thủ tục cho việc truyền dữ liệu đến và đi từ thẻ thông minh có thể đƣợc biểu diễn sử dụng mô hình OSI. Thẻ thông minh thực tế không hỗ trợ tất cả các lựa chọn cho các giao thức truyền thông vì giới hạn về bộ nhớ. Do đó mô hình OSI cho thẻ thông minh chỉ gồm 3 tầng: tầng vật lý, tầng liên kết dữ liệu, và tầng ứng dụng.

1.2.2.1. Giao thức tầng vật lý

ISO/IEC 7816-2 mô tả một thẻ mạch tích hợp với tám tiếp xúc (contact) trên bề mặt trƣớc của thẻ. Các tiếp xúc đƣợc quy ƣớc ký hiệu là từ C1 đến C8. Một số tiếp xúc đƣợc nối với chip xử lý trong thẻ, một số thì không (đƣợc định nghĩa cho sự cải tiến sau này nhƣng hiện tại không đƣợc sử dụng).

Tiếp xúc Tên Sử dụng

C1 VCC Đƣờng kết nối nguồn qua đó nguồn đƣợc cung cấp cho chip C2 RST Đƣờng thiết lập lại (reset line) qua đó thiết bị đầu cuối có thể

báo cho chip để khởi tạo lại chuỗi lệnh.

C3 CLK Đƣờng tín hiệu đồng hồ qua đó tín hiệu đồng hồ sẽ đƣợc cung cấp cho chip để điều khiển tốc độ hoạt động và tạo ra một khung làm việc chung giữa thẻ và thiết bị đầu cuối. C4 RFU Chƣa sử dụng

C5 GND Đƣờng tiếp đất

C6 Vpp Đƣờng kết nối nguồn lập trình (programming power connection) dùng để lập trình bộ nhớ không thay đổi trong chip

C7 I/O Đƣờng Input/Output cung cấp kênh bán công giữa thiết bị đầu cuối và thẻ

C8 RFU Chƣa sử dụng

Bảng 2. Định nghĩa các tiếp xúc của thẻ thông minh

Các tham số cho việc truyền thông ở tầng vật lý đƣợc miêu tả chi tiết trong chuẩn ISO/IEC 7816-3. Chuẩn này miêu tả mối quan hệ giữa thẻ thông minh và thiết bị đầu cuối - mối quan hệ “chủ” (thiết bị đầu cuối) và “tớ” (thẻ thông minh). Truyền thông đƣợc thiết lập khi thiết bị đầu cuối gửi tín hiệu cho thẻ thông minh qua các tiếp xúc.

Hình 9. Biểu đồ trạng thái của Terminal và thẻ thông minh

Khi thẻ đƣợc đặt vào thiết bị đầu cuối, nguồn chƣa có tại các tiếp xúc. Chip trên thẻ có thể bị hỏng nếu nguồn đƣợc đƣa vào không đúng tiếp xúc. Khi thiết bị đầu cuối phát hiện thẻ đã đƣợc đặt đúng, nguồn sẽ đƣợc cung cấp tới thẻ. Đầu tiên các tiếp xúc sẽ ở trạng thái rỗi. Trạng thái rỗi đƣợc mô tả khi tiếp xúc nguồn (VCC) đƣợc đặt ở điện áp ổn định 5v. Tiếp xúc I/O đƣợc đặt ở trạng thái nhận ở phía thiết bị đầu cuối và đồng hồ (CLK) đƣợc thiết lập. Đƣờng reset ở trạng thái thấp, đƣờng này phải ở trạng thái thấp ít nhất là 40.000 chu kỳ đồng hồ trƣớc khi tín hiệu reset có thể đƣợc bắt đầu bởi thiết bị đầu cuối, đặt đƣờng reset lên trạng thái cao. Tín hiệu reset sau đó đƣợc gửi tới thẻ thông qua đƣờng RST.

Tiếp xúc Trạng thái VCC Đƣợc cấp nguồn và ổn định Vpp Ổn định ở trạng thái rỗi RST Trạng thái thấp CLK Tín hiệu ổn định đƣợc đặt I/O Chế độ nhận ở Terminal

Khi thẻ đƣợc cấp nguồn đầy đủ, đƣờng RST đƣợc đặt ở trạng thái cao, báo cho thẻ bắt đầu quá trình khởi tạo. Các hoạt động khởi tạo khác nhau đối với mỗi loại thẻ nhƣng kết quả của nó nên luôn là việc gửi một phản hồi cho việc khởi động lại ATR (Answer to Reset) từ thẻ trở lại bộ đọc.

Khi tín hiệu RST đƣợc gửi từ thiết bị đầu cuối tới thẻ, thẻ phải trả lời với ký tự đầu tiên của ATR trong vòng 40.000 chu kỳ. Nếu ATR không đƣợc trả lời trong khoảng thời gian này, thiết bị đầu cuối sẽ tắt nguồn. Thiết bị đầu cuối đặt đƣờng RST, CLK và I/O ở trạng thái thấp và hạ điện thế của đƣờng VCC tới 0. ATR là một chuỗi gồm 33 ký tự (có thể ít hơn) chứa các thành phần sau:

 TS - Ký tự khởi đầu (bắt buộc)

 T0 - Ký tự định dạng (bắt buộc)

 TAi, TBi, TCi, TDi - Ký tự giao diện (không bắt buộc)

 T1, T2, …, TK - Ký tự lịch sử (không bắt buộc)

 TCK - Ký tự kiểm tra điều kiện

Ký tự ban đầu TS đƣợc dùng để thiết lập tín hiệu bit và thứ tự bit giữa thiết bị đầu cuối và thẻ. Ký tự định dạng T0 đƣợc dùng để báo hiệu sự có mặt hoặc vắng mặt của ký tự giao diện. Ký tự giao diện (interface character) đƣợc dùng để hƣớng dẫn các đặc tính của kênh I/O, bao gồm giao thức cụ thể đƣợc dùng giữa thẻ và thiết bị đầu cuối trong quá trình trao đổi lệnh và phản hồi. Ký tự lịch sử (historical character) nếu có, đƣợc dùng để vận chuyển các thông tin của các nhà sản xuất thẻ tới thiết bị đầu cuối.

Việc truyền dữ liệu giữa thẻ và Terminal đƣợc thực hiện qua hoạt động của 2 đƣờng tiếp xúc: CLK và I/O. Đƣờng I/O vận chuyển các bit thông tin đơn lẻ trong mỗi đơn vị thời gian đƣợc định nghĩa bởi CLK, phụ thuộc vào giá trị điện thế của nó so với GND. Bit 1 có thể đƣợc chuyển qua giá trị 5V hoặc chuyển qua giá trị 0V. Quy ƣớc thực sự đƣợc xác định bởi thẻ thông qua “ký tự ban đầu” TS của ATR .

Để vận chuyển 1 byte thông tin, 10 bit luôn đƣợc chuyển qua đƣờng I/O. Bit đầu tiên luôn là bit bắt đầu (start bit) và bit cuối cùng luôn là bit chẵn lẻ (parity bit). Có thể xem đƣờng I/O chỉ có thể ở trạng thái cao (H) hoặc trạng thái thấp (L). (adsbygoogle = window.adsbygoogle || []).push({});

Ký tự TS có dạng HLHHLLLLLLH báo hiệu rằng thẻ muốn sử dụng “quy ƣớc ngƣợc”, có nghĩa là H tƣơng ứng với 0, L tƣơng ứng với 1.

Ký tự TS có dạng HLHHLHHHLLH báo hiệu rằng thẻ muốn sử dụng “quy ƣớc xuôi”, có nghĩa là H tƣơng ứng với 1, L tƣơng ứng với 0.

Quy ƣớc ngƣợc và quy ƣớc xuôi cũng điều khiển thứ tự bit với mỗi byte truyền đi. Trong quy ƣớc xuôi, bit đầu tiên sau bit bắt đầu là bit thấp của byte. Trong quy ƣớc ngƣợc, bit đầu tiên sau bit bắt đầu là bit cao của byte.

1.2.2.2. Giao thức tầng liên kết dữ liệu

Giao thức ở tầng liên kết dữ liệu cung cấp đƣờng truyền không lỗi (error-free connection) từ thiết bị đầu cuối kết nối với thẻ. Mặc dù có hơn 15 đặc tả về các giao thức liên kết dữ liệu nhƣng thực sự chỉ có 2 biến thể chính đang đƣợc sử dụng rộng rãi hiện nay, đó là giao thức T=0 và T=1. Nếu tham chiếu với mô hình OSI, giao thức T=1 tƣơng ứng hoàn toàn với giao thức tầng liên kết dữ liệu, còn giao thức T=0 có xu hƣớng trộn lẫn các giao thức của các tầng khác nhau. Sự phân biệt giữa tầng ứng dụng và tầng liên kết dữ liệu trong giao thức T=0 là không rõ ràng.

Thiết bị đầu cuối và thẻ trao đổi với nhau thông qua giao thức lệnh-đáp ứng (command-response protocol). Nghĩa là thiết bị đầu cuối gửi lệnh tới thẻ (có thể gồm cả dữ liệu đƣợc dùng bởi thẻ cho việc thực thi yêu cầu), sau đó thẻ thi hành và gửi đáp ứng lại cho thiết bị đầu cuối. Đáp ứng này gồm dữ liệu kết quả cũng nhƣ trạng thái đáp ứng yêu cầu. Cấu trúc dữ liệu dùng để trao đổi giữa thiết bị đầu cuối và thẻ trong giao thức lệnh-đáp ứng này đƣợc gọi là đơn vị dữ liệu giao thức truyền thông TPDU (transmission protocol data units). Cấu trúc của TPDU dùng trong giao thức T=0 khác hoàn toàn so với cấu trúc đƣợc dùng trong giao thức T=1.

Giao thức T=0

Giao thức T=0 là một giao thức hƣớng byte (byte-oriented protocol) nghĩa là đơn vị dữ liệu nhỏ nhất đƣợc xử lý bởi giao thức là 1 byte. Trong giao thức T=0, việc phát hiện lỗi đƣợc thực hiện nhờ vào việc xem các bit chẵn lẻ (parity bit) trong mỗi byte đƣợc chuyển. Việc vận chuyển mỗi byte thông tin cần 10 bit. Phía bên nhận sẽ nhìn vào các bit thông tin trƣớc bit chẵn lẻ để xác định bit chẵn lẻ nên là gì. Sau đó thực hiện kiểm tra với bit chẵn lẻ đƣợc chuyển tới. Nếu không trùng, bên nhận sẽ biết rằng gói tin đó bị lỗi.

Thủ tục khôi phục lỗi trong giao thức T=0 sẽ đƣợc kích hoạt bởi bên nhận. Bên nhận sẽ phát tín hiệu yêu cầu bên gửi gửi lại. Bên nhận phát tín hiệu bằng cách giữ đƣờng I/O ở trạng thái thấp. Bình thƣờng đƣờng I/O ở trạng thái cao ngay trƣớc việc gửi một byte, vì vậy trạng thái thấp sẽ báo hiệu là có lỗi xảy ra.

Hình 11. Byte vận chuyển và phản hồi lỗi trong giao thức T=0

TPDU cho giao thức T=0 gồm 2 cấu trúc dữ liệu phân biệt: một đƣợc gửi từ Terminal đến thẻ (lệnh) và một đƣợc gửi từ thẻ đến Terminal (đáp ứng).

Phần đầu của lệnh gồm năm trƣờng:

 CLA-1 byte, xác lập một tuyển tập các chỉ thị (a collection of instructions); đôi khi đƣợc xem nhƣ chỉ định lớp của tập lệnh (class designation of the command set).

 INS-1 byte, chỉ định chỉ thị cụ thể trong tập các chỉ thị đƣợc định nghĩa trong CLA; đôi khi đƣợc xem nhƣ là chỉ định chỉ thị trong lớp các lệnh.

 P1-1 byte, dùng để chỉ rõ địa chỉ sử dụng bởi chỉ thị [CLA,INS].

 P2-1 byte, cũng dùng để chỉ rõ địa chỉ sử dụng bởi chỉ thị [CLA,INS].

 P3-1 byte, dùng để chỉ rõ số byte dữ liệu đƣợc gửi tới thẻ nhƣ là một phần của sự thi hành chỉ thị [CLA,INS].

Đáp ứng gửi từ thẻ tới thiết bị gồm ba trƣờng bắt buộc và một trƣờng tuỳ chọn:

 ACK-1 byte, xác nhận sự tiếp nhận yêu cầu [CLA,INS]/

 NULL-1 byte, đƣợc dùng bởi thẻ để làm việc điều khiển luồng trên kênh I/O; thẻ gửi thông điệp này tới thiết bị đầu cuối báo hiệu rằng thẻ vẫn đang làm việc với các lệnh và thiết bị đầu cuối đừng gửi thêm lệnh.

 SW1-1 byte, dùng bởi thẻ trả về các trạng thái đáp ứng tới thiết bị đầu cuối cho các lệnh hiện tại.

 SW2-1 byte (tuỳ chọn), có thể đƣợc kèm theo trong đáp ứng, phụ thuộc vào lệnh cụ thể. Nếu đƣợc kèm theo, nó vận chuyển thông tin về số lƣợng byte đƣợc trả về từ đáp ứng.

Giao thức T=1

Giao thức T=1 là giao thức hƣớng khối (block-oriented protocol). Điều này có nghĩa là một khối thông tin đƣợc chuyển nhƣ một đơn vị dữ liệu giữa thiết bị đầu cuối và thẻ. Gắn với cấu trúc khối này có thể là một APDU (Application Protocol Data Unit) đƣợc định nghĩa cho một ứng dụng cụ thể (APDU là một cấu trúc dữ liệu đƣợc gửi giữa tầng ứng dụng của thiết bị đầu cuối và thẻ).

Việc chuyển thông tin dƣới dạng khối yêu cầu khối đƣợc chuyển phải không bị lỗi (error free). Do đó việc phát hiện lỗi và sửa lỗi ở giao thức này phức tạp hơn so với giao thức T=0. Việc phát hiện lỗi trong giao thức T=1 đƣợc thực hiện bằng cách dùng LRC (longitudinal redundancy character)- một dạng của việc kiểm tra bit chẵn lẽ (parity checking) hoặc dùng ký tự CRC (cyclic redundancy check). Khi bên nhận phát hiện đƣợc lỗi trong khối, nó sẽ báo cho bên gửi gửi lại gói đó.

Giao thức T=1 dùng ba loại khối khác nhau, có cùng cấu trúc, nhƣng phục vụ cho các mục đích riêng:

 Khối thông tin (Imformation block): Khối này dùng để chuyển thông tin giữa phần mềm ứng dụng trên thẻ và phần mềm ứng dụng trên thiết bị đầu cuối.

 Khối sẵn sàng nhận (Receive ready block): Khối này dùng để chuyển những hồi đáp (acknowledgments) từ phía này sang phía khác của kênh. Hồi báo khẳng định (positive acknowledgment) xác định khối đã đƣợc nhận đúng, còn hồi báo phủ định (negative acknowledgment) xác định có lỗi trong khối.

 Khối giám sát (Supervisory block): Khối này dùng để chuyển thông tin điều khiển giữa thẻ và thiết bị đầu cuối.

Trƣờng Mở đầu (Prologue Field) Trƣờng thông tin (Information Field) Trƣờng kết thúc (Epilogue Field) Địa chỉ Node (Node Address) NAD Byte điều khiển giao thức (Protocol Control Byte) PCB Chiều dài (Length) LEN APDU Data Length Error Detection LRC/CRC (adsbygoogle = window.adsbygoogle || []).push({});

1 Byte 1 Byte 1 Byte 0 đến 256 Byte 1 hoặc 2 Byte

Bảng 4. Các thành phần của khối giao thức T=1

Bảng trên biểu diễn ba thành phần của một khối T=1. Trƣờng mở đầu và trƣờng kết thúc là bắt buộc, còn trƣờng thông tin là tuỳ chọn.

Trƣờng mở đầu

 Thành phần NAD đƣợc dùng để nhận ra địa chỉ nguồn của khối và địa chỉ đích đến của khối. Việc dùng địa chỉ này sẽ rất thuận lợi khi giao thức T=1 đƣợc dùng để hỗ trợ đa kết nối logic (multile logical connection) giữa thẻ và đa điểm kết nối ứng dụng (multiple application connection points) trên thiết bị đầu cuối. Khi đƣợc sử dụng, NAD chứa hai trƣờng:

SAD (địa chỉ nguồn) đƣợc xác định bởi 3 bit thấp của NAD byte;

DAD (địa chỉ đích) đƣợc xác định bởi bit 5 đến bit 7 của byte NAD.

 Thành phần PCB đƣợc dùng để xác định loại khối (3 loại khối). 2 bit cao của byte PCB đƣợc dùng để định nghĩa các loại này: 1 bit cao đƣợc đặt bằng 0 xác định khối thông tin, 2 bit cao đƣợc đặt bằng 1 xác định khối giám sát, 1 bit cao đƣợc đặt bằng 1 và bit tiếp theo đƣợc đặt bằng 0 xác định khối sẵn sàng nhận.

 Trƣờng LEN có chiều dài 1 byte xác định chiều dài của trƣờng thông tin. Giá trị của nó có thể từ „00‟ tới „FE‟. Giá trị „FF‟ đƣợc dành cho việc mở rộng sau này.

Trƣờng thông tin

 Trƣờng thông tin phục vụ nhƣ là một nơi chứa cho dữ liệu của tầng ứng dụng. Nội dung của trƣờng này đƣợc chuyển đi hoàn toàn rõ ràng. Điều này có nghĩa là nội dung đƣợc trực tiếp chuyển đi bởi các giao thức truyền thông mà không cần một sự phân tích và đánh giá nào. Trong khối giám sát, trƣờng thông tin vận chuyển dữ liệu cho giao thức truyền thông. Đây là trƣờng hợp duy nhất nội dung của trƣờng này đƣợc dùng bởi tầng vận chuyển (transport layer).

Trƣờng kết thúc

 Trƣờng kết thúc nằm phía cuối cùng của khối, chứa các mã phát hiện lỗi đƣợc tính toán từ tất cả các byte trƣớc trong khối. Các phƣơng pháp phát hiện lỗi đƣợc sử dụng có thể là LRC (longitudinal redundancy check) hoặc CRC (cyclic redundancy check). Phƣơng pháp sử dụng đƣợc đặc tả trong ký tự giao diện của ATR. Nếu không đƣợc đặc tả trong ATR, quy ƣớc phƣơng pháp LRC sẽ đƣợc sử dụng.

1.2.2.3. Giao thức tầng ứng dụng

Khi giao thức tầng liên kết dữ liệu đƣợc thiết lập, giao thức tầng ứng dụng (sử dụng giao thức tầng liên kết dữ liệu để trao đổi dữ liệu giữa ứng dụng trên thẻ với ứng dụng trên thiết bị đầu cuối) có thể đƣợc định nghĩa.

Phần mềm ứng dụng trên thiết bị đầu cuối và thẻ trao đổi thông tin với nhau bằng cách sử dụng giao thức tầng ứng dụng. Giao thức này dựa trên một cấu trúc khối gọi là

Một phần của tài liệu Nghiên cứu tích hợp bài toán nhận dạng vân tay với ứng dụng thẻ thông minh (Trang 26)