Chương 1 TỔNG QUAN VỀ THẺ THÔNG MINH
1.2. CẤU TẠO THẺ THÔNG MINH
1.2.3. Cấu trúc file
Hệ thống file trong thẻ thông minh đƣợc ghi vào bộ nhớ không thay đổi (nonvolatile memory) trên thẻ, thƣờng là EEPROM. Hệ thống file của thẻ thông minh theo chuẩn ISO/IEC 7816-4 là một cấu trúc thứ bậc (hierarchical structure) tƣơng đối đơn giản, gồm 3 thành phần chính:
Thành phần File chủ MF (master file)
Thành phần File chuyên dụng DF (dedicated file)
Thành phần File cơ bản EF (elementary file)
Thành phần MF là gốc của cấp bậc file (file hierarchy) và chỉ có duy nhất một MF trên một thẻ thông minh. Một MF có thể chứa một hoặc nhiều DF và có thể chứa từ không đến nhiều EF. Thành phần DF thực chất là nơi chứa đựng thành phần EF. Một DF có thể chứa từ không đến nhiều EF. Thành phần EF có thể chứa duy nhất một bản ghi.
Hệ thống file của thẻ thông minh có một số đặc điểm khác với các cấu trúc file thông thƣờng. Sự khác biệt này là do đặc tính vật lý của hệ thống bộ nhớ EEPROM: bộ nhớ EEPROM chỉ có thể viết và xoá một số lần nhất định, thời gian để ghi vào EEPROM theo kiểu tích luỹ nhanh hơn nhiều so với việc ghi theo kiểu thông thƣờng. Đặc tính đầu tiên dẫn đến một định nghĩa cấu trúc file khác: file tuần hoàn (cyclic file). Đặc tính thứ hai dẫn đến các định nghĩa khác nhau của các lệnh ghi file.
1.2.3.1. File chủ (Master file)
Mỗi hệ thống file của thẻ thông minh chỉ có duy nhất một file chủ MF. MF là gốc (root) của cấu trúc file cấp bậc. Nó đƣợc chọn một cách ngầm định sau khi thẻ thông minh đƣợc reset. MF chứa tất cả các thƣ mục khác và tất cả các file. Nó là một loại đặc biệt của file DF.
1.2.3.2. File chuyên dụng (Dedicated file)
File DF xuất hiện ở phía dƣới file MF. File DF thƣờng đƣợc gọi là „file thƣ mục‟. DF là một thƣ mục trong đó các file khác (file DF và MF) đƣợc nhóm lại với nhau. Một file DF có thể chứa nhiều file DF khác. Về nguyên tắc, không có giới hạn số bậc của DF. Tuy nhiên trong thực tế, hiếm khi có hơn 2 cấp bậc file DF dƣới MF vì giới hạn về mặt bộ nhớ.
1.2.3.3. File cơ bản (Elementary file)
File EF là nút của cấu trúc file cấp bậc. Nó là file chứa dữ liệu. File EF luôn chỉ có một cấu trúc file trong (internal file structure). Đây là điểm khác biệt chính giữa file EF và file trong PC (có cấu trúc file trong đƣợc xác định bởi ứng dụng). Có 2 dạng khác nhau của EF: EF trong(internal EF) và EF hoạt động (working EF).
EF hoạt động: Dữ liệu ứng dụng phải đƣợc đọc và ghi từ Terminal, hay nói cách khác, tất cả dữ liệu cho thế giới bên ngoài (nhìn từ thẻ thông minh) đƣợc lƣu trong EF hoạt động. Hệ điều hành không sử dụng những dữ liệu này.
EF trong: Bên cạnh EF hoạt động, cũng có hệ thống file trong (internal file system) chứa những dữ liệu cần thiết cho hệ điều hành, dữ liệu cần cho việc thực hiện các ứng dụng, khoá bí mật, và mã chƣơng trình. Những file này có thể đƣợc tích hợp vào hệ thống quản lý file theo hai cách.
Cách thứ nhất là lƣu trữ những file này trong các ứng dụng DF thích hợp nhƣ những file không nhìn thấy (invisible file). Những file này không thể lựa chọn đƣợc và chúng đƣợc quản lý bởi hệ điều hành thẻ thông minh. Cách thứ hai là những file hệ thống này đƣợc gán những tên thông thƣờng và có thể đƣợc chọn bởi những tên này. Có bốn dạng khác nhau của file EF :
File trong suốt (transparent file)
File bản ghi tuyến tính, chiều dài cố định (linear, fixed length record file)
File bản ghi tuyến tính, chiều dài thay đổi (linear, variable length record file)
File rõ ràng có thể đƣợc xem nhƣ là một chuỗi các byte. Khi một lệnh đƣợc dùng để đọc hoặc ghi thông tin từ file rõ ràng, cần phải cung cấp khoảng cách byte (byte offset) (từ điểm bắt đầu của file) đối với byte cụ thể (trong phạm vi file rõ ràng) để việc đọc và ghi có thể bắt đầu.
Hình 18. Cấu trúc file trong suốt
File bản ghi có chiều dài cố định hoặc biến đổi, nhƣ tên gọi của nó, là file chứa các phần chia nhỏ gọi là bản ghi. Các bản ghi (trong một file) đƣợc định danh bởi một chuỗi số. Trong file bản ghi có chiều dài cố định, tất cả các bản ghi có cùng một số lƣợng byte.
Hình 19. Cấu trúc file tuyến tính, chiều dài cố định
Trong file bản ghi có chiều dài thay đổi, các bản ghi có số lƣợng byte khác nhau.
Hình 20. Cấu trúc file tuyến tính, chiều dài biến đổi
Cấu trúc file tuần hoàn dựa trên cấu trúc file tuyến tính chiều dài cố định nên cũng chứa các bản ghi có cùng chiều dài. File tuần hoàn luôn có một con trỏ trỏ tới vị trí bản ghi đƣợc ghi mới nhất. Nếu con trỏ trỏ tới vị trí bản ghi cuối cùng trong file, hệ điều hành sẽ tự động điều chỉnh cho nó trỏ tới vị trí của bản ghi đầu tiên khi lần ghi tiếp theo đƣợc thực hiện.
Hình 21. Cấu trúc file tuần hoàn
1.2.3.4. Tên File
Trong các hệ điều hành thẻ thông minh hiện đại, file đƣợc đánh địa chỉ bởi tên logic thay vì tên vật lý. Với các ứng dụng đơn giản chiếm giữ các vùng bộ nhớ đƣợc định nghĩa chính xác, truy cập vật lý trực tiếp có thể tiết kiệm rất nhiều không gian nhớ. Tuy nhiên, truy cập vật lý trực tiếp không phù hợp với chuẩn thiết kế phần mềm hiện đại và nó cũng gây ra khó khăn cho việc phát triển phần mềm cũng nhƣ với bộ xử lý thẻ thông minh có các không gian địa chỉ khác nhau. Các mô hình sử dụng tên file logic đều tốt hơn và đặc biệt là dễ mở rộng hơn.
Định danh file (FID-File Identifier)
Mọi file bao gồm cả file thƣ mục đều có 2 byte FID dùng để chọn file. FID của file MF là „3F00‟. Đây là định danh dành riêng cho file MF. Bảng 3 thể hiện một số định danh dành riêng cho các file theo chuẩn ISO/IEC 7816-4
FID Mục đích
„2F00‟ Dành riêng cho EFDIR file , dùng để lƣu định danh ứng dụng (AID-application identifier) và đƣờng dẫn của ứng dụng liên quan.
„2F01‟ Dành riêng cho EFATR, chứa phần mở rộng của ATR „3F00‟ Dành riêng cho file MF
Bảng 5. Một số định danh file dành riêng
Các FID trong cây thƣ mục phải đƣợc chọn sao cho không có sự nhầm lẫn khi chọn file. Vì vậy không thể có hai file có cùng số FID trong cùng một thƣ mục DF. DF cũng không thể có cùng FID với FID của file EF dƣới nó vì hệ điều hành sẽ phải quyết định chọn DF trƣớc hay là EF.
Định danh file ngắn (SFI):
Định danh file ngắn có thể đƣợc sử dụng cho việc chọn ngầm file trong ngữ cảnh tức thời của lệnh. Định danh file ngắn là không bắt buộc đối với file EF, vì vậy nó không cần đƣợc gán. Một SFI đƣợc truyền nhƣ tham số lệnh cho việc chọn ngầm file và có chiều dài là 5 bit. Do đó nó có thể có giá trị từ 1 tới 30 vì giá trị 0 là chỉ file EF hiện tại.
Tên DF:
DF chứa một tuyển tập các file đƣợc dùng bởi một ứng dụng cá nhân. DF là một dạng của thƣ mục. Nó có thể chứa cả EF và DF. Trong tƣơng lai, không gian địa chỉ đƣợc cung cấp bởi 2 byte FID trở nên quá nhỏ. Do đó, mỗi DF đều có „tên DF‟ cùng với FID của nó. Theo chuẩn ISO/IEC 7816-4, tên DF có chiều dài từ 1 đến 16 byte. Tên DF cung cấp một không gian tên đủ lớn để mọi ứng dụng thẻ thông minh trên thế giới có thể đƣợc định danh rõ ràng. Vì tên DF đƣợc chọn một cách tự do nên có trƣờng hợp 2 DF khác nhau lại có cùng tên DF. Do đó DF thông thƣờng đƣợc sử dụng cùng với AID. AID có thể có chiều dài từ 5 đến 16 byte và gồm 2 thành phần dữ liệu đƣợc định nghĩa bởi ISO. AID do đó là một tập con của tên DF.
Hình 22. Tên DF trong mối quan hệ với AID
Cấu trúc của Định danh ứng dụng AID (Application Identifier):
Định danh ứng dụng gồm 2 thành phần dữ liệu. Thành phần dữ liệu đầu tiên là định danh đăng ký RID (registered identifier), có chiều dài cố định là 5 byte. Nó đƣợc chỉ định bởi chính quyền đăng ký quốc gia hoặc quốc tế, bao gồm mã nƣớc, loại ứng dụng và con số liên quan đến nhà cung cấp ứng dụng. Mã số RID do đó chỉ đƣợc chỉ định một lần duy nhất, vì vậy nó có thể đùng để định danh ứng dụng cụ thể. Trƣờng RID là bắt buộc. Nếu cần, nhà cung cấp ứng dụng có thể thêm phần mở rộng định danh ứng dụng độc quyền PIX (proprietary application identifier extension) sau RID. PIX có thể có đến 11 byte. Nó có thể chứa số seri hoặc số phiên bản dùng để đặt tên ứng dụng.
1.2.3.5. Lựa chọn File
Hệ thống quản lý file đòi hỏi một file phải đƣợc chọn trƣớc khi nó có thể đƣợc truy cập. Việc chọn một file thành công sẽ làm cho file đƣợc chọn trƣớc đó trở thành không có hiệu lực. Điều này có nghĩa là chỉ có một file duy nhất đƣợc chọn tại một thời điểm. Vì FID có thể đƣợc chọn một cách tuỳ ý, nên có thể xảy ra trƣờng hợp các file có cùng số FID nằm dƣới cùng một cây file. Hệ điều hành sẽ phải quyết định nên chọn file nào.
Chọn thƣ mục (file MF và DF):
File MF có thể đƣợc chọn từ bất kỳ đâu trong cây file, hoặc là bằng tuỳ chọn đặc biệt của lệnh chọn file hoặc là sử dụng số FID (3F00) chỉ có duy nhất trong cây file. File MF đƣợc mặc định chọn bởi hệ điều hành khi thẻ đƣợc reset. DF có thể đƣợc chọn thông qua số FID hoặc thông qua tên DF.
Chọn tƣờng minh file EF:
Với việc chọn tƣờng minh file EF, một lệnh cụ thể (SELECT COMMAND) đƣợc gửi tới thẻ trƣớc khi việc truy cập thực sự vào file có thể đƣợc thực hiện. Lệnh này chứa tham số lƣu giữ giá trị FID của file EF. Sau khi một file đƣợc chọn, nó có thể đƣợc truy cập bởi các lệnh tiếp theo.
Chọn ngầm file EFL:
Trong chọn ngầm file, một file EF sẽ đƣợc chọn thông qua định danh file ngắn SID đƣợc gửi nhƣ là một tham số của một lệnh truy cập file. Việc chọn ngầm file EF có một số giới hạn. Nó chỉ làm việc với những file EF trong file DF hoặc MF đang đƣợc chọn. Nó không thể chọn một file nằm ngoài thƣ mục hiện tại. Thêm vào đó, việc chọn ngầm file chỉ thực hiện đƣợc với một số lệnh truy cập mà cho phép định danh file ngắn SID đựoc tryền nhƣ một tham số. Ƣu điểm lớn nhất của việc chọn ngầm file là nó cho phép một file có thể đƣợc chọn và truy cập chỉ với một lệnh đơn.
Chọn file sử dụng tên đƣờng dẫn:
Cùng với việc chọn trực tiếp file, chuẩn ISO cũng cho phép 2 phƣơng pháp chọn tƣờng minh file sử dụng tên đƣờng dẫn. Trong phƣơng pháp thứ nhất, đƣờng dẫn từ file đƣợc chọn hiện tại tới file đích đƣợc đƣa đến hệ điều hành. Phƣơng pháp thứ hai dùng đƣờng dẫn từ file MF đến file đích. Cả hai phƣơng pháp đều đƣợc thực hiện trong nhiều hệ điều hành thẻ thông minh.
1.2.3.6. Điều kiện truy xuất file
Tất cả các file đều chứa thông tin điều khiển việc truy cập vào chúng. Các thông tin này luôn luôn đƣợc ghi ở phần đầu của file. Toàn bộ tính bảo mật của việc quản lý file trong thẻ thông minh dựa trên việc quản lý các quyền truy cập file vì những quyền này tạo cơ sở cho việc điều khiển truy cập file.
Những điều kiện truy cập file đƣợc định nghĩa khi file đƣợc tạo ra và sau đó chúng thƣờng không sửa đƣợc. File MF và DF không lƣu trữ thông tin liên quan tới việc truy cập dữ liệu (quyền đọc hay ghi). Thay vào đó các điều kiện truy cập cho việc tạo file đƣợc lƣu trữ cùng với các thông tin khác. Tuỳ thuộc vào từng loại file, các điều kiện truy cập khác có thể đƣợc luu trữ. Đối với file EF, những thông tin này là những điều kiện liên quan tới việc truy cập nội dung file, còn đối với file MF và DF, đó là những điều kiện đƣợc dùng trong cấu trúc tổ chức.
Có thể chia các điều kiện truy cập file thành 2 loại: các điều kiện truy cập hƣớng trạng thái (state-oriented) và các điều kiện truy cập hƣớng lệnh (command-oriented).
Điều kiện hƣớng trạng thái:
Trạng thái an ninh hiện tại đƣợc so sánh với điều kiện truy cập tƣơng ứng của file sử dụng phép so sánh logic. Có 2 lựa chọn cho trạng thái anh ninh hiện tại: trạng thái an ninh toàn cục và trạng thái an ninh cục bộ. Trạng thái an ninh toàn cục là trạng thái an ninh của MF, tức là trạng thái của thẻ thông minh nói chung. Trạng thái an ninh cục bộ là trạng thái của thƣ mục đƣợc chọn hiện tại, tức là trạng thái của DF hoặc trạng thái của thƣ mục trên DF. Trạng thái an ninh toàn cục và trạng thái an ninh cục bộ đều có thể đựơc thay thế sau khi thực hiện thành công việc định danh và xác thực bằng cách sử dụng các khoá. Khi việc truy cập file đƣợc yêu cầu, một hàm so sánh logic đƣợc dùng để so sánh trạng thái hiện tại với các trạng thái đƣợc chỉ rõ trong file -các điều kiện truy cập. Nếu việc so sánh thành công, file đó sẽ đƣợc truy cập.
Điều kiện hƣớng lệnh:
Các lệnh phải đƣợc thực hiện một cách đúng đắn trƣớc khi truy cập. Điều này liên quan chủ yếu đến các lệnh định danh và xác thực. Các bảng truy cập trong file sẽ chứa các lệnh phải đƣợc thực hiện thành công cho mỗi loại truy cập. Trong nhiều trƣờng hợp, các lệnh còn đƣợc gán thêm các khoá. Ví dụ các điều kiện cho việc đọc file đòi hỏi phải có trƣớc một định danh của ngƣời dùng bằng cách dùng lệnh VERIFY và số PIN. Trong trƣờng hợp này, các file chỉ có thể đọc sau khi lệnh này đƣợc thực hiện thành công.