Tổng quan về hệ thống mã hóa bằng sinh trắc học có bảo vệ mẫu đặc trưng sinh trắc 1.1 Giới thiệu tổng quan về mã hóa 1.1.1 Định nghĩa và các chuẩn mã hóa Mật mã là một khoa học bi
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS.TS ĐẶNG TRẦN KHÁNH
Đồng Nai, Năm 2018
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng cá nhân, là kết quả của quá trình học tập và nghiên cứu khoa học độc lập Trong toàn bộ nội dung của luận văn, những điều được trình bày hoặc là của cá nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng
Trang 4LỜI CẢM ƠN
Với những lời đầu tiên, em xin dành sự cảm ơn chân thành và sâu sắc tới thầy, PGS.TS Đặng Trần Khánh đã hướng dẫn và giúp đỡ em tận tình trong quá trình hoàn thành luận văn
Em cũng xin cảm ơn quý Thầy Cô Trường Đại học Lạc Hồng đã tận tình truyền dạy kiến thức trong quá trình em học tập tại trường, những kiến thức đó đã giúp em rất nhiều trong việc học tập và nghiên cứu sau này
Cuối cùng, xin gửi lời cảm ơn tới những người thân trong gia đình và bạn bè, đồng nghiệp đã giúp đỡ và tạo điều kiện tốt cho em trong quá trình làm luận văn
Học viên
Trần Ngọc Duy Phương
Trang 5Mục lục
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
Mục lục iii
Mục lục hình v
Mục lục bảng vi
Chương 1 Tổng quan về hệ thống mã hóa bằng sinh trắc học có bảo vệ mẫu đặc trưng sinh trắc 1
1.1 Giới thiệu tổng quan về mã hóa 1
1.1.1 Định nghĩa và các chuẩn mã hóa 1
1.2 Sinh trắc học 2
1.2.1 Định nghĩa 2
1.2.2 Phân loại các đặc điểm sinh trắc học 3
1.3 Mô hình bảo vệ mẫu dữ liệu sinh trắc 6
1.3.1 Biến đổi đặc trưng 7
1.3.2 Hệ thống mã hoá sinh trắc 8
Chương 2 Tổng quan về Android 10
2.1 Tìm hiểu về lập trình và mô hình phát triển ứng dụng trên Android 10
2.1.1 Đặc điểm Android 12
2.1.2 So sánh với các hệ điều hành khác 12
2.1.3 Phân khúc các phiên bản Android 14
2.1.4 Kiến trúc và các thành phần 15
2.2 Tổng quan về hệ thống quản lý tập tin trên hệ điều hành Android 19
2.2.1 Một vài ứng dụng quản lý tập tin 19
2.2.2 Hệ thống quản lý file mã nguồn mở trên Android 21
2.2.3 Một số ứng dụng bảo vệ dữ liệu phổ biến trên thị trường 21
Chương 3 Giải pháp mã hoá file Android bằng đặc trưng sinh trắc gương mặt sử dụng mạng nơron nhân tạo và phác thảo bảo mật Secure Sketch - Một nghiên cứu của nhóm D-STAR lab - Đại học Bách Khoa TpHCM 23
3.1 Rút trích đặc trưng sinh trắc gương mặt 23
3.1.1 Dò tìm gương mặt 23
3.1.2 Tiền xử lý 24
3.1.3 Rút trích vector đặc trưng gương mặt 24
3.2 Giải pháp sinh khóa từ đặc trưng sinh trắc gương mặt 26
3.2.1 Sinh khóa 26
3.2.2 Phục hồi khóa 29
3.2.3 Thực nghiệm 30
3.3 Giải pháp quản lý khóa 31
Chương 4 Phân tích, thiết kế, hiện thực hệ thống 32
4.1 Phân tích yêu cầu ứng dụng 32
4.1.1 Yêu cầu chức năng 32
4.1.2 Yêu cầu phi chức năng 32
4.1.3 Yêu cầu giao diện 32
Trang 64.2 Thiết kế hệ thống 33
4.2.1 Kiến trúc hệ thống 33
4.2.2 Giao diện 35
4.3 Hiện thực hệ thống 38
4.3.1 Tổng quan hệ thống 38
4.3.2 Hiện thực ứng dụng demo 41
4.4 Đánh giá hiện thực trên thiết bị thực 41
4.4.1 Mô tả tập dữ liệu đánh giá - Khuôn mặt 41
4.4.2 Đánh giá trên thiết bị thực 41
4.5 Kết luận và kiến nghị 42
4.5.1 Kết luận về các nội dung nghiên cứu 42
4.5.2 Những đóng góp mới của đề tài 42
4.5.3 Khả năng ứng dụng kết quả nghiên cứu 43
4.5.4 Hướng phát triển trong tương lai 43
Trang 7Mục lục hình
Hình 1.1 Phân loại mã hóa 2
Hình 1.2 Một số đặc điểm sinh trắc học 4
Hình 1.3 Phân loại mô hình xác thực bảo vệ đặc trưng sinh trắc 7
Hình 1.4 Quy trình xác thực sử dụng biến đổi đặc trưng 8
Hình 1.5 Khái niệm phác thảo bảo mật 9
Hình 2.1 Phân khúc các phiên bản hệ điều hành Android 14
Hình 2.2 Kiến trúc hệ điều hành Android theo tầng 15
Hình 2.3 Lõi Linux 16
Hình 2.4 Tổ chức thư viện 17
Hình 2.5 Android Runtime 18
Hình 2.6 Các dịch vụ cung cấp của khung ứng dụng 19
Hình 3.1 Tổng quan các bước xử lý trong giai đoạn đăng ký và xác thực khóa 26
Hình 3.2 Mô hình phác thảo bảo mật dùng cho hệ thống 28
Hình 3.3 Hiệu suất nhận diện khuôn mặt theo giá trị δ 31
Hình 4.1 Kiến trúc hệ thống 33
Hình 4.2 Màn hình trình duyệt tập tin 36
Hình 4.3 Màn hình chụp hình gương mặt 36
Hình 4.4 Màn hình cấu hình ứng dụng 37
Hình 4.5 Thiết lập thời gian khóa phiên 37
Hình 4.6 Xóa dữ liệu đặc trưng sinh trắc 37
Hình 4.7 Màn hình thông báo 37
Trang 8Mục lục bảng
Bảng 1.1 So sánh các đặc điểm sinh trắc học [2] 4 Bảng 2.1 So sánh hệ điều hành Android với iOS và Windows Phone 12
Trang 9Chương 1 Tổng quan về hệ thống mã hóa bằng sinh trắc học có bảo
vệ mẫu đặc trưng sinh trắc
1.1 Giới thiệu tổng quan về mã hóa
1.1.1 Định nghĩa và các chuẩn mã hóa
Mật mã là một khoa học biểu diễn thông tin con người hiểu được dưới dạng mã bí mật mà con người không thể hiểu được một cách trực tiếp Ngày nay, lĩnh vực mật
mã đã trở nên vô cùng quan trọng và không thể thiếu trong mọi ứng dụng cần đến tính tin cậy và an toàn dữ liệu Một số ứng dụng cụ thể của lĩnh vực mật mã như:
● Mã hóa/giải mã dữ liệu nhằm mục đích bảo vệ dữ liệu không bị đánh cắp bởi những người không liên quan (dữ liệu ở đây có thể là cục bộ hay được truyền thông qua một kênh truyền không tin cậy)
● Chứng thực số nhằm đảm bảo thông tin từ một người, tổ chức như đã được khẳng định bởi chứng thực, ứng dụng này nhằm bảo vệ thông tin khỏi bị thay đổi một cách bất hợp pháp
● Chống thoái thác, một cơ chế nhằm chứng minh rằng một người đã thực hiện một hành động nào đó trong quá khứ
Có nhiều cách để phân loại các giải thuật mã hóa Tuy nhiên sự phân loại dựa vào số lượng khóa tham gia trong quá trình mã hóa/giải mã và phương thức hoạt động là phổ biến nhất Theo cách phân loại này, có 3 loại như sau:
● Mã hóa khóa bí mật: Hay còn gọi là mã hóa khóa đối xứng Trong đó, việc mã hóa và giải mã chỉ sử dụng chung một khóa Một cách tổng quan, mã hóa loại này có ưu điểm là tốc độ thực thi cao rất nhiều lần so với mã hóa khóa công khai, tính bảo mật có thể yếu cho đến rất mạnh tùy thuộc vào từng giải thuật
cụ thể cũng như chiều dài khóa sử dụng Do đó mà những giải thuật thuộc phân loại này được sử dụng để bảo vệ dữ liệu có kích thước lớn khỏi những người không liên quan
● Mã hóa khóa công khai: Còn gọi là mã hóa khóa bất đối xứng Việc mã hóa
sử dụng khóa K và giải mã sử dụng khóa K’ hoặc vai trò có thể hoán đổi lại Trong đó K và K’ là một cặp khóa tương ứng với nhau Khóa K chỉ có một khóa K’ tương ứng với nó và ngược lại Trong các ứng dụng mã khóa công khai được sử dụng thì một khóa sẽ dùng làm khóa công cộng và được phổ biến
Trang 10cho bên ngoài biết Và khóa tương ứng còn lại sẽ được giữ bí mật Một cách tổng quát thì tốc độ thực thi của những giải thuật mã hóa loại này chậm hơn rất nhiều so với những giải thuật mã hóa khóa bí mật Tuy nhiên tính bảo mật của nó thì hơn hẳn so với những giải thuật mã hóa bí mật Vì lý do đó mà những giải thuật loại này chỉ dùng để mã hóa những dữ liệu có kích thước nhỏ nhưng đặc biệt quan trọng và cần tính bảo mật cao như: khóa, chuỗi số, mật khẩu v.v Cũng vì thế mà có thể thấy mã hóa khóa công khai hiện diện trong những ứng dụng như: các chuẩn chứng thực số, các giao thức trao đổi khóa
● Hàm băm: là một hàm mà nó nhận vào một chuỗi có độ dài bất kì và sinh ra một chuỗi kết quả có độ dài cố định (thường có chiều dài ngắn hơn rất nhiều so với chuỗi gốc) và từ dạng này không thể được biến đổi ngược về dạng thông tin ban đầu Vì đặc điểm này mà nó còn được gọi là hàm một chiều Nhìn chung, hàm băm được sử dụng cho mục đích đảm bảo toàn vẹn dữ liệu Một số ứng dụng như: Chứng thực số, xác thực, trao đổi khóa
Hình 1.1 Phân loại mã hóa
1.2 Sinh trắc học
1.2.1 Định nghĩa
Sinh trắc học là quá trình tự động nhận dạng mỗi cá thể con người dựa trên các đặc điểm về sinh lý hay hành vi riêng của họ Việc nhận dạng dựa trên sinh trắc học không phải là một ngành khoa học chính xác Kết quả của việc nhận dạng được dựa vào tỷ
lệ điểm giống nhau giữa đầu vào và mẫu được lưu trong cơ sở dữ liệu (CSDL) Một
Trang 11hệ thống sử dụng mã hóa sinh trắc học sẽ định nghĩa một ngưỡng Nếu tỷ lệ giống nhau giữa đầu vào và mẫu lớn hơn hoặc bằng ngưỡng thì người dùng đã được nhận dạng thành công, còn nếu nếu tỷ lệ giống nhau giữa đầu vào và mẫu thấp hơn ngưỡng thì việc nhận dạng không thành công
Hệ thống mã hóa dựa trên sinh trắc học có 2 loại tỷ lệ sai:
● Tỷ lệ chấp nhận sai (False Accept Rate, FAR): chấp nhận sai là khi một người
dùng giả mạo nhưng được hệ thống nhận dạng là đúng
● Tỷ lệ từ chối sai (False Reject Rate, FRR): từ chối sai là khi một người dùng
đúng nhưng được hệ thống nhận dạng là giả mạo và từ chối truy cập/giao dịch Nếu ngưỡng cân bằng giữa FAR và FRR càng cao thì FAR sẽ giảm (tăng tính bảo mật), FRR sẽ tăng (giảm tính tiện dụng) và ngược lại
Sử dụng sinh trắc học trong phương pháp nhận dạng người dùng và mã hóa dữ liệu
là một giải pháp rất hứa hẹn đem lại sự tiện lợi so với các phương pháp truyền thống khác Sự tiện lợi và hiệu quả của việc sử dụng sinh trắc học được thể hiện qua các đặc điểm dưới đây của sinh trắc học con người: Một đặc điểm sinh học có thể dùng trong việc mã hóa hay xác thực khi đáp ứng 7 yếu tố sau [1]:
● Phố biến: Mọi người đều sở hữu đặc tính này Điều này khiến phương pháp sinh trắc học có thể được áp dụng đối với tất cả mọi người
● Duy nhất: Không có 2 người khác nhau có cùng chung đặc tính này Hai người tuy có giống nhau như sinh đôi thì vẫn khác nhau ở một số đặc điểm như dấu vân tay Việc sử dụng sinh trắc học giúp hệ thống có thể phát hiện ra các sai biệt này
● Không thay đổi theo thời gian: Tính chất không thay đổi theo thời gian hoặc thay đổi không đáng kể
● Tính toán được: Đặc tính sinh học có thể được số hóa và so sánh giữa các cá nhân
● Hiệu quả: Đặc tính phải so sánh được trong thời gian và nguồn tài nguyên giới hạn
● Sự chấp nhận: Mọi người chấp nhận phương pháp xác thực của hệ thống
● Không thể gian lận: Đặc điểm sinh học phải không thể/khó làm giả
1.2.2 Phân loại các đặc điểm sinh trắc học
Các đặc điểm sinh học được phân loại vào các nhóm như sau:
Trang 12● Đặc điểm sinh lý: vân tay, mống mắt, võng mạc, khuôn mặt, hình học bàn tay, DNA, biểu đồ nhiệt trên khuôn mặt, hình học ngón tay, hình dạng lỗ tai, mùi,
và tĩnh mạch tay,
● Đặc điểm hành vi: giọng nói, cách gõ phím, chữ ký, dáng đi
Hình 1.2 minh họa cụ thể hơn một số đặc điểm sinh trắc học và Bảng 1.1 So sánh các đặc điểm sinh trắc học [2] cung cấp thông tin so sánh một số đặc diểm sinh trắc học theo 7 yếu tố bên trên
Bất biến
Khả năng thu thập
Hiệu quả
Sự chấp nhận
Không thể gian lận
Gương mặt Cao Thấp Trung
Vân tay Trung
bình Cao Cao
Trung bình Cao
Trung bình Cao
Hình bàn tay Trung
bình
Trung bình
Trung bình Cao
Trung bình
Trung bình
Trung bìnhThói quen
gõ phím Thấp Thấp Thấp Trung
bình Thấp Trung
bình
Trung bình
Vein bàn tay Trung
bình
Trung bình
Trung bình
Trung bình
Trung bình
Trung bình Cao
Mống mắt Cao Cao Cao Trung
bình Cao Thấp Trung
bìnhScan vọng
Trung
Trang 13Chữ ký Thấp Thấp Thấp Cao Thấp Cao Thấp
Giọng nói Trung
bình Thấp Thấp Trung
bình Thấp Cao ThấpLược đồ
nhiệt mặt Cao Cao Thấp Cao
Trung bình Cao Cao
Mùi thơm Cao Cao Cao Thấp Thấp Trung
Trung bình
Trung bình Cao
Trung bình
Để giúp hiểu rõ hơn về sinh trắc học, một vài đặc điểm sinh trắc học thông dụng như sau:
● Dấu vân tay:
Con người đã sử dụng dấu vân tay cho quá trình pháp y qua nhiều thập kỷ Sự chính xác của hệ thống sinh trắc dùng dấu vân tay tương đối cao Dấu vân tay là một mô hình của núi và thung lũng trên bề mặt ngón tay, được hình thành trong suốt 7 tháng đầu của quá trình phát triển bào thai Dấu vân tay tương đối phân biệt, kể cả những cặp sinh đôi
● Bàn tay:
Đề cập tới hình dạng bàn tay, kích thước lòng bàn tay, chiều dài và chiều cao của các ngón tay Ưu điểm của phương pháp này là tương đối đơn giản và dễ sử dụng Tuy nhiên, vì sự khác nhau không rõ ràng hình dạng bàn tay trong phạm vi ứng dụng lớn,
Trang 14nên những hệ thống dùng phương thức bàn tay thường dùng để xác minh hơn là nhận dạng Ngoài ra, vì thiết bị lấy dữ liệu phải có kích thước tối thiểu là kích thước bàn tay, quá lớn so với các thiết bị như laptop
● Chữ ký:
Chữ ký con người thay đổi theo thời gian Chữ ký là thuộc tính hành vi phụ thuộc vào trạng thái cảm xúc, sức khỏe của người ký Khả năng bị giả mạo tương đối cao, tuy nhiên nó được chấp nhận để xác thực trong một thời gian dài
● Dáng đi:
Dáng đi đề cập đến cách thức con người di chuyển, và cũng được sử dụng để nhận dạng Hệ thống nhận dạng dáng đi dựa trên quá trình xử lý ảnh để trích xuất hình bóng người dùng và các thuộc tính không-thời gian liên quan Dáng đi chịu tác động bởi nhiều yếu tố như sư chọn lựa quần áo, bề mặt di chuyển, quần áo,
1.3 Mô hình bảo vệ mẫu dữ liệu sinh trắc
Khác với các hệ thống mã hóa dữ liệu truyền thống dùng password hoặc token, khi
mà các password hay token bị mất có thể được thu hồi và sinh mới một cách dễ dàng,
Trang 15thì đặc trưng sinh trắc học là yếu tố gắn liền với từng cá nhân và một khi đã mất đi thì khó có thể khôi phục lại Do đó, một trong những vấn đề cốt lõi nhất của một hệ thống mã hóa sinh trắc là làm thế nào để bảo vệ được các mẫu sinh trắc này mà vẫn không ảnh hướng đến hiệu quả của hệ thống Từ đó, có khá nhiều nghiên cứu liên quan để xây dựng mô hình bảo vệ mẫu đặc trưng sinh trắc
Mô hình bảo vệ mẫu sinh trắc có thể chia thành 2 loại [12]: biến đổi đặc trưng và hệ thống mã hoá sinh trắc như hình 1.3 dưới:
Hình 1.3 Phân loại mô hình xác thực bảo vệ đặc trưng sinh trắc
1.3.1 Biến đổi đặc trưng
Một trong những giải pháp đầu tiên để bảo vệ tính riêng tư trong xác thực bằng đặc trưng sinh trắc là sử dụng phép biến đổi Mẫu sinh trắc sẽ được áp dụng một hàm biến đổi F và ta chỉ lưu lại mẫu đã được biến đổi thay vì mẫu ban đầu Cho dù vì một lý do nào đó, mẫu sinh trắc trong CSDL bị kẻ tấn công chiếm được thì họ vẫn không thể có được mẫu sinh trắc ban đầu Khi đó, ta chỉ cần áp dụng một hàm biến đổi khác để có một mẫu sinh trắc khác là được Một ưu điểm khác của cách tiếp cận này là có thể sử dụng cách rút trích đặc trưng sinh trắc cùng giải thuật so trùng có sẵn và có thể tương thích với hệ thống cũ
Trang 16Hình 1.4 Quy trình xác thực sử dụng biến đổi đặc trưng
1.3.2 Hệ thống mã hoá sinh trắc
Cách tiếp cận hệ thống mã hóa sinh trắc kết hợp đặc trưng sinh trắc và mã hóa cho mục đích bảo vệ khóa mã hóa bằng cách dùng đặc trưng sinh trắc mà được
gọi là Key Binding (Trộn khóa mã hóa với mẫu đặc trưng sinh trắc lại với nhau)
hoặc sinh trực tiếp một khóa mã hóa từ mẫu đặc trưng sinh trắc, cách này được
gọi là Key Generation
Với cách tiếp cận BC, một vài thông tin công cộng về mẫu sinh trắc được lưu lại cho mục đích phục hồi khóa từ đặc trưng sinh trắc trong giai đoạn xác thực
Thông tin này được gọi là dữ liệu trợ giúp (helper data), dữ liệu này phải không
được rò rỉ bất kỳ thông tin quan trọng về mẫu sinh trắc gốc hay khóa
1.3.2.1 Key Binding
Cách tiếp cận Key Binding có ưu điểm là tính độc lập giữa khóa và đặc trưng
sinh trắc vì thế mà khóa được sinh mới một cách dễ dàng, ngẫu nhiên và tính hỗn độn cao Nhưng một cách tổng quát, nhược điểm của nó là tính đa dạng, tính có thể hủy bỏ và bảo vệ mẫu không được đảm bảo một khi khóa bị lộ Để
khắc phục những hạn chế này, cách tiếp cận Key Binding cần kết hợp với những cách tiếp cận khác như Salting là một đại diện, các tác giả sử dụng một hàm
biến đổi ngẫu nhiên sử dụng mật khẩu người dùng
1.3.2.2 Key Generation
Với hướng tiếp cận Key Generation, khóa được sinh trực tiếp từ mẫu đặc trưng sinh trắc, vì vậy đây là một lựa chọn tốt cho các ứng dụng mã hóa với yêu cầu đảm bảo tính chất bảo vệ mẫu sinh trắc Tuy nhiên, cách tiếp cận này vướng phải vấn đề đối nghịch giữa tính ổn định của khóa và độ mạnh của khóa (tính
Trang 17hỗn độn của khóa – key entropy) Công trình đặc trưng cho hướng tiếp cận này,
trong đó giới thiệu khái niệm phác thảo bảo mật (Secure Sketch) và trích rút
mờ (Fuzzy Extractor) Phác thảo bảo mật bao gồm hai thành phần là: sinh phác thảo (SS) và phục hồi (Rec) Cho trước một mẫu sinh trắc bảo mật T, SS sinh thông tin công cộng P dùng cho mục đích phục hồi T Với một mẫu sinh trắc xác thực T’ đủ tương tự T, thành phần phục hồi Rec có thể phục hồi chính xác
T với trợ giúp của P
Hình 1.5 Khái niệm phác thảo bảo mật
Trang 18Chương 2 Tổng quan về Android
2.1 Tìm hiểu về lập trình và mô hình phát triển ứng dụng trên Android
Android là một hệ điều hành dựa trên nền tảng Linux kernel và các phần mềm
mã nguồn mở được thiết kế dành cho thiết bị di động có màn hình cảm ứng như điện thoại thông minh (smartphone), máy tính bảng (tablet) hay netbook Ban đầu, nền tảng này được phát triển bởi Android Inc, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Hệ điều hành Android ra mắt vào nằm 2007 cùng với tuyên bố thành lập liên minh thiết bị cầm tay mở - một hiệp hội gồm các công ty phần cứng, phần mềm và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho thiết bị di động Chiếc điện thoại đầu tiên chạy hệ điều hành Android được bán vào tháng 10 năm 2008
Google phát hành bộ mã nguồn mở Android theo giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phần phối Android một cách tự do Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng thiết bị Trong sự kiện giới thiệu Nexus 7 và Chromecast diễn ra hồi 7/2013, Google đã cho biết rằng tổng số ứng dụng đang có trên Google Play Store - cửa hàng ứng dụng của Android đã vượt mốc 1 triệu ứng dụng, số lượt tải ứng dụng
từ Google Play Store đạt hơn 50 tỉ lượt, tăng mạnh so với con số 30 tỉ của nằm
2012 Và chỉ tính trong quý 1/2016 số lượt tải đã đạt 11,1 tỉ lượt
Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010, và được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng
từ đầu Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý Những dự án này bổ sung các tính năng cao cấp cho những
Trang 19người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác
Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày Sự thành công của hệ điều hành này cũng khiến
nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là “cuộc chiến điện thoại thông minh” giữa các công ty công nghệ Được xây dựng trên một nền tảng mở cùng với một bộ thư viện đa năng, mạnh
mẽ với nguyên lý mở, Android đã nhanh chóng được cộng đồng lập trình viên
di động hưởng ứng mạnh mẽ Nền tảng Android tích hợp nhiều tính năng nổi bật:
● Là một hệ điều hành phát triển trên nhân Linux, Android đảm bảo sự tương tác với phần cứng, quản lý bộ nhớ, điều khiển các tiến trình tối ưu cho thiết bị di động
● Bộ ứng dụng khung cho phép sử dụng lại và thay thế các thành phần riêng lẻ
● Máy ảo Dalvik được tối ưu cho các thiết bị di động chạy ứng dụng lập trình trên ngôn ngữ Java
● Các thư viện hỗ trợ cho việc phát triển ứng dụng mã nguồn mở bao gồm SQLite, WebKit, OpenGL và trình quản lý đa phương tiện
● Hỗ trợ các chuẩn đa phương tiện phổ biến như gọi thoại trên nền GSM, Bluetooth EDGE, 3G và Wifi
● Hỗ trợ Camera, GPS, la bàn, máy đo tốc độ, …
● Bộ phát triển ứng dụng SDK đầy đủ gồm thiết bị giả lập, công cụ sửa lỗi, tích hợp với Eclipse SDK
Android cung cấp một tập hợp đầy đủ các phần mềm cho thiết bị di động bao gồm: hệ điều hành, các khung ứng dụng và các ứng dụng cơ bản
Trang 202.1.1 Đặc điểm Android
2.1.1.1 Tính mở
Android được xây dựng từ dưới đi lên cho phép người phát triển tạo các ứng dụng di động hấp dẫn với đầy đủ các điểm mạnh của các thiết bị cầm tay hiện có Android hoàn toàn mở, một ứng dụng có thể gọi tới bất kể một chức năng lõi của điện thoại như tạo cuộc gọi, gửi tin nhắn hay sử dụng máy ảnh, cho phép người phát triển có nhiều ý tưởng phong phú hơn, liên kết các tính năng cho người dùng
Android xây dựng trên nhân Linux mở, thêm nữa, nó sử dụng một máy ảo mà đã được tối ưu hóa bộ nhớ và phần cứng với môi trường di động Android là một mã nguồn mở, nó có thể được mở rộng để kết hợp tự do giữa các công nghệ trôi nổi Nền tảng này sẽ tiếp tục được phát triển để tạo ra các ứng dụng di động hoàn hảo
2.1.1.2 Tính ngang hàng của ứng dụng
Với Android, không có sự khác nhau giữa các ứng dụng điện thoại cơ bản với ứng dụng của bên thứ ba (third-party) Chúng được xây dựng để cho phép truy cập như nhau tới một loạt các ứng dụng và dịch vụ của điện thoại Với các thiết bị được xây dựng trên nền tảng Android, người dùng có thể được đáp ứng đầy đủ các nhu cầu mà
họ thích Chúng ta có thể đổi màn hình nền, kiểu gọi điện thoại, hay bất kể ứng dụng nào Thậm chí, ta còn có thể hướng dẫn thiết bị chỉ xem những hình ảnh mình thích
2.1.1.3 Dễ xây dựng ứng dụng
Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ và các công cụ để viết các ứng dụng phức tạp Ví dụ, Android có thể cho phép người phát triển biết được vị trí của thiết bị thông qua công cụ định vị GPS và cho phép các thiết bị giao tiếp với nhau để có thể tạo nên mạng xã hội chia sẻ ngang hàng rộng khắp
Thêm nữa, Android bao gồm một bộ công cụ đầy đủ giúp cho việc phát triển trở nên
dễ dàng
2.1.2 So sánh với các hệ điều hành khác
Bảng 2.1 So sánh hệ điều hành Android với iOS và Windows Phone
Android
Google Android là nền tảng mở, cho phép người dùng có thể tùy biến nền tảng theo ý thích
Hệ điều hành phân mảnh, không thống nhất trên các thiết bị, giới
Trang 21Có Liên minh thiết bị cầm tay mở hậu thuẩn, Google Androi đang là một đối thủ mạnh trên thị trường thiết bị di động thông minh
Bộ công cụ phát triển phần mềm SDK đầy đủ, hỗ trợ đa nền (Linux, Windows hay Mac OS), mã nguồn
mở và bộ thư viện ngày càng hoàn thiện hỗ trợ tối đa cho lập trình
hạn về độ ‘mở’ và nhiều lỗ hổng bảo mật
Bộ cảm nhận gia tốc: Những phản ứng nhanh chóng của bộ cảm nhận gia tốc thay đổi độ phân giải màn hình từ dọc sang ngang hoặc ngược lại một cách tự động, nhanh chóng Điều này giúp người dùng thoải mái hơn trong việc sử dụng
Việc lập trình ứng dụng cho hệ điều hành iOS phải thực hiện trên hệ điều hành Mac, do đó không phải lập trình viên nào cũng có thể lập trình ứng dụng cho iPhone
Hơn thể, việc đưa ứng dụng ra thiết bị thật bắt buộc người lập trình phải tốn một khoản phí nhất định, điều này giảm mạnh tính cạnh tranh trong cộng đồng lập trình ứng dụng với các đối tượng khác
Window
Phone
Có thư viện API khá giống với API trên Win32, các công cụ hỗ trợ lập trình đầy đủ với Visual Studio, điều này làm cho những người phát triển trên Win32 không mất công tìm hiểu lại các API và các công cụ lập trình
Sự có mặt của iPhone và Android trở thành trở ngại lớn cho Windows Phone Hai nền tảng này đang hoàn thiện và được người dùng rất ưa chuộng
Trang 222.1.3 Phân khúc các phiên bản Android
Phiên bản mới nhất của Android cho tới tháng 11 năm 2013 là Kitkat 4.4 Tuy nhiên,
phiên bản Android Jelly Bean hiện đang là phiên bản được nhiều người sử dụng và
ổn định nhất Đến năm 2017, Android đã nâng cấp lên phiên bản 7.0 với nhiều tính
năng cập nhật như hình 2.1 dưới:
Hình 2.1 Phân khúc các phiên bản hệ điều hành Android
Trang 232.1.4 Kiến trúc và các thành phần
Hình 2.2 Kiến trúc hệ điều hành Android theo tầng
Kiến trúc Android như hình 2.2 bao gồm bốn thành phần sau:
● Hệ điều hành (Lõi Linux)
● Thư viện và các giao diện lập trình ứng dụng
Tuy được phát triển dựa vào nhân Linux nhưng thực ra nhân Linux trong thiết bị đã được nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị di động bị hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cầu kết nối mạng không dây, như hình 2.3 dưới đây:
Trang 24Hình 2.3 Lõi Linux
Nhân Linux gồm:
● Display Driver: Điều khiển việc hiển thị lên màn hình cũng như thu nhận những điều khiển của người dùng lên màn hình hiển thị (di chuyển, cảm ứng…)
● Camera Driver: Điều khiển hoạt động của Camera, nhận luồng dữ liệu từ Camera về
● Bluetooth Driver: Điều khiển thiết bị phát và thu sóng Bluetooth
● USB Driver: Điều khiển bàn phím
● Wifi Driver: Chịu trách nhiệm về việc thu phát sóng wifi
● Audio Driver: Điều khiển các bộ thu, phát âm thanh, giải mã các tín hiệu dạng audio thành tín hiệu số và ngược lại
● Power Management: Giám sát việc tiêu thụ năng lượng
● M-system Driver: Quản lý việc đọc ghi dữ liệu, thông tin lên các thiết bị nhớ như thẻ SD, flash
● Binder IPC Driver: Chịu trách nhiệm về việc kết nối và liên lạc với mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông được thực hiện
2.1.4.2 Thư viện (Library)
Android cung cấp một số các API hỗ trợ cho việc phát triển ứng dụng (như hình 2.4
ở dưới) Một số các API cơ bản được cung cấp bởi tất cả các thiết bị Android:
● android.util: Gói tiện ích cơ bản bao gồm nhiều lớp mức thấp như là các lớp quản lý (List, Stack…), lớp xử lý chuỗi, lớp xử lý XML
● android.graphics: Cung cấp các lớp đồ họa mức thấp thực hiện các chức năng
đồ họa, màu, vẽ cơ bản
● android.database: Cung cấp các lớp mức thấp nhất bắt buộc cho việc điều khiển cursor khi làm việc với các cơ sở dữ liệu
Trang 25● android.content: Các giao tiếp lập trình nội dung được dùng để quản lý truy cập dữ liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với tài nguyên, Content Provider, các gói
● android.view: View là lớp giao diện người dùng cơ bản nhất Tất cả giao diện được người dùng tạo ra đều phải sử dụng một tập các View cung cấp cho các thành phần tương tác người dùng
● android.widget: Xây dựng dựa trên gói View Những lớp widget là những thành phần giao diện được tạo sẵn để sử dụng tạo giao diện cho người dùng Các widget này bào gồm danh sách – List, nút bấm – Button, dòng chữ - TextView, ô nhập chữ - EditText, các kiểu trình bày – Layout
● com.google.android.maps: Bộ API mức cao cung cấp truy cập đến điều khiển bản đồ có sẵn trong Android từ ứng dụng được xây dựng, bao gồm các lớp MapView cũng như Overlay và MapController để tương tác với bản đồ bên trong ứng dụng
● android.provider: Để tạo thuận lợi cho người phát triển truy cập đến các Content Provider tiêu chuẩn (như là dữ liệu danh bạ), gói cung cấp – Provider bao gồm các lớp cho phép truy cập đến cơ sở dữ liệu chuẩn trong tất cả các bản phần phối Android
● android.telephony: Các API điện đàm cung cấp khả năng tương tác trực tiếp với tầng điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi các cuộc gọi, tình trạng các cuộc gọi và tin nhắn SMS
● android.webkit: Gói WebKit cung cấp các API để làm việc với các nội dụng Web-based bao gồm một lớp WebView để tạo ra giao diện web, nhúng trong ứng dụng và một trình quản lý cookie
Hình 2.4 Tổ chức thư viện
Trang 26Cùng với các API của Android, bộ thư viện còn bao gồm một số tập thư viện C/C ++ như:
● OpenGL: Thư viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn OpenGLES 1.0 API
● FreeType: Hỗ trợ xử lý Bitmap và font vector
● GGL: Thư viện cơ bản, dùng để cung cấp các máy đồ họa 2D
● Libe: Thư viện C chuẩn, được tối ưu cho các thiết bị Linux-based
● SQLite Engine: Cơ sở dữ liệu quan hệ gọn nhẹ, dùng để lưu trữ dữ liệu của ứng dụng
● SSL: Hỗ trợ sử dụng giao thức mã hóa Secure Sockets Layer trong bảo mật truyền thông Internet
Ngoài các thư viện chuẩn Android, để đáp ứng tiêu chí cho phù hợp với nhiều thiết
bị khác nhau, Android còn có các API phụ thuộc như android.location, android.media, android.opengl, android.hardware, android.bluetooth, android.net.wifi
2.1.4.3 Android Runtime
Hình 2.5 Android Runtime
Android Runtime (như hình 2.5) chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể hoạt động Android Runtime có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường Thứ nhất là các thư viện lõi – Core Library, chứa các lớp như Java IO, Collections, File Access Thứ hai là một máy ảo Java – Dalvik Virtual Machine
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều hành Android không được chạy bằng JRE – Java Runtime Environment của Oracle mà chạy bằng máy ảo Dalvik do Google phát triển Máy ảo Dalvik thực thi các tập tin dalvik (dex), khác với Java là chuyển sang dạng bytecode Định dạng này được tối
ưu hóa cho bộ nhớ tối thiểu