JavaCard phát triển với mục đích lưu trữ các thông tin nhạy cảm, công nghệ Java Card luôn đề cao tính bảo mật và đảm bảo điều này bằng các yếu tố khác nhau như: đóng gói dữ liệu, tường lửa ngăn cách ứng dụng, mã hóa dữ liệu, tạo ứng dụng dạng Applet. Khả năng đóng gói dữ liệu cho phép dữ liệu được lưu trữ bên trong ứng dụng và các ứng dụng này được thực thi trên một máy ảo tách biệt với hệ điều hành và phần cứng của thẻ. Mỗi ứng dụng khác nhau lưu trữ trên JavaCard đều được ngăn cách bởi một tường lửa để hạn chế và kiểm tra được sự truy cập dữ liệu từ ứng dụng này sang ứng dụng khác. Khả năng mã hóa của JavaCard cho phép dữ liệu được mã hóa bằng các dạng mã hóa thông dụng sử dụng khóa như mã hóa DES, 3DES, AES hay RSA.
JavaCard là một thẻ thông minh có thể thực thi mã bytecode tương tự như Java. Do tiêu chuẩn Java quá lớn để phù hợp với thẻ thông minh, nên giải pháp cho vấn đề này là tạo ra một JavaCard với một số chuẩn Java đã được loại bỏ[6]. JavaCard được hình thành dựa trên một tập con của Java API cộng với một số lệnh thẻ đặc biệt.
Bên cạnh việc cung cấp cho các nhà phát triển môi trường phát triển quen thuộc, JavaCard còn cho phép các thẻ thông minh có thể có nhiều ứng dụng trên đó. Hầu hết các sản phẩm thẻ thông minh hiện có chỉ có một ứng dụng trên mỗi thẻ. Ứng dụng này được tự động gọi ra khi điện được cung cấp cho thẻ hoặc thẻ được cài đặt lại. Thẻ Java cho phép nhiều ứng dụng, có khả năng được viết bởi các tổ chức khác nhau, để tồn tại trên cùng một thẻ [6].
Dưới đây là những lợi ích chính của JavaCard cũng như ưu điểm của Sun: - Đa nền tảng: JCRE (JavaCard Runtime Environment – môi trường chạy java
card) phù hợp với tất cả các loại bộ xử lý thẻ thông minh.
- Tương thích: Các applet JavaCard được phát triển bởi một nhà cung cấp sẽ chạy trên bất kỳ thẻ nào phù hợp với đặc tả của JavaCard.
- Thẻ Java tuân thủ các tiêu chuẩn thẻ thông minh hiện có. - Hỗ trợ tất cả các loại ứng dụng thẻ thông minh.
2.2 Kiến trúc JavaCard
Về mặt ngôn ngữ lập trình thì JavaCard là một phần thu gọn của Java, công nghệ JavaCard cung cấp kiến trúc để phát triển ứng dụng mở cho thẻ thông minh và nó cũng được sử dụng để phát triển các ứng dụng cho các thiết bị có bộ nhớ rất nhỏ như SIM cho điện thoại di động, thẻ ATM gắn chip.
Dưới đây là mô hình kiến trúc [7]:
Card Applet Card Applet Card Applet
Java Card Runtime Environment
Java Card API
Java Card Virtual Machine
O.S and native functions