Chương 1 Tổng quan về công nghệ RFID
1.3 Giao thức thẻ RFID
1.3.3 Thuật giải chống va chạm
Đầu đọc nhận dạng nhiều thẻ trong cùng một lúc. Khi có nhiều thẻ trong vùng tra hỏi của đầu đọc, tất cả thẻ sẽ gửi dữ liệu cùng một lúc và gây ra sự giao thoa, từ đó
SVTH : Lê Thanh Tú Trang 55 sẽ làm mất dữ liệu và hiện tượng đụng độ xảy ra. Có nhiều phương pháp khác nhau để hạn chế sự đụng độ này nhưng các phương pháp này đảm bảo chỉ một thẻ “nói” (talk) tại một thời điểm.
Ta có thể phân loại phương thức liên lạc giữa đầu đọc và thẻ thành Tag Talks First (TTF) hay Reader Talks First (RTF). Đơn giản nhất là thẻ thông báo sự hiện diện của nó cho các bên liên quan. Tuy nhiên trong thực tế, điều này là vấn đề khó khăn nếu các thẻ không dàn xếp thẻ nào “nói” trước. Một số thẻ tích cực high-end (có giới hạn lớn) dùng giao thức truyền TTF nhưng một số thẻ smart label rẻ tiền và các thẻ thụ động thường dùng giao thức RTF. Trong phần này, ta nghiên cứu giao thức phổ biến dùng trong RFID: Adaptive Binary Tree, Slotted Aloha, và chuẩn giao thức EPC thế hệ 2 mới.
1.3.3.1 Cây nhị phân thích ứng (Adaptive Bunary tree)
Thuật giải cây nhị phân dựa trên mô hình cây như hình bên dưới. Đầu tiên chia thẻ thành 2 tập con, tập các số 0 và tập các số 1. Truy vấn tập các số 0 trước, nếu không có xung đột thì thẻ được nhận dạng chính xác; nếu vẫn còn xung đột, tiếp tục chia tập số 0 thành tập con: tập số 00 và tập số 01 cho đến khi tất cả các thẻ trong tập 0 đều được nhận dạng. Sau đó lặp lại thủ tục truy vấn này cho tập các số 1.
Thuật giải nhị phân gồm nhiều vòng. Ở mỗi vòng, đầu đọc truyền một lệnh truy vấn và thẻ đáp ứng cùng với mã nhận dạng. Lệnh truy vấn có một tiền tố (prefix), chỉ thẻ có ID trùng với prefix này mới đáp ứng lệnh truy vấn đó. Khi đó đầu đọc nhận dạng chính xác thẻ. Khi có nhiều hơn một thẻ trả lời, va chạm xảy ra và đầu đọc không thể nhận dạng. Tuy nhiên, đầu đọc biết sự tồn tại của thẻ có ID phù hợp với prefix đó.
Sau đó, đầu đọc thử lại truy vấn có prefix dài hơn 1-bit (with 1-bit longer prefix) ở vòng lặp tiếp theo. Bằng việc mở rộng prefix, đầu đọc có thể nhận dạng hết các thẻ.
SVTH : Lê Thanh Tú Trang 56 Hình 1-3-5: Cây nhị phân
Ta có thể hình dung thuật giải như sau: khi bắt đầu ta không có thông tin. Đầu đọc gửi một truy vấn “Có thẻ nào có mã nhận dạng có bit 1 như là MSB không?” Tất cả thẻ trả lời là “không” thì ngừng đáp ứng. Nếu thẻ trả lời “có” thì hỏi câu truy vấn tương tự cho bit tiếp theo. Thẻ tiếp tục bị thu hẹp dần cho đến khi chỉ còn một thẻ đáp ứng. Đầu đọc cũng thu hẹp để còn một thẻ mà không hỏi hết về mã ID mặc dù có thể đi đến tận bit cuối trong trường hợp xấu nhất.
1.3.3.2 Slotted Aloha
Aloha là giải thuật chống đụng độ đơn giản dựa trên phương thức TDMA (Time Division Multiple Access). Khi thẻ vào vùng tra hỏi của đầu đọc, ngay lập tức thẻ sẽ truyền dữ liệu và khi có nhiều hơn một thẻ hưởng ứng tại cùng một thời điểm, va chạm xảy ra. Vì vậy, điểm bất lợi của Aloha chính là khả năng xảy ra va chạm cao.
Slotted Aloha là một trong những phiên bản cải tiến của thuật giải Aloha – được Norman Abramson của Aloha Networks ở Hawaii phát triển vào những năm 1970.
Slotted Aloha dùng phương thức TDMA, nó phân chia thời gian thành nhiều khe và thẻ gửi dữ liệu vào một trong những khe được chọn. Giải thuật này làm giảm khả năng đụng độ nhưng đầu đọc và thẻ phải truyền đồng bộ. Khi chỉ có một thẻ nằm trong một khe, đầu đọc tra hỏi thẻ và yêu cầu thông tin chính xác. Nhờ vào giới hạn số lượng khe, giải thuật này chỉ áp dụng trong các trường hợp cho một thẻ thẻ nằm trong vùng đọc.
Slotted Aloha dùng 3 lệnh hỗ trợ thẻ: REQUEST, SELECT, và READ. Lệnh REQUEST xác định mốc thời gian bất kỳ thẻ nào có mặt trong vùng đọc đồng thời chỉ thị nhiều khe có sẵn dùng cho các thẻ. Mỗi thẻ chọn một trong những khe đó dựa trên
SVTH : Lê Thanh Tú Trang 57 số tùy chọn của đầu đọc, chúng chọn ngẫu nhiên khoảng thời gian chờ trước khi đáp ứng REQUEST. Đầu đọc nhận ID chính xác mà không có va chạm trong khe thời gian nào đó rồi dùng lệnh SELECT để chọn ID phù hợp. Khi thẻ có ID phù hợp, đầu đọc đưa ra lệnh READ để thẻ đáp ứng bằng cách gửi dữ liệu đến đầu đọc rồi đầu đọc phát lệnh REQUEST.
Hình 1-3-6: Sơ đồ trạng thái đầu đọc trong giải thuật Slotted Aloha
Số lượng khe càng ít việc đọc càng nhanh nhưng nhiều thẻ có nghĩa là nhiều khe thì va chạm ít xảy ra hơn. Đầu đọc làm tăng tổng số khe nếu REQUEST bị đụng độ và tiếp tục yêu cầu lệnh REQUEST cho đến khi nhận chính xác ID mà không có va chạm xảy ra. Đầu đọc cũng dùng lệnh BREAK để yêu cầu thẻ chờ. Trong quá trình thực hiện, thẻ bước vào trạng thái SLEEP (còn gọi là DORMANT hay MUTE) khi đọc xong và cho các thẻ có nhiều cơ hội được chọn đọc nhiều hơn.
SVTH : Lê Thanh Tú Trang 58 Hình 1-3-7: Sơ đồ trạng thái thẻ trong giải thuật Slotted Aloha
Ta xét ví dụ sau để hiểu về giải thuật Slotted Aloha. Giả sử có 1 đầu đọc và 3 thẻ dùng giao thức có câu lệnh BREAK và SLEEP. Hình dung ta có 4 diễn viên: một đóng vai trò đầu đọc và người khác đóng vai trò thẻ 1, thẻ 2, thẻ 5
Bắt đầu ở phòng trống, một đồng hồ lớn giữa phòng chỉ thời gian hiện tại tính bằng mili-giây. Đầu đọc đặt ở bục và thẻ bước vào từ cửa bên trái.
Đầu đọc: Có ai ở đây không? Bây giờ là thời gian t. Tôi có các khe t + 10, t + 20, t + 30, t + 40 và t + 50. Vui lòng trả lời.
(thẻ 1, 2, 5 bước vào) Thẻ 1: chọn t + 40 Thẻ 2: chọn t + 20 Thẻ 5: chọn t + 10 Đồng hồ đánh t + 10 Thẻ 5: số 5!
Đầu đọc: Hãy yên lặng! Tôi chọn số 5
(tất cả các thẻ lắc đầu ngoại trừ thẻ 5 nhưng vẫn im lặng.) Thẻ 5: có tôi! Tôi là số 5!
Đầu đọc: Bạn có dữ liệu để chia sẻ không, số 5?
Thẻ 5: FFF1305000181CB50C8000001070, tôi là số 5!
Đầu đọc: àh, giờ số 5 hãy im lặng giúp nhé. Còn ai nữa không? Bây là thời gian t. Tôi có các khe t + 10, t + 20, t + 30, t + 40 và t + 50. Vui lòng trả lời.
SVTH : Lê Thanh Tú Trang 59 Thẻ 5 im lặng vì thẻ 1 và thẻ 2 đang được chọn. Đầu đọc cho biết kết thúc của một khe bằng một tín hiệu được gọi là “slot marker”. Giao thức chống va chạm dùng tín hiệu “slot marker” được gọi là giao thức slot marker. Slot marker của giao thức Slotted Aloha cũng hoạt động như mô tả như trên nhưng kết thúc một khe được báo bởi một tín hiệu chứ không phải là thời gian thiết lập. Điều này cho phép một số khe dài hơn khe khác và mỗi khe có nhiều cơ hội đọc hơn.
1.3.3.3 Giao thức EPC lớp 1 thế hệ 2
Phiên bản mới nhất của EPC UHF lớp 1 được gọi là giao thức thế hệ 2. Giao thức này khắc phục một số giới hạn của chuẩn giao thức UHF trước bằng cách định nghĩa một số giao thức biến đổi để cho phù hợp với chuẩn Châu âu (CEPT) và Bắc Mỹ (FCC). Trong một phút, đầu đọc đọc được 1600 thẻ (đối với chuẩn Bắc Mỹ) và 600 thẻ (đối với Châu Âu). Một điều đáng chú ý của phiên bản này là thêm vào vấn đề bảo mật. Chủ yếu của Gen2 là nhận diện tín hiệu đầu đọc gửi đi với khoảng cách lớn hơn nhiều tín hiệu của thẻ.
Giao thức này có 3 thủ tục giao tiếp giữa đầu đọc và thẻ. Đầu đọc chọn thẻ bằng cách yêu cầu thẻ so sánh với bitmask của chính nó hay kiểm thẻ bằng singulate thẻ cho đến khi đầu đọc đọc thẻ trong phạm vi đọc. Đầu đọc có thể đọc thông tin của thẻ, ghi thông tin lên thẻ, hủy hoạt động của thẻ hay thiết lập trạng thái lock cho các vùng bộ nhớ khác nhau nhờ vào memory bank number.
Bitmask
Giao thức thế hệ 2 mô tả một số đặc tính về thuật ngữ bitmask. Bitmask là một dãy bit dùng để phân biệt với dãy bit khác thông qua toán tử “|” (OR), “&” (AND), “~”
(NOT), “^” (XOR). Trong giao thức Gen2, có 2 vấn đề cần quan tâm. Thứ 1, Gen2 dùng bitmask để so sánh các giá trị trong bộ nhớ thẻ với câu lệnh Select. Thứ 2, cách Gen2 dùng bimask như là một mã bao phủ (cover code) để bảo vệ thông tin trong quá trình truyền giữa đầu đọc và thẻ. Một yêu cầu Req_RN từ đầu đọc, thẻ tạo ra một số 16-bit ngẫu nhiên và gửi nó đến đầu đọc. Thẻ truyền ở năng lượng thấp, vì vậy chỉ máy nhận có thể nhận thông tin này. Sau đó đầu đọc dùng một số 16-bit để XOR với block dữ liệu rồi gửi ngược về thẻ. Ví dụ nếu đầu đọc gửi block dữ liệu tương đương với 0xAFAF và một số ngẫu nhiên từ thẻ là 0x7E21, đầu đọc làm phép tính sau:
0xAFAF ^ 0x7E21 = 0xD18E hay
SVTH : Lê Thanh Tú Trang 60 1101 0001 1000 1110 = 0xD18E
Sau đó, đầu đọc gửi 0xD18E đến thẻ. Thẻ trả lời và dùng phép XOR với cover code để kiểm tra: 0xD18E ^ 0x7E21 = 0xAFAF. Đầu đọc gửi dữ liệu này dưới dạng mật mã trên một tín hiệu liên quan, điều này giúp bảo mật dữ liệu. Bộ giám sát (observer) xác định dữ liệu gửi đến thẻ cần biết cover code để nhận dữ liệu và để làm điều này nó cần có cover code khi nó truyền dữ liệu thông qua giao thức backscatter từ thẻ.
1.3.3.3.1 Bộ nhớ thẻ
Gen2 nhận diện vùng bộ nhớ tùy chọn của người dùng và mã thẻ dựa vào CRC và EPC được gọi chung là nhận dạng đối tượng OID (Object Identifer). Mỗi vùng nhớ được tổ chức dưới dạng địa chỉ ô nhớ (addressable bank) và các lệnh đọc ghi chọn một địa chỉ ô nhớ (bank address) để lấy bank nào có hoạt động tác động. Mỗi thẻ có một mã truy cập. Bất kỳ đầu đọc nào cũng có lệnh chọn bank chỉ để dùng bank đó. Để chuyển bank, đầu đọc phải tạo ra một lệnh mới.
Bank Chi tiết
00 Dành riêng (password truy cập, mã kill, các bit giao thức…)
01 OID (CRC+EPC)
10 TID (Tag manufacturer's ISO 15693 serial number) 11 User
Bảng 1-3-5: Các bank nhớ thẻ 1.3.3.3.2 Trạng thái thẻ
Ready: thẻ chờ khi không được kiểm tra
Arbitrate: thẻ chờ khi là phần của bảng kiểm tra nhưng vẫn chưa ở khe zero.
SVTH : Lê Thanh Tú Trang 61
Reply: thẻ ở trạng thái này, nó tạo ra một số ngẫu nhiên 16-bit và gửi số này đến đầu đọc. Nếu nó nhận ACK gửi trả về, thẻ ở trạng thái Acknowledge, ngược lại nó ở trạng thái Arbitrate
Acknowledge: thẻ có thể chuyển thành trạng thái bất kỳ ngoại trừ trạng thái kill
Open: nếu thẻ có nonezero password ở trạng thái này khi nó từ Acknowledge và nhận Req_RN từ đầu đọc. Thẻ ở trạng thái này có thể chuyển thành trạng thái bất kỳ ngoại trừ trạng thái Acknowledge.
Secured: thẻ có password zero ở trạng thái này khi nó nhận Req_RN trong khi ở trạng thái Acknowledge và thẻ có nonezero password ở trạng thái này từ trạng thái Open khi nó lệnh Access. Thẻ ở trạng thái này có thể chuyển sang trạng thái bất kỳ ngoại trừ trạng thái Open hay Acknowledge.
Killed: khi thẻ ở trạng thái này, nó gửi một yêu cầu đáp ứng thành công đến đầu đọc và sau đó nó thẻ hủy thẻ và thẻ sẽ không đáp ứng một yêu cầu nào của đầu đọc lần nữa.
Hình 1-3-8: Sơ đồ trạng thái giao thức Gen2
SVTH : Lê Thanh Tú Trang 62 cờ này có giá trị A hoặc B.
Đầu đọc làm việc ở phiên zero không thể biết giá trị của 3 phiên còn lại nhưng nếu đầu đọc đưa ra cảnh báo về giá trị khác của thẻ hay nếu khóa bank OID thì sẽ ảnh hưởng đến tất cả các phiên.
Trong quá trình kiểm, đầu đọc dùng giải thuật Slotted Random Anticollision.
Cũng như tên gọi, giải thuật này dùng các khe để xác định khi nào thẻ đáp ứng đầu đọc nhưng không giống như giải thuật Slotted Aloha, thẻ chọn một khe cho chính nó bằng cách thiết lập bộ đếm số ngẫu nhiên 16-bit ở lúc bắt đầu kiểm tra vòng và giảm đếm cho đến khi bằng zero. Khi khe thẻ bằng zero, nó sẽ gửi số 16-bit ngẫu nhiên đó đến đầu đọc. Sau đó đầu đọc dùng số này để đánh dấu các block trong khi giao tiếp với thẻ.
Do đó cần có cơ chế mã hóa trong quá trình giao tiếp giữa đầu đọc và thẻ. Quá trình giao tiếp giữa thẻ và đầu đọc vẫn không mã hóa nhưng được truyền ở mức năng lượng thấp hơn. Các lệnh kiểm tra như sau:
Query: đầu đọc kiểm tra thẻ bằng lệnh Query, dùng để xác định phiên làm việc và số khe. Thẻ tạo ra số ngẫu nhiên và dùng số này để xác định khe nào cần dùng cho các yêu cầu. Thẻ có khe zero sẽ ở trạng thái Reply trong khi thẻ khác ở khe còn lại sẽ ở trạng thái Arbitrate.
Query Adjust: chuyển đổi số khe theo vòng. Lệnh Query Adjust có thể thêm khe vào số lượng khe đã có, trừ đi một khe trong những khe đó hay giữa nguyên số khe. Thẻ tạo ra những số ngẫu nhiên và chọn những khe ngẫu nhiên. Thẻ mà chọn khe zero sẽ có trạng thái Reply trong khi thẻ khác ở khe còn lại sẽ ở trạng thái Arbitrate.
QueryRep: khi đầu đọc đưa ra lệnh này, thẻ giảm số khe. Nếu việc đếm bằng zero, thẻ vào trạng thái Reply, ngược lại thẻ ở trạng thái Arbitrate.
ACK: đầu đọc gửi đáp ứng thẻ cùng với một ACK. Nếu thẻ ở trạng thái Reply hay Acknowledged, thì reply là một số ngẫu nhiên 16-bit gửi cho thẻ khi nó chuyển từ trạng thái Arbitrate sang trạng thái này. Nếu thẻ ở trạng thái Open hay Secure, ACK 16-bit cho biết đã gửi.
SVTH : Lê Thanh Tú Trang 63
NAK: đầu đọc gửi NAK chiều dài 8-bit có giá trị 0xC0. Khi thẻ nhận NAK, nó trả về trạng thái Arbitrate nếu nó không ở trạng thái Killed hay Ready
1.3.3.3.4 Lệnh select
Lệnh này cho phép đầu đọc thay đổi nội dung bộ nhớ thẻ, đọc dữ liệu từ bộ nhớ, khóa các bank nhớ, hủy thẻ hay yêu cầu một số ngẫu nhiên 16-bit do thẻ tạo ra. Đầu đọc chỉ dùng các lệnh truy cập cho một thẻ. Các lệnh truy cập có các dữ liệu như password, ID, hay bộ nhớ người dùng từ đầu đọc đến thẻ. Chuẩn Gen2 hỗ trợ các lệnh truy cập sau cho cả đầu đọc và thẻ
Req_RN: yêu cầu số ngẫu nhiên từ thẻ.
Read: đọc dữ liệu từ ô nhớ nào đó trên thẻ.
Write: ghi dữ liệu vào ô nhớ thẻ. Trước khi ghi, đầu đọc phát đi lệnh Req_RN. Thẻ đưa ra một số ngẫu nhiên 16-bit và sau đó đầu đọc dùng số này như một cover code để bảo vệ dữ liệu được gửi trong lệnh Write. Đối với chuỗi dữ liệu dài, Req-RN được lặp lại nhiều lần nếu thấy cần thiết.
Kill: hủy thẻ. Cũng giống như lệnh Write, lúc đầu cũng yêu cầu số ngẫu nhiên 16-bit từ thẻ và dùng số này như cover code để hủy password. Khi dùng lệnh này, thẻ sẽ không thể đưa ra yêu cầu nào, tuy nhiên nếu đưa password bằng zero, thẻ không thể bị hủy và sẽ từ chối thực hiện lệnh này.
Lock: thiết lập đọc-ghi đặc quyền cho các ô nhớ hay password nào đó.
Khi dùng các lệnh đặc quyền này có thể dẫn đến “permalock” – không thể thay đổi lần nữa.
Access: nếu thẻ không thiết lập password, đầu đọc dùng lệnh access để đưa thẻ từ trạng thái Open sang Secure. Nếu thẻ ở trạng thái secure, nó vẫn ở trạng thái này. Khi lệnh này có password, nó sẽ phát ra 2 lần cùng với cover code có nghĩa là đầu đọc gửi một Req_RN, nhận cover code, dùng nó như là password đầu và sau đó lặp lại trình tự này cho password thứ 2.
BlockWrite: tương tự như lệnh Write nhưng ghi với nhiều ô nhớ 16-bit cùng lúc mà không cần cover code. Vì vậy, lệnh này không cần lặp lại từng ô nhớ một và cũng không cần yêu cầu Req_RN.
SVTH : Lê Thanh Tú Trang 64
SVTH : Lê Thanh Tú Trang 65