1. Trang chủ
  2. » Công Nghệ Thông Tin

Mã Hóa Giải Mã Sử Dụng Rsa.docx

54 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng ứng dụng mã hoá giải mã dữ liệu sử dụng thuật toán rsa
Tác giả Cao Thanh Vinh, Trần Trọng Hữu, Lê Thị Quỳnh, Nguyễn Thị Ngọc Ánh, Phùng Thị Thuỳ, Đỗ Thị Thu Lệ
Người hướng dẫn ThS. Cao Thanh Vinh
Trường học Học Viện Kỹ Thuật Mật Mã
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2020
Thành phố Hà Nội
Định dạng
Số trang 54
Dung lượng 4,95 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU VỀ THẺ THÔNG MINH (7)
    • 1.1. Lịch sử phát triển thẻ thông minh (7)
    • 1.2. Cấu tạo và phân loại thẻ thông minh (9)
    • 1.3. Ưu nhược điểm của thẻ thông minh (13)
    • 1.4. Thách thức trong việc phát triển ứng dụng thẻ thông minh (16)
    • 1.5. Các hình thức tấn công trên thẻ thông minh (17)
  • CHƯƠNG 2: CÔNG NGHỆ JAVACARD (20)
    • 2.1. Giới thiệu JavaCard (20)
    • 2.2. Kiến trúc JavaCardfe (21)
    • 2.3. Tập ngôn ngữ JavaCard (22)
    • 2.4. Máy ảo để chạy JavaCard (23)
    • 2.5. Cài đặt JavaCard và chương trình cài đặt trên thiết bị (Off-Card) (25)
    • 2.6. Môi trường chạy JavaCard (27)
    • 2.7. API JavaCard (29)
    • 2.8. Package và quy ước đặt tên Applet (31)
    • 2.9. Java Card Applet (32)
      • 2.9.1. Tiến trình phát triển Applet (32)
      • 2.9.2. Cài đặt Applet (34)
    • 2.10. Phương thức truyền nhận, trao đổi dữ liệu (36)
  • CHƯƠNG 3: HỆ MÃ RSA, VÀ THUẬT TOÁN MÃ HÓA AES (40)
    • 3.1. Thuật toán RSA (40)
    • 3.2. Mã hóa RSA CRT (42)
    • 4.1 Giao tiếp giữa javacard applet và netbean (45)
      • 4.1.1 Java Card Runtimes (45)
      • 4.1.2 Apdu in out library (46)
    • 4.2 Thiết kế phần mềm (47)
      • 4.2.1 Biểu đồ phân rã chức năng (47)
      • 4.2.2 Biểu đồ hoạt động (48)
    • 4.3. Thiết kết giao diện (50)
    • 4.4 Phát triển Applet (53)
      • 4.4.1. Hoạt động mã hoá (53)
      • 4.4.2. Giải mã dữ liệu (53)

Nội dung

Với việc tạo ra một môi trường ảo chung trên tất cả các hệ điều hành hỗ trợ JavaCard, công nghệ này đã giúp cho việc phát triển ứng dụng chip trở nên dễ dàng giúp tiết kiệm thời gian nghi

GIỚI THIỆU VỀ THẺ THÔNG MINH

Lịch sử phát triển thẻ thông minh

Hai ý tưởng chính đã thúc đẩy sự phát triển của thẻ thông minh Tiến sĩ Kunitaka Arimura từ Nhật Bản đã thiết kế một miếng silicon tích hợp dữ liệu lưu trữ và logic số học, nộp bản quyền vào năm 1970 Đồng thời, kỹ sư người Đức Helmut Grӧttrup và đồng nghiệp Jϋrgen Dethloff đã nộp bản quyền cho thẻ chip tự động vào năm 1968, với bằng sáng chế được công bố vào cuối năm 1982 Năm 1974, nhà phát minh Roland Moreno từ Pháp đã gắn chip lên tấm nhựa và cấp bằng sáng chế cho thẻ nhớ, gọi là thẻ thông minh, đồng thời thành lập công ty Innovatron để thương mại hóa ý tưởng này Moreno được biết đến như là cha đẻ của mạch vi xử lý (Microchip).

Hình 1.1 hình ảnh của thẻ thông minh

Vào năm 1977, ba nhà sản xuất thương mại Bull CP8, SGS Thomson và Schlumberger đã bắt đầu phát triển thẻ thông minh Năm 1978, Bull đăng ký bằng sáng chế cho bộ vi xử lý một chip tự lập trình (SPOM) Tháng 3 năm 1979, Michel Ugon từ tập đoàn Bull thiết kế bộ vi xử lý CP8, với bộ nhớ lập trình 1KB và bộ vi xử lý 6805 của Motorola Đây được coi là thẻ thông minh đầu tiên, kết hợp bộ vi xử lý và bộ nhớ để đưa ra quyết định dựa trên nhu cầu của người dùng Thiết kế ban đầu là hai chip riêng biệt, nhưng đến năm 1980, công nghệ cho phép tích hợp tất cả vào một chip Đến năm 1981, thẻ thông minh đã được áp dụng rộng rãi ở nhiều nước Tây Âu, dẫn đến việc các ngân hàng Châu Âu thành lập một cơ quan quản lý mới để phát triển thẻ, ứng dụng và tiêu chuẩn.

Sự bùng nổ thẻ thông minh bắt đầu vào thập niên 90 với sự xuất hiện của SIM trong thiết bị điện thoại di động GSM ở châu Âu, khi mạng di động mở rộng, thẻ thông minh trở nên phổ biến Năm 1983, cộng đồng viễn thông yêu cầu cải thiện hệ thống điện thoại trả tiền do tỷ lệ gian lận gia tăng, dẫn đến sự phát triển của hệ thống thanh toán thẻ điện thoại trả tiền thông minh Schlumberger đã lắp đặt hàng ngàn điện thoại trả tiền bằng thẻ thông minh, với 160.000 chiếc được cài đặt vào cuối năm Năm 1984, Pháp triển khai thẻ thông minh như tiêu chuẩn cho thẻ tín dụng và thẻ ghi nợ trong ngành ngân hàng.

Vào năm 1993, ba liên minh thẻ lớn nhất thế giới là Europay, MasterCard và Visa (EMV) đã hợp tác để phát triển kỹ thuật sử dụng thẻ thông minh cho thanh toán, bao gồm thẻ tài khoản và thẻ tín dụng Hệ thống EMV đầu tiên được công bố vào năm 1994, và phiên bản cải tiến EMVco ra đời vào năm 1998, đảm bảo tính tương thích với các tiêu chuẩn kỹ thuật đã phát triển Hiện nay, thẻ thông minh được ứng dụng rộng rãi trong nhiều lĩnh vực như thẻ chứng minh nhân dân, hộ chiếu điện tử và thẻ thanh toán, trong đó thẻ tín dụng và sim điện thoại là hai loại phổ biến nhất tại Việt Nam.

Cấu tạo và phân loại thẻ thông minh

Thẻ thông minh, được coi như một máy tính di động, lưu trữ dữ liệu và đang được ứng dụng rộng rãi tại Việt Nam trong nhiều lĩnh vực như giao thông công cộng, viễn thông, ngân hàng, thương mại điện tử, và y tế Với khả năng lưu trữ, xử lý thông tin và bảo mật dữ liệu tốt, thẻ thông minh mang lại nhiều lợi ích cho người sử dụng Để hiểu rõ hơn về thẻ thông minh, cần tìm hiểu về cấu tạo, nguyên lý hoạt động, các loại thẻ có trên thị trường và phương pháp phát triển phần mềm quản lý thẻ.

Thẻ thông minh có kích thước tương đương thẻ tín dụng, thường làm từ nhựa PVC hoặc ABS, với khả năng chứa ảnh 3 chiều để ngăn chặn gian lận Kích thước tiêu chuẩn theo ID1 (ISO/IEC/7810) là 85,60x53,98 mm hoặc ID-000 với kích thước 25x15 mm, và độ dày 0,76 mm Thẻ được trang bị mạch tích hợp cho phép giao tiếp với hệ thống và mã hóa dữ liệu để đảm bảo tính toàn vẹn Dung lượng bộ nhớ của thẻ thông minh dao động từ 64KB đến 128KB, tương ứng với 65.536 đến 131.072 ký tự Dữ liệu trên thẻ được truyền đến hệ thống quản lý trung tâm thông qua các thiết bị đọc thẻ như máy đọc thẻ và ATM.

Thẻ thông minh được phân loại dựa trên hai tiêu chí chính: công nghệ chip và phương thức đọc dữ liệu Cấu trúc của thẻ thông minh bao gồm các thành phần quan trọng giúp tối ưu hóa khả năng lưu trữ và truyền tải thông tin.

Thẻ chip được phân loại dựa trên công nghệ chip thành hai loại chính: thẻ chip nhớ (memory chip) và thẻ chip vi xử lý (microprocessor chip), với các chip này được gắn trực tiếp trên bề mặt thẻ.

Thẻ chip nhớ bao gồm hai thành phần chính: thẻ nhớ cho phép truy cập và giao thức truyền thông Ưu điểm của loại thẻ này là dễ sản xuất và dễ sử dụng, trong khi nhược điểm là hạn chế về dung lượng bộ nhớ và mức độ bảo mật không cao.

Thẻ vi xử lý (microprocessor chip) bao gồm ba loại bộ nhớ, một bộ vi xử lý (CPU), một bộ đồng xử lý mã hóa (Crypto coprocessor) và một giao diện thông tin CPU có chức năng điều khiển các bộ phận khác, xử lý thông tin và thực hiện phép tính, với cấu tạo đa dạng nhưng thường bao gồm bộ xử lý, giải mã, lưu trữ và quản lý thanh ghi cùng bộ nhớ ROM lưu trữ mã máy và dữ liệu, không thể thay đổi nội dung và vẫn giữ nguyên thông tin khi ngắt nguồn, thường có dung lượng tối đa khoảng 256KB EEPROM cũng giữ nguyên thông tin khi mất nguồn nhưng có khả năng đọc và ghi đồng thời, dung lượng tương tự ROM Công nghệ mới như bộ nhớ Flash và RAM sắt điện (FeRAM) đã nâng cao dung lượng nhớ của thẻ thông minh RAM là bộ nhớ nhanh, không vĩnh cửu và chỉ được sử dụng bởi bộ vi xử lý, thường có dung lượng vài KB Bộ đồng xử lý mã hóa được trang bị trên nhiều loại thẻ thông minh hiện nay, cho phép thực hiện các phép tính số học phức tạp và hàm mã hóa trong các giao thức của thẻ.

* Phân loại dựa trên phương thức đọc dữ liệu: chia làm 3 loại là thẻ tiếp xúc, thẻ không tiếp xúc và thẻ lưỡng tính

Thẻ tiếp xúc là loại thẻ dễ nhận diện với con chip nhỏ gắn trên thân, thường có màu vàng hoặc bạc, và có diện tích khoảng 1cm2 Chip này được chia thành các phần như đầu vào, đầu ra dữ liệu, tín hiệu reset và chân điện áp, hoạt động tương tự như một máy vi tính Để đọc và ghi thông tin, bề mặt chip cần tiếp xúc trực tiếp với đầu đọc thẻ Thẻ tiếp xúc được sử dụng phổ biến trong lĩnh vực tài chính và truyền thông, như sim điện thoại, nhờ vào giá cả phải chăng, đáp ứng nhiều tiêu chuẩn công nghệ và độ bảo mật cao Khi được đưa vào máy đọc, chip giao tiếp với các tiếp điểm điện tử, cho phép đọc và ghi thông tin mà không cần pin, vì năng lượng được cung cấp trực tiếp từ máy đọc thẻ.

Hình 1.3 Thẻ thông minh và đầu đọc thẻ

Chuẩn ISO/IEC 7816 và ISO/IEC 7810 quy định các yếu tố quan trọng như hình dạng và kích thước vật lý của thẻ, vị trí và hình dạng của các tiếp điểm điện tử, cũng như các đặc tính điện cần thiết Ngoài ra, chuẩn này cũng xác định các giao thức thông tin, bao gồm định dạng lệnh gửi đến thẻ và các phản hồi từ thẻ, cùng với các chức năng đi kèm.

Thẻ không tiếp xúc sử dụng công nghệ RFID (Radio Frequency Identification) để giao tiếp với máy đọc thẻ qua sóng vô tuyến, với tốc độ trao đổi dữ liệu từ 106 đến 848 kbit/s Thiết kế của thẻ bao gồm một chip và ăngten ẩn bên trong, giúp nhận và phát sóng radio giữa đầu đọc và chip Thẻ có cuộn cảm để dò tín hiệu vô tuyến, cung cấp năng lượng cho chip trong khoảng cách giao tiếp lên đến 10cm Với tốc độ xử lý nhanh hơn thẻ tiếp xúc, thẻ không tiếp xúc thường được sử dụng trong các ứng dụng yêu cầu xử lý nhanh như kiểm soát phương tiện công cộng và thẻ ra vào Mặc dù thẻ không tiếp xúc có giá thành cao hơn, nhưng độ bảo mật thông tin không bằng thẻ tiếp xúc, và chip quản lý thông tin được ẩn bên trong thẻ.

Hình 1.4 Thẻ không tiếp xúc

Thẻ lưỡng tính kết hợp đặc điểm của thẻ tiếp xúc và thẻ không tiếp xúc, cho phép truyền dữ liệu qua tiếp xúc trực tiếp hoặc tín hiệu vô tuyến Mặc dù có giá thành cao hơn so với hai loại thẻ này, nhưng đầu đọc thẻ thông minh hỗ trợ giao tiếp hiệu quả với thẻ, truyền dữ liệu và điện năng qua công nghệ RFID Đầu đọc thẻ có thể dễ dàng tích hợp vào các hệ thống khác nhau thông qua thiết bị đầu cuối, với hai dạng cổng kết nối phổ biến là USB và COM Kết nối USB cho phép tốc độ truyền tín hiệu đạt 12 Mbps (High speed) với điện áp cung cấp thông thường là 5V, 200mA.

Các ứng dụng tiêu biểu của thẻ thông minh:

Đối với các hệ thống yêu cầu xác nhận định danh để truy cập, như mạng viễn thông di động, tài khoản ngân hàng, chứng minh nhân dân điện tử, hộ chiếu điện tử và hệ thống quản lý truy cập, TTM đóng vai trò đại diện cho quyền truy cập vào các hệ thống này.

Thẻ smartcard cung cấp khả năng lưu trữ an toàn cho nhiều loại thông tin quan trọng của chủ thẻ, bao gồm thông tin y tế, thông tin cá nhân và các chứng chỉ điện tử như thẻ bảo hiểm y tế và giấy phép lái xe điện tử.

Xác thực Offline là một ứng dụng quan trọng của thẻ thông minh, cho phép kiểm tra tính xác thực thẻ thành viên mà không cần kết nối với hệ thống trung tâm Thẻ SAM card (Security Application Module) hoạt động như một cảnh sát giao thông, kiểm tra thẻ mà không cần máy tính hay cơ sở dữ liệu Quá trình xác thực chéo giữa thẻ SAM và thẻ cần kiểm tra giúp đảm bảo tính trung thực trước khi thực hiện các giao dịch Bên cạnh đó, thẻ SAM còn hỗ trợ đa dạng khóa (Diversify Key), nâng cao mức độ an toàn và bảo mật cho mỗi phiên giao dịch.

Ưu nhược điểm của thẻ thông minh

Thẻ thông minh, với cấu tạo chip hiện đại, mang lại nhiều ưu điểm vượt trội so với các loại thẻ từ truyền thống Những lợi ích này bao gồm khả năng lưu trữ thông tin lớn hơn, bảo mật cao hơn và khả năng tương tác linh hoạt, giúp nâng cao hiệu quả sử dụng trong nhiều lĩnh vực khác nhau.

Thẻ thông minh được ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm thẻ công dân, hộ chiếu điện tử, và thẻ y tế, giúp lưu trữ thông tin quan trọng như nhóm máu và sinh trắc học Ngoài ra, thẻ còn được sử dụng cho thanh toán lương, chi phí sinh hoạt hàng tháng như thẻ đổ xăng, SIM điện thoại, và các dịch vụ truyền hình trả tiền Thẻ thông minh cũng hỗ trợ thanh toán tự động cho giao thông công cộng, du lịch, và các dịch vụ thương mại như nhà hàng, siêu thị, và spa Hơn nữa, thẻ còn hoạt động như ví điện tử cho các trạm đỗ xe và máy bán hàng tự động, đồng thời đóng vai trò quan trọng trong lĩnh vực an ninh máy tính, giúp mã hóa dữ liệu và bảo vệ khóa mã bảo mật.

Thẻ thông minh nổi bật với tính bảo mật cao nhờ vào các thành phần siêu nhỏ của con chip, có khả năng chống lại các tấn công vật lý Hệ điều hành của thẻ tuân theo tiêu chuẩn ISO-7816, cung cấp nhiều mức bảo vệ truy cập, làm cho việc tấn công dữ liệu qua phần mềm trở nên khó khăn Thẻ còn hỗ trợ các thuật toán mã hóa và cơ chế chống nhân bản, đồng thời thẻ EMV với bộ vi xử lý bên trong giúp ngăn ngừa giả mạo Nếu thẻ bị mất, ngân hàng chỉ cần khóa chip để ngăn chặn mọi giao dịch, từ đó giảm thiểu đáng kể nguy cơ đánh cắp hoặc sao chép dữ liệu của chủ thẻ so với thẻ từ.

Thẻ thông minh được coi như một máy tính cá nhân thu nhỏ với khả năng lưu trữ thông tin lớn, lên đến 10 lần so với các thiết bị truyền thống Việc quản lý thông tin trên thẻ rất đơn giản, không cần tích hợp phần mềm bổ sung Ngoài ra, người dùng có thể dễ dàng thay đổi, xóa hoặc thêm bớt thông tin khi cần thiết.

Công nghệ chip điện tử trong thẻ thông minh cho phép xử lý thông tin nhanh chóng, điều này làm cho thẻ thông minh trở thành lựa chọn lý tưởng cho các giao dịch yêu cầu tốc độ, chẳng hạn như thanh toán phí giao thông và thẻ gửi xe.

Thẻ thông minh cung cấp nhiều dịch vụ hỗ trợ người dùng, giúp đơn giản hóa thủ tục và thực hiện các giao dịch kinh doanh một cách hiệu quả, linh hoạt và an toàn với ít sự can thiệp của con người Đặc biệt, công nghệ giao tiếp không tiếp xúc của thẻ thông minh ngày càng trở nên phổ biến trong các ứng dụng thanh toán và mua vé, đặc biệt là trong việc bán vé vận tải công cộng Việc sử dụng thẻ thông minh sẽ giúp rút ngắn thời gian và thủ tục khi di chuyển bằng các phương tiện công cộng.

Các loại thẻ thông minh như Visa và MasterCard hiện nay được chấp nhận rộng rãi trên toàn cầu, cho phép người dùng thanh toán mua sắm trực tuyến và phục vụ cho nhu cầu du lịch, học tập Người dùng có thể dễ dàng di chuyển mà không cần mang theo quá nhiều tiền mặt.

 Hạn chế của thẻ thông minh

Thẻ thông minh, giống như thẻ tín dụng, nhỏ và nhẹ, nhưng dễ bị mất nếu không được quản lý cẩn thận Việc mất thẻ thông minh có thể gây ra nhiều bất lợi cho người sở hữu, vì nó có thể được sử dụng cho nhiều mục đích khác nhau như thẻ ghi nợ, thẻ xe buýt, hay chìa khóa văn phòng, dẫn đến sự bất tiện nghiêm trọng Hơn nữa, thẻ thông minh cũng dễ hư hỏng do chất liệu nhựa và chip điện tử, đặc biệt khi được để trong ví, nơi có môi trường khắc nghiệt cho các linh kiện điện tử này.

Vấn đề an toàn thẻ thông minh là một mối quan tâm lớn, khi không phải tất cả các thẻ đều đảm bảo an toàn Visa và MasterCard đã phát triển tiêu chuẩn mã hóa mới nhằm nâng cao an ninh cho ngành công nghiệp Thẻ thông minh được sử dụng để xác nhận khách hàng là một trong những phương pháp an toàn nhất, đặc biệt trong giao dịch ngân hàng qua internet, nhưng không thể đảm bảo an toàn 100% Nếu máy tính bị nhiễm phần mềm độc hại, an ninh có thể bị đe dọa, khi thông tin giữa khách hàng và ngân hàng có thể bị sửa đổi mà khách hàng không hay biết Một số phần mềm độc hại như Trojan và Silentbanker đã xuất hiện, khiến các ngân hàng như Fortis Dexia ở Bỉ phải áp dụng thẻ thông minh kết hợp với máy đọc thẻ không nối mạng để bảo vệ thông tin giao dịch Khách hàng nhập thông tin và PIN vào máy đọc thẻ, nhận chữ ký 8 chữ số để xác thực giao dịch Tuy nhiên, vẫn còn thiếu một chuẩn thống nhất về chức năng và an ninh cho thẻ thông minh Để khắc phục điều này, dự án ERIDANE đã được khởi động bởi The Berlin Group nhằm phát triển khung chức năng và an ninh cho thiết bị bán lẻ đầu cuối sử dụng thẻ thông minh.

Việc sử dụng thẻ nhận dạng đúng cách giúp công việc của nhân viên hành pháp và chuyên gia chăm sóc sức khỏe trở nên dễ dàng hơn Tuy nhiên, tội phạm có thể lợi dụng thông tin trên thẻ để thực hiện các hành vi phạm tội, như đánh cắp thông tin cá nhân và thực hiện giao dịch trái phép Những kẻ này có thể sử dụng thông tin bất hợp pháp để phục vụ cho mục đích cá nhân, ví dụ như rao bán thông tin của chủ thẻ trên thị trường chợ đen.

Việc sử dụng thẻ thông minh cho giao thông công cộng có thể gây ra rủi ro về quyền riêng tư cá nhân, vì hệ thống này cho phép quản lý giao thông theo dõi hành trình của người dùng Tại Phần Lan, cơ quan bảo vệ dữ liệu Ombudsman đã cấm YTV thu thập thông tin này, mặc dù người sở hữu thẻ có quyền yêu cầu lịch trình đi mà YTV đã tính phí Trước đây, thông tin về lịch trình đã từng được sử dụng để truy tìm thủ phạm trong vụ đánh bom Myamanni.

Rủi ro trong việc phân phối thẻ thông minh chủ yếu liên quan đến việc bổ sung sản phẩm, khi mà mặc dù thẻ thông minh có giá thành thấp, nhưng đầu đọc thẻ lại có giá từ 50 đến 200 đô la Để thúc đẩy sự phổ biến của thẻ thông minh, các công ty như Netscape và Microsoft đang đề xuất tích hợp phần mềm vào các gói sản phẩm của họ Tuy nhiên, không phải tất cả cửa hàng và nhà hàng đều trang bị phần cứng cần thiết để chấp nhận thẻ thanh toán này, do công nghệ an toàn hơn nhưng chi phí sản xuất và sử dụng cao hơn Vì vậy, một số cửa hàng có thể áp dụng phí tối thiểu khi khách hàng sử dụng thẻ thông minh thay vì thanh toán bằng tiền mặt.

Thách thức trong việc phát triển ứng dụng thẻ thông minh

Phát triển ứng dụng thẻ thông minh truyền thống là một quá trình phức tạp và kéo dài, do sự khác biệt trong hoạt động giữa các nhà sản xuất mặc dù thẻ đã được chuẩn hóa về kích thước và giao thức Hầu hết các công cụ phát triển được cung cấp bởi các nhà sản xuất thẻ thông minh sử dụng ngôn ngữ lắp ráp và phần cứng giả lập từ các nhà cung cấp chip silicon, khiến cho việc phát triển ứng dụng độc lập cho bên thứ ba trở nên khó khăn Kết quả là, lĩnh vực này chủ yếu được giới hạn cho một nhóm chuyên gia có kinh nghiệm và kiến thức sâu rộng về phần cứng và phần mềm thẻ thông minh.

Do thiếu giao diện ứng dụng tiêu chuẩn cao cấp trên thẻ thông minh, các nhà phát triển phải xử lý giao thức giao tiếp mức thấp và quản lý bộ nhớ theo phần cứng cụ thể Hầu hết ứng dụng thẻ thông minh hiện nay được phát triển từ đầu, mất từ một đến hai năm để ra mắt thị trường Việc nâng cấp phần mềm hoặc chuyển đổi sang nền tảng khác thường rất khó khăn hoặc không thể thực hiện.

Công nghệ Java Card là giải pháp vượt qua rào cản trong phát triển thẻ thông minh, cho phép chạy các ứng dụng (applet) viết bằng ngôn ngữ lập trình Java trên thẻ thông minh và thiết bị hạn chế bộ nhớ Điều này giúp các ứng dụng từ các nhà cung cấp dịch vụ khác nhau có thể tồn tại trên một thẻ duy nhất, tạo ra nền tảng thẻ thông minh an toàn, di động và đa ứng dụng, kết hợp nhiều lợi thế của ngôn ngữ Java.

Các hình thức tấn công trên thẻ thông minh

Thẻ thông minh sở hữu khả năng bảo mật cao nhờ vào các thành phần siêu nhỏ của con chip, giúp chống lại các tấn công vật lý Tuy nhiên, chúng vẫn tồn tại những điểm yếu mà hacker có thể khai thác Các hacker đã phát triển nhiều kỹ thuật nhằm quan sát và ngăn chặn hoạt động của thẻ thông minh, từ đó chiếm đoạt quyền truy cập và thông tin quan trọng Hiện nay, có ba loại tấn công chính đối với thẻ thông minh: tấn công logic, tấn công phần cứng và tấn công kênh phụ (side-channel).

Cuộc tấn công Logic là một phương thức mà hacker sử dụng các suy luận logic để khai thác lỗ hổng trong các thuật toán mã hóa Họ tập trung vào việc phân tích và tìm kiếm điểm yếu trong hệ thống bảo mật nhằm xâm nhập và chiếm đoạt thông tin.

Triển khai phần mềm cho thẻ thông minh, một thiết bị chứa bộ vi xử lý, yêu cầu thực hiện các lệnh để hoạt động hiệu quả Chip của thẻ hỗ trợ hàng ngàn lệnh bổ sung, tuy nhiên, tính năng này có thể bị lạm dụng để thu thập dữ liệu không mong muốn nhằm mục đích sửa đổi thông tin.

Các hệ thống thẻ thông minh hỗ trợ hơn 65.000 lệnh, tuy nhiên chỉ một số lệnh là cần thiết cho từng ứng dụng cụ thể Phần còn lại có nguy cơ bị lạm dụng cho các mục đích không chính đáng.

Định vị thông số và tràn bộ đệm là vấn đề quan trọng trong lập trình Việc nhập các giá trị tham số không hợp lệ, bao gồm cả những giá trị không được phép hoặc vượt quá chiều dài quy định, có thể dẫn đến những kết quả không mong muốn, chẳng hạn như hiện tượng tràn bộ đệm.

Giao thức mã hoá và cài đặt trên thẻ thông minh rất quan trọng, vì chúng điều khiển các hoạt động mật mã Nếu không được thiết kế cẩn thận, các giao thức này có thể chứa sai sót ẩn, ảnh hưởng đến hiệu suất của chip Một số thẻ sử dụng phương pháp dự phòng để tăng cường độ tin cậy khi gặp sự cố kỹ thuật, nhưng điều này có thể không an toàn và tạo cơ hội cho kẻ tấn công khai thác các chức năng giả tưởng.

Cuộc tấn công phần cứng yêu cầu các thiết bị hiện đại để xâm nhập vào vi mạch của thẻ chip, trong đó hacker khai thác các lỗ hổng bảo mật.

Tấn công xâm nhập (invasive attack) là phương pháp phá bỏ lớp bảo vệ của mạch, sử dụng kỹ thuật xử lý ảnh để quan sát các lớp và cấu trúc bên trong Quá trình này bao gồm việc kết nối các tiếp xúc điện và đọc bộ nhớ của thẻ Tuy nhiên, cách tấn công này yêu cầu thiết bị hiện đại, chính xác và đắt tiền, thường chỉ có sẵn tại các phòng thí nghiệm cao cấp.

Tấn công nửa xâm nhập (semi-invasive attack) là loại tấn công mà các mạch điện không được kết nối, khác với các hình thức tấn công khác Một ví dụ điển hình là việc sử dụng tia laser để chiếu vào mạch, khiến cho mạch hoạt động không bình thường Bằng cách phân tích các kết quả bất thường này, kẻ tấn công có thể thu thập được một số thông tin bí mật.

Dung môi hóa học, chất tẩy, và chất nhuộm là những chất khử quan trọng có khả năng phát hiện cấu hình của chip, từ đó cho phép phân tích và khai thác thông tin từ chip một cách hiệu quả.

Kính hiển vi quang học và điện tử có khả năng quan sát chip nhỏ hơn 1 micro Dù kích thước nhỏ, chip vẫn có thể được phân tích qua kính hiển vi để tiết lộ các phần hoạt động, mã chạy và giá trị trên bus dữ liệu Sự thiết kế cẩn thận của chip cho phép việc nghiên cứu và hiểu rõ hơn về chức năng của nó.

Trạm thăm dò là một đầu dò nhỏ được lắp đặt trên một đường dây tùy ý nhằm tạo ra một kênh mới Nếu bus dữ liệu có thể được xác định qua hai phương pháp khác nhau, tất cả các dữ liệu truyền tải, bao gồm mã lập trình và dữ liệu lập trình, có thể bị chặn lại, bao gồm cả các phím.

Tấn công qua kênh phụ là phương thức khai thác các hiện tượng vật lý để phân tích hoặc điều chỉnh hành vi của thẻ thông minh Các yếu tố như thời gian thực hiện thao tác, năng lượng tiêu thụ điện và cường độ điện trường đều có thể bị lợi dụng trong loại tấn công này.

Thời gian thực hiện thao tác có thể được phân tích để suy ra giá trị của các bit cần tìm Tấn công dựa trên thông tin thời gian thao tác lần đầu tiên được áp dụng vào năm 1996 đối với các thuật toán RSA, DES và Diffie-Hellman.

Năng lượng tiêu thụ điện của thẻ vào mỗi thời điểm phụ thuộc vào các giá trị trung gian của thuật toán Điều này cho phép chúng ta sử dụng tín hiệu về năng lượng tiêu thụ điện để thực hiện các cuộc tấn công Kết quả này được công bố bởi Paul Kocher vào năm 1999.

CÔNG NGHỆ JAVACARD

Giới thiệu JavaCard

JavaCard là công nghệ cho phép chạy các ứng dụng Java applet an toàn trên thẻ thông minh, tương tự như bộ nhớ nhỏ của thiết bị lưu vết Đây là nền tảng Java nhỏ nhất dành cho thiết bị nhúng, được phát triển bởi Sun JavaCard tích hợp dễ dàng vào các thiết bị, giúp đơn giản hóa lập trình thẻ thông minh nhờ vào các tính năng hướng đối tượng Công nghệ này cho phép người dùng lập trình cho các thiết bị và tạo ra các ứng dụng chuyên biệt, được sử dụng phổ biến trong thẻ SIM (trong GSM của điện thoại di động) và thẻ ATM.

Ngôn ngữ lập trình Java nổi bật với các ưu điểm như tính đơn giản, tính di động, mô hình bảo mật và tính hướng đối tượng, điều này cũng phản ánh trong JavaCard với mục tiêu tương thích và bảo mật JavaCard tạo ra một môi trường chuẩn cho thẻ thông minh, cho phép các ứng dụng Java hoạt động trên nhiều loại thẻ khác nhau Để đạt được điều này, JavaCard kết hợp máy ảo JavaCard với bộ thư viện chung Tuy nhiên, tính tương thích của JavaCard chịu ảnh hưởng lớn từ sự khác biệt về kích thước bộ nhớ, khả năng xử lý và hỗ trợ của các loại thẻ thông minh.

JavaCard có nhiều đặc điểm khác biệt so với Java thông thường Là một phiên bản rút gọn của Java, JavaCard sử dụng cú pháp tương tự, giúp lập trình viên dễ dàng viết mã mà không cần học cú pháp mới Tuy nhiên, sự quen thuộc này không đồng nghĩa với việc lập trình dễ dàng; có thể dễ dàng nhầm lẫn giữa tiêu chuẩn Java và JavaCard do sự tương đồng về cú pháp, tên gọi và toán tử Thực tế, hai môi trường này có sự khác biệt rõ rệt từ góc độ lập trình.

Java Card được phát triển với mục tiêu bảo vệ thông tin nhạy cảm, nhấn mạnh tính bảo mật thông qua nhiều yếu tố như đóng gói dữ liệu, tường lửa ứng dụng, mã hóa dữ liệu và việc tạo ứng dụng dạng Applet Tính năng đóng gói dữ liệu cho phép lưu trữ an toàn bên trong ứng dụng, chạy trên một máy ảo tách biệt với hệ điều hành và phần cứng Mỗi ứng dụng trên Java Card được bảo vệ bằng tường lửa, giúp kiểm soát quyền truy cập giữa các ứng dụng Hơn nữa, khả năng mã hóa của Java Card hỗ trợ các phương pháp mã hóa phổ biến như DES, 3DES, AES và RSA để đảm bảo an toàn cho dữ liệu.

JavaCard là thẻ thông minh có khả năng thực thi mã bytecode tương tự như Java, nhưng được tối ưu hóa với một tập con của Java API và các lệnh thẻ đặc biệt Giải pháp này giúp giảm kích thước tiêu chuẩn Java, cho phép các thẻ thông minh hỗ trợ nhiều ứng dụng cùng lúc Trong khi hầu hết thẻ thông minh hiện tại chỉ chạy một ứng dụng duy nhất, thẻ JavaCard cho phép nhiều ứng dụng từ các tổ chức khác nhau tồn tại trên cùng một thẻ, mang lại sự linh hoạt và tiện lợi cho các nhà phát triển.

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.

Kiến trúc JavaCardfe

JavaCard là một phiên bản rút gọn của ngôn ngữ lập trình Java, cung cấp kiến trúc phát triển ứng dụng mở cho thẻ thông minh Công nghệ này cũng được áp dụng trong việc phát triển ứng dụng cho các thiết bị có bộ nhớ hạn chế, chẳng hạn như SIM điện thoại di động và thẻ ATM gắn chip.

Máy ảo JavaCard được xây dựng trên một mạch tích hợp cụ thể và lớp JVM ẩn chứa công nghệ độc quyền của các lớp API để phát triển ứng dụng JavaCard, đồng thời cung cấp dịch vụ hệ thống cho các ứng dụng này Ngành công nghiệp hoặc doanh nghiệp có thể cung cấp thư viện bổ sung để cải thiện dịch vụ hoặc điều chỉnh mô hình bảo mật Các ứng dụng JavaCard, được gọi là applet, có thể tồn tại nhiều applet trên một thẻ, với mỗi applet được nhận diện duy nhất bằng AID (định danh ứng dụng) theo tiêu chuẩn ISO 7816.

Hình 2.1 Kiến trúc tổng quát của công nghệ Javacard

Công nghệ JavaCard bao gồm các bộ thông số kỹ thuật sau:

- JavaCard API: Một giao diện lập trình ứng dụng là lớp thư viện lõi của JavaCard.

- Máy ảo JavaCard: Mô tả các đặc tính của máy ảo để xử lý các ứng dụng của JavaCard

- JCRE: (Javacard runtime environment) mô tả hành vi chi tiết về thời gian chạy, 18 chẳng hạn như cách bộ nhớ quản lý hay cách thực thi bảo mật.

Tập ngôn ngữ JavaCard

JavaCard được tích hợp vào các bộ nhớ nhỏ của thiết bị lưu vết, cho phép lựa chọn kỹ lưỡng từ tập ngôn ngữ Java Dưới đây là bảng thống kê các thuộc tính mà thư viện Java hỗ trợ.

Hình 2.2 Các thuộc tính mà thư viện hỗ trợ

Máy ảo để chạy JavaCard

Sự khác biệt chính giữa máy ảo JavaCard (JCVM) và máy ảo Java (JVM) là JCVM được chia thành hai phần: một phần xử lý các ứng dụng trên thiết bị đầu cuối và phần còn lại thực hiện trên ứng dụng thẻ.

JCVM hỗ trợ một phần hạn chế của ngôn ngữ lập trình Java, nhưng vẫn giữ lại nhiều tính năng quen thuộc như đối tượng, thừa kế, gói, tạo đối tượng động, phương pháp ảo, giao diện và ngoại lệ Để tối ưu hóa bộ nhớ cho thẻ thông minh, JCVM đã giảm hỗ trợ cho một số yếu tố ngôn ngữ có thể tiêu tốn nhiều tài nguyên Hình 2.3 minh họa máy ảo của javacard.

Hình 2.3 Máy ảo của javacard.

Máy ảo trên thẻ (on-card) interpreter, hay còn gọi là trình thông dịch JavaCard, cung cấp hỗ trợ cho mô hình ngôn ngữ Java trong thời gian chạy, cho phép thực hiện các nhiệm vụ độc lập với phần cứng.

- Thực thi các đoạn mã bytecode và cuối cùng thực thi applet.

- Kiểm soát việc cấp phát bộ nhớ và tạo đối tượng.

Tường lửa đóng vai trò quan trọng trong việc bảo đảm an ninh thời gian chạy, hoạt động như một lớp bảo vệ giữa các ứng dụng và hỗ trợ việc chia sẻ dữ liệu một cách an toàn.

Phần máy ảo Java trên các thiết bị đầu cuối (off-card) bao gồm công cụ JCC (javacard converter) giúp xác thực, đóng gói và tối ưu mã hóa, thường được gọi là công cụ chuyển đổi thẻ Java Công cụ này tạo ra tệp tin Applet được Chuyển đổi (CAP), chứa tất cả các lớp trong một gói Java dưới dạng nhị phân có thể chạy được Tuy nhiên, các lớp động không được hỗ trợ trong Java Card.

- Các lớp động cần phải truy cập vào những vị trí lưu trữ của tệp mô tả lớp, điều này là không khả dụng trong môi trường thẻ.

- Vấn đề an ninh (bảo mật) trong thẻ thông minh nghiêm cấm các lớp động (đối tượng ràng buộc động được cho phép).

Thẻ thông minh có giới hạn về tài nguyên và bộ nhớ, do đó bộ chuyển đổi cần đóng gói tất cả các lớp mà ứng dụng tham chiếu vào một gói ứng dụng Trong quá trình này, bộ công cụ hoạt động như một bộ tiền xử lý gói ứng dụng JavaCard, thực hiện các bước cần thiết để tối ưu hóa hiệu suất và khả năng sử dụng của thẻ thông minh.

Xác thực ứng dụng là quá trình kiểm tra định dạng gói ứng dụng, đảm bảo rằng tất cả các bảng ký hiệu đầy đủ và các phạm vi ngôn ngữ lập trình tuân thủ các đặc tả của Java Card.

Để chuẩn bị cho việc tạo ra kiến trúc dữ liệu cho máy ảo, cần phân bổ lưu trữ tương ứng với các lớp, đồng thời tạo ra các trường và phương thức tĩnh Ngoài ra, việc khởi tạo các biến tĩnh với các giá trị mặc định cũng rất quan trọng.

- Quyết định: Thay thế các tham chiếu ký tự tới phương thức và biến bằng tham chiếu trực tiếp khi có thể.

Để tối ưu hóa hiệu suất của máy ảo trên thẻ thông minh, cần thực hiện ba bước trong bộ công cụ chuyển đổi trước khi cài đặt applet Khi ứng dụng được cài lên thẻ, nó sẽ được coi là đã nạp và sẵn sàng chạy, mặc dù có thể cần một số khởi tạo JCRE (JavaCard Run Environment) sẽ tiến hành các thủ tục khởi tạo, thiết lập các tham số với giá trị mặc định trong giao diện Mặc dù JCC (JavaCard converter) thực hiện các bước này càng sớm càng tốt, một số ràng buộc cuối cùng vẫn được hỗ trợ bởi môi trường chạy JavaCard.

Tệp CAP là một định dạng nhị phân chứa các lớp trong một package Java, và nó được lưu trữ trong tệp JAR Tệp JAR chứa nhiều thành phần nhỏ, mỗi thành phần chứa thông tin về lớp, thực thi bytecode, liên kết và xác minh thông tin của tệp CAP Định dạng tệp CAP cho phép tối ưu hóa thông qua cấu trúc dữ liệu phù hợp và giảm thiểu gián tiếp, đồng thời định nghĩa một tập lệnh bytecode được tối ưu hóa từ mã bytecode Java, mà mã này là mã trung gian chưa phải là mã máy.

Java được phát triển với tiêu chí "viết một lần, thực thi khắp nơi" (WORA), cho phép chương trình chạy trên mọi nền tảng thông qua môi trường thực thi phù hợp Tệp lớp là phần trung tâm của kiến trúc Java, định nghĩa tiêu chuẩn cho sự tương thích nhị phân Trong hệ thống JavaCard, tệp CAP là định dạng chuẩn cho sự tương thích nhị phân trên thẻ Java, cho phép tải động các lớp applet sau khi thẻ đã được thực hiện.

Cài đặt JavaCard và chương trình cài đặt trên thiết bị (Off-Card)

Các công cụ sau đây yêu cầu cài đặt ứng dụng JavaCard:

- Một công cụ chuyển đổi để chuyển đổi một applet JavaCard sang một định dạng cần thiết để cài đặt.

- Các công cụ xác minh ngoài thẻ để kiểm tra tính toàn vẹn của các tệp được tạo ra bởi Converter.

Trình cài đặt thẻ gắn ngoài cho phép cài đặt applet JavaCard vào thẻ thông minh, hỗ trợ nhà phát triển biên dịch, kiểm tra và gỡ lỗi applet trong môi trường JCWDE (JavaCard Workstation Development Environment) JCWDE mô phỏng môi trường hoạt động của thẻ JavaCard, cho phép kiểm tra ban đầu mà không cần chuyển đổi applet, tạo tập tin “mask” hay cài đặt trực tiếp Ngoài ra, nó còn hỗ trợ chuyển đổi applet và các lớp thành tập tin CAP, giúp xuất khẩu để sử dụng trong các gói khác Trình biên dịch Java tạo ra tệp class từ mã nguồn, sau đó bộ chuyển đổi xử lý và chuyển gói Java sang tệp CAP, cho phép quản lý hiệu quả các applet.

Trong công nghệ Java Card, applet JavaCard không được tích hợp trực tiếp vào mask của thẻ thông minh Sau khi sản xuất thẻ, applet JavaCard không được tải trực tiếp để cài đặt, mà thay vào đó, lớp applet và các lớp trong gói của nó được chuyển đổi thành tệp applet JavaCard (JCA) Tệp JCA cùng với bất kỳ gói nào khác trong mask sẽ được chuyển đổi sang định dạng tương thích với môi trường chạy đích Kết quả này sau đó được tích hợp vào mask, với cả tệp JCA và tệp CAP đều là tệp tự mô tả, chứa thông tin về gói đã được chuyển đổi.

Applet JavaCard không được cài đặt trực tiếp vào thẻ thông minh mà thông qua tệp CAP Trình cài đặt thẻ tạo tệp kịch bản chứa các lệnh APDU xác định phần đầu, phần kết thúc, các thành phần và dữ liệu của tệp CAP Tệp kịch bản này được sử dụng làm đầu vào cho tiện ích APDUTool, giúp gửi lệnh APDU vào môi trường chạy JavaCard hoặc môi trường mô phỏng như JCWDE Khi tệp được thiết kế xong, APDUTool sẽ khởi động trình cài đặt trên thẻ và tải tệp CAP Nếu tệp kịch bản yêu cầu, trình cài đặt sẽ tạo ra các applet định nghĩa trong tệp CAP, giúp các applet có sẵn trong môi trường JavaCard Giao thức APDU sẽ gửi các lệnh APDU đến JCWDE hoặc môi trường JavaCard.

APDU là các yêu cầu vận hành cho thẻ thông minh, và lớp APDU trong API của JavaCard cung cấp giao diện mạnh mẽ, linh hoạt để xử lý các APDU theo tiêu chuẩn ISO 7816-4.

Hình 2.4 Trình cài đặt JavaCard và chương trình cài đặt ngoài thẻ

Các lệnh APDU luôn được tổ chức thành các cặp, bao gồm một lệnh APDU và một APDU phản hồi để gửi kết quả thực hiện Trong lĩnh vực thẻ thông minh, thẻ chỉ phản hồi các lệnh APDU từ bên ngoài mà không tự khởi động truyền thông Ứng dụng đầu cuối gửi lệnh APDU qua CAD, JCRE tiếp nhận lệnh và chuyển tiếp đến applet thích hợp Applet được chọn sẽ xử lý lệnh và trả về APDU phản ứng cho ứng dụng đầu cuối Các lệnh Command APDU và APDU phản hồi được trao đổi luân phiên giữa thẻ và CAD.

Môi trường chạy JavaCard

Trình cài đặt và trình biên dịch không phải là những thành phần duy nhất của hệ thống JavaCard; còn có nhiều thành phần khác Môi trường chạy JavaCard (JCRE) bao gồm các thành phần hệ thống thẻ Java hoạt động trong thẻ thông minh, chịu trách nhiệm quản lý tài nguyên, truyền thông mạng, thực hiện applet và bảo mật JCRE thực sự đóng vai trò như hệ điều hành của thẻ thông minh.

JCRE là nền tảng chạy ứng dụng JavaCard trên phần cứng thẻ thông minh, bao gồm máy ảo JavaCard, các lớp khung ứng dụng và các phần mở rộng chuyên ngành JCRE tách biệt applet khỏi công nghệ độc quyền của các nhà cung cấp thẻ, cung cấp hệ thống tiêu chuẩn và giao diện API, giúp applet dễ viết và di chuyển giữa các kiến trúc thẻ khác nhau Lớp dưới cùng của JCRE chứa máy ảo Java Card (JCVM) và các phương thức native, thực thi bytecode, quản lý bộ nhớ và bảo mật thời gian chạy Các phương thức native hỗ trợ lớp JCVM và lớp hệ thống, đảm nhiệm các giao thức truyền thông, quản lý bộ nhớ và hỗ trợ mã hóa.

Hình 2.5 Kiến trúc hệ thống trên thẻ

JCVM quản lý việc cấp phát bộ nhớ, thực hiện bytecode, quản lý đối tượng và đảm bảo an ninh Các phương thức native xử lý giao thức truyền thông mức thấp, quản lý bộ nhớ và hỗ trợ mã hóa Các lớp Hệ thống thực hiện các nhiệm vụ tương tự như lõi hệ điều hành và gọi các phương thức native để hoàn thành công việc Các lớp API là thư viện nhỏ giúp việc phát triển applet trở nên dễ dàng hơn Trình cài đặt nạp applet vào thẻ, trong khi các phần mở rộng như Open Platform mở rộng dịch vụ JCRE để đáp ứng nhu cầu bảo mật đặc biệt của ngân hàng.

JCRE được nạp vào thẻ Java tại nhà máy và duy trì cho đến khi thẻ bị phá hủy Khi thẻ được đặt trong thiết bị chấp nhận thẻ (CAD), nó sẽ được kích hoạt và sao chép dữ liệu từ chương trình từ EEPROM và ROM sang RAM một cách nhanh chóng Trong quá trình giao dịch, dữ liệu và các đối tượng cần được bảo toàn và sao chép từ RAM vào EEPROM EEPROM có khả năng giữ dữ liệu khi không có điện, và khi mất điện, thẻ sẽ chuyển sang chế độ ngủ đông.

API JavaCard

Các ứng dụng JavaCard thường liên quan đến nhiều công ty phát hành thẻ, do đó tính tương thích cần được thiết kế ngay từ giai đoạn đầu Về mặt kỹ thuật, JavaCard API đóng vai trò quan trọng, là lớp phần mềm giúp ứng dụng giao tiếp hiệu quả với thẻ thông minh và đầu đọc từ nhiều nhà sản xuất khác nhau.

API hoạt động như một lớp phiên dịch giữa ứng dụng và thẻ, cho phép lựa chọn thẻ thông minh từ nhiều nhà cung cấp Việc mở ứng dụng cho nhiều thẻ Java không chỉ khuyến khích cạnh tranh giữa các nhà cung cấp mà còn mang lại lợi ích như chất lượng tốt hơn và giá cả hợp lý hơn.

API không phải là một giao diện phổ quát cho tất cả các thẻ Java, mà là một công cụ giúp các ứng dụng gửi lệnh đến hệ điều hành của nhiều thẻ khác nhau Lập trình viên có thể bắt đầu phát triển API cho một vài thẻ và dần dần mở rộng để bao gồm nhiều loại JavaCard hơn Mặc dù có giới hạn về kích thước phần mềm trên một số thiết bị di động, API cần đủ linh hoạt để hỗ trợ các thẻ từ nhiều nhà cung cấp khác nhau Ngoài ra, API cũng cho phép kiểm soát các phiên bản dữ liệu và có thể cập nhật thông tin trên thẻ mà không cần thu hồi chúng để định dạng lại.

JavaCard API là một tập hợp các lớp dành cho ứng dụng thẻ thông minh theo tiêu chuẩn ISO 7816, bao gồm ba gói lõi: java.lang, java.framework và java.security, cùng với một gói mở rộng là java-cardx.crypto Tuy nhiên, một số lớp nền tảng Java như giao diện GUI, network I/O và hệ thống file I/O không được hỗ trợ trong JavaCard API, điều này giải thích tại sao thẻ thông minh không thể sử dụng các tính năng này.

Cụ thể hơn về các gói:

Gói java.lang của JavaCard là một phiên bản rút gọn của gói java.lang trên nền tảng Java, bao gồm các lớp như Object, Throwable và một số lớp ngoại lệ liên quan đến máy ảo Lớp Object định nghĩa một gốc cho phân cấp lớp JavaCard, trong khi lớp Throwable cung cấp cơ sở cho tất cả các ngoại lệ Các lớp ngoại lệ được hỗ trợ đảm bảo tính nhất quán khi xảy ra lỗi do vi phạm ngôn ngữ Java, ví dụ như NullPointerException được ném ra khi truy cập vào một tài liệu tham khảo null trong cả máy ảo Java và JavaCard Gói java.lang cũng cung cấp hỗ trợ cho các tính năng ngôn ngữ cơ bản của Java.

RuntimeException ArrayIndexOutOfBoundsException ArithmeticException ArrayStoreException IndexOutOfBoundsException ClassCastException NullPointerException NegativeArraySizeException SecurityException

Gói javacard.framework là một phần thiết yếu trong phát triển applet JavaCard, cung cấp các lớp khung và giao diện cho các chức năng cốt lõi Nó định nghĩa lớp cơ sở Applet, tạo ra khuôn khổ cho việc thực hiện và tương tác với applet trong suốt vòng đời của nó với JCRE Vai trò của javacard.framework đối với JCRE tương tự như vai trò của lớp Java Applet đối với trình duyệt Để phát triển applet, người dùng cần mở rộng từ lớp cơ sở Applet và ghi đè các phương thức trong lớp này để thực hiện chức năng mong muốn.

Lớp APDU trong gói javacard.framework là một phần quan trọng, được thực hiện bởi các giao thức truyền dẫn chuẩn T0 và T=1 APDU được thiết kế để độc lập với giao thức truyền tải, giúp ẩn đi những phức tạp giữa T=0 và T=1 cho các nhà phát triển applet Nhờ vào các phương pháp trong lớp APDU, các nhà phát triển có thể dễ dàng xử lý các lệnh APDU, đảm bảo applet hoạt động chính xác bất kể giao thức truyền tải cơ bản mà nền tảng hỗ trợ.

Nền tảng JavaCard không hỗ trợ gói java.lang.System, mà thay vào đó cung cấp lớp javacard.framework.JCSystem Lớp JCSystem này cung cấp giao diện cho các hành vi hệ thống, bao gồm các phương pháp để kiểm soát việc thực hiện applet, quản lý tài nguyên, quản lý giao dịch, và chia sẻ đối tượng giữa các applet trên nền tảng Java Card.

Gói javacard.frameworkpackage hỗ trợ các lớp khác như mã PIN, tiện ích và trường hợp ngoại lệ Mã PIN, viết tắt của số nhận dạng cá nhân, là hình thức mật khẩu phổ biến nhất dùng để xác thực chủ thẻ thông minh.

Gói Javacard.security cung cấp một khuôn khổ cho các chức năng mật mã trên nền JavaCard, được thiết kế dựa trên gói java.security Nó định nghĩa các giao diện cho khóa mật mã sử dụng trong các thuật toán đối xứng như DES và bất đối xứng như DSA và RSA Bên cạnh đó, gói này còn hỗ trợ các lớp cơ sở trừu tượng như RandomData, Chữ ký và MessageDigest, giúp tạo ra dữ liệu ngẫu nhiên và tính toán thông báo thư cùng chữ ký.

Gói Javacardx.crypto là một phần mở rộng quan trọng, bao gồm các lớp và giao diện mật mã tuân thủ quy định quản lý xuất khẩu của Hoa Kỳ Gói này định nghĩa lớp cơ sở trừu tượng, cung cấp hỗ trợ cho các chức năng mã hóa và giải mã.

Các gói javacard.security và javacardx.crypto định nghĩa các giao diện API mà applet sử dụng để yêu cầu dịch vụ mật mã, nhưng không cung cấp thực hiện cụ thể Nhà cung cấp JCRE phải cung cấp các lớp triển khai cho các giao diện chính và mở rộng từ các lớp trừu tượng như RandomData, Signature, MessageDigest và Cipher Thông thường, một bộ xử lý đồng bộ riêng biệt được tích hợp trong thẻ thông minh để thực hiện các tính toán mật mã.

Package và quy ước đặt tên Applet

Trong công nghệ JavaCard, mỗi applet được xác định bằng một "định danh ứng dụng" (AID), khác với cách đặt tên thông thường của các ứng dụng Mỗi gói Java cũng được gán một AID, cho phép các gói khi nạp vào thẻ liên kết với nhau thông qua AID Quy ước này tuân thủ đặc tả thẻ thông minh theo tiêu chuẩn ISO 7816.

Một AID là một mảng các byte, có thể được phân chia thành hai phần riêng biệt Phần đầu tiên chứa 5 byte, được gọi là RID (mã nguồn).

PIX có thể từ 0 đến 11 byte chiều dài Do đó một AID có thể từ 5 đến 16 byte trong tổng chiều dài.

Java Card Applet

JavaCard applet khác với các applet Java thông thường, mặc dù chúng đều mang tên "applet" Một JavaCard Applet là chương trình Java tuân thủ các quy ước cụ thể để hoạt động trong môi trường Java Card, không phải trong trình duyệt Tên "applet" được sử dụng vì các ứng dụng Java Card có thể được nạp vào thẻ sau khi sản xuất, cho phép tải xuống tự động thay vì phải ghi vào ROM trong quá trình sản xuất như nhiều hệ thống nhúng khác.

Lớp applet cần phải kế thừa từ lớp javacard.framework.Applet, vì đây là lớp cơ sở cho tất cả các applet trên thẻ Java Lớp applet cung cấp một cấu trúc chi tiết để định nghĩa các biến và phương thức của một applet.

2.9.1 Tiến trình phát triển Applet

Sự phát triển applet JavaCard bắt đầu giống như bất kỳ chương trình Java nào khác, khi nhà phát triển viết một hoặc nhiều lớp Java và biên dịch mã nguồn bằng trình biên dịch Java để tạo ra các lớp.

Sau khi applet được phát triển, nó sẽ được chạy, thử nghiệm và gỡ lỗi trong môi trường mô phỏng Bộ mô phỏng này tái hiện môi trường chạy JavaCard trên máy tính hoặc trạm làm việc khác Trong môi trường này, applet hoạt động trên một máy ảo Java, cho phép thực thi các lớp của applet Việc mô phỏng này giúp nhà phát triển sử dụng nhiều công cụ phát triển Java như máy ảo, trình gỡ lỗi và các công cụ khác, từ đó kiểm tra hành vi của applet và nhanh chóng xem kết quả mà không cần qua quá trình chuyển đổi Trong giai đoạn này, các khía cạnh chức năng tổng thể của applet được kiểm tra, tuy nhiên, một số tính năng thời gian chạy của máy ảo Java Card như tường lửa applet và hành vi của đối tượng vẫn không thể được kiểm tra.

Các tệp class của applet được chuyển đổi thành gói Java và sau đó sang tệp CAP thông qua JavaCard Trình chuyển đổi thẻ Java không chỉ xử lý các tệp class mà còn có thể xuất ra một hoặc nhiều tệp export cho gói applet Khi hoàn tất quá trình chuyển đổi, một tệp CAP và tệp export sẽ được tạo ra cho mỗi gói nếu applet bao gồm nhiều gói.

Trong bước tiếp theo, các tệp CAP đại diện cho applet được nạp và thử nghiệm trong môi trường mô phỏng, nơi trình mô phỏng tái hiện môi trường chạy JavaCard trên máy tính Trình mô phỏng này không chỉ phức tạp mà còn bao gồm máy ảo Java Card, đảm bảo rằng hành vi của applet trong giả lập tương tự như khi chạy trên thẻ thực Trong giai đoạn phát triển, không chỉ applet được thử nghiệm mà còn đo lường hành vi thời gian chạy của nó Trình gỡ lỗi cho phép nhà phát triển thiết lập điểm ngắt và theo dõi thời gian thực thi của applet trong môi trường giả lập Khi applet đã được thử nghiệm và sẵn sàng, nó sẽ được tải và cài đặt trên thẻ thông minh Java.

Hình 2.6 Tiến trình phát triển Applet

Việc cài đặt aplet có thể diễn ra tại nhà máy hoặc văn phòng của nhà phát hành, cũng như sau khi phát hành thông qua quá trình cài đặt an toàn nếu được xác định bởi nhà sản xuất thẻ Quá trình này bao gồm việc tải xuống aplet đã được ký kỹ thuật số, mà JCRE xác minh tính hợp pháp trước khi cài đặt Các aplet được cài đặt thông qua tải xuống không được chứa các cuộc gọi phương thức tự nhiên vì lý do không đáng tin cậy.

Applet cần được cài đặt tại nhà máy hoặc môi trường tin cậy để đảm bảo an ninh, vì các cuộc gọi nội bộ vượt qua khuôn khổ an ninh công nghệ Java Việc này giúp tăng cường độ tin cậy trước khi được phép trên thẻ sau khi cài đặt JavaCard Không có tương tác trực tiếp với thiết bị chấp nhận thẻ hoặc ứng dụng ngoại lệ; các lớp cài đặt có thể tương tác với JCRE hoặc các lớp khác JCRE chọn applet và chuyển APDU đến các applet đã chọn, bảo vệ nhà phát triển khỏi CPU thẻ thông minh, CAD và các giao thức truyền thông ISO Ngoài ra, JCRE còn dịch các ngoại lệ không được ném ra bởi các lớp hoặc câu lệnh trả về bình thường thành các giá trị chuẩn ISO.

Kho lưu trữ cho một applet đã cài đặt không thể phục hồi, và khi một phiên bản mới hơn được cài đặt, nó sẽ chiếm vị trí lưu trữ mới, khiến phiên bản trước đó không còn truy cập được Ngoài ra, các applet thẻ Java có thể trở nên không thể truy cập bằng cách loại bỏ tham chiếu của chúng từ bảng đăng ký applet JCRE Khi các tài liệu tham khảo này bị gỡ bỏ, applet sẽ không còn khả năng truy cập nữa.

Cài đặt thẻ JavaCard khởi tạo các thành viên tĩnh của nó, nhờ vào công nghệ Java Card hỗ trợ khởi động tĩnh Bộ khởi tạo không thể thực thi mã phần mềm Java và không thể gán giá trị không cố định cho các thành viên tĩnh Quá trình cài đặt cũng dẫn đến việc gọi phương thức khởi tạo của applet, khác với các applet Java.

Các ứng dụng chạy trên thẻ thông minh Java giao tiếp với máy chủ CAD thông qua APDU Khi nhận lệnh APDU, applet sẽ giải mã các trường trong tiêu đề và thực hiện các chức năng yêu cầu Đối với lệnh phản ứng, applet cần định nghĩa từ trạng thái để phản ánh kết quả xử lý Trong trường hợp xử lý thành công, applet trả về từ trạng thái thành công, ngược lại, nếu có lỗi xảy ra, applet sẽ trả lại từ trạng thái khác để biểu thị tình trạng bên trong hoặc chẩn đoán lỗi.

Cài đặt Applet là quá trình nạp các lớp applet từ tệp CAP vào môi trường chạy Java Card, tạo ra một ví dụ applet có thể thực thi Tệp CAP là đơn vị tải và cài đặt trên nền tảng JavaCard, chứa các lớp của gói Java, với applet tối thiểu là một gói Java có một lớp duy nhất kế thừa từ lớp javacard.framework Applet Để tải applet, trình cài đặt thẻ sẽ chuyển đổi lệnh APDU từ tệp CAP, ghi nội dung vào bộ nhớ thẻ và liên kết các lớp trong tệp với các lớp khác trên thẻ Ngoài ra, trình cài đặt cũng sẽ tạo và khởi tạo dữ liệu cần thiết cho JCRE để hỗ trợ applet Nếu applet yêu cầu nhiều gói, mỗi tệp CAP sẽ được nạp vào thẻ.

Bước cuối cùng trong quá trình cài đặt applet là trình cài đặt tạo ra một ví dụ applet và đăng ký với JCRE Để thực hiện điều này, trình cài đặt sẽ gọi phương thức cài đặt với cú pháp: public static void install (byte[] bArray, short offset, byte length).

Phương pháp cài đặt là một phần quan trọng của applet, tương tự như phương pháp chính trong ứng dụng Java, và bắt buộc phải được thực hiện Trong quá trình này, constructor của applet được gọi để tạo và khởi tạo một ví dụ applet, với các tham số cài đặt được gửi cùng tệp CAP Sau khi applet được khởi tạo và đăng ký với JCRE, nó có thể được chọn và thực thi JCRE xác định applet đang chạy thông qua AID, và applet có thể tự đăng ký với JCRE bằng AID mặc định hoặc chọn AID từ tệp khác Các tham số cài đặt có thể cung cấp AID thay thế, vì JCRE hoạt động trong môi trường đơn luồng, chỉ cho phép một applet chạy tại một thời điểm Khi lần đầu tiên được cài đặt, applet ở trạng thái không hoạt động và chỉ hoạt động khi được chọn bởi ứng dụng máy chủ Sau khi được chọn, applet chờ lệnh từ ứng dụng máy chủ và thực hiện lệnh đó, trả về kết quả cho máy chủ.

Phương thức truyền nhận, trao đổi dữ liệu

Ứng dụng Java Card thực hiện việc trao đổi dữ liệu giữa ứng dụng trên thiết bị đầu cuối thông qua các đơn vị dữ liệu giao thức truyền tải (TPDU) và đơn vị dữ liệu giao thức ứng dụng (APDU) Luận văn tập trung vào cấu trúc của APDU và phương thức trao đổi TPDU, APDU trong hai giao thức T=0 và T=1 của JavaCard Quy trình trao đổi TPDU và APDU giữa hai ứng dụng trên thẻ và thiết bị đầu cuối được minh họa trong hình 2.7.

Hình 2.7 Trao đổi thông tin giữa ứng dụng trên thẻ và ứng dụng trên thiết bị đầu cuối

- Cặp câu lệnh – phản hồi

Một đơn vị dữ liệu trong giao thức ứng dụng bao gồm một câu lệnh APDU và một phản hồi APDU Quá trình trong giao thức này diễn ra bằng cách gửi lệnh APDU, xử lý nội dung nhận được và sau đó trả về phản hồi APDU Hai APDU này kết hợp với nhau để tạo thành cặp câu lệnh - phản hồi.

Câu lệnh APDU phải bao gồm phần mở đầu 4 byte: CLA, INS, P1, P2, và có thể có thêm phần thân với độ dài tùy ý Phản hồi APDU cần có mã trạng thái (Status Word - SW) gồm 2 byte: SW1, SW2, cùng với khả năng bổ sung phần thân tùy biến.

Các trường dữ liệu trong cặp câu lệnh - phản hồi.

Mỗi một cặp câu lệnh - phản hồi có thể mang theo một trường dữ liệu câu lệnh/phản hồi.

CLA (1 byte) là trường bắt buộc xác định lớp hướng dẫn cho từng ứng dụng, với các giá trị CLA hợp lệ được quy định trong tiêu chuẩn ISO 7816-4.

Trường INS (1 byte) là một trường bắt buộc, chỉ ra hướng dẫn cụ thể trong lớp hướng dẫn được xác định bởi trường CLA Tiêu chuẩn ISO 7816-4 quy định các hướng dẫn cơ bản cần thiết để truy cập dữ liệu trên thẻ, được cấu trúc theo hệ thống tệp tin như định nghĩa trong tiêu chuẩn Ngoài ra, các chức năng bổ sung, bao gồm một số chức năng bảo mật, cũng đã được chỉ định trong tiêu chuẩn Bạn có thể xác định các giá trị INS riêng biệt cho ứng dụng của mình chỉ khi sử dụng giá trị byte CLA phù hợp, theo quy định của tiêu chuẩn.

- P1(1 byte): trường bắt buộc này định nghĩa tham số chỉ dẫn 1 Bạn có thể sử dụng trường này để xác định trường INS, hoặc cho dữ liệu đầu vào.

- P2(1 byte): Trường bắt buộc này định nghĩa tham số chỉ dẫn 2 Bạn có thể sử dụng trường này để xác định trường INS, hoặc cho dữ liệu đầu vào.

- Lc (1 byte): trường tùy chọn này là số byte trong trường dữ liệu của lệnh.

- trường Data (biến, Lc số byte): trường tùy chọn này giữ dữ liệu lệnh.

- Le (1 byte): trường tùy chọn này chỉ định số byte tối đa trong trường dữ liệu của phản hồi dự kiến.

APDU phản hồi có trường bắt buộc:

- Trường Data (chiều dài thay đổi, được xác định bởi Le trong lệnh APDU): Trường tùy chọn này chứa dữ liệu trả về bởi applet.

- SW1 (1 byte): Trường bắt buộc này là từ trạng thái 1.

- SW2 (1 byte): Trường bắt buộc này là từ trạng thái 2.

Các giá trị của từ trạng thái được định nghĩa trong tiêu chuẩn ISO 7816-4:

Hình 2.8 Mã trạng thái phản hồi

HỆ MÃ RSA, VÀ THUẬT TOÁN MÃ HÓA AES

Ngày đăng: 12/03/2025, 22:48

HÌNH ẢNH LIÊN QUAN

Hình 1.4 Thẻ không tiếp xúc - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 1.4 Thẻ không tiếp xúc (Trang 12)
Hình 2.1 Kiến trúc tổng quát của công nghệ Javacard - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.1 Kiến trúc tổng quát của công nghệ Javacard (Trang 22)
Hình 2.3 Máy ảo của javacard. - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.3 Máy ảo của javacard (Trang 23)
Hình 2.2 Các thuộc tính mà thư viện hỗ trợ - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.2 Các thuộc tính mà thư viện hỗ trợ (Trang 23)
Hình 2.4 Trình cài đặt JavaCard và chương trình cài đặt ngoài thẻ - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.4 Trình cài đặt JavaCard và chương trình cài đặt ngoài thẻ (Trang 27)
Hình 2.5 Kiến trúc hệ thống trên thẻ - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.5 Kiến trúc hệ thống trên thẻ (Trang 28)
Hình 2.6 Tiến trình phát triển Applet - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.6 Tiến trình phát triển Applet (Trang 34)
Hình 2.7 Trao đổi thông tin giữa ứng dụng trên thẻ và ứng dụng trên thiết - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.7 Trao đổi thông tin giữa ứng dụng trên thẻ và ứng dụng trên thiết (Trang 37)
Hình 2.8 Mã trạng thái phản hồi - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.8 Mã trạng thái phản hồi (Trang 39)
Hình 4.1. Cấu hình của thiết bị card ảo. - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 4.1. Cấu hình của thiết bị card ảo (Trang 46)
Hình 4.2. Biểu đồ phân rã chức năng - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 4.2. Biểu đồ phân rã chức năng (Trang 47)
Hình 1. Biểu đồ luồng hoạt động của thẻ đã có dữ liệu - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 1. Biểu đồ luồng hoạt động của thẻ đã có dữ liệu (Trang 49)
Hình 2.4. Giao diện nhập thông tin bệnh nhân Khi thẻ chưa có dữ liệu hoặc khởi tạo lại thông tin thẻ ta sử dụng giao diện nhập thông tin - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 2.4. Giao diện nhập thông tin bệnh nhân Khi thẻ chưa có dữ liệu hoặc khởi tạo lại thông tin thẻ ta sử dụng giao diện nhập thông tin (Trang 50)
Hình 4.3. Giao diện APDU lệnh - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 4.3. Giao diện APDU lệnh (Trang 51)
Hình 4.4. Giao diện hiển thị thông tin bệnh nhân - Mã Hóa Giải Mã Sử Dụng Rsa.docx
Hình 4.4. Giao diện hiển thị thông tin bệnh nhân (Trang 52)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w