Ứng dụng phía thẻ

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 50)

1.3.3.1. Các khía cnh trong phát trin ng dng

Phát triển ứng dụng chạy trên thẻ không đơn thuần như việc phát triển ứng dụng truyền thống. Người phát triển phải cân nhắc một loạt các vấn đề như phần cứng (dung lượng bộ nhớ, tốc độ xử lí…), bảo mật và truy cập file (PIN, mã hóa…) và thậm chí là cả khả năng bị ngắt điện đột ngột (do rút thẻ ra khỏi reader).

o B nh

Bộ nhớ RAM trong Smart Card không được tính bằng đơn vị Mb hay Kb mà là byte. Thường thì những Smart Card có dung lượng bộ nhớ nhỏ nhất vào khoảng 128 byte, Smart Card có dung lượng bộ nhớ lớn vào khoảng 640 byte. Vì dung lượng RAM nhỏ như vậy nên vấn đề sử dụng sao cho hợp lí và hiệu quả nhất

được đặt lên hàng đầu (chưa kể một số vấn đề khác như quản lí stack), rất may, đa số các trình biên dịch đều hỗ trợ việc này rất đáng kể.

Một dạng bộ nhớ khác trong Smart Card là bộ nhớ không mất (Nonvolatile Memory: NVM). Bộ nhớ NVM phải được ghi theo khối cùng lúc 4, 16 byte hoặc nhiều hơn do đó khi tiến hành ghi một ô nhớ NVM nào đó, một loạt các ô nhớ bên cạnh cũng bịảnh hưởng theo. Mặc dù các thao tác ghi với bộ nhớ NVM trong suốt với người lập trình thông qua các hàm API nhưng hiểu rõ bản chất của vấn đề đôi khi vẫn giúp tránh được những sai lầm. Ngoài ra, mặc dù được quảng cáo là tồn tại rất lâu nhưng bộ nhớ NVM vẫn có thể bị “mòn”, thực tế cho thấy 10 năm là khoảng thời gian khá dài đối với một bộ nhớ NVM, do vậy, việc backup và bảo trì dữ liệu khi làm việc với bộ nhớ NVM cũng cần được cân nhắc.

o Ngt đin đột ngt

Một “đặc tính” của hệ thống Smart Card là thẻ có thể được rút ra bất ngờ

và do đó nguồn điện bị ngắt đột ngột. Người lập trình phải cân nhắc các biện pháp bảo đảm tính toàn vẹn và nhất quán dữ liệu đểđối phó với tình huống như vậy. Có một số hệ điều hành Smart Card triển khai một cách tương tự như transaction trong cơ sở dữ liệu tuy nhiên số đó là rất ít, người lập trình không còn cách nào khác là phải tự mình viết mã đểđảm bảo tính toàn vẹn của dữ liệu.

o Biên dch và np vào th

Không như các phần mềm truyền thống khác, việc đưa một phần mềm chạy trên thẻ vào hoạt động và sử dụng khá phức tạp. Không phải người sử dụng Smart Card nào cũng sẵn sàng nạp vào thẻ của họ một phần mềm mới, thường thì người ta sử dụng kỹ thuật ký điện tửđể xác thực “lai lịch” của phần mềm. Một vấn đề

nữa phải cân nhắc là chương trình được viết ra liệu có hoàn toàn tương thích với nền tảng hệđiều hành của Smart Card hay không bởi đơn giản là chúng không có

1.3.3.2. Tp các hàm API

Một trong các chức năng của phần mềm chạy trên thẻ là giao tiếp với phần mềm phía reader để thực thi một chức năng nào đó. Trong giao tiếp này, phần mềm phía reader gửi tới thẻ một chỉ thị lệnh nào đó, phía thẻ sau khi nhận được chỉ thị sẽ dùng các lệnh tương ứng trong dịch vụ của mình và thực thi chúng. Các hàm giao tiếp ứng dụng API chính là tập các hàm gọi thực thi các giao diện lệnh tương ứng được gửi tới thẻ. Sau đây chúng ta sẽ xem xét một số API tiêu biểu.

o ISO 7816-4:

Tập lệnh ISO 7816-4 chuẩn bao gồm 18 lệnh nhưđã được mô tả trong phân loại thẻ:

ReadBinary(byte fileId, short offset, byte buffer[]) WriteBinary(byte fileId, short offset, byte buffer[]) UpdateBinary(byte fileId, short offset, byte buffer[]) EraseBinary(byte fileId, byte offset)

ReadRecord(byte record_number, byte mode, byte buffer[]) WriteRecord(byte record_number, byte mode, byte buffer[]) AppendRecord(byte record_number, byte mode, byte buffer[]) UpdateRecord(byte record_number, byte mode, byte buffer[]) GetData(short mode, byte buffer[])

PutData(short mode, byte buffer[])

SelectFile(byte mode, byte info, byte name[]) Verify(byte mode, byte key[])

InternalAuthenticate(byte algorithm, byte mode, byte challenge[]) ExternalAuthenticate(byte algorithm, byte mode, byte response[]) GetChallenge(byte challenge[])

ManageChannel(byte operation, byte channel_number) GetResponse(byte response[])

Envelope(byte buffer[])

Hiện nay trên thị trường dường như không có loại Smart Card nào triển khai đầy đủ tập lệnh ISO 7816-4, đa số chúng đều triển khai một tập con của tập lệnh này.

o GSM 11.14

SIM (Subscriber Interface Module) là một loại Smart Card gắn vào điện thoại di động GSM. Tổ chức ETSI của Châu Âu đã đưa ra rất nhiều chuẩn mô tả

SIM và giao tiếp giữa chúng và điện thoại di động GSM.

Không giống như giao tiếp giữa reader và thẻ như mô tả trong các phần trước đây, mã chạy trên SIM còn cho phép gọi một số dịch vụ của điện thoại di

động. Do vậy, mã chạy trên SIM được chia thành 2 mảng: một dành cho dịch vụ

trên SIM và một cho dịch vụ trên điện thoại. Tập API thứ nhất tương tự như ISO 7816-4, tập API thứ hai bao gồm một số lệnh cơ bản sau đây:

DisplayText: hiển thị văn bản trên màn hình điện thoại (adsbygoogle = window.adsbygoogle || []).push({});

GetInKey: lấy một phím nhấn từ bàn phím điện thoại

GetInput: lấy một chuỗi nhập từ bàn phím điện thoại

PlayTone: chơi một âm sắc

PollInterval: đặt thời gian giữa các lệnh STATUS từđiện thoại

Reset: thông báo cho điện thoại biết về sự thay đổi trong SIM

SelectItem: gửi một danh sách chọn tới điện thoại và nhận lựa chọn của người dùng

SendShortMessage: gửi một tin nhắn SMS

SendSS: gửi một yêu cầu dịch vụ bổ sung tới điện thoại

SendUSSD: chưa định nghĩa

SetUpCalls: thiết lập một cuộc gọi

SetUpMenu: gửi một menu lựa chọn tới điện thoại để hiển thị nó o MULTOS

MULTOS là tập các hàm API phía thẻ dùng cho Smart Card chạy hệ điều hành đa ứng dụng MULTOS. Đặc tả của MULTOS được phát triển bởi nền công nghiệp Smart card, những người phát triển ứng dụng và một tổ chức gồm các công ty hàng đầu về điện thoại và Smart Card: Motorola, Hitachi, Siemens, Gemplus, MasterCard, Mondex, DNP và Keycorp.

o JavaCard API

Java Card là Smart Card chạy hệđiều hành triển khai một tập con của Java. Phiên bản 2.0 của JavaCard API bao gồm 113 hàm hữu dụng chia làm 3 mục con và 17 class. APPLICATION SERVICES: 61 hàm javacard.framework.APDU: 10 hàm javacard.framework.PIN: 5 hàm javacardx.framework.File: 46 hàm CRYPTOGRAPHY: 32 hàm javacardx.crypto.AsymKey: 2 hàm javacardx.crypto.DES_CBC_Key: 6 hàm javacardx.crypto.DES_Key: 2 hàm javacardx.crypto.RSA_CRT_Key: 6 hàm javacardx.crypto.RSA_Key: 5 hàm javacardx.crypto.Key: 3 hàm javacardx.crypto.MessageDigest: 1 hàm javacardx.crypto.RandomData: 2 hàm javacardx.crypto.Sha1MessageDigest: 1 hàm

APPLICATION FRAMEWORK: 20 hàm javacard.framework.AID: 3 hàm

javacard.framework.Applet: 3 hàm javacard.framework.System: 12 hàm javacard.framework.Util: 2 hàm

Phần tiếp theo sẽ mô tả chi tiết việc phát triển ứng dụng applet với JavaCard.

1.3.4. Mt sốứng dng trong th thông minh

Phần này giới thiệu một sốứng dụng về thẻ thông minh đang được áp dụng trên thế giới. Chương này cũng nhằm giới thiệu các hệ thống thẻ thông minh trong

đó thẻ thông minh chỉ là một thành phần trong đó. Trong những hệ thống này, tất cả các chức năng, tính thân thiện người dùng và tính bảo mật của hệ thống đều dựa trên thẻ thông minh. Các hệ thống thẻ thông minh đưa ra trong chương này

được tham khảo trong chương 12 và chương 14 tài liệu “Smart Card Hand Book”.

1.3.4.1. Th thông minh trong h thng thu l phí (c"u, đng) đin t

Trong một số nước, người ta phải trả tiền cho việc sử dụng một số đoạn

đường khi đi qua đoạn đường đó. Số tiền phải trả phụ thuộc vào loại phương tiện và số lần đi qua. Cho đến nay, lệ phí qua cầu, đường thường được trả tại một số

trạm trên cầu, đường đó. Những hệ thống này có hạn chế là chúng làm cản trở

luồng giao thông vì các phương tiện phải dừng lại để trả tiền.

Ở Đức năm 1993, người ta đã cho thử nghiệm một hệ thống thu tiền tự động. Hệ thống này sử dụng Thẻ thông minh để lưu giữ số tiền điện tử. Với hệ

thống này, các phương tiện đi lại phải được gắn thêm một thiết bị gọi là OBU (onboard unit) hoặc IVU (in-vehicle unit). OBU có chứa một Terminal. OBU liên kết với bên ngoài thông qua sóng cực ngắn (microwave). Các trạm điều khiển

được đặt trên đường ở các vị trí cần thiết. Khi phương tiện đi qua trạm điều khiển

đầu tiên, OBU và Thẻ thông minh được kích hoạt. Tiếp đó, phương tiện được phân loại để có thể tính lệ phí. Việc phân loại này được thực hiện bằng cách đo chiều cao của phương tiện khi nó đi qua trạm. Khi phương tiện trong vùng phủ (adsbygoogle = window.adsbygoogle || []).push({});

sóng của trạm kiểm soát thứ hai, một liên kết được nối với Thẻ thông qua OBU. Trạm kiểm soát thứ hai kiểm tra lệ phí cầu đường được khởi tạo bởi trạm đầu tiên

đã thành công hay chưa. Nếu chưa, phương tiện sẽ bị chụp ảnh nhờ vào hệ thống camera được đặt tại các trạm. Người đăng ký xe do đó sẽ bị phạt tiền. Nếu thành công, số tiền điện tử trong Thẻ thông minh sẽđược giảm đi.

1.3.4.2. Th thông minh trong ch# ký s (Digital Signature)

Một môi trường an toàn là cần thiết cho việc lưu giữ và sử dụng khóa bí mật. Thẻ thông minh là một giải pháp lý tưởng cho yêu cầu này, vì chúng có kích thước nhỏ, rẻ tiền và có khả năng bảo vệở mức cao đối với việc đọc hoặc sửa dữ

liệu từ bên ngoài. Trong chữ ký số, nhờ vào đặc tính an toàn của mình, Thẻ thông minh luôn được dùng để lưu giữ các khóa bí mật và tạo ra chữ ký số. Có 2 thành phần cần thiết trong hệ thống chữ ký sốđó là trung tâm tin cy (Trust Center)

Th ký s (signature card).

Khóa công khai và bí mật cho chữ ký số có thể được tạo theo cách tập trung hoá hoặc phi tập trung hoá. Với cách tập trung hoá, tất cả các cặp khóa được tạo tại một địa điểm và được ký bởi khóa riêng của Trust center ngay sau khi được tạo. Khóa có thểđược tạo và ký ở trong Thẻ (oncard) hoặc ở ngoài Thẻ (offcard). Với cách phi tập trung hoá, khóa chỉ có thểđược tạo oncard, vì Thẻ là môi trường an toàn duy nhất trong trường hợp này. Mỗi cách tạo khóa đều có những điểm lợi và bất lợi khác nhau. Trong thực tế, cách tạo khóa tập trung hoá chiếm ưu thế hơn vì chúng an toàn và hợp với quá trình sản xuất Thẻ thông minh.

o Cp phát Th ký s

Người dùng muốn có Thẻ ký số trước hết phải đăng ký với tổ chức có thẩm quyền đăng ký. Người dùng phải đưa ra các thông tin chứng minh định danh của mình, chẳng hạn như thẻ chứng minh thư, cho tổ chức có thầm quyền. Tổ chức có thẩm quyền sau đó sẽ chuyển các thông tin này và xác thực nó với Trust Center. Trust Center sẽ tạo khóa và cá nhân hoá Thẻ. Trong quá trình này, khóa công khai của Thẻ mới sẽđược ký bởi dịch vụ chứng chỉ của Trust Center đểđược xác thực. Khóa công khai được ký sau đó sẽ được đưa vào thư mục khóa công khai trên Trust Center. Điều này giúp cho các người dùng khác có thể sử dụng khóa công khai này. Bây giờ người dùng sẽ nhận được Thẻ ký số cùng với số PIN của mình.

o Ký và kim tra tài liu

Văn bản điện tử được ký bằng cách sử dụng khóa riêng của Thẻ ký số. Trước khi có thể ký trên văn bản, người ký (hay người giữ Thẻ) phải được định danh một cách rõ ràng. Người ký bắt buộc phải nhập vào số PIN của mình.

Văn bản đã ký bây giờ có thể được gửi đi. Để có thể kiểm tra chữ ký của văn bản, khóa công khai của người ký có thểđược lấy từ thư mục khóa công khai trên Trust Center.

Hình 1-10 Th tc cơ bn cho vic ký và kim tra

o Trust Center

Trust Center là thành phần quan trọng nhất trong hệ thống chữ ký số cùng với Thẻ ký số. Nó hỗ trợ 6 chức năng khác nhau: đăng ký một người sử dụng mới, tạo khóa và cá nhân hoá một Thẻ ký số mới, dịch vụ chứng chỉ, dịch vụ thư mục cho khóa công khai, dịch vụ thư mục cho danh sách đen (danh sách thu hồi), và dịch vụđịnh thời gian (time stamp).

Dịch vụ đăng ký có nhiệm vụ thu thập các thông tin cá nhân và kiểm tra

định danh của người dùng mới. Dịch vụ chứng chỉ có nhiệm vụ ký khóa công khai cho Thẻ ký số bằng cách sử dụng khóa bí mật của Trust Center giúp cho khóa công khai của Thẻđược xác thực là thật.

Kim tra Trust center Registration Certificate service Public key directory Directory service Black list Timestamp service

Người gi Card Card s Văn bn cn ký Terminal

Để

Người kim tra Văn bn đã ký Card s

Vn chuyn Terminal

Khoá công khai ca người gi K

Thông thường, Trust Center có nhiều hơn một khóa bí mật cho việc tạo chứng chỉ. Dịch vụ thư mục cho khóa công khai chứa các khóa công khai của các Thẻ ký sốđược ký bởi Trust Center. Dịch vụ thư mục cho danh sách thu hồi chứa danh sách của các khóa bị chặn(block) -các khóa thuộc về những Thẻ bị mất hoặc hỏng. Dịch vụ định thời gian được dùng để đính kèm các thông tin về ngày giờ

hiện tại cho các thông tin điện tử được đưa tới Trust Center. Các thông tin nhận bởi Trust Center cùng với thông tin ngày giờ được ký bởi khóa riêng của dịch vụ định thời. Điều này cho phép người cung cấp thông tin chứng minh được với các tổ chức thứ ba rằng những thông tin đó có hiệu lực không muộn hơn một thời

điểm xác định.

1.3.4.3. Th thông minh trong h thng tr tin đin t

Có 3 mô hình cơ bản cho việc trả tiền điện tử sử dụng Thẻ thông minh: mô hình dùng th credit, trong đó việc trả tiền diễn ra sau khi dịch vụđược thực hiện, mô hình dùng th debit, trong đó việc trả tiền diễn ra trong khi dịch vụ thực hiện, mô hình dùng chiếc ví đin t, trong đó việc trả tiền diễn ra trước khi dịch vụ thực hiện.

Thẻ credit: Nguyên tắc trả tiền bằng thẻ credit rất đơn giản: Bạn sẽ trả tiền bằng thẻ của mình, sau đó số lượng tiền tương ứng sẽ được lấy ra từ tài khoản của bạn.

Thẻ debit: Thẻ debit cho phép số lượng tiền được trả chuyển đến tài khoản của các nhà cung cấp dịch vụ như là một phần trực tiếp của quá trình trả tiền. (adsbygoogle = window.adsbygoogle || []).push({});

Chiếc ví điện tử: Với chiếc ví điện tử, ‘tiền điện tử’ được tải vào trong Thẻ

trước bất kỳ một cuộc trả tiền nào. Khi việc mua hàng diễn ra, số tiền trong Thẻ sẽ được giảm đi một lượng bằng với số tiền mua hàng, và cùng một thời điểm, số lượng tiền trong ví của nhà cung cấp dịch vụ cũng tăng lên một lượng tương ứng với số tiền mua hàng. Nhà cung cấp dịch vụ sau này có thể đưa số tiền điện tử này tới các nhà cung cấp hệ thống trả tiền điện tử để có thể lấy tiền mặt. Người dùng thẻ muốn có thêm số tiền điện tử trong chiếc ví sẽ phải dùng tiền mặt đểđổi lấy tiền điện tử.

o Kiến trúc h thng

Kiến trúc hệ thống của một hệ thống trả tiền điện tử sử dụng Thẻ thông minh có thể là hệ thống tập trung hoá hoặc phi tập trung hoá. Với các hệ thống cụ

thể, vấn đề an ninh của hệ thống là vấn đềđược đặt lên hàng đầu. Do đó hệ thống tập trung hoá thường hay được sử dụng hơn vì những người quản trị hệ thống có thể kiểm soát toàn bộ hệ thống.

Hệ thống tập trung hoá nói đến một hệ thống trực tuyến trong đó mọi họat

động trả tiền đều được thực hiện trực tiếp và diễn ra trực tuyến bởi hệ thống nền. Nếu đường truyền thông không được thiết lập, việc trả tiền không thực hiện được. Các hệ thống tập trung có một số ưu điểm. Ví dụ như các phiên giao dịch đến có thểđược so sánh trực tiếp với danh sách đen (blacklist) ở thời gian thực, việc trao

đổi khóa có thể được tiến hành một cách trực tiếp mà không có sự trì hoãn nào. Các phần mềm trong Terminal và các tham số chung trong Thẻ thông minh có thể được cập nhật một cách trực tiếp mà không phải tốn thêm nhiều công sức. Tuy nhiên hệ thống tập trung hoá rất khó được ứng dụng rộng rãi vì sự phức tạp của việc triển khai. Trong rất nhiều nước, cước phí truyền thông là tương đối cao nên sẽ không thích hợp với các nhà doanh nghiệp cho việc duy trì một đường truyền lâu dài với hệ thống nền. Ở một só khu vực, mạng điện thoại không đủ tin cậy để

cho phép đường kết nối trực tuyến trong các phiên giao dịch.

Với đặc điểm của mình, Thẻ thông minh khá thích hợp cho các hệ thống

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 50)