Qua mỗi phiên bản công nghệ Java Card đã có những thay đổi tương ứng với sự phát triển của phần cứng, hỗ trợ thêm nhiều tính năng mới cho phép thẻ thông minh có thể được sử dụng ở nhiều.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-PHÙNG VIỆT ANH
NGHIÊN CỨU PHÁT TRIỂN ỨNG DỤNG
CHO JAVA CARD
Chuyên ngành: Kỹ thuật Điện tử
LUẬN VĂN THẠC SĨ KỸ THUẬT
CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS NGUYỄN ĐỨC MINH
HÀ NỘI – 2014
Trang 2MỤC LỤC i
DANH SÁCH HÌNH VẼ v
DANH SÁCH BẢNG BIỂU vi
DANH SÁCH TỪ VIẾT TẮT viii
LỜI MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ THẺ THÔNG MINH VÀ HỆ THỐNG JAVA CARD 5
1.1 Giới thiệu chung về thẻ thông minh 5
1.1.1 Lịch sử phát triển thẻ thông minh 5
1.1.2 Thẻ thông minh tiếp xúc 6
1.1.3 Thẻ thông minh không tiếp xúc 7
1.2 Tổng quan về hệ thống Java Card 8
1.2.1 Công nghệ Java Card 8
1.2.2 Hệ thống Java Card 11
1.3 Hệ thống đề xuất 13
1.3.1 Yêu cầu chức năng 13
1.3.2 Yêu cầu phi chức năng 13
1.4 Kết luận 13
CHƯƠNG 2 NGHIÊN CỨU HỆ THỐNG JAVA CARD 14
2.1 Phần cứng thẻ chip 14
2.1.1 Giao diện vật lí 14
2.1.1.1 Chân VCC (C1) 15
2.1.1.2 Chân RST (C2) 15
2.1.1.3 Chân CLK (C3) 15
2.1.1.4 Chân VPP (C6) 16
2.1.1.5 Chân I/O (C7) 16
2.1.1.6 Các chân còn l ại (C4,C5,C8) 17
2.1.2 Cấu tạo phần cứng của chip 17
2.1.3 Mô tả các thành phần của chip 18
2.1.3.1 Khối xử lý trung tâm (CPU) 18
2.1.3.2 Bản đồ bộ nhớ 21
2.1.3.3 FLASH 23
2.1.3.4 Ngắt 26
Trang 32.1.3.6 Timer 33
2.1.3.7 Bộ định thời khe thời gian (ETU Timer) 35
2.1.3.8 Khối tạo số ngẫu nhiên (RNG) 37
2.1.3.9 Bộ chuyển xung (Clock Switch) 38
2.1.3.10 CRC 40
2.1.3.11 DES 40
2.1.3.12 Các tính năng bảo mật 43
2.2 Hệ điều hành Java Card 44
2.2.1 Giới thiệu một số hệ điều hành Java Card 44
2.2.1.1 Hệ điều hành Java Card c ủa Gemalto 44
2.2.1.2 Hệ điều hành Java Card c ủa NXP 45
2.2.2 Các đặc điểm của hệ điều hành Java Card 47
2.2.2.1 Máy ảo Java 47
2.2.2.2 Đặc trưng ngôn ngữ 48
2.2.2.3 Các lớp lõi 50
2.3 Phương thức truyền nhận, trao đổi dữ liệu 52
2.3.1 APDU 53
2.3.1.1 Cặp câu lệnh - phản hồi 53
2.3.1.2 Các trường dữ liệu trong cặp câu lệnh - phản hồi 54
2.3.2 TPDU và APDU trong giao thức truyền T=0 55
2.3.2.1 Tổng quát 55
2.3.2.2 Trường hợp 1 56
2.3.2.3 Trường hợp 2S 57
2.3.2.4 Trường hợp 3S 58
2.3.2.5 Trường hợp 4S 59
2.3.2.6 Trường hợp 2E 60
2.3.2.7 Trường hợp 3E 62
2.3.2.8 Trường hợp 4E 63
2.3.3 TDPU và APDU trong giao thức truyền T=1 65
2.3.3.1 Tổng quát 65
2.3.3.2 Trường hợp 1 65
2.3.3.3 Trường hợp 2S và 2E 65
2.3.3.4 Trường hợp 3S và 3E 66
Trang 42.4 Kết luận 67
CHƯƠNG 3 THIẾT KẾ ỨNG DỤNG THỰC NGHIỆM 68
3.1 Thiết kế ứng dụng trên thẻ 68
3.1.1 Tổng quan về ứng dụng 68
3.1.2 Chức năng tạo cấu trúc dữ liệu 68
3.1.2.1 Cấu trúc dữ liệu mặc định trong Java Card 68
3.1.2.2 Cấu trúc dữ liệu trong ứng dụng DID 69
3.1.3 Chức năng lưu trữ vào trao đổi thông tin 70
3.1.3.1 Mã hóa 3DES 70
3.1.3.2 Lưu trữ và trao đổi thông tin không mã hóa 71
3.1.3.3 Trao đổi và lưu trữ thông tin mã hóa 72
3.1.4 Tổng kết các lớp và phương thức của ứng dụng DID 73
3.1.4.1 Lớp File System 73
3.1.4.2 Lớp File Applet 74
3.2 Thiết kế ứng dụng trên thiết bị đầu cuối 74
3.2.1 Thư viện API 74
3.2.1.1 Thư viện DID_API 75
3.2.1.2 Thư viện DID_LIB 76
3.2.2 Thiết kế bộ công cụ DIDToolkit 77
3.2.2.1 Tổng quan về ứng dụng 77
3.2.2.2 Chức năng tạo cấu trúc dữ liệu 77
3.2.2.3 Chức năng tương tác với ứng dụng trên thẻ 78
3.2.2.4 Ứng dụng thử nghiệm 78
3.3 Đánh giá 79
3.4 Kết luận 80
KẾT LUẬN 81
TÀI LIỆU THAM KHẢO 83
BẢNG ĐỐI CHIẾU THUẬT NGỮ VIỆT ANH 85
Trang 5Trong quá trình thực hiện luận văn tác giả đã gặp rất nhiều khó khăn trong việc tiếp cận các nguồn tài liệu tham khảo cũng như những kiến thức đại số trong việc mã hóa dữ liệu Hôm nay hoàn thành xong luận văn tốt nghiệp, trước hết tác
giả xin chân thành cảm ơn TS Nguyễn Đức Minh, thầy đã tận tình hướng dẫn , chỉ
bảo, giúp đỡ tác giả có thể hoàn thành được luận văn tốt nghiệp của mình Tiếp theo, tác giả xin cảm ơn các thầy cô trong Viện Điện Tử Viễn Thông, đại học Bách Khoa Hà Nội đã giảng dạy, cung cấp những kiến thức cần có để tác giả có thể vận dụng trong quá trình thực hiện luận văn tốt nghiệp Và cuối cùng, tác giả xin gửi lời cảm ơn sâu sắc đến gia đình, người thân, bạn bè đã động viên, giúp đỡ, tạo điều kiện trong thời gian thực hiện luận văn này
Hà Nội, ngày 19 tháng 9 năm 2014
Học viên Phùng Việt Anh
Trang 6Hình 1-1 Thẻ thông minh tiếp xúc và đ ầu đọc 7
Hình 1-2 Đầu đọc và thẻ thông minh không tiếp xúc .8
Hình 1-3 Kiến trúc tổng quát công nghệ Java Card 10
Hình 1-4 Kiến trúc tổng quát của một hệ thống Java Card 11
Hình 2-1 Sơ đồ chân của chip trên thẻ thông minh tiếp xúc[9] 14
Hình 2-2 Cấu trúc chip THC20F17BD[7] 17
Hình 2-3 Bản đồ bộ nhớ chip THC20F17BD ở chế độ thường[7] 22
Hình 2-4 Bản đồ bộ nhớ chip THC20F17BD ở chế độ bờ[7] 22
Hình 2-5 Cấu trúc một bộ định thời [7] 33
Hình 2-6 Quy trình 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 53
Hình 2-7 Cấu trúc câu lệnh APDU[3] 53
Hình 2-8 Cấu trúc APDU phản hồi[3] 54
Hình 3-1 Cấu trúc dữ liệu trong Java Card 68
Hình 3-2 Cấu trúc dữ liệu trong ứng dụng DID 69
Hình 3-3 Giao diện tạo cấu trúc tệp dữ liệu của DIDToolkit 77
Hình 3-4 Cửa sổ APDU 78
Hình 3-5 Giao diện ứng dụng ID khi chưa đọc dữ liệu từ thẻ 79
Hình 3-6 Giao diện ứng dụng ID sau khi đọc dữ liệu từ thẻ 79
Trang 7Bảng 2-1 Bảng đặc tính điện của VCC trong điều kiện bình thường 15
Bảng 2-2 Bảng đặc tính điện của RST trong điều kiện bình thường 15
Bảng 2-3 Bảng đặc tính điện của CLK trong điều kiện bình thường 16
Bảng 2-4 Bảng đặc tính điện của I/O trong điều kiện bình thường 16
Bảng 2-5 Bảng thanh ghi chức năng trong chip THC20F17BD (Sắp xếp theo địa chỉ) 18
Bảng 2-6 Bảng mô tả thanh ghi PC 19
Bảng 2-7 Bảng mô tả thanh ghi SP 19
Bảng 2-8 Bảng mô tả thanh ghi ACC 19
Bảng 2-9 Bảng mô tả thanh ghi B 19
Bảng 2-10 Bảng mô tả thanh ghi PSW 20
Bảng 2-11 Bảng mô tả thanh ghi DPTR0/1 20
Bảng 2-12 Bảng mô tả thanh ghi DPS 20
Bảng 2-13 Bảng quy chiếu bộ nhớ mở rộng ở chế độ thường 22
Bảng 2-14 Bảng quy chiếu bộ nhớ mở rộng ở chế độ bờ 23
Bảng 2-15 Bảng mô tả thanh ghi trạng thái FLASH (FL_STS) 24
Bảng 2-16 Bảng mô tả thanh ghi FL_SDP1, FL_SDP2 24
Bảng 2-17 Bảng mô tả thanh ghi FL_CON 25
Bảng 2-18 Bảng liệt kê các loại ngắt 26
Bảng 2-19 Bảng mô tả thanh ghi IE 27
Bảng 2-20 Bảng mô tả thanh ghi IP 27
Bảng 2-21 Bảng mô tả thanh ghi UBUF 28
Bảng 2-22 Bảng mô tả thanh ghi USR 28
Bảng 2-23 Bảng mô tả thanh ghi UCR 29
Bảng 2-24 Bảng mô tả thanh ghi UCR2 30
Bảng 2-25 Bảng mô tả thanh ghi UCR3 31
Bảng 2-26 Bảng mô tả thanh ghi UIMSK 31
Bảng 2-27 Bảng mô tả thanh ghi UIMSK 32
Bảng 2-28 Bảng mô tả thanh ghi P0 32
Trang 8Bảng 2-30 Bảng mô tả thanh thi TMOD 34
Bảng 2-31 Bảng mô tả thanh ghi TL0, TH0 34
Bảng 2-32 Bảng mô tả thanh ghi ISOTCON 35
Bảng 2-33 Bảng mô tả thanh ghi ISOTMSK 36
Bảng 2-34 Bảng mô tả thanh ghi ISOTDAT0/1 36
Bảng 2-35 Bảng mô tả thanh ghi ISOTRLD0/1 37
Bảng 2-36 Bảng mô tả thanh ghi RNGCTL 37
Bảng 2-37 Bảng mô tả thanh ghi RNGDAT 38
Bảng 2-38 Bảng mô tả thanh ghi CLKSEL 38
Bảng 2-39 Bảng mô tả thanh ghi CLKCON 39
Bảng 2-40 Bảng mô tả thanh ghi SLEEP 39
Bảng 2-41 Bảng mô tả thanh ghi CRC 40
Bảng 2-42 Bảng mô tả thanh ghi DESCTL 41
Bảng 2-43 Bảng mô tả các thanh ghi DESD0~DESD7 42
Bảng 2-44 Bảng mô tả thanh ghi VDCON 43
Bảng 2-45 Bảng mô tả thanh ghi FDCON 44
Bảng 2-46 Bảng liệt kê một số sản phẩm thẻ Java của Gemalto 45
Bảng 2-47 Bảng liệt kê một số sản phẩm thẻ Java của NXP 46
Bảng 2-48 Bảng liệt kê các ngo ại lệ được hỗ trợ trong Java Card 50
Bảng 2-49 Bảng liệt kê các lớp được hỗ trợ trong Java Card 51
Bảng 2-50 Bảng liệt kê các trường hợp cặp câu lệnh - phản hồi 54
Bảng 2-51 Bảng liệt kê các dạng của câu lệnh APDU 55
Bảng 2-52 Bảng liệt kê các từ khóa trạng thái trong giao thức truyền T=0 56
Bảng 3-1 Cấu trúc tệp dữ liệu trong ứng dụng DID 70
Bảng 3-2 Bảng mô tả các phương thức trong lớp FileSystem 73
Bảng 3-3 Bảng mô tả các phương thức trong lớp FileApplet 74
Bảng 3-4 Bảng mô tả các phương thức trong thư viện DID_API 75
Bảng 3-5 Bảng mô tả các phương thức trong thư viện DID_LIB 76
Trang 9APDU Application Protocol Data Unit
TPDU Transmission Protocol Data Unit
SPOM Self Programmable One-chip Microcomputer DES Data Encryption Standard
AES Advance Encryption Standard
UART Universal Asynchronous Receiver/Transmitter
Trang 10hệ điều hành trên từng loại thẻ Do đó, nhu c ầu về một nền tảng chung bên trong chip để hỗ trợ việc thực thi các ứng dụng được nêu ra Công nghệ Java Card được phát triển để phục vụ mục đích này 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ợ Java Card, công nghệ này đã giúp cho việc phát triển ứng dụng đa chip trở nên dễ dàng, tiết kiệm được thời gian nghiên cứu, phát triển, chuyển đổi ứng dụng giữa các chip Java Card là một công nghệ không mới, tuy nhiên cho tới thời điểm hiện nay với sự phát triển nhanh chóng của thị trường thẻ chip thông minh nói chung hay như thị trường sim điện thoại, thẻ tín dụng, thẻ thông minh không tiếp xúc nói riêng việc phát triển ứng dụng cho các lo ại thẻ này là một lĩnh vực có tiềm năng phát triển rất lớn Bởi vậy, tác giả lựa chọ n đề tài
“Nghiên cứu phát triển ứng dụng cho Java Card” làm đề tài luận văn tốt nghiệp của mình Mục tiêu c ủa đề tài là tổng hợp cơ sở lý thuyết cả phần cứng cũng như phần mềm về công nghệ Java Card, từ đó thiết kế một ứng dụng mẫu cho phép lưu trữ thông tin cá nhân lên thẻ, đồng thời hỗ trợ việc đọc ghi đó một cách bảo mật
Từ khi ra đời cho tới nay, công nghệ Java Card đã có nhiều thay đổi từ phiên bản 1.0 cho tới phiên bản 3.0 mới nhất hiện nay Tuy nhiên, phiên bản Java Card 2 mới là phiên bản được sử dụng rộng rãi trong các loại thẻ thông minh như SIM điện thoại, thẻ thanh toán quốc tế, các lo ại thẻ không tiếp xúc Qua mỗi phiên bản công nghệ Java Card đã có những thay đổi tương ứng với sự phát triển của phần cứng, hỗ trợ thêm nhiều tính năng mới cho phép thẻ thông minh có thể được sử dụng ở nhiều
Trang 11lĩnh vực khác nhau, chuyển đổi từ thẻ tiếp xúc sang thẻ không tiếp xúc… Việc lập trình cho Java Card cũng có nhiều thay đổi khi các bộ thư viện khung được cập nhật
và thay đổi qua từng phiên bản Bên cạnh việc bổ sung các thư viện mới hỗ trợ các công nghệ mới như mã hóa AES, giao tiếp không tiếp xúc thì cũng có các lớp được loại bỏ khỏi thư viện khung nhằm giảm bớt kích thước thư viện cũng như tăng hiệu năng hoạt động trên chip Luận văn sẽ tập trung vào phân tích công nghệ Java Card phiên bản 2 với hậu bản 2.2.1 là phiên bản đang được sử dụng rộng rãi hiện nay Trong luận văn, tác giả thực hiện việc nghiên cứu tổng quát về công nghệ Java Card bắt đ ầu từ tầng thấp nhất là nền tảng phần cứng cho tới tầng cao nhất là lớp ứng dụng Java Card:
Về nền tảng phần cứng, thẻ Java Card có giao diện vật lý tương tự các loại thẻ chip thông thường với giao tiếp 8 chân Tuy nhiên để có thể hỗ trợ công nghệ Java Card các chip trên thẻ phải có cấu hình phần cứng tối thiểu là: vi
xử lý hoạt động với xung nhịp 5Mhz, bộ nhớ ROM 24KB, EEPROM 16KB, RAM 512 bytes Vi xử lý trung tâm c ủa chip có khả năng tùy biến cao từ những CPU 8 bit với tập lệnh 8051 cho tới các CPU 32 bit với kiến trúc ARM Ngoài ra trên chip còn có thể có thêm các khối tính toán bằng phần cứng để tăng tốc các chức năng tốn nhiều tài nguyên xử lý như việc sinh số ngẫu nhiên, mã hóa dữ liệu DES, 3DES, AES, RSA Bên cạnh đó để tăng cường tính bảo mật cho thẻ, trên chip cũng được bố trí thêm các khối phần cứng để chống lại các phương thức tấn công chip như t ấn công bằng điện áp, tấn công bằng tần số
Hệ điều hành được xây dựng trên nền tảng phần cứng của chip Mỗi hãng sản xuất chip có một hệ điều hành riêng cho chip của mình với các dịch vụ riêng Tuy nhiên để thỏa mãn là thẻ hỗ trợ Java Card thì trên các hệ điều hành đều được tích hợp một môi trường chạy Java Card mà cốt lõi là một máy ảo Java Máy ảo Java này chịu trách nhiệm thực hiện các đoạn mã dựa trên các bộ thư viện khung và ngăn cách các ứng dụng được cài đ ặt với nhau Chính nhờ máy ảo Java này mà các ứng dụng Java Card có thể chạy được trên các chip khác nhau của các hãng sản xuất khác nhau
Trang 12 Việc 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 thực hiện thông qua các đơn vị dữ liệu giao thức ứng dụng (ADPU)
và các đơn vị dữ liệu giao thức truyền dẫn (TPDU) Các loại thẻ thông minh
có thể hỗ trợ hai giao thức truyền là T=0 và T=1, với mỗi giao thức TPDU và APDU được quy chiếu khác nhau Ứng dụng được thiết kế sử dụng giao thức T=0 là giao thức thông dụng hơn T=1
Với ứng dụng Java Card, ngoài việc đáp ứng được các chức năng như lưu trữ
dữ liệu, thực hiện các phép tính toán cơ bản thì tính năng bảo mật dữ liệu trên thẻ là một yêu cầu bắt buộc Để tránh thông tin không bị lộ ra ngoài trong quá trình gửi nhận các APDU hay để thực hiện việc xác thực dữ liệu, các phương thức mã hóa được sử dụng tới Các mã hóa thông dụng trên thẻ thông minh nói chung và thẻ Java nói riêng là 3DES và RSA Ứng dụng lưu trữ thông tin trên thẻ (DID) được thiết kế hỗ trợ mã hóa 3DES cho phép mã hóa và giải mã dữ liệu sử dụng khóa có độ dài 16 bytes
Một hệ thống Java Card hoàn chỉnh ngoài phần thẻ còn cần phần ứng dụng trên thiết bị đầu cuối cho phép thiết bị đầu cuối có thể tương tác với thẻ thông qua thiết bị trung gian là đầu đọc thẻ Sau khi ứng dụng trên thẻ được thiết kế, ứng dụng trên thiết bị đầu cuối sẽ được dựng lên tương ứng với cách hành xử trên thẻ để có thể thực hiện việc tương tác với thẻ theo yêu c ầu sử dụng Phần ứng dụng trên thiết bị đầu cuối trong luận văn được thiết kế dưới dạng bộ công cụ bằng ngôn ngữ Java
Tất cả các yếu tố trên kết hợp lại thành một hệ thống thẻ Java hoàn chỉnh có thể được ứng dụng trong nhiều lĩnh vực khác nhau trong đời sống như thẻ trả trước, các loại giấy tờ điện tử, ví điện tử, các ứng dụng giá trị gia tăng trên SIM điện thoại Bên cạnh phần nghiên c ứu, phân tích và tổng kết các cơ sở lý thuyết về Java Card Luận văn cũng bao gồm việc thiết kế ra một ứng dụng lưu trữ thông tin trên thẻ có nhiều ưu điểm so với cách lưu trữ thông tin mặc định của Java Card Thay vì
sử dụng ba loại định dạng dữ liệu cơ bản trong Java Card là dạng dữ liệu trong suốt, dạng vòng và dạng bản ghi, ứng dụng lưu trữ thông tin cho phép người dùng tạo ra các tệp dữ liệu có địa chỉ, độ dài, quyền truy cập mong muốn Cấu trúc dữ liệu được
Trang 13tạo ra trong quá trình cài đặt ứng dụng nhằm đơn giản hóa và giảm thời gian cá thể hóa thẻ Cấu trúc dữ liệu có thể được mở rộng trong quá trình sử dụng để đảm bảo tính tương thích của thẻ với nhiều ứng dụng thực tiễn khác nhau Ngoài ra ứng dụng cũng có các phương thức mã hóa và xác thực dữ liệu đảm bảo tính bảo mật trong quá trình sử dụng
Ngoài phần lời mở đầu, kết luận và tài liệu tham khảo, phần nội dung của luận văn được trình bày trong 3 chương chính:
CHƯƠNG 1: TỔNG QUAN VỀ THẺ THÔNG MINH VÀ HỆ THỐNG JAVA CARD
Chương này cung cấp cái nhìn tổng quan về thẻ thông minh và thẻ Java từ lịch sử phát triển của thẻ thông minh cho tới nhưng khái niệm cơ bản về thẻ chip và công nghệ thẻ Java đồng thời chương này cũng giới thiệu sơ bộ về hệ thống Java Card nói chung và hệ thống đề xuất nói riêng
CHƯƠNG 2: NGHIÊN CỨU VỀ HỆ THỐNG JAVA CARD
Chương này được chia thành 3 phần: phần thứ nhất tập trung vào nghiên cứu cấu tạo phần cứng của chip, phần thứ hai phân tích về kiến trúc hệ điều hành trên thẻ Java và phần thứ ba nghiên cứu về giao thức truyền nhận dữ liệu giữa thẻ và thiết bị đầu cuối
CHƯƠNG 3: THIẾT KẾ ỨNG DỤNG THỰC NGHIỆM
Chương này của luận văn sử dụng các cơ sở lý thuyết được nêu ra trong Chương 2 để thiết kế ra một hệ thống Java Card dùng để lưu trữ thông tin cá nhân trên thẻ
Trang 14CHƯƠNG 1 TỔNG QUAN VỀ THẺ THÔNG MINH
VÀ HỆ THỐNG JAVA CARD
1.1 Giới thiệu chung về thẻ thông minh
1.1.1 Lịch sử phát triển thẻ thông minh
Thẻ gắn chip tự động đầu tiên được phát minh vào năm 1968 bởi kĩ sư điện tử người Đức Helmut Gröttrup và đồng nghiệp của ông là Jürgen Dethloff, bằng sáng chế này được công nhận vào năm 1982 Lần đầu tiên loại thẻ này được sử dụng với
số lượng lớn là ở Pháp trong việc thanh toán điện thoại công cộng vào năm 1983 Tiếp sau đó, Roland Moreno đăng ký bằng sáng chế về thẻ nhớ vào năm 1974.Năm
1977, Michel Ugon thuộc công ty Honeywell Bull phát minh ra thẻ thông minh vi
xử lý đầu tiên Năm 1978, Bull đăng ký bằng sáng chế về bộ vi xử lý một chip tự lập trình được ( SPOM -Self Programmable One-chip Microcomputer) Ba năm sau, chip đầu tiên dùng cho thẻ mang tên "CP8" được Motorola sản xuất dựa trên bằng sáng chế này Tại thời điểm đó, Bull đã có 1200 bằng sáng chế liên quan đến thẻ thông minh Năm 2001, Bull bán bộ phận CP8 của họ và tất cả các bằng sáng chế liên quan cho Schlumberger Schlumberger ghép bộ phận về thẻ thông minh của họ với CP8 và đặt tên là Axalto Đến năm 2006, Axalto và Gemplus, là hai nhà máy sản xuất thẻ thông minh lớn nhất thế giới vào thời điểm đó, kết hợp lại với nhau và lấy tên là Gemalto
Sự bùng nổ dùng thẻ thông minh bắt đầu trong thập niên 90, khi có sự xuất hiện của SIM dùng trong thiết bị điện thoại di động GSM ở Châu Âu Cùng với việc mạng di động mở rộng khắp Châu Âu, thẻ thông minh ngày càng trở nên thông dụng
Vào năm 1993, ba tổ chức lớn trong ngành thanh toán quốc tế là MasterCard, Visa, và Europay thỏa thuận cùng hợp tác để xây dựng nên chuẩn kỹ thuật cho việc dùng thẻ thông minh trong các thẻ thanh toán ở cả hai loại thẻ tài khoản và thẻ tín dụng Phiên bản đ ầu tiên c ủa hệ thống EMV này được công bố vào năm 1994 Đến năm 1998, công ty EMVco ra đời, chịu trách nhiệm bảo trì lâu dài hệ thống này
Trang 15đồng thời nâng cấp chuẩn kỹ thuật hai lần vào các năm 2000 và 2004 Mục tiêu của công ty EMVco là đảm bảo với các tổ chức tài chính và các đại lý rằng các chuẩn
kỹ thuật dù phát triển nhưng vẫn phải giữ được tương thích với phiên bản 1998 Cho tới thời điểm hiện tại, thẻ thông minh hiện đã và đang được sử dụng trong rất nhiều lĩnh vực của cuộc sống như làm thẻ chứng minh nhân dân, hộ chiếu điện
tử cũng như các loại giấp phép ở các mức vùng, toàn quốc hay toàn c ầu Tại Việt Nam, thẻ thông minh hiện được sử dụng nhiều nhất để làm thẻ tín dụng và sim điện thoại
1.1.2 Thẻ thông minh tiếp xúc
Loại thẻ thông minh tiếp xúc có một diện tích tiếp xúc, bao gồm một số tiếp điểm mạ vàng và có diện tích khoảng 1 cm vuông Khi được đưa vào đầu đọc, con chip trên thẻ sẽ tiếp xúc với các tiếp điểm điện tử tương ứng trong đầu đọc và cho phép máy đọc thông tin từ chip và viết thông tin lên đó
Bộ tiêu chuẩn ISO/IEC 7816 bao gồm 15 phần quy định các chuẩn cho thẻ thông minh tiếp xúc và ứng dụng trên thẻ cụ thể: quy định về đặc tính vật lý của chip, vị trí kích thước của chip trên thẻ, giao tiếp điện và phương thức truyền tin trên thẻ,
mô tả các câu lệnh trên thẻ, cách thức đăng ký ứng dụng trên thẻ, các thành phần dữ liệu theo chuẩn công nghiệp, các lệnh theo chuẩn công nghiệp dùng cho ngôn ngữ SCQL, các lệnh cho tác vụ bảo mật, các lệnh quản lý thẻ, tín hiệu điện và dữ liệu trả lời cho tín hiệu khởi động trên thẻ đồng bộ, các phương pháp xác thực sinh trắc học, giao tiếp USB và tiến trình hoạt động, các lệnh quản lý ứng dụng trong môi trường
đa ứng dụng, ứng dụng với thông tin mã hóa
Luận văn sẽ tập trung vào nghiên cứu và phân tích tiêu chuẩn ISO 7816 phần một đến bốn, đồng thời sử dụng thêm bộ tiêu chuẩn GP (Global Plaform) để thực hiện việc phát triển ứng dụng cho thẻ thông minh tiếp xúc chạy hệ điều hành Java Card, gọi tắt là thẻ Java
Trang 16Hình 1-1 Thẻ thông minh tiếp xúc và đầu đọc
1.1.3 Thẻ thông minh không tiếp xúc
Thẻ thông minh không tiếp xúc là lo ại thẻ mà chip trên nó liên lạc với đầu đọc thẻ thông qua công nghệ cảm ứng RFID (với tốc độ dữ liệu từ 106 đến 848 kbit/s).Những thẻ này chỉ cần đặt gần một anten để thực hiện quá trình truyền và nhận dữ liệu Chúng thường được dùng trong các tình huống truyền nhận dữ liệu thật nhanh hay khi người chủ thẻ cần rảnh tay, chẳng hạn ở các hệ thống giao thông công cộng có thể sử dụng thẻ loại này mà không cần rút thẻ ra khỏi ví
Chuẩn thông tin cho thẻ thông minh không tiếp xúc là ISO/IEC 14443, phát hành năm 2001 Nó qui định hai kiểu thẻ không tiếp xúc ("A" và "B"), cho phép liên lạc với kho ảng cách lên đến 10 cm Cũng có một vài chuẩn khác như ISO 14443 kiểu C,
D, E và F mà đã bị loại bỏ khỏi ISO/IEC Một chuẩn khác của thẻ thông minh không tiếp xúc là ISO 15693, cho phép thông tin ở khoảng cách lên đến 50 cm Một số ví dụ của việc dùng thẻ thông minh không tiếp xúc là thẻ Octopus của Hồng Kông, và thẻ Suica của Japan Rail, thẻ Felica của Sony hay thẻ Mifare của
Trang 17NXP Trong khuôn khổ của luận văn, thẻ thông minh không tiếp xúc sẽ không được xem xét
Hình 1-2 Đầu đọc và thẻ thông minh không tiếp xúc
1.2 Tổng quan về hệ thống Java Card
1.2.1 Công nghệJava Card
Thẻ Java hay Java Card là công nghệ cho phép các ứng dụng Java có thể hoạt động một cách an toàn và bảo mật trên thẻ thông minh cũng như các thiết bị có dung lượng bộ nhớ hạn chế khác Java Card là nên tảng Java nhỏ nhất hướng tới các thiết bị nhúng Java Card cho phép người dùng khả năng tự phát triển các ứng dụng trên thẻ phù hợp với từng nhu cầu cụ thể Java Card hiện được sử dụng rộng rãi trong thẻ SIM điện thoại và thẻ ngân hang điện tử Các sản phẩm về Java Card được dựa trên nên tảng Java của Oracle Ngoài ra, để đảm bảo tính bảo mật cũng như đảm bảo về sự thống nhất trong việc quản lý, các ứng dụng Java Card cũng tuân theo bộ tiêu chuẩn GlobalPlatform (GP)
Trang 18Đặc tính mà các ứng dụng Java Card hướng tới là tính tương thích và tính bảo mật Tính tương thích được thể hiện ở việc Java Card nhắm tới mục tiêu 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 có thể chạy trên các loại thẻ thông minh khác nhau Tương tự như với môi trường Java, điều này được thực hiện bằng việc kết hợp một máy ảo Java Card với một bộ thư viện chung Tuy nhiên tính tương thích bị ảnh hưởng lớn bởi sự khác nhau về kích thước bộ nhớ, khả năng xử lý và hỗ trợ của các loại thẻ khác nhau
Do được 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ố, thành phần 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 Java Card đề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 Java Card 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ư DES, 3DES, AES hay RSA Bên cạnh đó các ứng dụng trên Java Card được đóng gói dưới dạng Applet là một máy trạng thái chỉ xử lý các câu lệnh tới và trả về dữ liệu phản hồi
Java Card có một số đ ặc điểm khác với Java thông thường Về mặt ngôn ngữ lập trình, Java Card là một phần thu gọn của Java: mọi thành phần cấu tạo nên Java Card đều có trong Java và hoạt động tương tự Một chương trình Java Card cũng được biên dịch thành một tệp lớp Java thông qua một bộ biên dịch Java, tệp lớp sau
đó được xử lý bằng một bộ công cụ riêng biệt cho nền tảng Java Card
Các đoạn mã Java Card được chạy bởi máy ảo Java Card cũng là một chức năng thu gọ n của Java 2 Các đoạn mã Java Card sẽ được mã hóa khác đi để đảm bảo tính tối ưu về kích thước Do đó, một ứng dụng Java Card bao giờ cũng sử dụng ít đoạn
mã hơn ứng dụng Java truyền thống Điều này giúp tiết kiệm bộ nhớ trong điều kiện
Trang 19tài nguyên trên thẻ thông minh rất hạn chế Đổi lại, một số tính năng c ủa Java không được hỗ trợ trong Java Card
Thư viện lớp và thư viện chạy của Java Card có nhiều điểm khác so với Java, chỉ
có một vài điểm chung cơ bản Rất nhiều lớp được khai báo trên Java không có trong Java Card Trên Java Card các đối tượng được lưu trữ trên các bộ nhớ tĩnh (ROM, EEPROM), do đó môi trường chạy ứng dụng và các đoạn mã được thay đổi
để phù hợp với các đối tượng này Ngoài ra, Java Card cũng đ ảm bảo tính nguyên tố, các câu lệnh tác vụ ghi và các hàm thực thi ho ặc được thực thi toàn bộ hoặc không thực thi
Tính tới thời điểm hiện tại, Java Card đã ra tới phiên bản 3.0 (tháng 3 năm 2008) Tuy nhiên nhiều loại thẻ hiện tại vẫn sử dụng Java Card với các phiên bản 2.2.1 và 2.2.2
Hình 1-3 Kiến trúc tổng quát công nghệ Java Card
Trang 201.2.2 Hệ thống Java Card
Hình 1-4 Kiến trúc tổng quát của một hệ thống Java Card
Mô hình hệ thống Java Card hoàn chỉnh được thể hiện như trong hình 1.4:
Toàn bộ hệ điều hành hỗ trợ Java Card và các ứng dụng trển thẻ được triển khai trên một nền tảng phần cứng của chip Tùy thuộc vào từng hãng sản xuất khác nhau với các dòng chip khác nhau mà cấu hình phần cứng của chip được thay đổi để phù hợp với các ứng dụng cụ thể Với những ứng dụng đòi hỏi khả năng lưu trữ và tính toán thấp, chip phần cứng có thể có bộ nhớ RAM 512 bytes, ROM 16KB, không có khối tính toán RSA Ngược lại, với những ứng dụng cao c ấp đòi hỏi chip có bộ nhớ ram 4KB, ROM 132KB, có các khối hỗ trợ tính toán 3DES, RSA…
Hệ điều hành của chip được các hãng cung cấp chip tự xây dựng hoặc được một bên thứ ba tạo nên dựa trên phần cứng của chip.Hệ điều hành cung cấp các dịch vụ cho phép truy nhập tới từng thành phần phần cứng trên chip Trong hệ thống Java Card, hệ điều hành trên chip đã được cài sẵn một môi trường thực thi Java Card (JCRE)
Trang 21Môi trường thực thi Java Card là phần lõi của công nghệ Java Card Nó bao gồm một máy ảo Java Card (JCVM) và một bộ thư viện khung (JCAPI) cho phép các ứng dụng Java Card có thể được thực thi trên thẻ JCRE chịu trách nhiệm quản lý các ứng dụng trên thẻ bao gồm việc: cấp phát bộ nhớ cho ứng dụng, phân tách các ứng dụng với nhau và thực hiện viện truyền nhận dữ liệu giữa ứng dụng trên thẻ và ứng trên thiết bị đầu cuối
Các ứng dụng Java Card trên thẻ được thiết kế dưới dạng Applet.Applet là một máy trạng thái chỉ nhận các lệnh tới và gửi trả phản hồi tương ứng dưới dạng các đơn vị dữ liệu ứng dụng (APDU) Các ứng dụng này được tải lên bộ nhớ của chip dưới dạng gói (Java package) và có thể được cài đặt ra thành một thực thể (instance) Ngoài các thành phần trên thẻ, các ứng dụng trên thiết bị đầu cuối là thành phần cuối cùng trong một hệ thống Java Card Các ứng dụng này giao tiếp với ứng dụng trên thẻ thông qua JCRE bằng cách gửi và nhận các đơn vị dữ liệu truyền tải (TPDU) Tùy thuộc vào giao thức truyền tải T=0 hoặc T=1 mà các APDU được đóng góitheo các khác nhau vào TPDU
Chi tiết về các thành phần của một hệ thống Java Card sẽ được mô tả chi tiết tại các phần tương ứng trong Chương 2.Nghiên cứu hệ thống Java Card
Trang 221.3 Hệ thống đề xuất
Qua việc nghiên cứu cấu tạo, hiệu năng của chip và khả năng hộ trợ của công nghệ Java Card, mục tiêu của luân văn là thiết kế một hệ thống cho phép lữu trữ và quản lý thông tin cá nhân trên thẻ Java
1.3.1 Yêu cầu chức năng
Đối với người sử dụng
Tải và cài đặt ứng dụng lên thẻ
Có khả năng tự tạo cấu trúc dữ liệu trên thẻ
Thực hiện đọc ghi dữ liệu trên thẻ
Hỗ trợ các phương thức trao đổi bảo mật thông qua mã hóa
Đối với người phát triển
Có các chức năng thông báo, sửa lỗi
Có giao diện ứng dụng (API)
1.3.2 Yêu cầu phi chức năng
Đối với người dùng
Giao diện chương trình dễ tương tác và sử dụng
Hỗ trợ nhiều loại đầu đọc thẻ khác nhau
Ứng dụng trên thẻ có thể được cài lên nhiều loại thẻ Java khác nhau
Đối với người phát triển
Có khả năng mở rộng thêm chức năng
1.4 Kết luận
Chương 1 c ủa luận văn cung c ấp cái nhìn tổng quan về thẻ thông minh nói chung
và về hệ thống Java Card nói riêng Các thành phần của hệ thố ng Java Card được liệt kê trong chương này sẽ được mô tả chi tiết tại Chương 2.Nghiên cứu về hệ thống Java Card của luận văn Cách thức triển khai hệ thống đề xuất sẽ được thể hiện trong Chương 3.Triển khai hệ thống thử nghiệm
Trang 23CHƯƠNG 2 NGHIÊN CỨU HỆ THỐNG JAVA CARD
2.1 Phần cứng thẻ chip
2.1.1 Giao diện vật lí
Về mặt vật lý, thẻ Java là loại thẻ thông minh tiếp xúc Các quy định về đặc tính vật lý, kích thước con chip và sơ đồ chân của chip được liệt kê trong bộ tiêu chuẩn ISO/IEC 7816 phần một và hai: chip có 8 chân và được sắp xếp theo như hình 2.1 Các loại thẻ hoạt động ở các mức điện áp khác nhau được phân vào các lớp khác nhau:
Trang 242.1.1.1 Chân VCC (C1)
Chân VCC cung cấp điện áp nguồn cho thẻ hoạt động
Bảng 2-1 Bảng đặc tính điện của V C C trong điều kiện bình thường
Kí
hiệu Điều kiện áp dụng Giá trị cực
tiểu
Giá trị cực đại
Đơn
vị
UCC
Lớp A Lớp B Lớp C
4,5 2,7 1,62
5,5 3,3 1,98
V
ICC
Lớp A, tần số hoạt động cực đại Lớp B, tần số hoạt động cực đại Lớp C, tần số hoạt động cực đại Khi chip không hoạt động
60
50
30 0,5
mA
2.1.1.2 Chân RST (C2)
Chân RST cung cấp tín hiệu khởi động lại tới chip
Bảng 2-2 Bảng đặc tính điện của RST trong điều kiện bình thường
Kí
hiệu Điều kiện áp dụng Giá trị cực
tiểu
Giá trị cực đại
UCC+150
0,12 UCC+20
Trang 25Bảng 2-3 Bảng đặc tính điện của CLK trong điều kiện bình thường
Kí
hiệu Điều kiện áp dụng Giá trị cực
tiểu
Giá trị cực đại
UCC+100
UIL
0
0 -100
0,5 0,2 UCC+20
UCC+20
0,15 UCC +20
V
µA
UOH
IOH
Điện trở kéo lên: 20 kΩ tại UCC
UOH và điện trở kéo lên: 20 kΩ tại UCC
Trang 262.1.1.6 Các chân còn lại (C4,C5,C8)
Chân C4, C8 chưa được sử dụng và dùng để làm các chân dự trữ
Chân C5 được dùng để nối đất
2.1.2 Cấu tạo phần cứng của chip
Với mỗi một loại chip khác nhau của mỗi hãng khác nhau sẽ có cấu tạo khác nhau, trong khuôn khổ luận văn chỉ phân tích các khối chức năng chính c ấu tạo nên một con chip có khả năng thực thi công nghệ Java Card Cụ thể, con chip dùng làm đối tượng phân tích trong luận văn là chip THC20F17BD của hãng Tongfang có trụ
sở tại Bắc Kinh, Trung Quốc Cấu trúc của chip được thể hiện trong hình 2.2
Hình 2-2 Cấu trúc chip THC20F17BD[7]
Với những loại thẻ thế hệ cũ để có thể thực thi công nghệ Java Card, yêu cầu tối thiểu về hiệu năng của chip có thể rất hạn chế ở mức: vi xử lý hoạt động với xung nhịp 5Mhz, bộ nhớ ROM 24KB, EEPROM 16KB, RAM 512 bytes Tuy nhiên, tới thời điểm hiện tại khả năng xử lý của các chip trên thẻ thông minh đã được cải thiện rất nhiều về mặt hiệu suất cũng như bộ nhớ: xung nhịp của vi xử lý đã đạt mức 20Mhz đến 30Mhz, dung lượng RAM đạt 4KB đến 8KB, bộ nhớ ROM và FLASH dao động lớn từ 32KB đến 320KB tùy theo yêu cầu sử dụng
Trang 272.1.3 Mô tả các thành phần của chip
2.1.3.1 Khối xử lý trung tâm(CPU)
Các CPU trên thẻ chip thông minh hiện nay có thể là chip 8 bit, 32 bit sử dụng chủ yếu các tập lệnh ARM hoặc 8051 Chip THC20F17BD sử dụng CPU TMCU_051 8 bit với tập lệnh 8051 Trong CPU có các thanh ghi chức năng đặc biệt cho phép truy cập tới các thành phần phần cứng khác kết nối với CPU Các thanh ghi chức năng trong chip THC20F17BD được liệt kê trong bảng 2.5
Bảng 2-5.Bảng thanh ghi chức năng trong chip THC20F17BD (Sắp xếp theo địa chỉ)
Trang 28Bảng 2-6 Bảng mô tả thanh ghi PC
Chức năng Thanh ghi 16 bit xác định địa chỉ tiếp theo của câu lệnh
Bảng 2-7 Bảng mô tả thanh ghi SP
Chức năng Thanh ghi ngăn xếp 8 bit trỏ tới đầu ngăn xếp
Bảng 2-8 Bảng mô tả thanh ghi ACC
Trang 29Bảng 2-10.Bảng mô tả thanh ghi PSW
Chức năng Thanh ghi 16 bit xác định địa chỉ của bộ nhớ ngoài (XDATA)
Bảng 2-12 Bảng mô tả thanh ghi DPS
Trang 30Bit Chức năng
RFU Bit dự trữ
SEL Chọn thanh ghi DPTR0/1
0: chọn DPTR0 1: chọn DPTR1
bộ nhớ FLASH, bộ nhớ lập trình một lần OTP, bộ nhớ truy nhập ngẫu nhiên RAM,
và các thanh ghi chức năng SFR
Nếu một vùng nhớ vật lý được quy chiếu vào một không gian logic duy nhất thì
vi xử lý trung tâm chỉ có thể truy nhập vào vùng vật lý đó thông qua không gian logic tương ứng Trong trường hợp một không gian vật lý được quy chiếu vào nhiều hơn một không gian logic, vi xử lý có thể truy nhập vào vùng nhớ đó thông qua một không gian logic bất kì được quy chiếu đó
Các loại bộ nhớ mở rộng như FLASH, RAM, thanh ghi chức năng mở rộng được gọi chung là dữ liệu mở rộng (XDATA) và được phân bố theo bản đồ bộ nhớ như hình 2.3 (chế độ thường) và hình 2.4 (chế độ bờ) Trong chế độ bờ, thanh ghi chức năng P3 dùng để quản lý các bờ được quy chiếu vào XDATA
Trang 31Hình 2-3 Bản đồ bộ nhớ chip THC20F17BD ở chế độ thường[7]
Bảng 2-13 Bảng quy chiếu bộ nhớ mở rộng ở chế độ thường
Địa chỉ logic của bộ nhớ mở rộng Địa chỉ vật lý
Trang 32P3 = 4 Trống P3 = 3 Trống
FLASH [20000h, 20FFFh] P3 = 2 FLASH [18000, 1FFFFh] P3 = 1 FLASH [10000h, 17FFFh] P3 = 0 FLASH [08000h, 0FFFFh]
Bờ Thường XDATA [2000h, 7FFFh] FLASH [02000h, 07FFFh]
XDATA [1000h, 1FFFh] Ext SFR [0000h, 00FFFh] XDATA [0800h, 0FFFh] Trống
Trang 33Bảng 2-15 Bảng mô tả thanh ghi trạng thái FLASH (FL_STS)
FL_STS b7 b6 b5 b4 b3 b2 b1 b0
Giá trị khởi tạo 00h
Bit Chức năng
RFU bit dự trữ
EV_ERR Cờ báo lỗi xóa, được bật lên bằng phần cứng và xóa bằng phần mềm
1: Có lỗi trong quá trình xóa 0: Quá trình xóa bình thường F_ERR Cờ báo lỗi quá trình, được bật lên bằng phần cứng và xóa bằng phần
mềm 1: Có lỗi 2: Hoạt động bình thường F_OVER Cờ báo kết thúc quá trình xóa/lập trình, được bật lên bằng phần cứng
và xóa bằng phần mềm 1: Quá trình đã kết thúc 0: Quá trình chưa kết thúc
Bảng 2-16.Bảng mô tả thanh ghi FL_SDP1, FL_SDP2
Tên thanh ghi xóa và lập trình số 1
Giá trị khởi tạo 00h
Tên thanh ghi xóa và lập trình số 2
Giá trị khởi tạo 00h
Trang 34Bảng 2-17 Bảng mô tả thanh ghi FL_CON
FL_CON b7 b6 b5 b4 b3 b2 b1 b0
Giá trị khởi tạo 00h
Bit Chức năng
RFU bit dự trữ
EV_ERR Xác thực xóa phần cứng
1: Cho phép 0: Không cho phép ETYP Kiểu xóa
00: Xóa trang 01: Dự trữ 10: Dự trữ 11: Dự trữ EMOD Chế độ xóa trang
0: Xóa thường 1: Xóa nhanh
PMOD Chế độ nguồn trong quá trình hoạt động của flash
1: Vi xử lý ngừng và chip hoạt động ở chế độ thấp 0: Vi xử lý vẫn hoạt động2
Tiến trình xóa trang FLASH:
1 Ghi 01h vào FL_CON.PMOD
Ghi 00h vào SFR FL_CON.EMOD
Ghi 00h vào FL_CON.ETYP
Ghi 01h vào FL_CON.EV_EN
Trang 352 Ghi 55h vào FL_SDP1 trước rồi ghi AAh vào FL_SDP2
3 Ghi FFh tới địa chỉ bắt đầu trong trang muốn xóa
4 Phát hiện FL_STS.F_OVER, khi F_OVER = 1 thì quá trình xóa kết thúc
5 Phát hiện FL_STS.OP_ERR
6 Phát hiện FL_STS.EV_ERR
7 Xóa thanh ghi FL_STS
Tiến trình ghi FLASH:
1 Ghi 01h vào FL_CON
2 Ghi AAh vào FL_SDP1 trước rồi ghi 55h vào FL_SDP2
3 Ghi dữ liệu vào địa chỉ mong muốn
4 Phát hiện FL_STS.F_OVER, khi F_OVER = 1 thì quá trình xóa kết thúc
Bảng 2-18 Bảng liệt kê các loại ngắt
Tên Nguồn tạo ngắt Số thứ tự ngắt Vector địa chỉ
Trang 36Bảng 2-19 Bảng mô tả thanh ghi IE
Giá trị khởi tạo 00h
Bit Chức năng
EA Bật toàn bộ ngắt
0: Cấm toàn bộ ngắt 1: Cho phép ngắt thông qua các bit tương ứng RFU bit dự trữ
RFU bit dự trữ
FLASH 1: Cho phép ngắt FLASH; 0: không cho phép ngắt FLASH
RFU bit dự trữ
UART 1: Cho phép ngắt UART; 0: không cho phép ngắt UART
Timer0 1: Cho phép ngắt Timer0; 0: không cho phép ngắt Timer0
DES 1: Cho phép ngắt DES; 0: không cho phép ngắt DES
Bảng 2-20 Bảng mô tả thanh ghi IP
Giá trị khởi tạo 00h
Bit Chức năng
RFU bit dự trữ
FLASH Tạo ưu tiên mức cao cho ngắt FLASH, giá trị 1 hợp lệ
RFU bit dự trữ
UART Tạo ưu tiên mức cao cho ngắt UART, giá trị 1 hợp lệ
Timer0 Tạo ưu tiên mức cao cho ngắt Timer0, giá trị 1 hợp lệ
DES Tạo ưu tiên mức cao cho ngắt DES, giá trị 1 hợp lệ
Trang 37Trong quá tình hoạt động, vi xử lý sẽ xử lý ngắt theo trình tự của 8051:
Trong quá trình xử lý mỗi lệnh, vi xử lý lấy mẫu các cờ yêu cầu ngắt
Vi xử lý sẽ xử lý các ngắt có mức độ ưu tiên cao nếu không có các điều kiện chặn là:
o Ngắt đã bị tắt bởi thanh ghi IE
o Vi xử lý đang xử lý ngắt có mức độ ưu tiên bằng hoặc cao hơn
o Câu lệnh hiện tại chưa được thực hiện xong
o Câu lệnh hiện tại đang thực hiện đọc hoặc ghi thanh ghi IE, IP
2.1.3.5 UART
Bộ truyền nhận không đồng bộ (UART) trên chip cho phép lớp vật lý có khả xử
lý và lớp liên kết dữ liệu có thể truyền nhận các khung kí tự được mô tả trong chuẩn ISO/IEC 7816-3 Để điều khiển các chức năng của UART, vi xử lý sử dụng các thanh ghi UBUF, USR, UCR, UCR2, UCR3, UIMSK, UBRC, P0
Bảng 2-21 Bảng mô tả thanh ghi UBUF
UBUF b7 b6 b5 b4 b3 b2 b1 b0
Giá trị khởi tạo 00h
Chức năng Thanh ghi đệm truyền nhận
Trong trạng thái truyền, thanh ghi này là bộ đệm cho byte truyền tiếp theo
Trong trạng thái nhận, thanh ghi này là bộ đệm cho byte vừa nhận
Bảng 2-22 Bảng mô tả thanh ghi USR
Giá trị khởi tạo 01h
Trang 38Bit Chức năng
RFU bit dự trữ
OE Cờ báo tràn trong quá trình nhận
1: byte mới đã được nhận trong khi byte trước đó chưa được đọc ra khỏi UBUF
0: trạng thái bình thường
PE Cờ báo lỗi chẵn lẻ
Trong giao thức T=0, sau khi kí tự được truyền:
1: số lượng lỗi chẵn lẻ vượt quá mức quy định tại các bit UCR2.TRY 0: không có lỗi chẵn lẻ
Trong giao thức T=1, sau khi nhận được khung kí tự:
1: có lỗi chẵn lẻ xuất hiện trong khung kí tự vừa nhận 0: không có lỗi chẵn lẻ
RBF Cờ báo đầy bộ đệm dùng trong quá trình nhận
1: có một byte trong bộ nhớ đệm UBUF 0: không có byte mới trong bộ đệm TBE Cờ báo bộ đệm trống dùng trong quá trình truyền
1: byte trong bộ đệm UBUF đã được truyền; byte tiếp theo có thể được nạp vào UBUF
2: UBUF đã đầy
Bảng 2-23 Bảng mô tả thanh ghi UCR
Giá trị khởi tạo 01h
Trang 39Bit Chức năng
MOD Chọn chế độ UART
1: Chế độ vào ra trực tiếp 0: Chế độ phần cứng
TR Kích hoạt trạng thái truyền/nhận của UART
1: đưa phần cứng vào trạng thái truyền 0: kích hoạt phần cứng để chuẩn bị nhận TACT Cờ truyền tích cực
1: dữ liệu đang được truyền hoặc bộ đệm truyền đã đầy 0: quá trình truyền đã kết thúc
RFU bit dự trữ
Bảng 2-24 Bảng mô tả thanh ghi UCR2
UCR2 b7 b6 b5 b4 b3 b2 b1 b0
Giá trị khởi tạo 07h
Bit Chức năng
EGT Thời gian bảo vệ thêm
111~001: Thời gian bảo vệ thêm từ 1~7 etu 000: không có thời gian bảo vệ thêm
TR Điều khiển tự động gửi lại
111: gửi lại không giới hạn số lần 110~001: gửi lại từ 1~6 lần 000: không gửi lại
Trang 40Bảng 2-25 Bảng mô tả thanh ghi UCR3
UCR3 b7 b6 b5 b4 b3 b2 b1 b0
Giá trị khởi tạo 00h
Bit Chức năng
SBIT Cờ đầu vào sườn xuống
1: đã nhận một sườn xuống 0: chưa nhận được sườn xuống hoặc UIMSK.MSK_SBIT = 1 TPS Điều khiển chọn phương thức
1: T = 1 0: T = 0 WES Điều khiển độ rộng tín hiệu lỗi
1: 2 etu 0: 1 etu
Bảng 2-26 Bảng mô tả thanh ghi UIMSK