HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TỒN THƠNG TIN
ĐỒ ÁN MÔN HỌC
THỰC TẬP CƠ SỞ
Đề tài:
NGHIÊN CỨU VỀ CÁC VẤN ĐỀ BẢO MẬT
TRONG WLAN
Sinh viên thực hiện:
VŨ CAO NGUYÊN AT150142
Nhóm 103
Giảng viên hướng dẫn:
ThS. NGUYỄN MẠNH THẮNG
Hà Nội, 10-2021
MỤC LỤC
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT............................................................i
DANH MỤC HÌNH VẼ.................................................................................................ii
DANH MỤC BẢNG BIỂU..........................................................................................iii
LỜI MỞ ĐẦU................................................................................................................iv
CHƯƠNG 1. TỔNG QUAN VỀ ANDROID..............................................................1
1.1 Giới thiệu Android............................................................................................1
1.1.1 Một số khái niệm........................................................................................1
1.1.2 Kiến trúc của Android................................................................................3
CHƯƠNG 2. BẢO MẬT TRONG ANDROID...........................................................5
2.1 Tổng quan về bảo mật trong Android..............................................................5
2.1.1 Dịch vụ bảo mật của Google......................................................................5
2.1.2 Về chương trình bảo mật..........................................................................11
2.1.3 Kiến trúc bảo mật nền tảng......................................................................12
2.2 Bảo mật Kernel...............................................................................................13
2.2.1 Bảo mật Linux..........................................................................................13
2.2.2 Hộp cát ứng dụng (The Application Sandbox)........................................14
2.2.3 Phân vùng hệ thống và Chế độ an toàn....................................................16
2.2.4 SELinux (Security-Enhanced Linux).......................................................16
2.2.5 Verified boot.............................................................................................17
2.2.6 Mã hóa (Encryption)................................................................................18
2.2.7 . Root thiết bị (Rooting of Devices).........................................................19
2.2.8 Quản trị thiết bị (Device Administration)................................................20
2.3 Bảo mật ứng dụng (Application security)......................................................20
2.3.1 Mơ hình quyền của Android: Truy cập các API được bảo vệ..................20
2.3.2 Cách người dùng hiểu ứng dụng của bên thứ ba......................................21
2.3.3 Giao tiếp giữa các quy trình.....................................................................23
2.3.4 Cost-Sensitive APIs(API mất phí)...........................................................23
2.3.5 Quyền truy cập thẻ SIM...........................................................................24
2.3.6 Thơng tin cá nhân.....................................................................................24
2.3.7 Thiết bị nhập dữ liệu nhạy cảm................................................................25
2.3.8 Siêu dữ liệu thiết bị (Device Metadata)...................................................25
2.3.9 Cơ quan cấp chứng chỉ (Certificate authorities)......................................25
2.3.10 Đăng ký ứng dụng..................................................................................26
2.3.11 Quản lý bản quyền kỹ thuật số (Digital Rights Management-DRM)....27
2.4 Cập nhật bảo mật và tài nguyên....................................................................27
2.4.1 Báo cáo về các vấn đề bảo mật................................................................27
2.4.2 Xử lí lỗi....................................................................................................28
2.4.3 Thơng báo.................................................................................................34
2.4.4 Phát hành mã cho AOSP..........................................................................34
2.4.5 Nhận bản cập nhật Android......................................................................35
2.4.6 Cập nhật các dịch vụ của Google.............................................................35
CHƯƠNG 3. NHẬN XÉT VÀ ĐÁNH GIÁ BẢO MẬT TRONG ANDROID.....35
3.1 Kỹ thuật đánh hơi (Sniffing)..........................................................................35
KẾT LUẬN....................................................................................................................38
TÀI LIỆU THAM KHẢO...........................................................................................39
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT
1
DANH MỤC HÌNH VẼ
2
DANH MỤC BẢNG BIỂU
3
LỜI MỞ ĐẦU
Trong một khoảng thời gian tương đối ngắn, Android đã trở thành hệ điều
hành di động phổ biến nhất thế giới. Mặc dù ban đầu được thiết kế cho điện thoại
thơng minh, nhưng giờ đây nó sử dụng cho lượng lớn các thiết bị như máy tính bảng,
TV, thiết bị đeo tay, v.v... . Android đang được phát triển với một tốc độ ngoạn mục,
trung bình hai bản phát hành chính mỗi năm. Mỗi bản phát hành mới mang đến giao
diện người dùng tốt hơn, cải tiến hiệu suất và một loạt các tính năng hướng tới người
dùng mới thường được những người đam mê Android viết blog và mổ xẻ chi tiết. Một
khía cạnh của nền tảng Android đã được chứng kiến những cải tiến lớn trong vài năm
qua, nhưng ít nhận được sự chú ý của cơng chúng, đó là tính bảo mật. Trong những
năm qua, Android đã chống trọi lại các kỹ thuật khai thác phổ biến tốt hơn (chẳng hạn
như tràn bộ đệm), tính năng cơ lập ứng dụng của nó (sandboxing) đã được tăng cường,
và các cuộc tấn bề mặt của nó đã giảm đáng kể bằng cách giảm mạnh số lượng quy
trình hệ thống chạy dưới dạng root.
Ngoài các biện pháp giảm thiểu khai thác này, các phiên bản Android gần đây
đã giới thiệu các tính năng bảo mật mới như hỗ trợ người dùng bị hạn chế, mã hóa ổ
đĩa, lưu trữ thông tin xác thực được hỗ trợ bởi phần cứng, hỗ trợ quản lý và cung cấp
thiết bị tập trung. Thậm chí nhiều tính năng định hướng doanh nghiệp và cải tiến bảo
mật như hỗ trợ hồ sơ được quản lý, cải tiến mã hóa ổ đĩa đĩa và hỗ trợ xác thực sinh
trắc học .Như với bất kỳ tính năng mới nào của nền tảng, thì điều quan trọng là phải
hiểu kiến trúc bảo mật của Android từ dưới lên vì mỗi tính năng bảo mật mới đều được
xây dựng và tích hợp với mơ hình bảo mật cốt lõi của nền tảng. Mơ hình hộp cát của
Android-sandboxing (trong đó mỗi ứng dụng chạy với tư cách là một người dùng
Linux riêng biệt và có một thư mục dữ liệu chuyên dụng) và hệ thống quyền (yêu cầu
4
mỗi ứng dụng phải khai báo rõ ràng nền tảng mà nó yêu cầu) được hiểu và ghi lại khá
rõ ràng. Tuy nhiên, nội bộ của các tính năng nền tảng cơ bản khác có tác động đến bảo
mật thiết bị, chẳng hạn như quản lý gói và ký mã, phần lớn được coi như một hộp đen
ngoài cộng đồng nghiên cứu bảo mật.
Một trong những lý do khiến Android trở nên phổ biến là sự dễ dàng tương đối
mà một thiết bị có thể được “cài đặt sẵn” với bản dựng tùy chỉnh của Android, được
“root” bằng cách áp dụng gói cập nhật của bên thứ ba hoặc tùy chỉnh theo cách khác.
Các diễn đàn và blog dành cho người đam mê Android có nhiều hướng dẫn thực tế về
“Cách thực hiện” đưa người dùng qua các bước cần thiết để mở khóa thiết bị và áp
dụng các gói tùy chỉnh khác nhau, nhưng chúng cung cấp rất ít thơng tin có cấu trúc về
cách các bản cập nhật hệ thống như vậy hoạt động và những rủi ro mà chúng mang.
Khơng có gì lạ khi tồn bộ hệ thống con của Android được thay thế hoặc viết
lại giữa các bản phát hành, nhưng sự phát triển liên quan đến bảo mật về bản chất là
bảo tồn và mặc dù hành vi được mơ tả có thể được thay đổi hoặc tăng cường qua các
bản phát hành, nhưng kiến trúc bảo mật cốt lõi của Android vẫn khá ổn định trong các
bản phát hành trong tương lai.
5
CHƯƠNG 1. TỔNG QUAN VỀ ANDROID
1.1 Giới thiệu Android
1.1.1 Một số khái niệm
1.1.1.1 Android là gì ?
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho
các thiết bị di động có màn hình cảm ứng như điện thoại thơng minh và máy tính bảng.
Ban đầu, Android đượ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.
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 các thiết bị di động. Chiếc điện thoại đầu
tiên chạy Android được bán vào năm 2008.
Android có mã nguồn mở và Google phát hành mã nguồn 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 chun viết các ứng dụng để mở rộng chức năng
của thiết bị, bằng một loại ngơn ngữ lập trình Java có sửa đổi. Tháng 10 năm 2012, có
khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play, cửa
hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt.
1.1.1.2 Đặc điểm của Android
Android có mã nguồn mở và Google phát hành mã nguồn 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.
1
Android chiếm 85% thị phần điện thoại thông minh trên toàn thế giới. Hệ điều
hành Android ra mắt năm 2007 và chiếc điện thoại đầu tiên chạy Android là HTC
Dream (hay T-Mobile G1) được bán ra, phát hành ngày 22 tháng 10 năm 2008.
Biểu trưng của hệ điều hành Android mới là một con rôbốt màu xanh lá cây do
hãng thiết kế Irina Blok tại California vẽ.
Giao diện người dùng của Android dựa trên nguyên tắc tác động trực tiếp, sử
dụng cảm ứng chạm tương tự như những động tác ngoài đời thực như vuốt, chạm, kéo
dãn và thu lại để xử lý các đối tượng trên màn hình.
Android có lượng ứng dụng của bên thứ ba ngày càng nhiều, được chọn lọc và
đặt trên một cửa hàng ứng dụng như Google Play hay Amazon Appstore để người
dùng lấy về, hoặc bằng cách tải xuống rồi cài đặt tập tin APK từ trang web khác. Các
ứng dụng cho Android được phát triển bằng ngôn ngữ Java sử dụng Bộ phát triển phần
mềm Android (SDK).
1.1.1.3 Ưu điểm
Giao diện dễ sử dụng, khả năng tùy biến cao, bạn có thể tùy ý chỉnh sửa mọi
thứ trên hệ điều hành android, trừ các phân vùng trong hệ thống.
Đa dạng sản phẩm, rất nhiều hãng điện thoại, thiết bị công nghệ đã chọn
Android cho thiết bị của họ, giá cả hợp lý từ phổ thông đến cao cấp.
2
Kho ứng dụng Google Play khổng lồ, cập nhật liên tục, với đủ mọi ứng dụng.
Khả năng đa nhiệm cao, chạy cùng lúc nhiều ứng dụng. Khả năng tối ưu hóa hiệu suất
smartphone đem đến trải nghiệm mượt mà nhất cho người dùng.
1.1.1.4 Nhược điểm
Dễ bị nhiễm các phần mềm độc hại và các mã độc, do hệ điều hành Android
cho phép bạn cài đặt các ứng dụng bên ngoài Google Play. Kho ứng dụng quá nhiều
dẫn đến khó kiểm sốt chất lượng.
Cập nhật khơng tự động với tất cả thiết bị. Khi một phiên bản hệ điều hành
mới ra mắt, không phải tất cả sản phẩm đều được cập nhật, thậm chí nếu muốn trải
nghiệm bạn thường xuyên phải mua mới thiết bị.
1.1.2 Kiến trúc của Android
Kiến trúc hệ thống Android chứa các thành phần sau:
3
1.1.2.1 Nhân Linux (Linux Kernel)
Hệ điều hành Android được xây dựng trên nhân Linux (Linux Kernel). Giống
như bất kì hệ thống Unix nào khác, nhân Linux cung cấp trình điều khiển cho phần
cứng , mạng, quyền truy cập hệ thống tệp tin và quản lí tiến trình.Trình phát triển trên
thiết bị Android cũng tương tự như phát triển trình điều khiển thiết bị Linux khác.
Android sử dụng phiên bản của hạt nhân Linux với một số bổ sung đặc biệt như Low
Memory Killer (hệ thống quản lý bộ nhớ tích cực hơn trong việc bảo tồn bộ nhớ), khóa
đánh thức (một dịch vụ hệ thống của PowerManager), trình điều khiển IPC Binder, và
các tính năng quan trọng khác đối với nền tảng nhúng di động. Những bổ sung này chủ
yếu dành cho chức năng hệ thống và không ảnh hưởng đến việc phát triển trình điều
khiển.
1.1.2.2 Lớp trừu tượng phần cứng (Hardware abstraction layer-HAL)
HAL xác định một giao diện tiêu chuẩn để các nhà cung cấp phần cứng triển
khai, điều này cho phép Android khơng có khả năng triển khai trình điều khiển cấp
thấp hơn. Sử dụng HAL cho phép bạn triển khai chức năng mà không ảnh hưởng hoặc
sửa đổi hệ thống cấp cao hơn. Các triển khai HAL được đóng gói thành các mơ-đun và
được tải bởi hệ thống Android vào thời điểm thích hợp.
1.1.2.3 Dịch vụ hệ thống (System services)
Dịch vụ hệ thống là các thành phần tập trung, mơ-đun như trình quản lý cửa
sổ, dịch vụ tìm kiếm hoặc trình quản lý thơng báo. Chức năng được thể hiện bởi khung
ứng dụng API giao tiếp với các dịch vụ hệ thống để truy cập vào phần cứng bên dưới.
Android bao gồm hai nhóm dịch vụ: hệ thống (chẳng hạn như trình quản lý cửa sổ và
trình quản lý thông báo) và phương tiện (các dịch vụ liên quan đến phát và ghi phương
tiện).
1.1.2.4 Binder IPC
Cơ chế Binder Inter-Process Communication (IPC) cho phép khung ứng dụng
vượt qua ranh giới quy trình và gọi vào mã dịch vụ hệ thống Android. Điều này cho
phép các API khung cấp cao tương tác với các dịch vụ hệ thống Android. Ở cấp khung
ứng dụng, giao tiếp này bị ẩn bởi nhà phát triển và mọi thứ dường như "chỉ hoạt
động".
4
1.1.2.5 Khung ứng dụng (Application framework)
Khung ứng dụng được các nhà phát triển ứng dụng sử dụng thường xuyên
nhất. Là một nhà phát triển phần cứng, bạn nên biết về các API của nhà phát triển vì
nhiều API ánh xạ trực tiếp đến các giao diện HAL bên trên và có thể cung cấp thơng
tin hữu ích về việc triển khai các trình điều khiển.
1.2 Nhận xét chung về Android hiện tại
Android chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vào
thời điểm quý 2 năm 2017, với tổng cộng 2 tỷ 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 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ệ.
CHƯƠNG 2. BẢO MẬT TRONG ANDROID
2.1 Tổng quan về bảo mật trong Android
Android kết hợp các tính năng bảo mật hàng đầu và được phát triển với các
nhà phát triển và nhà triển khai thiết bị để giữ cho nền tảng và hệ sinh thái Android
được an tồn. Một mơ hình bảo mật mạnh mẽ là điều cần thiết để kích hoạt một hệ
sinh thái ứng dụng và thiết bị mạnh mẽ được xây dựng trên và xung quanh nền tảng
Android và được hỗ trợ bởi các dịch vụ đám mây. Do đó, trong tồn bộ vịng đời phát
triển của mình, Android đã phải tuân theo một chương trình bảo mật nghiêm ngặt.
2.1.1 Dịch vụ bảo mật của Google
Google cung cấp một tập hợp các dịch vụ dựa trên đám mây có sẵn cho các
thiết bị Android tương thích với Dịch vụ Di động của Google . Mặc dù các dịch vụ này
không phải là một phần của Dự án nguồn mở Android (AOSP), nhưng chúng được bao
gồm trên nhiều thiết bị Android. Để biết thêm thông tin về một số dịch vụ này, hãy
xem Android Security’s 2018 Year in Review.
Các dịch vụ bảo mật chính của Google là:
5
•
Google Play: Google Play là một tập hợp các dịch vụ cho phép người
dùng khám phá, cài đặt và mua các ứng dụng từ thiết bị Android hoặc web của họ.
Google Play giúp các nhà phát triển dễ dàng tiếp cận người dùng Android và khách
hàng tiềm năng. Google Play cũng cung cấp đánh giá cộng đồng, xác minh giấy phép
ứng dụng, quét bảo mật ứng dụng và các dịch vụ bảo mật khác.
•
Cập nhật Android: Dịch vụ cập nhật Android cung cấp các tính năng và
bản cập nhật bảo mật mới cho các thiết bị Android được chọn, bao gồm các bản cập
nhật qua web hoặc qua mạng (OTA).
•
Dịch vụ ứng dụng: Các khuôn khổ cho phép ứng dụng Android sử dụng
các khả năng của đám mây như ( sao lưu ) dữ liệu và cài đặt ứng dụng và nhắn tin từ
đám mây tới thiết bị ( C2DM ) để nhắn tin đẩy.
•
Xác minh ứng dụng: Cảnh báo hoặc tự động chặn cài đặt các ứng dụng
có hại và liên tục quét các ứng dụng trên thiết bị, cảnh báo về hoặc xóa các ứng dụng
có hại .
•
SafetyNet: Hệ thống phát hiện xâm nhập bảo vệ quyền riêng tư để hỗ trợ
Google theo dõi, giảm thiểu các mối đe dọa bảo mật đã biết và xác định các mối đe
dọa bảo mật mới.
•
Chứng nhận SafetyNet: API của bên thứ ba để xác định xem thiết bị có
tương thích với CTS hay khơng. Chứng thực cũng có thể xác định ứng dụng Android
đang giao tiếp với máy chủ ứng dụng.
•
Trình quản lý thiết bị Android: Một web app và Android app để xác
định vị trí thiết bị bị mất hoặc bị đánh cắp.
2.1.1.1 WEP tĩnh
Quyền riêng tư tương đương có dây (WEP) là phương pháp mã hóa Lớp 2 sử
dụng mật mã phát trực tuyến ARC4. Vì mã hóa WEP xảy ra ở Lớp 2, thông tin đang
được bảo vệ là các Lớp trên 3–7. Tải trọng của khung dữ liệu 802.11 được gọi là Đơn
vị dữ liệu dịch vụ MAC (MSDU). MSDU chứa dữ liệu từ LLC và Lớp 3–7. Một định
nghĩa đơn giản về MSDU là nó là trọng tải dữ liệu chứa gói IP cộng với một số dữ liệu
LLC. WEP và các phương pháp mã hóa Lớp 2 khác mã hóa tải trọng MSDU của
khung dữ liệu 802.11. Chuẩn 802.11 ban đầu xác định cả WEP 64-bit và WEP 128-bit
6
là các phương pháp mã hóa được hỗ trợ. Ba mục tiêu dự kiến chính của mã hóa WEP
bao gồm tính bảo mật, kiểm sốt truy cập và tính tồn vẹn của dữ liệu. Mục tiêu chính
của bảo mật là cung cấp quyền riêng tư cho dữ liệu bằng cách mã hóa dữ liệu trước khi
truyền. WEP cũng cung cấp kiểm soát truy cập, về cơ bản là một dạng ủy quyền thơ
sơ. Các trạm khách khơng có cùng khóa WEP tĩnh phù hợp làm điểm truy cập sẽ bị từ
chối truy cập vào tài nguyên mạng. Tổng kiểm tra tính tồn vẹn của dữ liệu, được gọi
là Giá trị kiểm tra tính tồn vẹn (ICV), được tính tốn trên dữ liệu trước khi mã hóa và
được sử dụng để ngăn dữ liệu bị sửa đổi. Tiêu chuẩn 802.11-2012 hiện tại vẫn định
nghĩa WEP là một phương pháp mã hóa kế thừa để bảo mật trước RSNA.
Mặc dù cả WEP 64-bit và 128-bit đều được định nghĩa vào năm 1997 trong
tiêu chuẩn IEEE 802.11 ban đầu, chính phủ Hoa Kỳ ban đầu chỉ cho phép xuất khẩu
công nghệ 64-bit. Sau khi chính phủ Hoa Kỳ nới lỏng các hạn chế xuất khẩu về kích
thước khóa, các nhà sản xuất thẻ vô tuyến bắt đầu sản xuất thiết bị hỗ trợ mã hóa WEP
128-bit. Tiêu chuẩn 802.11-2012 đề cập đến phiên bản 64 bit là WEP-40 và phiên bản
128 bit là WEP-104. Như trong Hình 2.4, WEP 64 bit sử dụng khóa tĩnh 40 bit bí mật,
được kết hợp với số 24 bit được chọn bởi trình điều khiển thiết bị của thẻ. Số 24 bit
này, được gọi là vectơ khởi tạo (IV), được gửi dưới dạng văn bản rõ ràng và một IV
mới được tạo cho mọi khung hình. Mặc dù IV được cho là mới cho mọi khung hình,
chỉ có 16.777.216 kết hợp IV khác nhau; do đó, theo thời gian, bạn buộc phải sử dụng
lại các giá trị IV. Tiêu chuẩn cũng khơng xác định thuật tốn sử dụng để tạo IV. Điểm
mạnh chính hiệu quả của việc kết hợp IV với khóa tĩnh 40 bit là mã hóa 64 bit. Mã hóa
WEP 128 bit sử dụng khóa tĩnh bí mật 104 bit cũng được kết hợp với IV 24 bit.
7
Hình 2.1.
Khóa WEP tĩnh thường có thể được nhập dưới dạng ký tự hex (0–9 và A – F)
hoặc ký tự ASCII. Khóa tĩnh phải khớp trên cả điểm truy cập và thiết bị khách. Khóa
tĩnh 40 bit bao gồm 10 ký tự hex hoặc 5 ký tự ASCII, trong khi khóa tĩnh 104 bit bao
gồm 26 ký tự hex hoặc 13 ký tự ASCII. Không phải tất cả các trạm khách hoặc điểm
truy cập đều hỗ trợ cả hex và ASCII. Một số máy khách và điểm truy cập hỗ trợ việc
sử dụng tối đa bốn khóa WEP tĩnh riêng biệt, từ đó người dùng có thể chọn một khóa
làm khóa truyền mặc định.
Hình 2.2.
Khóa truyền là khóa tĩnh được sử dụng để mã hóa dữ liệu của đài truyền. Máy
khách hoặc điểm truy cập có thể sử dụng một khóa để mã hóa lưu lượng gửi đi và một
khóa khác để giải mã lưu lượng đã nhận. Tuy nhiên, mỗi khóa được sử dụng phải khớp
chính xác trên cả hai mặt của một liên kết để mã hóa/ giải mã để hoạt động bình
thường. Khi một thiết bị tạo khung được mã hóa WEP, mã định danh khóa được thêm
vào trường IV cho biết khóa nào trong số bốn khóa tĩnh có thể được sử dụng để mã
hóa dữ liệu và khóa nào sẽ được sử dụng để giải mã dữ liệu. Ví dụ: nếu thiết bị truyền
sử dụng khố 3 để mã hóa dữ liệu, thiết bị nhận sẽ sử dụng khoá 3 để giải mã dữ liệu.
Nếu thiết bị nhận khơng có khóa 3 được xác định hoặc khơng có cùng khóa WEP được
nhập trong khóa 3, dữ liệu sẽ không được giải mã.
WEP hoạt động như thế nào? WEP chạy kiểm tra dự phòng theo chu kỳ (CRC)
trên dữ liệu bản rõ sẽ được mã hóa và sau đó nối Giá trị kiểm tra tính toàn vẹn (ICV)
8
vào cuối dữ liệu bản rõ. ICV được sử dụng để tồn vẹn dữ liệu và khơng nên nhầm lẫn
với vectơ khởi tạo (IV). 24-bit cleartext IV được tạo và kết hợp với khóa bí mật tĩnh.
Sau đó, WEP sử dụng cả khóa tĩnh và IV làm vật liệu gieo hạt thơng qua một thuật
tốn ngẫu nhiên giả tạo ra các bit dữ liệu ngẫu nhiên được gọi là dòng khóa. Các bit
giả ngẫu nhiên này có độ dài bằng với dữ liệu văn bản rõ sẽ được mã hóa. Các bit giả
ngẫu nhiên trong dịng khóa sau đó được kết hợp với các bit dữ liệu văn bản rõ bằng
cách sử dụng quy trình Boolean XOR. Kết quả cuối cùng là bản mã WEP, là dữ liệu
được mã hóa. Dữ liệu được mã hóa sau đó được đặt trước bằng văn bản rõ ràng IV,
cùng với số trong số bốn khóa đã được sử dụng để mã hóa. Hình dưới minh họa quá
trình này.
Hình 2.3
Để giải mã một khung, trước tiên WEP trích xuất IV và mã định danh khóa,
nhận dạng khóa nào sẽ sử dụng. Sau đó, WEP sử dụng khóa tĩnh và IV làm vật liệu
gieo hạt thơng qua thuật tốn ngẫu nhiên giả để tạo dịng khóa. Dịng khóa được kết
hợp với bản mã bằng quy trình Boolean XOR. Kết quả cuối cùng là giải mã bản mã và
tạo ra dữ liệu bản rõ. WEP chạy một CRC trên dữ liệu bản rõ và so sánh nó với ICV
được giải mã từ bản mã. Nếu cả hai giống nhau về mặt bit, khung được coi là hợp lệ.
Hình dưới đây minh họa quá trình này.
9
Hình 2.4.
2.1.1.2 WEP động
Trước năm 2004, nhiều nhà cung cấp đã triển khai các giải pháp tạo khóa mã
hóa WEP động nhờ xác thực 802.1X / EAP. WEP động chưa bao giờ được tiêu chuẩn
hóa nhưng đã được các nhà cung cấp sử dụng cho đến khi TKIP và CCMP có sẵn trên
thị trường. Dynamic WEP là một giải pháp quản lý khóa mã hóa tồn tại trong thời gian
ngắn thường được triển khai trước khi WPA - sản phẩm WLAN được chứng nhận.
Việc tạo và phân phối các khóa WEP động như một sản phẩm phụ của quá trình xác
thực EAP mang đến nhiều lợi ích và được ưu tiên hơn việc sử dụng các khóa WEP
tĩnh. Các khóa tĩnh khơng cịn được sử dụng và khơng phải nhập thủ cơng. Ngồi ra,
mỗi người dùng đều có một khóa riêng biệt và độc lập. Nếu khóa WEP động của người
dùng bị xâm phạm, thì chỉ lưu lượng truy cập của một người dùng đó mới có thể được
giải mã. Tuy nhiên, khóa WEP động vẫn có thể bị bẻ khóa và nếu bị xâm phạm, nó
thực sự có thể được sử dụng để giải mã các khung dữ liệu. WEP động vẫn có rủi ro.
WEP động chỉ nên được sử dụng với thiết bị WLAN cũ không hỗ trợ việc sử dụng mã
hóa TKIP / ARC4 hoặc CCMP / AES.
2.1.1.3 Nhược điểm của WEP
Lý do WEP khơng cịn được sử dụng ngày nay là vì nó có khá nhiều điểm yếu,
trong đó bao gồm 4 kiểu tấn cơng dưới đây:
− Tấn cơng xung đột IV: Vì vectơ khởi tạo 24 bit ở dạng văn bản rõ ràng và khác
nhau trong mọi khung hình, tất cả 16 triệu IV cuối cùng sẽ tự lặp lại trong một
mạng được mã hóa WEP bận rộn. Do kích thước hạn chế của khơng gian IV, xung
10
đột IV xảy ra và kẻ tấn cơng có thể khơi phục khóa bí mật dễ dàng hơn nhiều khi
xung đột IV xảy ra trong mạng không dây.
− Tấn công khố yếu: Do thuật tốn lập lịch khóa ARC4, các khóa IV yếu được tạo
ra. Kẻ tấn cơng có thể khơi phục khóa bí mật dễ dàng hơn nhiều bằng cách khơi
phục các khóa IV yếu đã biết.
− Tấn cơng tái thâm nhập: Tồn tại các công cụ của hacker thực hiện một cuộc tấn
cơng tái thâm nhập gói tin để tăng tốc việc thu thập các IV yếu trên một mạng có
lưu lượng truy cập nhỏ.
− Tấn cơng lật bit: Sự kiểm tra tính tồn vẹn dữ liệu ICV được coi là yếu. Các gói
được mã hóa WEP có thể bị giả mạo.
Các cơng cụ bẻ khóa WEP hiện tại có thể sử dụng kết hợp ba cuộc tấn cơng
được đề cập đầu tiên và có thể bẻ khóa WEP trong vịng chưa đầy 5 phút. Bẻ khố
WEP có thể được thực hiện theo các bước như sau:
−
−
−
−
−
−
Bước 1: Giám sát kênh truyền của Access Point
Bước 2: Kiểm tra khả năng thâm nhập vào Access Point
Bước 3: Sử dụng công cụ để giả mạo sự xác thực
Bước 4: Đánh hơi các gói tin bằng cơng cụ Wi-Fi Sniffing
Bước 5: Sử dụng cơng cụ mã hố để đưa vào các gói tin đã mã hố
Bước 6: Sử dụng cơng cụ Cracking để trích xuất khố mã hố từ IV.
Sau khi kẻ tấn cơng xâm phạm khóa WEP tĩnh, bất kỳ khung dữ liệu nào cũng
có thể được giải mã bằng khóa mới được phát hiện.
2.1.2 Về chương trình bảo mật
Các thành phần chính của Chương trình bảo mật Android bao gồm:
Đánh giá thiết kế: Quy trình bảo mật Android bắt đầu sớm trong vòng đời phát triển
với việc tạo ra một thiết kế và mơ hình bảo mật phong phú, có thể định cấu hình. Mỗi
tính năng chính của nền tảng được xem xét bởi các nguồn lực kỹ thuật và bảo mật,
với các biện pháp kiểm soát bảo mật thích hợp được tích hợp vào kiến trúc của hệ
thống.
Kiểm tra thâm nhập và xem xét mã: Trong quá trình phát triển nền tảng, các thành
phần mã nguồn mở và do Android tạo ra phải chịu các đánh giá bảo mật mạnh
mẽ. Các bài đánh giá này được thực hiện bởi Nhóm bảo mật Android, nhóm Kỹ thuật
bảo mật thơng tin của Google và các nhà tư vấn bảo mật độc lập. Mục tiêu của những
đánh giá này là xác định tốt các điểm yếu và lỗ hổng bảo mật trước khi phát hành
11
chính và mơ phỏng các loại phân tích được thực hiện bởi các chuyên gia bảo mật bên
ngoài khi phát hành.
Nguồn mở và đánh giá cộng đồng: AOSP cho phép đánh giá bảo mật rộng rãi bởi
bất kỳ bên quan tâm nào. Android cũng sử dụng các công nghệ mã nguồn mở đã
được đánh giá bảo mật bên ngoài quan trọng, chẳng hạn như nhân Linux. Google
Play cung cấp một diễn đàn để người dùng và các công ty cung cấp thông tin về các
ứng dụng cụ thể trực tiếp cho người dùng.
Phản ứng sự cố: Ngay cả với những biện pháp phịng ngừa này, các vấn đề bảo mật
có thể xảy ra sau khi vận chuyển, đó là lý do tại sao dự án Android đã tạo ra một quy
trình phản hồi bảo mật tồn diện. Các thành viên tồn thời gian của nhóm bảo mật
Android giám sát cộng đồng bảo mật nói chung và dành riêng cho Android để thảo
luận về các lỗ hổng tiềm ẩn và xem xét các lỗi bảo mật được gửi trên cơ sở dữ liệu
lỗi Android. Khi phát hiện ra các vấn đề hợp pháp, nhóm Android có quy trình phản
hồi cho phép giảm thiểu nhanh chóng các lỗ hổng để đảm bảo giảm thiểu rủi ro tiềm
ẩn cho tất cả người dùng Android. Các phản hồi được hỗ trợ bởi đám mây này có thể
bao gồm cập nhật nền tảng Android (cập nhật AOSP), xóa ứng dụng khỏi Google
Play và xóa ứng dụng khỏi các thiết bị.
Cập nhật bảo mật hàng tháng: Nhóm bảo mật Android cung cấp các bản
cập nhật hàng tháng cho các thiết bị Android của Google và tất cả các đối tác sản xuất
thiết bị
2.1.3 Kiến trúc bảo mật nền tảng
Android tìm cách trở thành hệ điều hành an tồn nhất và có thể sử dụng được
cho các nền tảng di động bằng cách thay thế các biện pháp kiểm soát bảo mật của hệ
điều hành truyền thống thành:
Bảo vệ ứng dụng và dữ liệu người dùng
Bảo vệ tài nguyên hệ thống (bao gồm cả mạng)
Cung cấp cách ly ứng dụng khỏi hệ thống, các ứng dụng khác và với
người dùng
Để đạt được những mục tiêu này, Android cung cấp các tính năng bảo mật
chính sau:
Bảo mật mạnh mẽ ở cấp hệ điều hành thông qua nhân Linux
Hộp cát ứng dụng bắt buộc cho tất cả các ứng dụng
Giao tiếp liên quy trình an tồn
Chữ ký ứng dụng
12
Quyền do ứng dụng xác định và do người dùng cấp
2.2 Bảo mật Kernel
Ở cấp độ hệ điều hành, nền tảng Android cung cấp tính bảo mật của nhân
Linux, cũng như cơ sở giao tiếp giữa các tiến trình (IPC) an toàn để cho phép giao tiếp
an toàn giữa các ứng dụng chạy trong các tiến trình khác nhau. Các tính năng bảo mật
này ở cấp hệ điều hành đảm bảo rằng ngay cả mã gốc cũng bị hạn chế bởi Hộp cát ứng
dụng. Cho dù mã đó là kết quả của hành vi ứng dụng được bao gồm hay việc khai thác
lỗ hổng ứng dụng, hệ thống được thiết kế để ngăn ứng dụng giả mạo gây hại cho các
ứng dụng khác, hệ thống Android hoặc chính thiết bị
2.2.1 Bảo mật Linux
Nền tảng của nền tảng Android là nhân Linux. Nhân Linux đã được sử dụng
rộng rãi trong nhiều năm và được sử dụng trong hàng triệu môi trường nhạy cảm
với bảo mật. Trải qua lịch sử liên tục được nghiên cứu, tấn công và sửa lỗi bởi hàng
nghìn nhà phát triển, Linux đã trở thành một hạt nhân ổn định và an toàn được
nhiều tập đoàn và chuyên gia bảo mật tin tưởng.
Là cơ sở cho môi trường điện toán di động, nhân Linux cung cấp cho Android
một số tính năng bảo mật chính, bao gồm:
Mơ hình quyền dựa trên người dùng
Quy trình cách ly
Cơ chế mở rộng cho IPC an toàn
Khả năng loại bỏ các phần khơng cần thiết và có khả năng khơng an tồn của
hạt nhân
Là một hệ điều hành đa người dùng, mục tiêu bảo mật cơ bản của nhân Linux
là cách ly tài nguyên người dùng với nhau. Triết lý bảo mật của Linux là bảo vệ tài
nguyên của người dùng với nhau. Do đó, Linux:
Ngăn người dùng A đọc tệp của người dùng B
Đảm bảo rằng người dùng A không làm cạn bộ nhớ của
người dùng B
Đảm bảo rằng người dùng A không làm cạn kiệt tài
nguyên CPU của người dùng B
13
Đảm bảo rằng người dùng A không làm cạn kiệt thiết bị
của người dùng B (ví dụ: điện thoại, GPS và Bluetooth)
2.2.2 Hộp cát ứng dụng (The Application Sandbox)
Nền tảng Android tận dụng tính năng bảo vệ dựa trên người dùng Linux để xác
định và cô lập các tài nguyên ứng dụng. Điều này cách ly các ứng dụng với nhau và
bảo vệ các ứng dụng cũng như hệ thống khỏi các ứng dụng độc hại. Để thực hiện việc
này, Android chỉ định một ID người dùng (UID) duy nhất cho từng ứng dụng Android
và chạy ứng dụng đó trong quy trình riêng của ứng dụng đó.
Android sử dụng UID để thiết lập Hộp cát ứng dụng cấp nhân. Kernel thực thi bảo
mật giữa các ứng dụng và hệ thống ở cấp quy trình thơng qua các cơ sở Linux tiêu
chuẩn như ID người dùng và nhóm được gán cho các ứng dụng. Theo mặc định, các
ứng dụng không thể tương tác với nhau và có quyền truy cập hạn chế vào hệ điều
hành. Nếu ứng dụng A cố gắng làm điều gì đó độc hại, chẳng hạn như đọc dữ liệu của
ứng dụng B hoặc quay số điện thoại mà không được phép, ứng dụng này sẽ bị ngăn
chặn làm như vậy vì ứng dụng này khơng có đặc quyền người dùng mặc định thích
hợp. Hộp cát đơn giản, có thể kiểm tra được và dựa trên việc phân tách quy trình và
quyền tệp theo kiểu UNIX của người dùng hàng thập kỷ.
Vì Hộp cát ứng dụng nằm trong hạt nhân, mơ hình bảo mật này mở rộng cho
cả mã gốc và ứng dụng hệ điều hành. Tất cả phần mềm bên trên hạt nhân, chẳng hạn
như thư viện hệ điều hành, khuôn khổ ứng dụng, thời gian chạy ứng dụng và tất cả các
ứng dụng, đều chạy trong Hộp cát ứng dụng. Trên một số nền tảng, các nhà phát triển
bị hạn chế trong một khung phát triển, bộ API hoặc ngơn ngữ cụ thể. Trên Android,
khơng có giới hạn nào về cách viết một ứng dụng được yêu cầu để thực thi bảo mật; về
mặt này, mã gốc cũng giống như mã được thông dịch trong hộp cát
2.2.2.1 Protections-Bảo vệ
Nói chung, để thốt ra khỏi Application Sandbox trong một thiết bị được cấu
hình đúng, người ta phải thỏa hiệp tính bảo mật của nhân Linux. Tuy nhiên, tương tự
như các tính năng bảo mật khác, các biện pháp bảo vệ riêng lẻ thực thi hộp cát ứng
dụng khơng thể xâm phạm, do đó, bảo vệ chun sâu là rất quan trọng để ngăn chặn
các lỗ hổng đơn lẻ dẫn đến việc xâm nhập hệ điều hành hoặc các ứng dụng khác.
14
Android dựa vào một số biện pháp bảo vệ để thực thi hộp cát ứng dụng. Các
biện pháp thực thi này đã được áp dụng theo thời gian và đã củng cố đáng kể Sandbox
kiểm soát truy cập tùy ý (DAC) dựa trên UID. Các bản phát hành Android trước đây
bao gồm các biện pháp bảo vệ sau:
Trong Android 5.0, SELinux đã cung cấp phân tách kiểm soát truy cập (MAC)
bắt buộc giữa hệ thống và ứng dụng. Tuy nhiên, tất cả các ứng dụng của bên thứ ba
đều chạy trong cùng một ngữ cảnh SELinux nên tính cách ly giữa các ứng dụng chủ
yếu được thực thi bởi UID DAC.
Trong Android 6.0, hộp cát SELinux đã được mở rộng để cô lập các ứng dụng
trên ranh giới mỗi người dùng thực tế. Ngoài ra, Android cũng đặt mặc định an toàn
hơn cho dữ liệu ứng dụng: Đối với các ứng dụng có targetSdkVersion >= 24, quyền
DAC mặc định trên dir chủ của ứng dụng đã thay đổi từ 751 thành 700. Điều này cung
cấp mặc định an toàn hơn cho dữ liệu ứng dụng riêng tư (mặc dù ứng dụng có thể ghi
đè các mặc định này).
Trong Android 8.0, tất cả các ứng dụng được thiết lập để chạy với một
seccomp-bpf bộ lọc giới hạn cuộc gọi hệ thống mà ứng dụng được phép sử dụng, do
đó củng cố ranh giới ứng dụng / nhân.
Trong Android 9, tất cả các ứng dụng khơng có đặc quyền targetSdkVersion
>= 28phải chạy trong các hộp cát SELinux riêng lẻ, cung cấp MAC trên cơ sở mỗi ứng
dụng. Tính năng bảo vệ này cải thiện khả năng phân tách ứng dụng, ngăn ghi đè các
giá trị mặc định an toàn và (đáng kể nhất) ngăn các ứng dụng làm cho thế giới dữ liệu
của chúng có thể truy cập được.
Trong các ứng dụng Android 10 có chế độ xem thơ hạn chế của hệ thống tệp,
khơng có quyền truy cập trực tiếp vào các đường dẫn như / sdcard / DCIM. Tuy nhiên,
các ứng dụng vẫn có tồn quyền truy cập thơ vào các đường dẫn dành riêng cho gói
của chúng, như được trả về bởi bất kỳ phương thức áp dụng nào, chẳng hạn như
2.2.2.2 Nguyên tắc chia sẻ tệp
Đặt dữ liệu ứng dụng là có thể truy cập được trên tồn thế giới là một phương
pháp bảo mật kém. Quyền truy cập được cấp cho tất cả mọi người và không thể giới
hạn quyền truy cập chỉ đối với (những) người nhận dự kiến. Thực tiễn này đã dẫn đến
15
rị rỉ thơng tin và làm nhầm lẫn các lỗ hổng bảo mật và là mục tiêu ưa thích của phần
mềm độc hại nhắm mục tiêu vào các ứng dụng có dữ liệu nhạy cảm (chẳng hạn như
ứng dụng email). Trong Android 9 trở lên, việc chia sẻ tệp theo cách này rõ ràng không
được phép đối với các ứng dụng targetSdkVersion>=28.
Thay vì làm cho dữ liệu ứng dụng có thể truy cập được trên toàn thế giới, hãy
sử dụng các nguyên tắc sau khi chia sẻ tệp:
Nếu ứng dụng của bạn cần chia sẻ tệp với một ứng dụng khác, hãy sử dụng
nhà cung cấp nội dung . Các nhà cung cấp nội dung chia sẻ dữ liệu với mức độ chi tiết
thích hợp và khơng có nhiều nhược điểm của các quyền UNIX có thể truy cập được
trên thế giới (để biết chi tiết, hãy tham khảo Kiến thức cơ bản về nhà cung cấp nội
dung ).
Nếu ứng dụng của bạn có các tệp thực sự có thể truy cập được với mọi người
(chẳng hạn như ảnh), thì chúng phải dành riêng cho phương tiện (chỉ ảnh, video và tệp
âm thanh) và được lưu trữ bằng lớp MediaStore . (Để biết thêm chi tiết về cách thêm
một mục phương tiện, hãy xem Truy cập tệp phương tiện từ bộ nhớ dùng chung .)
Quyền thời gian chạy Bộ nhớ kiểm soát quyền truy cập vào các bộ sưu tập
được đánh máy mạnh thông qua MediaStore .
2.2.3 Phân vùng hệ thống và Chế độ an toàn
Phân vùng hệ thống chứa nhân của Android cũng như các thư viện hệ điều
hành, thời gian chạy ứng dụng, khuôn khổ ứng dụng và các ứng dụng. Phân vùng này
được đặt thành chỉ đọc. Khi người dùng khởi động thiết bị vào Chế độ an tồn, chủ sở
hữu thiết bị có thể khởi chạy các ứng dụng của bên thứ ba theo cách thủ công nhưng
không được khởi chạy theo mặc định.
2.2.4 SELinux (Security-Enhanced Linux)
Là một phần của mơ hình bảo mật Android , Android sử dụng Linux được tăng
cường bảo mật (SELinux) để thực thi kiểm soát truy cập bắt buộc (MAC) trên tất cả
các quy trình, ngay cả các quy trình chạy với đặc quyền root / superuser (khả năng của
Linux). Với SELinux, Android có thể bảo vệ và hạn chế các dịch vụ hệ thống tốt hơn,
kiểm soát quyền truy cập vào dữ liệu ứng dụng và nhật ký hệ thống, giảm tác động của
16