Truy cập File

Một phần của tài liệu Chữ ký số trong thẻ thông minh và ứng dụng xác thực (Trang 35)

1.2.5.1. Đnh danh file

Định danh được dùng đểđánh địa chỉ mỗi thư mục/file trong thẻ SIM. Định danh bao gồm hai byte và được thể hiện dưới dạng mã hexa. Byte đầu tiên của

định danh xác định kiểu thư mục/file. Định danh file cho GSM như sau: Thư mục gốc: 3F

Mức đầu tiên của thư mục chuyên dụng: 7F Mức thứ hai của thư mục chuyên dụng: 5F File cơ bản dưới mức MF: 2F

File cơ bản dưới mức DF đầu tiên: 6F File cơ bản dưới mức DF thứ hai: 4F

1.2.5.2. Các phng thc la ch n file

Các thiết bị di động được kích hoạt, thư mục gốc sẽđược chọn và trở thành thư mục hiện tại. Mỗi thư mục/file của SIM có thể được lựa chọn bởi lệnh SELECT. Có một số luật cần tuân theo để việc lựa chọn thư mục/file thành công. Từ thư mục/file hiện tại, các thư mục/file sau có thểđược lựa chọn:

Thư mục gốc (MF).

Thư mục chuyên dụng hiện tại.

Thư mục chuyên dụng mức cha của thư mục hiện tại.

Bất kỳ thư mục chuyên dụng nào là mức con liền kề của thư mục chuyên dụng cha của thư mục hiện tại.

Bất kỳ thư mục chuyên dụng nào là con của thư mục hiện tại.

Tất cả việc lựa chọn thư mục/file được thực hiện bởi dùng định danh của thư mục/file được lựa chọn

1.2.5.3. Điu kin truy cp file

Để lựa chọn một file của thẻ SIM, cần có một số điều kiện truy cập phải tuân theo. Điều kiện truy cập chỉ áp dụng cho file cơ bản, thư mục gốc và thư mục chuyên dụng không có điều kiện truy cập.

Các điều kiện truy cập được định nghĩa cho các file của SIM như sau: ALWAYS: Không có giới hạn về chức năng được thực hiện.

CHV1: Chức năng này chỉ được thực hiện khi giá trị CHV1 được nhập

đúng, hoặc CHV1 bị vô hiệu (disable), hay lệnh UNBLOCK CHV1 đã được thực hiện thành công ở bước trước.

CHV2: Được thực hiện khi giá trị CHV2 được nhập đúng, hoặc khi lệnh UNBLOCK CHV2 đã được thực hiện thành công.

ADM: Xác định thực hiện yêu cầu này là trách nhiệm có thẩm quyền quản trị.

NEVER: Những chức năng này chỉ được thực hiện bên trong SIM. Không có cách nào được thực hiện qua giao diện MÁY – SIM (ME – SIM ).

Các mức truy cập được thực hiện cho thẻ SIM: ALWAYS: mức 0

CHV1: mức 1

CHV2: mức 2

Mức 3 được dành cho tương lai.

Mức 4 đến 14 là mức cho ADM.

1.2.5.4. Lnh thao tác vi th

Tập lệnh ISO/IEC 7816-4 chia thành 2 phần chính: truy xuất file và security. Sau đây là mô tả chi tiết cho một số các lệnh cơ bản trong tập lệnh này.

o Lnh Select File

Lệnh này dùng để thiết lập một con trỏ logic tới file cần thao tác. Mọi thao tác sau này đều thông qua con trỏ logic này, có thể tạo cùng lúc nhiều con trỏ như

vậy thông qua lệnh Manage Channel bằng cách tạo ra nhiều kênh giao tiếp giữa reader và card (lưu ý là việc truy xuất hệ thống file là không đa luồng). Lệnh này phải cung cấp cho phía card thông tin xác định file cần trỏ tới, có 4 cách chỉ ra thông tin này (mặc dù không phải loại card nào cũng hỗ trợ cả): (adsbygoogle = window.adsbygoogle || []).push({});

Bằng sốđịnh danh file 2 byte Bằng tên của DF

Bằng đường dẫn: chuỗi ghép các sốđịnh danh Bằng sốđịnh danh 5 bit

o Lnh Read Binary

Lệnh này được phía reader dùng để đọc một đoạn trong file EF. File EF

được đọc phải là dạng file trong suốt, nếu cố truy xuất một file dạng bản ghi sẽ

xuất hiện lỗi. Hai tham số phía reader truyền tới là địa chỉ offset của byte bắt đầu cần đọc và số byte cần đọc và được trả về phía reader.

o Lnh Write Binary

Tương tự lệnh Read Binary, lệnh Write Binary chỉ làm việc với các file không phải kiểu bản ghi. Tùy thuộc vào thuộc tính đặt trong lệnh mà nó có thể được dùng để “dựng” một dãy các byte trong EF (đặt các bit cho trước trong một byte thành giá trị 1), “xóa” một dãy các byte trong EF (đặt các bit cho trước trong một byte thành giá trị 0) hay ghi một dãy các byte vào EF.

o Lnh Update Binary

Lệnh này cũng chỉ làm việc với các file không phải kiểu bản ghi, nó xóa một dãy các byte trong EF và ghi vào đó một dãy các byte khác có độ dài tương

đương. Các tham số truyền từ phía reader là địa chỉ offset và số byte cần ghi.

o Lnh Erase Binary

Tương tự các lệnh trên, nó chỉ làm việc với các file transparent, chức năng của lệnh là xóa một dãy các byte của EF được chỉ ra trong các tham số truyền từ

o Lnh Read Record

Lệnh này chỉ làm việc với các file bản ghi. Nếu cố gắng truy xuất tới một file transparent, lỗi sẽ xuất hiện. Chức năng của lệnh này là đọc nội dung của một hay nhiều bản ghi của EF. Tùy thuộc vào tham số truyền cùng lệnh mà nó sẽ đọc các bản ghi từ đầu tới một bản ghi cho trước, từ bản ghi cho trước tới cuối file hoặc là chỉ một bản ghi cho trước của file.

o Lnh Write Record

Lệnh Write Record chỉ làm việc với các file bản ghi, chức năng của nó hoặc là ghi một bản ghi vào EF, đặt một số bit trong một bản ghi hoặc là xóa một số bit trong một bản ghi. Các cách sau đây được dùng để chỉ ra bản ghi được ghi trong EF: bản ghi đầu tiên trong EF, bản ghi cuối cùng trong EF, bản ghi kế tiếp trong EF, bản ghi trước đó trong EF hoặc là một bản ghi cụ thể (xác định bởi một số) trong EF.

o Lnh Append Record

Lệnh này dùng để bổ sung thêm một bản ghi vào cuối file bản ghi tuyến tính hoặc ghi bản ghi đầu tiên vào một file bản ghi tuần hoàn.

o Lnh Update Record

Lệnh Update Record có chức năng xóa một bản ghi cụ thể và ghi vào đó một bản ghi khác trong EF.

o Lnh Get Data

Lệnh này được gửi bởi reader nhằm đọc nội dung một đối tượng dữ liệu nằm trên hệ thống file trên card. Do việc quy định các “đối tượng dữ liệu” thay

đổi khác nhau từng loại card nên lệnh này cũng khác nhau đối với từng loại card.

o Lnh Put Data

Tương tự lệnh Get Data, sự khác nhau duy nhất chỉ là chức năng của lệnh là ghi nội dung lên một đối tượng dữ liệu.

o Lnh Verify

Lệnh Verify được reader gửi tới hệ thống bảo mật trên card thực hiện việc kiểm tra một mật mã xem có đúng với mật mã được lưu trên card hay không. Mật mã lưu trên card thường gắn vào một file, một vài file hoặc toàn bộ hệ thống file trên card. Nếu thực hiện lệnh này thành công, ứng dụng phía reader sẽ có thể truy cập tới các file được bảo vệ bởi mật mã vừa được kiểm tra. Nếu thực hiện không thành công (mật mã không đúng với mật mã trên card), một trạng thái lỗi được gửi trả về phía reader.

o Lnh Internal Authenticate

Lệnh này được ứng dụng phía reader gửi tới card để nhận dạng card, lệnh này cho biết card có sở hữu một khóa bí mật được chia sẻ với ứng dụng phía reader hay không. Ứng dụng phía reader sẽ sinh ra một số ngẫu nhiên rồi mã hóa nó và truyền đi, phía card khi nhận được sẽ giải mã dựa vào khóa bí mật nằm trên card và gửi trả lại kết quả cho ứng dụng phía reader. Nếu kết quả trả lại đúng là số (adsbygoogle = window.adsbygoogle || []).push({});

ngẫu nhiên ban đầu mà phía reader sinh ra, lệnh được coi như thực hiện thành công, ứng dụng phía reader lúc này có thể cho phép card truy cập vào một số

thông tin và dịch vụ trong ứng dụng phía reader.

o Lnh External Authenticate

Lệnh này kết hợp với lệnh Get Challenge dùng để giúp card xác thực được

ứng dụng phía reader. Thông qua lệnh Get Challenge, ứng dụng phía reader nhận

được một sốđược sinh ra ngẫu nhiên bởi card và mã hóa nó thông qua một khóa bí mật riêng. Thông tin mã hóa được trả lại card và card sẽ dùng khóa bí mật của mình để giải mã thông tin này. Nếu số nhận được sau khi giải mã trùng với số

ngẫu nhiên mà card đã gửi đi thì nghĩa là card đã xác thực đúng ứng dụng phía reader và cho phép nó truy cập dữ liệu trên card. Trong quá trình “nhận nhau” này, khóa bí mật không hề truyền qua lại lẫn nhau giữa card và ứng dụng phía reader.

o Lnh Get Challenge

Lệnh Get Challenge như đã nói ở trên nhận về một thông tin dùng để xác thực được gửi đi từ card (thường là một số sinh ngẫu nhiên bởi card). Lệnh này thường hoạt động cùng với lệnh External Authenticate.

o Lnh Manage Channel

Lệnh này được ứng dụng phía reader mở hoặc đóng các kênh giao tiếp giữa nó và card. Thông thường, sau khi quá trình khởi tạo (thông qua cơ chế ATR)

được thiết lập giữa ứng dụng phía reader và card, một kênh giao tiếp mặc định

được mở ra. Kênh giao tiếp này sau đó được dùng để mở thêm hoặc đóng các kênh giao tiếp logic khác thông qua lệnh Manage Channel.

o Lnh Envelope:

Lệnh Envelope hỗ trợ kiểu truyền bảo mật thông qua giao thức T=0. Trong kiểu truyền này các APDU được mã hóa và gửi đi.

o Lnh Get Response:

Lệnh này cho phép dùng giao thức T=0 để truyền đủ các dạng của APDU. Với kiểu APDU Case 4 trong giao thức T=0, phản hồi gửi trả lại ứng dụng phía reader chỉ ra là còn dữ liệu đang chờ, lệnh dùng với mục đích lấy về dữ liệu chờ.

1.2.6. Quá trình sn xut mt Smart Card

Quá trình sản xuất một Smart Card được chia thành nhiều bước khác nhau:

o Chế to chip

Hàng ngàn chip kích thước 5x5mm được chế tạo đặt trong một miếng silicon hình bánh thánh (wafer) - một hình tròn có đường kính lớn hơn 100mm, xấp xỉ 4 inch – sau khi hoàn thành, một miếng silicon như vậy chứa khoảng 3000 đến 4000 con chip. Quá trình chế tạo được thực hiện thông qua một quy trình lọc chân không của vật liệu bán dẫn siêu tinh khiết trên nền silicon.

o Đóng gói các chip riêng lẻđểđưa vào trong th

Sau khi quá trình thứ nhất được hoàn thành, mỗi một chip riêng lẻđược test để đảm bảo là chúng hoạt động được. Mỗi một con chip hoạt động tốt được đánh dấu bằng một dấu hiệu vật lý chuẩn bị cho quá trình chia nhỏ miếng silicon thành nhiều mảnh khác nhau, mỗi chip một mảnh riêng. Sau khi các chip được phân chia xong, các connector được gắn vào, các đường dẫn vô cùng nhỏ trên connector nối tới các chân tương ứng trong mỗi con chip kết quả có một module.

o Chế to th

Thẻđược chế tạo bằng polyvinyl chloride hoặc các vật liệu tương tự, các đặc tính hóa học và kích thước của thẻ tuân theo các chuẩn quốc tế (xem 1.6). Thẻđược làm từ những tấm vật liệu phẳng, rộng và có độ dày quy định, tấm vật liệu này sau đó

được in và từng chiếc thẻ riêng lẻđược cắt ra. Công đoạn cuối cùng là làm tròn các cạnh của thẻ.

o Đưa chip vào trong th

Một khi module và thân thẻđược làm xong, chúng được gắn vào nhau. Một lỗ

hổng được tạo ra trên phần thẻ và module được dính vào đó. Lỗ hổng này được làm bằng cách khắc hoặc là nấu chảy vật liệu rồi gắn thẳng module vào.

o Quá trình chun b chuyên bit hóa (pre-personalization) (adsbygoogle = window.adsbygoogle || []).push({});

Sau khi module được gắn vào trong card, một số chương trình và các file phải

được cài đặt trên card trước khi chuyên biệt hóa và chuyển cho người sử dụng. Quá trình này thực hiện thông qua các I/O connector trên bề mặt của thẻ.

o Quá trình chuyên bit hóa (personalization)

Quá trình này bao gồm việc đưa các thông tin của người sử dụng như tên và số

tài khoản lên chip của thẻ, quá trình còn bao gồm việc viết sốđịnh danh PIN lên thẻ để sau này người sử dụng dùng nó để chứng thực nhận dạng của mình đối với thẻ.

o In th

Việc in các hình đồ họa và chữ lên thẻ có một vai trò hết sức quan trọng, nó thể hiện được tính chất của thẻ và của nhà sản xuất. Các biểu tượng như logo hay biểu tượng tập đoàn thể hiện thông tin về nhà sản xuất và có giá trị quảng cáo. Với loại thẻ mang tính cá nhân, hình người sở hữu cùng với tên và địa chỉ cũng thường

được in luôn trên thẻ. Với các thẻ giao dịch, nhà sản xuất thường cân nhắc đến các khả năng làm giả và thường đôi khi áp dụng một số cơ chế chống làm giả như kỹ

thuật in hình nổi 3 chiều.

1.3. NG DNG TH THÔNG MINH

1.3.1. Phát trin ng dng cho Smart Card

Về cơ bản, người ta chia ứng dụng cho Smart Card thành 2 loại:

Ứng dụng chủ (host software): là kiểu ứng dụng chạy trên máy tính có kết nối tới Smart Card, kiểu ứng dụng này còn gọi là ứng dụng phía reader. Hiện nay, các

ứng dụng viết cho Smart Card phần lớn thuộc kiểu ứng dụng này. Ứng dụng phía reader thường được viết bằng một trong các ngôn ngữ bậc cao thường thấy như C, C++, Java, VB…và thường dùng các thư viện và điều khiển thiết bị (driver) thương mại của các hãng sản xuất Smart Card.

Ứng dụng phía thẻ: là ứng dụng chạy hoàn toàn trên thẻ. Chúng thường

được viết bằng một ngôn ngữ trung gian như Java (cho JavaCard), ngôn ngữ mức máy như Forth hoặc một ngôn ngữ bậc thấp như assembly. Ứng dụng kiểu này thường được dùng với mục đích tùy biến hoặc cải tiến tính năng của Smart Card hoặc dùng để kết hợp và hỗ trợ các ứng dụng phía reader để triển khai các tính năng mới.

1.3.1.1. Quy trình phát trin ng dng cho Smart Card

o Phát trin mt n (Mask)

Chương trình lưu trên chip của Smart Card được gọi là mặt nạ (mask). Thuật ngữ này bắt nguồn từ việc một mẫu các bit được mạ vào thành phần silicon (ROM). Nếu chương trình được lưu trong ROM trong quá trình chế tạo thì nó

được gọi là mặt nạ cứng (hard mask). Chương trình được lưu trên bộ nhớ có thể

ghi được EPROM sau quá trình sản xuất được gọi là mặt nạ mềm (soft mask).

o Viết mã

Việc phát triển mã thường phải cân nhắc rất nhiều yếu tố như loại thẻ, dung lượng bộ nhớ nhỏ, tốc độ tính toán chậm... Thường mã được viết ra chỉ áp dụng cho một hoặc một số kiểu Smart Card nhất định.

o Gi lp chip

Giả lập chip giúp cho việc phát triển ứng dụng Smart Card trở nên dễ dàng, nhanh chóng và tiết kiệm hơn. Tuy có ưu điểm như vậy nhưng việc giả lập chip vẫn không hoàn toàn đảm bảo được phần mềm sẽ không có lỗi.

o Test

Đểđảm bảo chất lượng ứng dụng, các nhà sản xuất thường đưa ra một phần cứng đặc biệt tương ứng với từng loại sản phẩm. Phần cứng này có cấu tạo và chức năng giống hệt như một Smart Card thực sự nhưng nó cho phép theo dõi, can thiệp và chỉnh sửa chương trình chạy bên trong nó.

o Phân tích giao thc

Giao tiếp giữa reader và thẻ là giao tiếp qua kênh một chiều (half-duplex), tương tự như giao tiếp giữa một PC và một mạng máy tính, trong môi trường này, người ta có thể dễ dàng quan sát các bit dữ liệu được truyền qua lại giữa reader và thẻ. Điều này được tiền hành trong quá trình phân tích giao thức thông qua một trình phân tích giao thức.

1.3.1.2. Các công c phát trin ng dng cho Smart Card (adsbygoogle = window.adsbygoogle || []).push({});

Phát triển ứng dụng cho Smart Card-giống như phát triển ứng dụng truyền thống-cũng cần một loạt các công cụ và nền tảng hỗ trợ. Phần tiếp theo sẽ xem xét một loạt các công cụ và nền tảng cơ bản hỗ trợ việc phát triển ứng dụng cho Smart Card bao gồm từ các trình soạn thảo (editor), trình giả lập, gỡ rối cho tới các hàm giao diện lập trình (API).

o Công c cho ng dng phía đầu đọc th (reader)

Thực tế là ứng dụng phía reader cũng đơn thuần là một ứng dụng truyền thống, chỉ có điều là nó sử dụng các công cụ, thư viện đặc biệt để làm việc với Smart Card (thông qua reader). Dưới đây, chúng ta sẽ xem xét một số công cụđặc biệt như vậy.

Một phần của tài liệu Chữ ký số trong thẻ thông minh và ứng dụng xác thực (Trang 35)