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

Tìm hiểu và phát hành rộng rãi thẻ thông minh chuẩn EMV

77 504 4

Đ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

TCPIP có cấu trúc tương tự như mô hình OSI, tuy nhiên để đảm bảo tính tương thích giữa các mạng và sự tin cậy của việc truyền thông tin trên mạng, bộ giao thức TCPIP được chia thành 2 phần riêng biệt: giao thức IP sử dụng cho việc kết nối mạng và giao thức TCP để đảm bảo việc truyền dữ liệu một cách tin cậy.

i MỤC LỤC MỤC LỤC i DANH MỤC CÁC TỪ VIẾT TẮT iii DANH MỤC CÁC HÌNH VẼ v Chương - TỔNG QUAN VỀ THẺ THÔNG MINH 1.1 KHÁI NIỆM THẺ THÔNG MINH 1.2 CÁC LOẠI THẺ CƠ BẢN 1.2.1 Thẻ nhớ thẻ chip 1.2.2 Thẻ tiếp xúc thẻ không tiếp xúc 1.3 PHẦN CỨNG CỦA THẺ THÔNG MINH 1.3.1 Các điểm tiếp xúc 1.3.2 Bộ xử lý trung tâm thẻ thông minh 1.3.3 Bộ đồng xử lý thẻ thông minh 1.3.4 Hệ thống nhớ thẻ thông minh 1.4 TRUYỀN THÔNG VỚI THẺ THÔNG MINH 1.4.1 Thiết bị chấp nhận thẻ ứng dụng máy chủ 1.4.2 Mô hình truyền thông với thẻ thông minh 1.4.3 Giao thức APDU 1.4.4 Mã hoá bit 1.4.5 Giao thức TPDU 1.4.6 Thông điệp trả lời để xác lập lại .10 Chương - HỆ ĐIỀU HÀNH THẺ THÔNG MINH 11 2.1 GIỚI THIỆU HỆ ĐIỀU HÀNH THẺ THÔNG MINH 11 2.2 CÁC FILE HỆ THỐNG TRONG THẺ THÔNG MINH 13 2.2.1 Thư mục gốc 13 2.2.2 Thư mục chuyên dụng 13 2.2.3 File 14 2.3 TRUY CẬP FILE 16 2.3.1 Định danh file 16 2.3.2 Các phương thức lựa chọn file 16 2.3.3 Điều kiện truy cập file 17 2.4 CẤU TRÚC FILE THẺ EMV 17 2.4.1 Cấu trúc file thẻ MPCOS-EMV 17 2.4.2 Cấu trúc file thẻ Global Platform 19 2.5 CÁC CHỨC NĂNG CỦA THẺ EMV 23 2.6 ĐẶC TẢ ỨNG DỤNG DEBIT CREDIT 25 2.6.1 Các file trao đổi giao dịch tài 25 2.6.2 Lồng giao dịch 27 ii 2.6.3 Các hàm sử dụng xử lý giao dịch 28 Chương - XÁC THỰC BẢO MẬT VỚI THẺ THÔNG MINH 31 3.1 CÁC THUẬT TOÁN MÃ HOÁ .31 3.1.1 Mã hoá khoá đối xứng 31 3.1.2 Mã hoá khoá công khai 34 3.2 GIAO THỨC XÁC THỰC BẢO MẬT VỚI THẺ THÔNG MINH 36 3.2.1 Giao thức xác thực với thẻ thông minh .36 3.2.2 Bảo toàn liệu với thẻ thông minh 38 3.2.3 Bảo toàn bảo mật liệu với thẻ thông minh .40 3.2.4 Thiết lập khoá phiên với thẻ thông minh 41 3.3 QUẢN LÝ KHÓA CƠ CHẾ BẢO MẬT CỦA THẺ EMV 42 3.3.1 Xác thực liệu tĩnh 42 3.3.2 Xác thực liệu động ngoại tuyến 42 3.3.3 Mã hóa số PIN 43 3.4.4 Thông điệp an toàn 44 3.4.5 Các sách nguyên tắc quản lý chứng khóa công khai .44 Chương - CHƯƠNG TRÌNH GHI/ĐỌC DỮ LIỆU THẺ THÔNG MINH TRÊN HỆ MÁY CÔNG NGHIỆP ĐỂ BÀN 46 4.1 GIỚI THIỆU 46 4.2 QUY TRÌNH LÀM THẺ 47 4.3 HỆ THỐNG TỰ ĐỘNG GHI DỮ LIỆU VÀO THẺ THÔNG MINH .49 4.3.1 Giới thiệu MPR3000 49 4.3.2 Các đặc tính ưu việt MPR3000 52 4.2.3 Đặc điểm chương trình ghi liệu vào thẻ thông minh PersoAppMPR3K.53 4.3.3 Giới thiệu máy DC9000 .54 4.4 Quy trình chuẩn bị số liệu .57 4.4 CHƯƠNG TRÌNH GHI DỮ LIỆU VÀO THẺ THÔNG MINH 58 4.4.1 Bộ công cụ phát triển SPMWIN .58 4.4.2 Chức PersoAppMPR3K 61 4.4.3 Bộ công cụ phát triển SCPM SDK .62 4.4.4 Chức PASCPM 64 4.4.5 Các kết ban đầu đạt 64 4.4.6 Khai thác định hướng phát triển ứng dụng thể hóa thẻ chip .66 KẾT LUẬN .67 TÀI LIỆU THAM KHẢO .69 Chương - TỔNG QUAN VỀ THẺ THÔNG MINH 1.1 KHÁI NIỆM THẺ THÔNG MINH Thẻ thông minh (smart card) thường gọi thẻ chip thẻ mạch tích hợp Mạch tích hợp thẻ gồm thành phần sử dụng cho truyền, lưu trữ xử lý liệu Thẻ thông minh có vùng dập mặt dải từ mặt Thể vật lý đặc tính thẻ thông minh định nghĩa chuẩn ISO 7816 - Đó tài liệu cho ngành công nghiệp thẻ thông minh Thông thường thẻ thông minh không chứa thiết bị cung cấp nguồn, hiển thị hay bàn phím Để tương tác với giới bên ngoài, thẻ thông minh đặt hay gần thiết bị chấp nhận thẻ, nối với máy tính 1.2 CÁC LOẠI THẺ CƠ BẢN Thẻ thông minh chia thành số loại Ví dụ thẻ nhớ (memory card) thẻ vi xử lý (microprocessor card) Có thể phân loại thành thẻ tiếp xúc không tiếp xúc dựa theo cách truy nhập thẻ Hình 1: Sơ đồ phân loại thẻ 1.2.1 Thẻ nhớ thẻ chip Thẻ thông minh sớm sản xuất theo số lượng lớn thẻ nhớ Thẻ nhớ chưa thực thẻ thông minh chúng vi xử lý Chúng nhúng chip nhớ chip kết hợp với nhớ không lập trình Do thẻ nhớ CPU, nên việc xử lý liệu thực số mạch đơn giản, có khả thực vài lệnh lập trình trước Cũng số chức mạch giới hạn, cố định trước nên lập trình để thay đổi chức Tuy nhiên thẻ nhớ dễ dàng làm giả Ưu điểm thẻ nhớ đòi hỏi công nghệ đơn giản giá thành thấp Hình mô tả cấu trúc khối bên thẻ nhớ điển hình Hình 2: Sơ đồ khối thẻ dùng chip nhớ Thẻ vi xử lý, có khả bảo mật cao khả tính toán Với thẻ vi xử lý, liệu không phép truy xuất tuỳ ý vào nhớ Bộ vi xử lý kiểm soát liệu việc truy nhập nhớ thông qua điều kiện (mật khẩu, mã hóa …) lệnh từ ứng dụng bên Nhiều loại thẻ vi xử lý thiết kế hỗ trợ việc mã hóa Các thẻ đặc biệt hữu ích cho ứng dụng cần bảo mật liệu Các chức thẻ chủ yếu bị giới hạn dung lượng nhớ sức mạnh tính toán CPU thẻ Hình 3: Sơ đồ khối thẻ dùng vi điều khiển Thẻ vi xử lý dùng rộng rãi kiểm soát truy nhập, ứng dụng ngân hàng, thẻ viễn thông, thẻ khách hàng thường xuyên, thẻ y tế,… Nhìn chung thuật ngữ “thẻ thông minh” bao gồm thẻ nhớ thẻ vi xử lý Tuy nhiên theo thói quen phổ biến luận văn sử dụng thuật ngữ “thẻ thông minh” ta hiểu thẻ vi xử lý 1.2.2 Thẻ tiếp xúc thẻ không tiếp xúc Thẻ tiếp xúc phải đưa vào thiết bị chấp nhận thẻ, chúng liên lạc với giới bên qua giao diện tiếp xúc gồm có điểm hình vẽ phần mô tả phần cứng thẻ thông minh, mục 1.3.1 Thẻ không tiếp xúc không cần phải đặt thiết bị chấp nhận thẻ Chúng liên lạc qua ăng ten thẻ Năng lượng cung cấp nguồn bên qua ăng ten Thẻ không tiếp xúc truyền liệu tới thiết bị chấp nhận thẻ thông qua trường điện từ Hình 4: Cấu trúc thẻ thông minh không tiếp xúc 1.3 PHẦN CỨNG CỦA THẺ THÔNG MINH Thẻ thông minh có điểm tiếp xúc bề mặt nhựa nền, xử lý trung tâm bên nhiều dạng nhớ Một số loại thẻ thông minh có đồng xử lý việc tính toán thuận lợi[13, 24, 28] Hình 5: Sơ đồ khối bên thẻ thông minh 1.3.1 Các điểm tiếp xúc Hình 6: Hình dạng điểm tiếp xúc thẻ thông minh Hình 7: Một số hình dạng điểm tiếp xúc thông dụng thẻ thông minh Thẻ thông minh có điểm tiếp xúc, chức chúng hình Hướng vị trí điểm tiếp xúc mô tả phần ISO 7816[23] sau: § Điểm Vcc cung cấp nguồn cho chip hiệu điện volts, với sai số 10% Thẻ thông minh máy di động thường volts § Điểm RST dùng để gửi tín hiệu để reset vi xử lý - gọi khởi động nóng (warm reset) Khởi động nguội (cold reset) thực chuyển nguồn cung cấp tắt bật § Bộ xử lý thẻ thông minh không thực việc tạo tín hiệu đồng hồ bên Điểm CLK cung cấp tín hiệu đồng hồ bên ngoài, từ tạo tín hiệu đồng hồ bên § Điểm GND dùng mức hiệu điện chuẩn, giá trị xem § Điểm Vpp tùy chọn dùng thẻ cũ Khi sử dụng, cung cấp hai mức hiệu điện lập trình Mức thấp gọi trạng thái ngủ (idle state), mức cao trạng thái kích hoạt (active state) Thay đổi mức điện cần thiết để lập trình nhớ EEPROM số thẻ thông minh cũ § Điểm I/O dùng để chuyển liệu lệnh thẻ thông minh giới bên theo chế độ bán song công (half - duplex mod) Có nghĩa tín hiệu lệnh truyền theo hướng thời điểm § Các điểm RFU để dành cho tương lai 1.3.2 Bộ xử lý trung tâm thẻ thông minh Bộ xử lý trung tâm hầu hết chip thẻ thông minh 8-bit, thường sử dụng tập lệnh Motorola 6805 Intel 8051, với tín hiệu đồng hồ tới 5MHz Các thẻ công nghệ cao (high - end) thường gồm nhân tín hiệu (nhân 2, 8), cho phép thẻ thao tác tới 40 MHz (5Mhz nhân 8) Các thẻ thông minh có vi xử lý 16 32 bit, có tập lệnh đơn giản (RISC) Trong tương lai chúng trở nên phổ biến 1.3.3 Bộ đồng xử lý thẻ thông minh Các chip thẻ thông minh cho ứng dụng bảo mật, thường có đồng xử lý Bộ đồng xử lý có mạch tích hợp đặc biệt để tăng khả tính toán, đặc biệt thuật toán modular tính toán với số nguyên lớn Những tính toán yêu cầu thuật toán mã hóa chẳng hạn RSA, DES,… 1.3.4 Hệ thống nhớ thẻ thông minh Hình 8: Sơ đồ khối bên trái cho thấy phân vùng đặc trưng nhớ RAM 256 byte thẻ thông minh bản, sơ đồ bên phải cho thấy tổ chức nhớ RAM kbyte thẻ SIM Thẻ thông minh thường gồm ba loại nhớ ROM, EEPROM, RAM[24, 28] § ROM (bộ nhớ đọc) dùng để lưu trữ chương trình cố định thẻ Nó lưu trữ liệu nguồn tắt ghi sau thẻ sản xuất ROM thẻ thông minh chứa hệ điều hành liệu chương trình cố định Quá trình ghi mã nhị phân vào ROM gọi làm mặt nạ (masking), thực trình sản xuất chip § EEPROM (bộ nhớ đọc lập trình tín hiệu điện) § RAM (bộ nhớ truy nhập ngẫu nhiên): dùng để lưu trữ thông tin cần xử lý nhanh mang tính tạm thời, không lưu lại nguồn tắt 1.4 TRUYỀN THÔNG VỚI THẺ THÔNG MINH 1.4.1 Thiết bị chấp nhận thẻ ứng dụng máy chủ Thẻ thông minh đưa vào thiết bị chấp nhận thẻ, kết nối tới máy tính khác Thiết bị chấp nhận thẻ chia làm hai loại: đầu đọc thẻ thiết bị đầu cuối (terminal) Đầu đọc kết nối tới cổng nối tiếp, cổng song song cổng USB máy tính, qua thẻ thông minh truyền thông Đầu đọc có khe cắm chứa thẻ thông minh, nhận liệu thông qua trường điện từ thẻ không tiếp xúc Thông thường đầu đọc thẻ không đủ thông minh để xử lý liệu, có hàm dò sửa lỗi việc truyền liệu không tương thích với giao thức truyền thông mức Thiết bị đầu cuối, có máy tính riêng Một thiết bị đầu cuối tích hợp đầu đọc thẻ thành phần Ta thấy thiết bị đầu cuối điểm bán hàng (point of sales - POS) máy rút tiền tự động (Automatic Teller Machines - ATMs) Bên cạnh chức đầu đọc thẻ, thiết bị đầu cuối có khả xử lý liệu truyền thẻ thông minh 1.4.2 Mô hình truyền thông với thẻ thông minh Việc truyền thông thẻ máy chủ bán song công, có nghĩa liệu truyền từ thẻ đến máy chủ từ máy chủ đến thẻ theo hai hướng lúc Thẻ thông minh tương tác với máy tính cách sử dụng gói tin riêng - gọi APDUs (Application Protocol Data Unit - đơn vị liệu giao thức ứng dụng) Một APDU chứa lệnh thông điệp trả lời Thẻ thông minh đóng vai trò thụ động mô hình chủ - tớ với máy chủ Nó đợi lệnh APDU từ máy chủ Sau thực thị lệnh trả lời máy chủ với APDU phản hồi Các lệnh APDU APDU phản hồi truyền đan xen máy chủ thẻ 1.4.3 Giao thức APDU (Application Protocol Data Unit) Được chuẩn ISO 7816 - 4, APDU giao thức mức ứng dụng thẻ thông minh ứng dụng máy chủ Các thông điệp APDU gồm hai loại cấu trúc: sử dụng ứng dụng máy chủ từ phía thiết bị chấp nhận thẻ để gửi lệnh đến thẻ sử dụng thẻ để gửi thông điệp trả lời cho ứng dụng máy chủ Tương ứng với chúng hai lớp APDU lệnh (Command APDU C - APDU) APDU phản hồi (Response APDU R - APDU)[24, 28] Một lệnh APDU có lệnh R-APDU tạo thành cặp tương ứng Cấu trúc APDU lệnh: CLA INS P1 P2 Lc Data with length Lc Cấu trúc APDU phản hồi: Data with length Le SW1 SW2 Header (tiêu đề) APDU lệnh gồm bytes: CLA (“lớp” thị), INS (“mã” thị), P1, P2 (tham số 2) Byte “lớp” xác định loại APDU lệnh APDU phản hồi Byte “mã” xác định thị lệnh Hai tham số P1 P2 xác định thêm thông tin cho thị Tham số P3 xác định độ dài trường liệu (theo byte) Phần sau header APDU lệnh phần tuỳ chọn chi tiết có độ dài đa dạng Trường Lc phần chi tiết rõ độ dài trường liệu (theo byte) Trường liệu chứa liệu truyền tới thẻ để thực lệnh rõ header APDU Byte cuối phần chi tiết APDU lệnh trường Le, số byte mà máy chủ chờ thẻ phản hồi APDU phản hồi, gửi thẻ để trả lời cho APDU lệnh, bao gồm chi tiết tuỳ chọn phần bắt buộc kèm theo Phần chi tiết bao gồm trường liệu có độ dài xác định trường Le APDU lệnh tương ứng Phần bắt buộc bao gồm hai trường SW1 SW2, với gọi từ trạng thái, biểu thị trạng thái xử lý thẻ sau thực APDU lệnh Ví dụ: từ trạng thái “0x9000” có nghĩa lệnh thực thành công trọn vẹn Trường liệu tuỳ chọn APDU lệnh APDU phản hồi Do đó, APDU phân loại thêm theo loại sau, dựa đặc điểm có chứa trường liệu APDU lệnh APDU phản hồi hay không Trường hợp 1: Không đầu vào/Không đầu CLA INS P1 P2 SW1 SW2 P3 lgth (='00') '90' '00' Trường hợp 2: Không đầu vào / Đầu có độ dài biết trước CLA INS P1 P2 P3 lgth DATA with length lgth SW1 SW2 '90' '00' NOTE: lgth='00' tương ứng liệu truyền 256 bytes Trường hợp 3: Không đầu vào / Đầu có độ dài chưa biết trước CLA INS P1 P2 P3 SW1 SW2 '9F' lgth1 CLA INS lgth (='00') GET RESPONSE P1 P2 P3 DATA with lgth2 £ lgth1 lgth2 SW1 SW2 '90' '00' Trường hợp 4: Có đầu vào / Không đầu CLA INS P1 P2 P3 DATA with length lgth lgth SW1 SW2 '90' '00' Trường hợp 5: Có đầu vào / Đầu có độ dài biết trước không CLA INS P1 P2 P3 DATA with length lgth lgth SW1 SW2 '9F' lgth1 GET RESPONSE CLA INS P1 P2 P3 DATA with lgth2 £ lgth1 lgth2 SW1 SW2 '90' § Trường hợp 1: liệu truyền tới nhận từ thẻ, APDU lệnh chứa header, APDU phản hồi chứa từ trạng thái § Trường hợp 2: liệu truyền tới thẻ, có liệu phản hồi từ thẻ Chi tiết APDU lệnh chứa byte - trường Le, rõ số byte liệu cần có APDU phản hồi § Trường hợp 3: liệu truyền tới thẻ, có liệu phản hồi từ thẻ Tuy nhiên độ dài liệu phản hồi không rõ § Trường hợp 4: liệu truyền tới thẻ, liệu trả kết trình xử lý lệnh Chi tiết APDU lệnh bao gồm trường Lc trường liệu Trường Lc độ dài trường liệu APDU phản hồi chứa từ trạng thái § Trường hợp 5: liệu truyền tới thẻ liệu trả từ thẻ kết trình xử lý lệnh Chi tiết APDU lệnh bao gồm trường Lc, trường liệu trường Le APDU phản hồi gồm liệu từ trạng thái '00' 61 thân thẻ Tiếp nhận liệu in cho thẻ từ SPMWIN với file mẫu có để thực việc in lên thân thẻ POWER FACET data flow ? Hình 61: Luồng liệu cho 12 đầu đọc PWF ghi/đọc thẻ Chương trình ghi liệu vào thẻ tải xuống 12 đầu Power Facet Với thẻ, liệu thay đổi cho thẻ gửi xuống Power Facet, liệu thể qua biến thay đổi file Chip.dll Khi đó,12 đầu PWF chạy đồng thời lúc thực việc ghi liệu vào 12 thẻ thông minh khác 4.4.2 Chức PersoAppMPR3K Dữ liệu hiểu lệnh ứng dụng ghi vào thẻ để hoạt động theo yêu cầu khách hàng dựa tiêu chuẩn ISO cho ngành công nghiệp thẻ Các chức chương trình: § Chuẩn bị liệu tĩnh đầu vào chung cho tất thẻ § Chuẩn bị số liệu động đầu vào Input Data, khác cho thẻ § Đầu tiên chương trình nạp liệu từ file liệu tĩnh, chứa lệnh APDU chung cho tất thẻ § Sau liệu tương ứng với thẻ đưa xuống bo mạch Power Facet để cá thể hoá thẻ § Sau hoàn thành việc ghi liệu lên chip, thẻ tới module in laser in laser thân thẻ Chương trình sử dụng khái niệm context để trì đồng liệu module Mỗi thẻ có context riêng trì từ thẻ vào đến khỏi máy MPR3000 62 4.4.3 Bộ công cụ phát triển SCPM SDK Chương trình SCPM (Smart Card Personalization Manager) sau cài đặt vào máy tính, có nhiệm vụ liên lạc với với thiết bị liên quan trình phát hành thẻ trạm đọc/ghi liệu lên thẻ thông minh hệ máy DC9000, module mã hóa HSM (Hardware Security Module), sỡ liệu, ứng dụng cá thể hóa thẻ Ở SCPM đóng vai trò môi trường hay tảng để ứng dụng PASCPM thực thi Xem hình 62 Hình 62: Sơ đồ hoạt động logic tổng quát SCPM Ở đây, ứng dụng PASCPM biên dịch dạng *.dll sử dụng MSVisual C++ 6.0 để viết mã nguồn, sau biên dịch thông qua thư viện SCPM SDK (Smart Card Personalization Manager Software Development Kit)[1,2] Trong trình cài đặt môi trường SCPM, ứng dụng PASCPM cần phải để SCPM điều khiển làm việc cách xác Khi có yêu cầu ghi liệu lên thẻ, SCPM nạp liệu (dữ liệu mã hóa) cần thiết vào môi trường sau kết nối tới module HSM để tiến hành xử lý (mã hóa, giãi mã, lấy thông tin mã khóa liên quan, …), tiếp đến SCPM nạp ứng dụng cá thể hóa thẻ PASCPM vào môi trường đưa đến trạm đọc/ghi hệ máy DC9000 tiến hành quy trình ghi liệu lên thẻ mà ứng dụng PASCPM vạch Trước đây, thẻ thông minh (hay gọi thẻ chip) chưa thịnh hành Việt Nam chúng ta, ngân hàng dùng thẻ băng từ Nhược điểm tuổi thọ thấp, khoảng đến năm phải thay thẻ Hơn nữa, độ àn toàn thẻ từ không cao, dễ dàng làm giả Quy trình sản xuất thẻ từ đơn giản, xem hình 63 63 Hình 63: Môi trường phát hành thẻ từ truyền thống Dữ liệu khách hàng sinh từ máy chủ đưa trực tiếp thới hệ thống phát hành thẻ từ mà không qua bước xử lý, thông tin khách hàng rõ không mã hóa đó, độ an toàn thông tin khách hàng không có, dẫn đến dễ bị đánh cắp tài khoản Khi hệ thống phát hành thẻ chip đời, toàn thông tin khách hàng làm thẻ qua khâu xử lý để bổ sung thêm liệu chuẩn EMV, xem hình 64 Hình 64: Môi trường phát hành thẻ EMV 64 Quá trình xử lý (còn gọi chuẩn bị số liệu, xem mục 4.4) thực với có mặt module HSM, liệu bị mã hóa theo chuẩn EMV, xem hình 65 Do đó, tính bảo mật liệu đảm bảo khó giải mã chúng khóa cần thiết Hình 65: Định dạng chuẩn ghi liệu sản xuất thẻ EMV 4.4.4 Chức PASCPM Do ứng dụng nạp vào môi trường SCPM nên luồng hoạt động SCMP điều khiển theo trình tự Các chức chương trình: § Cài đặt, khởi tạo vào kích hoạt ứng dụng thẻ trắng § Chuẩn bị số liệu động SCPM nạp vào phân tách liệu tới thư khu vực tương ứng với ứng dụng thẻ § Gắn tập lệnh APDU tương ứng cho loại liệu phân tách § Sau liệu tương ứng với thẻ đưa xuống bo mạch trạm đọc/ghi máy DC9000 để cá thể hoá thẻ Sau hoàn thành việc ghi liệu lên chip, thẻ tới module in ấn, dập nổi, in chìm lên thân thẻ 4.4.5 Các kết ban đầu đạt Hiện nay, Nhà máy sản xuất thẻ thông minh thuộc tập đoàn MK có máy MPR3000 máy DC9000 Hầu tất số đưa vào sử dụng để sản xuất thẻ thông minh cho khách hàng nước Chương trình ứng dụng nêu luận văn áp dụng hệ máy đó, cụ thể sau: § Chương trình quản lý phát hành thẻ PersoAppMPR3K cho chạy sản xuất thẻ máy MPR3000 § Chương trình PASCPM thiết kế dành cho máy DC9000 máy để bàn DC280, DC150i chạy môi trường SPCM § Đặc biệt, trình nghiên cứu này, xây dựng thêm chương trình cần thiết cho việc kiểm định chất lượng thẻ thông minh sau cá thể hóa hệ máy Chương trình MK EMV QC Tools ứng dụng cho phép kiểm tra thông tin ghi vào thẻchuẩn xác thống 65 so với liệu đầu vào không Chương trình tìm liệt kê ‘‘Tag’’ địa (có quyền truy cập công khai) cụ thểthẻthể hóa, đem so sánh với sách (EMV profiles) định nghĩa nhà phát hành thẻ Sự sai khác số liệu chương trình thông báo cho người kiểm định biết vị trí sai khác số liệu xẩy ‘‘Tag’’ nào, để từ nhà phát hành có biện pháp xử lý kịp thời Xem hình 66 mô tả giao diện chương trình Hình 66: Giao diện chương trình MK EMV QC Tools Hình 67: Định nghĩa EMV profile templates 66 Quy trình kiểm định chất lượng thẻ phát hành thực theo mô hình toán xác suất - thống kê, từ lô thẻ sản xuất, rút ngẫu nhiên số thẻ lô tiến hành phép thử Xác suất phần trăm số thẻ lỗi phải tuân theo tiêu chuẩn chứng Visa-Master đề Hình 67 biểu thị mẫu EMV profile VISA card định nghĩa sẵn 4.4.6 Khai thác định hướng phát triển ứng dụng thể hóa thẻ chip § Tiếp tục nâng cấp PASCPM, PersoAppMPR3K để nâng cao hiệu làm việc, khả quản lý luồng liệu tốt hơn, hỗ trợ nhiều chuẩn thẻ § Nâng cấp phát triển PersoAppMPR3K thành PersoAppCondor chạy PWF + Condor SmartGear hệ SPMWIN Dây chuyền chạy máy Condor Pháp có khả sản xuất 1350 thẻ Đây coi giải pháp máy để bàn qui mô vừa nhỏ sử dụng cá thể hóa cho thẻ bảo hiểm y tế cấp tỉnh bệnh viện lớn … Hình 68: Máy in Condor - Giải pháp cá thể hóa thẻ chip để bàn § Phát triển PersoAppMPR3K cho thẻ chip cho ngành khác thẻ SIM cho viễn thông, thẻ bảo hiểm y tế, thẻ không tiếp xúc RFID cho giao thông vận tải, kiểm soát ra… § Phát triển PersoAppMPR3K cho thẻ đa sử dụng nhiều ứng dụng (Multi-Applications) phục vụ ứng dụng liên ngành viễn thông, ngân hàng, giao thông, bảo hiểm,… § Xây dựng hệ điều hành cho thẻ thông minh, giảm thiểu chi phí sản xuất thẻ KẾT LUẬN 67 Cùng với xu phát triển mạnh ngành công nghiệp thẻ giới Trong lĩnh vực tài ngân hàng, việc sử dụng thẻ từ trở nên lỗi thời thời gian sử dụng ngắn, tính an toàn không cao tạo điều kiện thuận lợi cho kẻ gian lợi dụng Trên giới, ước tính năm có hàng trăm nghìn vụ gian lận tài có không vụ liên quan đến giả mạo thẻ tín dụng Để hạn chế vấn nạn này, tổ chức Europay, Maste Card and Visa (EMV) đưa chuẩn thẻ chip cho hệ thống toán EMV ‘96, sau nâng cấp thành chuẩn EMV 2000 Với ưu điểm vượt trội (như đề cập luận văn) so với thẻ từ, thẻ chip ngày ngân hàng uy tín sử dụng lan rộng khắp giới Ở Việt Nam, để hòa nhập với xu chung đó, ngân hàng dần chuyển đổi phương thức sử dụng thẻ từ truyền thống sang thẻ chip để đảm bảo tính an toàn, thống đặc biệt giảm chi phí gia tăng sau Đi đầu xu chuyển đồi ngân hàng Vietcombank, VIB, VPbank,… Trong tương lai gần thẻ thông minh thiết bị cầm tay đa bao gồm chức năng: thẻ SIM điện thoại, ví tiền, vé tàu xe, chứng minh thư, chìa khoá, … Chính điều mở ngành công nghiệp, dịch vụ gia tăng phục vụ cho thẻ thông minh, mang lại giá trị kinh tế lớn, phục vụ lợi ích nước nhà Với phạm vi ứng dụng rộng lớn thẻ thông minh, luận văn nghiên cứu phần nhỏ, ứng dụng thẻ thông minh lĩnh vực tài ngân hàng Luận văn đạt kết sau: Tìm hiểu, nghiên cứu hệ thống lại vấn đề sau: § Tổng quan thẻ thông minh - Phân loại thẻ thông minh, cấu trúc thẻ thông minh - Các giao thức với thẻ thông minh § Hệ điều hành thẻ thông minh - Tổ chức hệ thống file thẻ thông minh - Ứng dụng EMV (VSDC, MCHIP) § Xác thực bảo mật với thẻ thông minh - Các thuật toán mã hoá với thẻ thông minh - Vấn đề xác thực với thẻ thông minh Sử dụng thuật toán 3DES, RSA cho xác thực bảo mật thẻ thông minh § Xây dựng chương trình ghi liệu vào thẻ thông minh, chạy hệ máy sản xuất thẻ công nghiệp MPR3000, DC9000, tạo sản phẩm thương mại có giá trị Do hầu hết tài liệu tham khảo chủ yếu tiếng Anh, trình độ hạn chế, nên số thuật ngữ chuyên môn dùng luận văn chưa thực xác Chúng mong nhận góp ý thầy giáo bạn Luận văn dùng làm tài liệu tham khảo cho việc xây dựng ứng dụng cho thẻ thông minh, chuẩn EMV dùng lĩnh vực ngân hàng, tài chính, chuẩn GSM lĩnh vực viễn thông, lĩnh vực khác 68 TÀI LIỆU THAM KHẢO DataCard, “Reference Guide for Smart Card Personalization Manager (SCPM) Applications”, June 2004 DataCard, “Reference Applications”, March 2006 EMVCo, “EMV ’96 Integrated Circuit Card Terminal Specification for Payment Systems”, Version 3.0, June 30, 1996 EMVCo, “EMV Integrated Circuit Card Specifications for Payment Systems”, Books(1, 2, 3, 4), Version 4.1, 2004 EMVCo, LCC, “EMV Card Personalization Specification”, Version 1.0, June 2003 EMVCo, LCC, “EMV Issuer Security Guidelines”, Version 0.5, October 31, 2000 Eur Ing Chris Hills BSc(Hons), “Encryption and Ciphers using 7816 for Smart Cards”, C Eng., MIEE, FRGS September 2001 Guide for Affina® Personalization Manager Gemalto(9-2007), “MPCOS-EMV R5 Reference Manual” Gemplus, August 1999, “MPCOS-EMV Reference Manual Version 3.1” 10 Global Platform, “Card Specification”, Version 2.2, March 2006 11 12 Global Platform, “Global Platform Smart Card Security Target Guidelines”, Version 1.0, October 2005 IBM, “OpenCard Framework 1.2 Programmer's Guide” 13 Jorge Ferrari, Robert Mackinnon, Susan Poh, Lakshman Yatawara, “Smart Cards: A Case Study”, IBM 14 Klaus Finkenzeller, “RFID Hand Book, Fundementals and Applications in Contactless Smart Cards and Identification (Second Edition)”, Giesecke & Devrient GmbH, Munich, Germany - 2003 15 MasterCard, “MasterCard® Chip - Minimum Card Requirements for Debit and Credit”, Version 4.0, August 2001 16 MasterCard, “Card Personalization Validation Guide”, September 2006 17 Mike Hendry, “Smart Card Security and Applications (Second Edition)”, Artech House - Boston London - 2001 18 Marcel Aumont, Senior Technology Consultant, CGI, “Public Key encryption and digital signature - How they work?” 69 19 Smart Card Application Development Using Java (Second Edition) - Martin S.Nicklous & Thomas Schack & Achim Schneider & Frank Seliger - Springer 2002 20 Scott B.Guther & Mary J.Cronin, “Mobile Application Development with SMS and the SIM Toolkit”, McGraw- Hill Telecom - 2002 st 21 22 Security in the GSM system, By Jeremy Quirke | Last updated May 2004, © 2004 AusMobile http://www.ausmobile.com SmarTEC, “GSM Application Notes” http://www.smartecos.com/ 23 Stephane BAUSSON(1995), “ISO 7816 asynchronous smartcard information”, No 4, Rue de Grand F-88630 Chermisey, France 24 Timothy M.Jurgensen & Scott B.Guthery, “Smart Cards: The development toolkit”, Prentice Hall - 2002 25 Visa, “Visa Integrated Circuit Card - Card Specification”, Version 1.4.0, April 2001 26 Visa, “Visa Smart Debit Credit (VSDC) - Personalization Guide for Global Platform Cards”, May 2003 27 Visa, “Visa Global Platform 2.1.1 - Guidelines for Developing Java Card Applets”, version 1.0, November 2003 28 Wolfgang Rankl and Wolfgang Effing, Smart Card Handbook (Third Edition), Giesecke & Devrient GmbH, Munich, Germany 29 Zhiqun Chen, “Java Card Technology for Smart Cards: Architecture and Programmer’s Guide” 30 http://www.emvco.com 31 http://www.emvlab.org 32 http://www.javacardforum.org 33 http://www.globalplatform.org 34 http://www.openscdp.org 35 http://www.opensc-project.org 36 http://www.usasmartcard.com 37 http://www.wrankl.de PHỤ LỤC A Ứng dụng ví điện tử (wallet) Đây ứng dụng viết cho thẻ thông minh JCOP v2.2 (Java Card Open Platform) hãng NXP Ứng dụng cho phép người dùng thay đổi mã PIN, truy vấn tài khoản, tăng/giảm giá trị tài khoản toán 70 /* * Copyright 2003 Sun Microsystems, Inc All rights reserved * SUN PROPRIETARY/CONFIDENTIAL Use is subject to license terms */ // // Workfile:@(#)Wallet.java 1.9 // Version:1.9 // Date:06/06/03 // // Modified:06/06/03 17:06:00 // Original author: Zhiqun Chen // package com.sun.javacard.samples.wallet; import javacard.framework.*; public class Wallet extends Applet { /* constants declaration */ // code of CLA byte in the command APDU header final static byte Wallet_CLA =(byte)0x80; // codes of INS byte in the command APDU header final static byte VERIFY = (byte) 0x20; final static byte CREDIT = (byte) 0x30; final static byte DEBIT = (byte) 0x40; final static byte GET_BALANCE = (byte) 0x50; // maximum balance final static short MAX_BALANCE = 0x7FFF; // maximum transaction amount final static byte MAX_TRANSACTION_AMOUNT = 127; // maximum number of incorrect tries before the // PIN is blocked final static byte PIN_TRY_LIMIT =(byte)0x03; // maximum size PIN final static byte MAX_PIN_SIZE =(byte)0x08; // signal that the PIN verification failed final static short SW_VERIFICATION_FAILED = 0x6300; // signal the the PIN validation is required // for a credit or a debit transaction final static short SW_PIN_VERIFICATION_REQUIRED = 0x6301; // signal invalid transaction amount // amount > MAX_TRANSACTION_AMOUNT or amount < final static short SW_INVALID_TRANSACTION_AMOUNT = 0x6A83; // signal that the balance exceed the maximum final static short SW_EXCEED_MAXIMUM_BALANCE = 0x6A84; // signal the the balance becomes negative final static short SW_NEGATIVE_BALANCE = 0x6A85; /* instance variables declaration */ 71 OwnerPIN pin; short balance; private Wallet (byte[] bArray,short bOffset,byte bLength){ // It is good programming practice to allocate // all the memory that an applet needs during // its lifetime inside the constructor pin = new OwnerPIN(PIN_TRY_LIMIT, MAX_PIN_SIZE); byte iLen = bArray[bOffset]; // aid length bOffset = (short) (bOffset+iLen+1); byte cLen = bArray[bOffset]; // info length bOffset = (short) (bOffset+cLen+1); byte aLen = bArray[bOffset]; // applet data length // The installation parameters contain the PIN // initialization value pin.update(bArray, (short)(bOffset+1), aLen); register(); } // end of the constructor public static void install(byte[] bArray, short bOffset, byte bLength){ // create a Wallet applet instance new Wallet(bArray, bOffset, bLength); } // end of install method public boolean select() { // The applet declines to be selected // if the pin is blocked if ( pin.getTriesRemaining() == ) return false; return true; }// end of select method public void deselect() { // reset the pin value pin.reset(); } public void process(APDU apdu) { // APDU object carries a byte array (buffer) to // transfer incoming and outgoing APDU header // and data bytes between card and CAD // At this point, only the first header bytes // [CLA, INS, P1, P2, P3] are available in // the APDU buffer // The interface javacard.framework.ISO7816 // declares constants to denote the offset of // these bytes in the APDU buffer byte[] buffer = apdu.getBuffer(); // check SELECT APDU command buffer[ISO7816.OFFSET_CLA] = 72 (byte)(buffer[ISO7816.OFFSET_CLA] & (byte)0xFC); if ((buffer[ISO7816.OFFSET_CLA] == 0) && (buffer[ISO7816.OFFSET_INS] == (byte)(0xA4)) ) return; // verify the reset of commands have the // correct CLA byte, which specifies the // command structure if (buffer[ISO7816.OFFSET_CLA] != Wallet_CLA) ISOException.throwIt (ISO7816.SW_CLA_NOT_SUPPORTED); switch (buffer[ISO7816.OFFSET_INS]) { case GET_BALANCE: getBalance(apdu); return; case DEBIT: debit(apdu); return; case CREDIT: credit(apdu); return; case VERIFY: verify(apdu); return; default: ISOException.throwIt (ISO7816.SW_INS_NOT_SUPPORTED); } } // end of process method private void credit(APDU apdu) { // access authentication if ( ! pin.isValidated() ) ISOException.throwIt( SW_PIN_VERIFICATION_REQUIRED); byte[] buffer = apdu.getBuffer(); // Lc byte denotes the number of bytes in the // data field of the command APDU byte numBytes = buffer[ISO7816.OFFSET_LC]; // indicate that this APDU has incoming data // and receive data starting from the offset // ISO7816.OFFSET_CDATA following the header // bytes byte byteRead = (byte) (apdu.setIncomingAndReceive()); // it is an error if the number of data bytes // read does not match the number in Lc byte if ( ( numBytes != ) || (byteRead != 1) ) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); // get the credit amount byte creditAmount = buffer[ISO7816.OFFSET_CDATA]; // check the credit amount if ( ( creditAmount > MAX_TRANSACTION_AMOUNT) || ( creditAmount < ) ) ISOException.throwIt 73 (SW_INVALID_TRANSACTION_AMOUNT); // check the new balance if ( (short)( balance + creditAmount) > MAX_BALANCE ) ISOException.throwIt (SW_EXCEED_MAXIMUM_BALANCE); // credit the amount balance = (short)(balance + creditAmount); } // end of deposit method private void debit(APDU apdu) { // access authentication if ( ! pin.isValidated() ) ISOException.throwIt (SW_PIN_VERIFICATION_REQUIRED); byte[] buffer = apdu.getBuffer(); byte numBytes = (byte)(buffer[ISO7816.OFFSET_LC]); byte byteRead = (byte)(apdu.setIncomingAndReceive()); if ( ( numBytes != ) || (byteRead != 1) ) ISOException.throwIt (ISO7816.SW_WRONG_LENGTH); // get debit amount byte debitAmount = buffer[ISO7816.OFFSET_CDATA]; // check debit amount if ( ( debitAmount > MAX_TRANSACTION_AMOUNT) || ( debitAmount < ) ) ISOException.throwIt (SW_INVALID_TRANSACTION_AMOUNT); // check the new balance if ( (short)( balance - debitAmount ) < (short)0 ) ISOException.throwIt(SW_NEGATIVE_BALANCE); balance = (short) (balance - debitAmount); } // end of debit method private void getBalance(APDU apdu) { byte[] buffer = apdu.getBuffer(); // inform system that the applet has finished // processing the command and the system should // now prepare to construct a response APDU // which contains data field short le = apdu.setOutgoing(); if ( le < ) ISOException.throwIt (ISO7816.SW_WRONG_LENGTH); //informs the CAD the actual number of bytes //returned apdu.setOutgoingLength((byte)2); // move the balance data into the APDU buffer 74 // starting at the offset buffer[0] = (byte)(balance >> 8); buffer[1] = (byte)(balance & 0xFF); // send the 2-byte balance at the offset // in the apdu buffer apdu.sendBytes((short)0, (short)2); } // end of getBalance method private void verify(APDU apdu) { byte[] buffer = apdu.getBuffer(); // retrieve the PIN data for validation byte byteRead = (byte)(apdu.setIncomingAndReceive()); // check pin // the PIN data is read into the APDU buffer // at the offset ISO7816.OFFSET_CDATA // the PIN data length = byteRead if ( pin.check(buffer, ISO7816.OFFSET_CDATA, byteRead) == false ) ISOException.throwIt (SW_VERIFICATION_FAILED); } // end of validate method } // end of class Wallet B Thuật toán tính MAC Trong trình trao đổi liệu thẻ thông minh thiết bị đầu cuối, để đảm bảo an toàn tin, trình bị đóng gói MAC khóa chọn trước public static byte[] generateCMac(byte[] apduCommand, byte[] dataField, byte[] SessionKmac, byte[] icv) { byte[] cMac = new byte[8]; byte[] pad = new byte[] { 0x80, 0, 0, 0, 0, 0, 0, }; int padRequired = - (5 + dataField.Length) % 8; byte[] data = new byte[5 + dataField.Length + padRequired]; //Build APDU Command data, 0, 4); ByteArray.CopyTo(apduCommand, 0, ref data[4] = (byte)data.Length;//(byte) ((byte)dataField.Length + (byte)0x08); ByteArray.CopyTo(dataField, 0, ref data, 5, dataField.Length); ByteArray.CopyTo(pad, 0, ref data, + dataField.Length, padRequired); { //Calculate C-MAC try TripleDES trides = new TripleDESCryptoServiceProvider(); CipherMode.CBC; trides.KeySize = trides.Mode = 75 0xc0;//0xC0=192bits;0x80=128bits SessionKmac; trides.Key = trides.IV = icv; = trides.CreateEncryptor(); ICryptoTransform ict byte[] tmpKey = ict.TransformFinalBlock(data, 0, data.Length); 8); ByteArray.CopyTo(tmpKey, data.Length - 8, ref cMac, 0, } catch (Exception ex) { MessageBox.Show("Problem occured during C-MAC generation! " + ex.Message); } } return cMac; return null; ... ĐIỀU HÀNH THẺ THÔNG MINH 11 2.1 GIỚI THIỆU HỆ ĐIỀU HÀNH THẺ THÔNG MINH Hệ điều hành thẻ thông minh gần giống hệ điều hành máy để bàn (desktop) DOS, UNIX hay Window Ngoài ra, hệ điều hành thẻ thông. .. Sơ đồ khối bên thẻ thông minh 4 1.3.1 Các điểm tiếp xúc Hình 6: Hình dạng điểm tiếp xúc thẻ thông minh Hình 7: Một số hình dạng điểm tiếp xúc thông dụng thẻ thông minh Thẻ thông minh có điểm tiếp... ngữ thẻ thông minh bao gồm thẻ nhớ thẻ vi xử lý Tuy nhiên theo thói quen phổ biến luận văn sử dụng thuật ngữ thẻ thông minh ta hiểu thẻ vi xử lý 3 1.2.2 Thẻ tiếp xúc thẻ không tiếp xúc Thẻ

Ngày đăng: 25/08/2017, 15:00

Xem thêm: Tìm hiểu và phát hành rộng rãi thẻ thông minh chuẩn EMV

TỪ KHÓA LIÊN QUAN

Mục lục

    1.1 KHÁI NIỆM THẺ THÔNG MINH

    1.2 CÁC LOẠI THẺ CƠ BẢN

    1.2.1 Thẻ nhớ và thẻ chip

    1.2.2 Thẻ tiếp xúc và thẻ không tiếp xúc

    1.3 PHẦN CỨNG CỦA THẺ THÔNG MINH

    1.3.1 Các điểm tiếp xúc

    1.3.2 Bộ xử lý trung tâm trong thẻ thông minh

    1.3.3 Bộ đồng xử lý thẻ trong thông minh

    1.3.4 Hệ thống bộ nhớ của thẻ thông minh

    1.4 TRUYỀN THÔNG VỚI THẺ THÔNG MINH

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

TÀI LIỆU LIÊN QUAN

w