Tải bản đầy đủ (.pdf) (91 trang)

Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống bảo vệ ứng dụng cho iphone

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.5 MB, 91 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

.......................................

KƯƠNG ÁNH HOÀNG

PHÁT TRIỂN DỊCH VỤ GỬI NHẬN THÔNG
BÁO TỰ ĐỘNG VÀ XÂY DỰNG HỆ THỐNG
BẢO VỆ ỨNG DỤNG CHO IPHONE

LUẬN VĂN THẠC SĨ KHOA HỌC

NGƯỜI HƯỚNG DẪN : TS. NGUYỄN KIM KHÁNH

HÀ NỘI – 2010


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Lời cảm ơn
Luận văn nghiên cứu phát triển ứng dụng trên nền điện thoại iPhone được hoàn
thành với sự giúp đỡ tận tình của thày giáo hướng dẫn TS. Nguyễn Kim Khánh,
Viện Công nghệ Thông Tin và Truyền Thông, Trường ĐH Bách Khoa Hà Nội.
Tôi cũng xin chân thành càm ơn tập đoàn France Telecom đã tạo điều kiện cho tôi
được sang thực tập và làm viêc trong môi trường hiện đại của tập đoàn, được tiếp
xúc với nhiều công nghệ mới và các chuyên gia giàu kinh nghiệm, đặc biệt là anh
Fehmi Toumi tại Orange Lab Issy les Moulenaux.


Xin chân thành cảm ơn Viện Công nghệ Thông tin và Truyền thông, Viện ĐT Sau
Đại học trường Đại học Bách Khoa Hà Nội đã tạo điều kiện cho tôi thoàn thành
luận văn này.

1


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Lời cam đoan
Họ và tên: Lương Ánh Hoàng
Ngày sinh: 23/07/1985
Ngành học: Xử lý thông tìn và truyền thông, Viện CNTT và TT
Khóa: 2008-2010
Tên luận văn: Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng

hệ thống bảo vệ ứng dụng cho iPhone.
Người hướng dẫn: TS. Nguyễn Kim Khánh.
Tôi – Lương Ánh Hoàng - xin cam đoan mình là tác giả của toàn bộ nội dung luận
văn này, không sao chép toàn văn bất kỳ luận văn, văn bản nào khác. Tôi xin chịu
mọi trách nhiệm nếu có sai sót.
Hà Nội, ngày 30 tháng 10 năm 2010
Người cam đoan

Lương Ánh Hoàng

2



Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Mục lục
Chương 1. Tổng quan ................................................................................................10
1.1

Lý do chọn đề tài .........................................................................................10

1.2

Lịch sử phát triển .........................................................................................11

1.3

Những luận điểm cơ bản và đóng góp mới .................................................13

1.4

Phương pháp nghiên cứu .............................................................................13

Chương 2. Phát triển dịch vụ gửi nhận thông báo tự động cho ứng dụng chạy trên
iPhone ........................................................................................................................15
2.1 Đặt vấn đề .......................................................................................................16
2.2 Sơ lược về hệ điều hành iPhone OS (iOS ) .....................................................18
2.3 Dịch vụ Push Notification ...............................................................................20

2.3.1. Kiến trúc ..................................................................................................21
2.3.2 Tiếp nhận phản hồi từ APNS ...................................................................22
2.3.3 Cơ chế an ninh..........................................................................................22
2.3.4 Quá trình đưa tin ......................................................................................24
2.3.5 Quá trình nhận tin.....................................................................................25
2.4 Tích hợp dịch vụ Push Notification cho hệ thống iPhoneAcademy ...............26
2.4.1 Xây dựng nguồn tin ..................................................................................26
2.4.2 Xây dựng ứng dụng nhận tin trên thiết bị ................................................34
2.5 Kết luận ...........................................................................................................38
Chương 3. Xây dựng hệ thống bảo vệ ứng dụng cho iPhone – iPhone Authorization
Framework ................................................................................................................39
3.1 Quy trình phát triển ứng dụng cho iOS ...........................................................40
3


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

3.2 Giải pháp bảo vệ ứng dụng và dịch vụ ............................................................42
3.2.1 Kiến trúc hệ thống ....................................................................................43
3.2.2 Kịch bản cấp phát chứng thực ..................................................................44
3.3 Xây dựng hệ thống ..........................................................................................45
3.3.1 Xây dựng Certificate Authority ...............................................................46
3.3.2 Cài đặt MySQL và thiết kế cơ sở dữ liệu .................................................51
3.3.3 Cài đặt Apache/PHP .................................................................................55
3.3.4 Phát triển tính năng cấp phát chứng thực bằng PHP................................55
3.3.5 Bảo vệ ứng dụng trên thiết bị ...................................................................62
3.3.6 Bảo vệ dịch vụ khỏi các truy nhập trái phép ............................................75

3.3.7 Xây dựng giao diện quản trị hệ thống ......................................................78
3.4 Kết luận ...........................................................................................................87
Chương 4. Kết luận ...................................................................................................88
4.1 Những kết quả mới ..........................................................................................88
4.2 Đề xuất ............................................................................................................88
Tài liệu tham khảo .................................................................................................90

4


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Danh mục hình
Hình 1. Mô hình Client - Server................................................................................16
Hình 2. Hệ điều hành iOS .........................................................................................19
Hình 3. Các tầng của iOS ..........................................................................................20
Hình 4. Một bản tin Push ..........................................................................................21
Hình 5. Mô hình APNs với một thiết bị ....................................................................21
Hình 6. Mô hình APNs với nhiều nguồn tin và nhiều thiết bị ..................................22
Hình 7. Quá trình thiết lập kết nối giữa thiết bị và APNs .........................................23
Hình 8. Quá trình thiết lập kết nối giữa nguồn tin và APNs .....................................23
Hình 9. Quá trình sinh device token..........................................................................24
Hình 10. Gửi tin đến thiết bị .....................................................................................25
Hình 11. Kiến trúc nguồn tin.....................................................................................27
Hình 12. Bảng devicetokens .....................................................................................28
Hình 13. Định dạng dữ liệu gửi đến APNs ...............................................................29
Hình 14. Bản tin khi hiển thị trên thiết bị .................................................................31

Hình 15. Ứng dụng iPhoneAcademy ........................................................................35
Hình 16. Bản tin Push của iPhoneAcademy .............................................................38
Hình 17. Quy trình phát triển ứng dụng cho cá nhân ................................................41
Hình 18. Quy trình phát triển ứng dụng cho doanh nghiệp ......................................42
Hình 19. Kiến trúc hệ thống bảo vệ ứng dụng ..........................................................43
Hình 20. Kịch bản cấp phát chứng thực cho thiết bị .................................................44
Hình 21. Quy trình sinh chứng thực tại hệ thống ......................................................49
Hình 22. Chứng thực được cấp cho thiết bị ..............................................................50
Hình 23. Giao diện Xcode .........................................................................................63
Hình 24. Vòng đời của một ứng dụng .......................................................................64
Hình 25. Cơ chế kiểm tra trên thiết bị .......................................................................65
Hình 26. Màn hình lựa chọn khi thiết bị chưa có chứng thực hợp lệ .......................74
Hình 27. Màn hình xin cấp phát chứng thực .............................................................74

5


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Hình 28. Màn hình nhập mã an toàn trước khi tải chứng thực về thiết bị ................75
Hình 29. Chuyển đổi sang các giao thức hỗ trợ PKI ................................................75
Hình 30. Các chức năng của giao diện quản trị hệ thống .........................................78
Hình 31. Giao diện trang chủ ....................................................................................81
Hình 32. Giao diện danh sách người dùng ................................................................82
Hình 33. Giao diện thêm mới người dùng ................................................................83
Hình 34 Giao diện sửa/xóa người dùng ....................................................................84
Hình 35. Danh sách ứng dụng ...................................................................................84

Hình 36. Giao diện thêm mới ứng dụng....................................................................85
Hình 37. Giao diện sửa/xóa ứng dụng ......................................................................85
Hình 38. Giao diện thêm thiết bị mới .......................................................................86
Hình 39. Giao diện danh sách thiết bị .......................................................................86
Hình 40. Giao diện cấp phép từ chối.........................................................................87

6


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Danh sách thuật ngữ
Tên thuật ngữ
Apache

Diễn giải
Tên một phần mềm máy chủ HTTP miễn phí và mã
nguồn mở.

APNs

Apple Push Notification service – dịch vụ đẩy thông
báo của Apple.

APNS

Apple Push Notification Server – máy chủ chạy dịch

vụ đẩy thông báo của Apple

App Store

Quầy ứng dụng trực tuyến của Apple

Certificate

Chứng thực số, đây là một tệp tin được mã hóa dưới
dạng X509 bao gồm các thông tin:khóa công khai,
tên chủ thể, thời hạn, địa chỉ URL của trung tâm thu
hồi chứng thực.

CA

Viết tắt của Certificate Authority

Certificate Authority

Cơ quan cấp chứng thực số

Developer Certificate

Chứng thực số dành cho lập trình viên cá nhân của
Apple.

device token

Một chuỗi chữ số hexa duy nhất dùng để phân biệt
các thiết bị trong hệ thống APNs.


Enterprise Certificate

Chứng thực số dành cho doanh nghiệp của Apple.

HTTP

Hyper Text Transfer Protocol – giao thức truyền dữ
liệu siêu văn bản.

iOS

Hệ điều hành dành cho các thiết bị di động của Apple

iOS SDK

iOS Software Development Kit – bộ công cụ phát
triển ứng dụng dành cho hệ điều hành iOS

iPhone

Mẫu điện thoại di động rất nổi tiếng của Apple với
thiết kế tinh tế, cấu hình mạnh và giao diện thân

7


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone


2010

thiện.
iPhoneAcademy

Hệ thống cộng tác dành cho các lập trình viên iPhone
tại Orange Labs.

iPhone Authorization

Hệ thống bảo vệ ứng dụng chạy trên nền iPhone

Framework
iTune

Ưng dụng đa năng của Apple bao gồm : nghe nhạc,
xem phim, tải ứng dụng, đồng bộ hóa với các thiết
bị…

Mac OS X

Hệ điều hành phiên bản thứ 10 của Apple.

MySQL

Một hệ quản trị CSDL mã nguồn mở rất thông dụng.

Object-C

Ngôn ngữ lập trình hướng đối tượng do Apple phát

triển.

OpenSSL

Công cụ mã nguồn mở xử lý các vấn đề liên quan
đến hạ tầng khóa công khai.

PHP

Ngôn ngữ thông dịch được sử dụng rộng rãi trên các
dịch vụ web.

PKI

Public Key Infrastructure – Hạ tầng khóa công khai.

Private Key

Khóa riêng, được giữ bí mật trong các giao dịch PKI.

Provider

Nguồn tin, chịu trách nhiệm kết nối đến APNS và gửi
bản tin Push

Push Notification

Thông báo đẩy, đây là một bản tin được đẩy trực tiếp
và hiển thị trên thiết bị (giống như SMS nhưng hoạt
động trên nền Internet).


Snow Leopard

Hệ điều hành mới nhất trong họ Mac OS X của
Apple.

SSL

Secure Socket Layer – giao thức ở tầng ứng dụng sử
dụng PKI.

UDID

Unique Device Identifier – Định danh thiết bị, một

8


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

xâu gồm 40 chữ số hexa dùng để phân biệt tất cả các
thiết bị của Apple.

9


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống

bảo vệ ứng dụng cho iPhone

2010

Chương 1. Tổng quan
Trong những năm gần đây, một xu thế điện toán mới nổi đang thu hút được rất
nhiều sự chú ý của các tập đoàn, các tổ chức công ty lớn đó là điện toán di động.
Các hãng sản xuất điện thoại liên tiếp cho ra mắt các mẫu điện thoại mạnh mẽ nhiều
tính năng, thiết kế mỏng và đẹp. Song song với đó là các hệ điều hành cho thiết bị
di động cũng liên tiếp được giới thiệu với rất nhiều tính năng hấp dẫn và thu hút
người tiêu dùng. Một trong số đó là hệ điều hành iOS của Apple.
Apple là một trong những hãng công nghệ lớn nhất thế giới. Sự thành công đó có
đóng góp một phần không nhỏ của sản phẩm chiến lược: chiếc điện thoại iPhone.
Ngay từ khi mới xuất hiện, nó đã thay đổi cả cách nhìn về chiếc điện thoại. iPhone
thực sự là một thiết bị di động thông minh, thay thế được nhiều công việc trước kia
phải thực hiện trên máy tính. Trải qua các phiên bản khác nhau, chiếc điện thoại
iPhone càng ngày càng hoàn thiện và hiện nay, iPhone 4 là chiếc điện thoại thông
minh có doanh số được bán cao nhất trong lịch sử. Tính đên tháng 9/2010, tổng số
điện thoại iPhone được phân phối trên toàn thế giới là 60 triệu chiếc.
1.1 Lý do chọn đề tài
Có hai lý do chính tôi lựa chọn đề tài nghiên cứu phát triển ứng dụng cho iPhone.
Thứ nhất là từ sở thích cá nhân với hệ điều hành iPhone OS, định hướng của thày
giáo hướng dẫn, cùng với kinh nghiệm đã phát triển ứng dụng cho iPhone OS trước
đó. Thứ hai là do tài trợ của tập đoàn France Telecom cho việc thực tập tốt nghiệp
luận văn, đề tài thực tập của tôi tại tập đoàn cũng có định hướng về phát triển ứng
dụng cho iPhone.

10



Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Do vậy đề tài tôi chọn là: Phát triển dịch vụ gửi nhận thông báo tự động và xây
dựng hệ thống bảo vệ ứng dụng cho iPhone.
Đề tài gồm hai phần lớn:
 Phát triển tính năng gửi thông báo tự động dựa trên dịch vụ Apple Push
Notification

(đẩy

thông

báo)

cho

ứng

dụng

iPhoneAcademy.

iPhoneAcademy là một ứng dụng cộng tác được sử dụng trong tập đoàn
France Telecom để trao đổi thông tin giữa các nhà phát triển iPhone trong
cùng tập đoàn với nhau. Về cơ bản nó hoạt động giống như một diễn đàn,
bao gồm các chủ đề, các bản tin, mọi người có thể bình luận và trả lời….Ứng
dụng chạy trên điện thoại iPhone. Tuy nhiên điểm hạn chế của ứng dụng là

người dùng phải kiểm tra bản tin mới một cách thủ công giống như kiểm tra
thư điện tử. Nhiệm vụ của phần này là sử dụng công nghệ đẩy thông báo
(Push Notification) để chủ động gửi thông báo đến thiết bị mỗi khi có bản tin
mới, và thiết bị sẽ thông báo cho người dùng như thể họ nhận được tin nhắn
SMS qua mạng điện thoại di động.
 Xây dựng hệ thống bảo vệ ứng dụng chạy trên iPhone và dịch vụ cho tập
đoàn Orange (France Telecom). Tập đoàn France Telecom có khá nhiều ứng
dụng và dịch vụ chạy trên nền điện thoại (dự báo thời tiết, tin tức, truyền
hình, thư điện tử, internet…). Nhiệm vụ của phần này là thiết kế một hệ
thống kiểm soát thiết bị để: Chỉ những thiết bị được cho phép mới có quyền
chạy ứng dụng, chỉ những thiết bị được cho phép mới có quyền sử dụng dịch
vụ nào đó của Orange. Việc bảo vệ được thực hiện dựa trên hạ tầng khóa
công khai (PKI).
1.2 Lịch sử phát triển
iPhone là mẫu điện thoại di động mới được Apple chính thức giới thiệu năm 2007
và ngay lập tức giành được thành công vang dội với doanh số hàng triệu bản bán ra
chỉ trong quý đầu tiên phát hành. Phiên bản đầu tiên của iPhone hoạt động trên
mạng 2G và chạy hệ điều hành iPhone OS 1.0. Trải qua ba năm, Apple đã cho ra
11


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

mắt 4 phiên bản iPhone: iPhone, iPhone 3G, iPhone 3GS, iPhone 4. Cùng với đó là
4 phiên bản chính hệ điều hành: iPhone OS 1.0, iPhone OS 2.0, iPhone OS 3.0 và
iOS 4, cùng với đó là các bản nâng cấp nhỏ cho mỗi phiên bản chính của hệ điều
hành. Cứ định kì mỗi năm Apple lại cho ra mắt một phiên bản mới của iPhone với

rất nhiều cải tiến và được giới công nghệ mong đợi. Kể từ phiên bản hệ điều hành
thứ hai, Apple bắt đầu mở cửa hệ điều hành, và cung cấp toàn bộ công cụ để phát
triển ứng dụng cho iPhone: iPhone SDK. Apple cũng xây dựng quầy ứng dụng trực
tuyến (App Store), nơi người sử dụng có thể mua các ứng dụng từ bên thứ ba. Môi
trường phát triển ứng dụng Xcode đi kèm với iPhone SDK rất thân thiện và trực
quan, không mất nhiều thời gian để có thể viết được chương trình đầu tiên chạy trên
iPhone. Các thư viện mạnh hỗ trợ lập trình viên khá nhiều. Đó là những điểm chính
thu hút giới lập trình viên tập trung phát triển ứng dụng cho iPhone, cho đến thời
điểm viết luận văn, trong quầy ứng dụng trực tuyến của Apple đã có khoảng 250000
ứng dụng, một con số rất đáng nể. Việc phát triển thêm những tính năng mới cho
ứng dụng sẵn có, đồng thời tăng cường khả năng bảo vệ cho ứng dụng là hướng
nghiên cứu trong nhóm phát triển iPhone tại Orange Labs tại Paris.
Luận văn sẽ trình bày hai nội dung nghiên cứu chính:
 Tích hợp dịch vụ Apple Push Notification vào hệ thống iPhoneAcademy của
France Telecom.
o Nghiên cứu và cài đặt cơ chế nhận và xử lý bản tin Push trên ứng
dụng iPhoneAcademy client.
o Nghiên cứu và xây dựng provider, kết nối đến máy chủ APN của
Apple và gửi bản tin.
 Thiết kế giải pháp và xây dựng hệ thống bảo vệ ứng dụng và dịch vụ trên nền
iPhone cho France Telecom.
o Nghiên cứu và xây dựng hệ thống bảo vệ ứng dụng trên thiết bị.
o Nghiên cứu cơ chế bảo vệ dịch vụ trên máy chủ phục vụ.

12


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone


2010

Đối tượng nghiên cứu của luận văn là các ứng dụng chạy trên thiết bị iPhone, ứng
dụng dịch vụ chạy trên nền Apache/PHP.
Phạm vi nghiên cứu liên quan đến công nghệ Apple Push Notification, công nghệ
lập trình web Apache/PHP, hạ tầng mã hóa công khai PKI.
1.3 Những luận điểm cơ bản và đóng góp mới
Những luận điểm cơ bản sẽ được trình bày trong luận văn:
 Kiến trúc hệ điều hành iPhone OS.
 Kiến trúc dịch vụ Apple Push Notification.
Những đóng góp mới:
 Tích hợp Appe Push Notification vào hệ thống iPhoneAcademy.
 Thiết kế hệ thống bảo vệ ứng dụng và dịch vụ trên nền PKI.
1.4 Phương pháp nghiên cứu
Do iPhone OS là hệ điều hành khá mới mẻ, công nghệ Apple Push Notification mới
được giới thiệu năm 2008, nên số lượng tài liệu xuất bản không nhiều, chủ yếu được
tham khảo từ tài liệu trong bộ công cụ SDK do Apple cung cấp và trên Internet.
Công cụ nghiên cứu:
 Phần cứng:
o Máy tính iMac.
o Thiết bị iPhone 3G, iPhone 4, iPod Touch 2G.
 Phần mềm
o Hệ điều hành Snow Leopard 10.6.2 của Apple.
o Hệ điều hành iPhone OS 3.0 và iOS 4.
o Bộ công cụ phát triển iPhone SDK 3.2.3 và Xcode 3.
o Phần mềm máy chủ:Apache HTTP Server
o Phần mềm thông dịch: PHP 5.3.2
o Phần mềm quản trị cơ sở dữ liệu: MySQL 5.1.32
13



Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

 Tài liệu
o Tài liệu đi kèm trong iPhone SDK 3.2.3
o Wikipedia.org
o Google.
Cách thức tiếp cận:
Với mỗi một công nghệ mới, cách thức tiếp cận đầu tiên là đọc tài liệu SDK nếu có,
tham khảo các thí dụ được cung cấp và tiến hành xây dựng ứng dụng thử nghiệm.
Khi trình tự các bước cần làm đã được xác định, sẽ tiến hành thiết kế ứng dụng và
cài đặt.

14


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Chương 2. Phát triển dịch vụ gửi nhận thông báo
tự động cho ứng dụng chạy trên iPhone
Chương này sẽ trình bày kiến trúc cơ bản của dịch vụ Push Notification và phương
pháp tích hợp vào một hệ thống cụ thể : iPhone Academy

15



Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

2.1 Đặt vấn đề
Dịch vụ Push đã có lịch sử phát triển trên nền máy tính cá nhân từ khá lâu. Tuy
nhiên việc triển khai trên thiết bị di động thì khá hạn chế do sự phát triển của các
thiết bị di động mới chỉ bùng nổ trong những năm gần đây. Về cơ bản hầu hết dịch
vụ trên Internet hoạt động theo mô hình Client – Server. Client là thiết bị cuối nơi
người dùng sử dụng. Client sẽ gửi truy vấn đến Server, Server nhận được sẽ đáp trả
Client bằng một phản hồi tương ứng. Đó là cách ta thường thấy trong dịch vụ
HTTP. Nếu Server muốn chủ động gửi cho Client một thông tin nào đó, nó sẽ
không có cách nào khác là đợi Client gửi truy vấn đến rồi mới gửi thông tin.
Phương pháp này còn gọi là Pull.

Hình 1. Mô hình Client - Server

Dịch vụ Push sẽ giải quyết hạn chế này. Push là dịch vụ cho phép máy chủ phục vụ
chủ động khởi tạo một phiên giao dịch với máy khách. Các ứng dụng trên nền dịch
vụ này khá phong phú: nhắn tin ngắn, hội thoại, thư điện tử…Push có thể thực hiện
theo một vài cách:
 HTTP server push: Khi máy khách gửi yêu cầu đến máy chủ phục vụ
HTTP, máy chủ phục vụ gửi trả phản hồi, nhưng không đóng kết nối lại
ngay. Do vậy khi có sự kiện mới, máy chủ phục vụ có thể gửi lại ngay cho
máy khách thông qua kết nối cũ đang mở.

16



Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

 Long pooling: Phương pháp này tương tự như cách thăm dò thông thường
(Pull). Khi máy khách gửi yêu cầu đến máy chủ phục vụ , nếu không có dữ
liệu gửi trả, thay vì gửi trả một phản hồi rỗng thì máy chủ phục vụ không gửi
gì hết, cũng như không ngắt kết nối. Máy khách sẽ được đặt vào trạng thái
chờ dữ liệu, ngay khi máy chủ phục vụ có dữ liệu, nó sẽ gửi trả máy khách
thông qua kết nối cũ và đóng kết nối. Nhiệm vụ của máy khách là gửi một
truy vấn mới và lại đợi khi có dữ liệu nhận về.
 Duy trì kết nối TCP: Đây là cách Apple sử dụng để đẩy thông báo đến các
thiết bị của mình. Mỗi thiết bị sẽ mở một kết nối TCP duy nhất đến máy chủ
phục vụ và duy trì kết nối đó trong suốt thời gian thiết bị sử dụng. Khi có
thông báo mới, máy chủ phục vụ sẽ gửi trả thiết bị thông qua kết nối đã được
mở. Với dịch vụ Push của Apple, tất cả các ứng dụng và dịch vụ cùng sử
dụng chung một kết nối.
Các ứng dụng sử dụng Push trên nền điện thoại chủ yếu có hai loại: nhắn tin ngắn
và nhận thư điện tử. Các phần mềm nhắn tin ngắn (các mạng xã hội) thường xây
dựng giải pháp push bằng phương án thứ 3. Mỗi ứng dụng sẽ tự mở một kết nối đến
máy chủ tin nhắn của riêng mình và duy trì kết nối đó. Có thể liệt kê một vài dịch
vụ gửi thư điện tử chính trên điện thoại sử dụng Push (Push Email).
 Apple Push Notification Service. Đây là dịch vụ miễn phí cho tất cả các
thiết bị chạy hệ điều hành iPhone OS phiên bản 3.0 trở nên. Dịch vụ này sẽ
được đề cập kỹ hơn trong phần hai của luận văn này.
 IMAP IDLE. IMAP là một giao thức nhận thư điện tử tương tự như POP
nhưng có nhiều tính năng hơn. Tính năng IDLE cho phép máy chủ phục vụ

thư điện tử chủ động gửi thư tới máy khách khi có thư mới. Các hệ điều hành
di động hỗ trợ giao thức này gồm có Google Android, Microsoft Windows
Mobile, Nokia S60 và Palm OS.
 Wireless Mail User Agent và BlackBerry Enterprise Server (BES). Đây
là hệ thống thư điện tử phát triển riêng bởi RIM (Reseach In Motion). BES

17


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

hoạt động kết hợp với hệ thống thư điện tử sẵn có, theo dõi máy chủ phục vụ
thư điện tử, tự động lấy thư mới và đẩy xuống thiết bị cầm tay BlackBerry
qua mạng di động. Người dùng sẽ nhận được thư ngay lập tức mà không cần
phải mở hộp thư đến. BlackBerry đã trở nên rất phổ biến tại thị trường Mỹ và
trên thế giới, đối tượng người dùng chính là các doanh nhân. Sự thành công
của BlackBerry đã dẫn đến cuộc chạy đua phát triển hệ thống thư điện tử
giữa các nhà sản xuất thiết bị di động như Symbian và Windows Mobile. Tại
Việt Nam, dịch vụ Push Email được Viettel triển khai năm 2009.
Có thể nói phần lớn các ứng dụng Push là thư điện tử, do vậy trước khi dịch vụ
Push của Apple ra đời, nội dung của các bản tin push chỉ là thư điện tử. Kể từ hệ
điều hành iPhone OS phiên bản thứ 3. Apple đã chính thức triển khai một hệ thống
Push thông báo, có nghĩa là có thể đẩy bất kỳ thông tin gì đến thiết bị như các bản
tin ngắn, các thông báo cập nhật, thư điện tử….làm đa dạng và phong phú hơn khả
năng của Push.
Mỗi hệ thống Push Notification của Apple gồm bốn thành phần chính:
 Ứng dụng nhận thông báo chạy trên thiết bị chạy hệ điều hành iOS.

 Ứng dụng chạy trên máy chủ cung cấp các bản tin.
 Máy chủ phục vụ Push của Apple làm nhiệm vụ đẩy bản tin đến thiết bị.
 Bản thân thiết bị sẽ nhận bản tin.
Việc phát triển ứng dụng sử dụng dịch vụ Apple Push Notification sẽ bao gồm việc
xây dựng ứng dụng chạy trên máy chủ cung để cung cấp bản tin, và xây dựng ứng
dụng nhận và xử lý bản tin ở phía thiết bị. Vấn đề cần giải quyết là tích hợp được
dịch vụ Push Notification vào hệ thống iPhone Academy của Orable Lab.
2.2 Sơ lược về hệ điều hành iPhone OS (iOS )
iOS là hệ điều hành cho thiết bị di động được Apple phát triển đầu tiên cho điện
thoại iPhone. Sau đó nó được sử dụng cho cả dòng sản phẩm iPod và iPad. Khác
với các hệ điều hành di động khác, iOS chỉ chạy trên phần cứng do Apple thiết kế.
18


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Các ứng dụng cho hệ điều hành được cung cấp bởi bên thứ ba thông qua quầy ứng
dụng trực tuyến của Apple (App Store). Đến thời điểm 1/9/2010, ước tính đã có
khoảng 250000 ứng dụng được phát hành.

Hình 2. Hệ điều hành iOS

Giao diện của iOS là giao diện cảm ứng đa chạm, cho phép người dùng thao tác
trực tiếp thông qua việc chạm vào các biểu tượng trên màn hình. Hệ điều hành sẽ
đoán nhận các thao tác như chạm, trượt, …Các thành phần giao diện gồm có nút
bấm, thanh trượt, thanh cuộn…Phần cứng cảm biến gia tốc, cảm biến trọng trường,
cảm biến hướng giúp hệ điều hành nhận biết một vài thao tác nữa của người dùng

như lắc, xoay thiết bị.
iOS được phát triển trên nền Mac OS X, có chung nhân Darwin và thuộc họ Unix.
Hệ điều hành bao gồm bốn lớp: Cocoa Touch, Media, Core Services, Core OS và
dung lượng chiếm khoảng 500 megabyte.

19


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Hình 3. Các tầng của iOS

Apple cung cấp bộ công cụ iPhone SDK để giúp các nhà lập trình phát triển ứng
dụng cho iOS. Bộ công cụ bao gồm trình biên dịch, trình soạn thảo, bộ gỡ rối, phân
tích hiệu năng ….Phiên bản mới nhất là iPhone SDK 4.1
Việc phát triển ứng dụng cho hệ điều hành sẽ sử dụng các API cung cấp bởi các lớp
này. Đối với các API thuộc lớp Core OS, Core Services, ngôn ngữ lập trình sử
dụng là C/C++. Đối với các API thuộc lớp Media và Cocoa Touch, ngôn ngữ lập
trình sử dụng là Object-C, một ngôn ngữ hướng đối tượng chủ yếu được sử dụng
bởi Apple.
2.3 Dịch vụ Push Notification
Dịch vụ Push Notification (Apple Push Notification Service – APNs) là dịch vụ đẩy
thông báo một cách chủ động đến các thiết bị di động. Các thông báo có thể bao
gồm văn bản hoặc âm thanh hoặc thông tin do người phát triển tự định nghĩa.

20



Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

2.3.1. Kiến trúc

Hình 4. Một bản tin Push

Trước khi có APNs, cách duy nhất để một thiết bị di động (ứng dụng) nhận được
thông báo là thông qua tin nhắn SMS. Dịch vụ APNs hoạt đông trên cơ chế: mỗi
thiết bị duy trì một kết nối TCP đến máy chủ phục vụ của Apple. Khi có thông báo,
máy chủ phục vụ sẽ gửi bản tin thông qua kết nối đó đến thiết bị, và iOS sẽ chuyển
đến ứng dụng thích hợp đã cài đặt trên thiết bị.
Các thành phần của APNs:
 Provider: Nguồn tin, thiết bị (ứng dụng sẽ phát ra bản tin).
 Notification: bản tin cần truyền.
 APNS: các máy chủ dịch vụ của Apple, làm nhiệm vụ trung gian đưa bản tin
 Client Application: ứng dụng chạy trên thiết bị sẽ nhận bản tin.

Hình 5. Mô hình APNs với một thiết bị

Hệ thống sẽ phức tạp hơn với sự tham gia của nhiều ứng dụng, nhiều thiết bị và
nhiều nguồn tin.

21


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống

bảo vệ ứng dụng cho iPhone

2010

Hình 6. Mô hình APNs với nhiều nguồn tin và nhiều thiết bị

2.3.2 Tiếp nhận phản hồi từ APNS
Việc gửi bản tin không phải lúc nào cũng thành công, đôi khi thiết bị đang ngoài
vùng kết nối mạng, hoặc người dùng đã gỡ bỏ ứng dụng dẫn đến không có ứng
dụng nào xử lý bản tin. Hệ thống sẽ lưu lại danh sách các thiết bị đó và trách nhiệm
của người phát triển là thu nhận danh sách và dừng việc gửi tin đến các thiết bị trên.
Các bản tin sẽ được hệ thống APNs lưu trữ và chuyển tiếp đến thiết bị. Nếu thiết bị
mất kết nối mạng, APNs sẽ chỉ lưu trữ bản tin sau cùng với mỗi ứng dụng trên thiết
bị đó.
2.3.3 Cơ chế an ninh
Hệ thống APNs hoạt động dựa trên cơ chế tin cậy lẫn nhau giữa các thành phần mà
nền tảng là PKI. Có hai kết nối được thành lập:
 Kết nối giữa thiết bị với APNS
 Kết nối giữa nguồn tin với APNS
Kết nối giữa thiết bị với APNs: APNs gán cho mỗi thiết bị một chuỗi định danh
duy nhất gọi là device token. Các bản tin sẽ có địa chỉ đích là các device token
tương ứng với thiết bị sẽ nhận được bản tin. Nguồn tin sẽ duy trì một danh sách các
device token của thiết bị cần gửi tin đến. Quá trình sinh device token được thực
hiện ở phía máy chủ của Apple và nhà phát triển không cần phản can thiệp gì đến
quá trình này.
22


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone


2010

Hình 7. Quá trình thiết lập kết nối giữa thiết bị và APNs

Mỗi thiết bị khi được sản xuất đều được tích hợp sẵn một chứng thực từ Apple, và
do đó APNs có thể dễ dàng xác thực thiết bị tham gia vào hệ thống.
Kết nối giữa nguồn tin và APNs: Kết nối giữa nguồn tin và APNs tương tự như
giữa thiết bị với APNs.

Hình 8. Quá trình thiết lập kết nối giữa nguồn tin và APNs

Chức thực mà nguồn tin sử dụng để kết nối đến APNs sẽ được Apple cung cấp
thông qua công cụ Provisional Portal, một chức năng trong cổng thông tin cho các
nhà phát triển của Apple.

23


Phát triển dịch vụ gửi nhận thông báo tự động và xây dựng hệ thống
bảo vệ ứng dụng cho iPhone

2010

Như vậy nguồn tin muốn gửi bản tin đến thiết bị thông qua APNs, thì phải biết được
device token của thiết bị. Quá trình sinh device token sẽ được thực hiện với mỗi
thiết bị khi lần đầu tiên nó kết nối đến APNs. Khi thiết bị có device token, nó phải
chuyển ngược lại cho nguồn tin thông qua ứng dụng tương ứng. Nguồn tin sau đó sẽ
lưu lại vào cơ sở dữ liệu để phục vụ cho việc đưa tin .


Hình 9. Quá trình sinh device token

2.3.4 Quá trình đưa tin
Khi nguồn tin đã có thông tin về thiết bị trong cơ sở dữ liệu thì có thể gửi bản tin
đến ứng dụng chạy trên thiết bị thông qua APNS. Tất cả những gì nguồn tin cần làm
là kết nối đến APNS thông qua kênh truyền SSL, với chứng thực được chấp nhận
bởi APNS. Tiếp theo nó gửi liên tiếp các bản tin với định dạng cho trước. Việc còn
lại là APNS sẽ đưa bản tin đến ứng dụng thuộc thiết bị định trước. Việc kết nối giữa
thiết bị và APNS diễn ra hoàn toàn tự động, người phát triển không cần phải can
thiệp gì.

24


×