Các sandbox này sẽ nằm trong phân vùng của người dùng.. secure element trong kernel, các crypto engine – thứ duy nhất truy cập được tới các khoá mã hoá của hệ thống..
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ
-🙠🕮🙠 -BÀI TẬP LỚN MÔN CƠ SỞ AN TOÀN THÔNG TIN
ĐỀ TÀI: TÌM HIỂU KIẾN TRÚC AN TOÀN CỦA HỆ ĐIỀU HÀNH IOS
Giáo viên hướng dẫn: Nguyễn Mạnh Thắng
Sinh viên: Nguyễn Thành Long (AT150133)
Trang 2Lời cảm ơn
Dưới đây là đề tài “Tìm hiểu kiến trúc an toàn của hệ điều
hành iOS” do em thực hiện.
Em chân thành cảm ơn thầy Nguyễn Mạnh Thắng đã dành nhiều thời gian và tâm huyết để giảng dạy kiến thức và giúp đỡ
em hoàn thành đề tài này
Trong thời gian thực hiện đề tài lần này do nhiều yếu tố dẫn đến không thể dành toàn bộ thời gian và tâm sức để làm đề tài lần này nên không thể tránh khỏi nhứng sai sót có thể xảy ra Kính mong thầy đóng góp ý kiến để em có thể củng cố và bổ sung kiến thức cho bản thân và rút ra kinh nghiệm cho lần làm bài tập lớn cũng như đồ án tốt nghiệp sau này
Em xin chân thành cảm ơn ạ!
Trang 3Mục lục
Lời cảm ơn 2
Lời mở đầu 4
I Thông tin chung về hệ điều hành iOS 5
II Mô hình cấu trúc bảo mật của iOS 6
1 Mô hình cấu trúc 6
2 Secure Enclave là gì? 7
III Bảo mật phần cứng 8
IV Secure Boot 8
V Code Signing 9
VI Mã hóa và bảo vệ dữ liệu 10
VII Sandbox 10
VIII Các hạn chế chung khác 11
IX Một số lỗ hổng trên hệ điều hành iOS của Apple 11
X Tổng kết 13
Trang 4Lời mở đầu
Trong sự phát triển vượt bậc của Công nghệ thông tin, điện thoại thông minh đã trở thành công cụ cần thiết cho mỗi người chúng ta Điện thoại thông minh không chỉ là phương tiện liên lạc mà còn trở thành một công cụ vô cùng hữu ích cho con người
Một trong những công ty nằm trong top đầu về phát triển điện thoại thông minh đó chính là Apple Dù Apple không phải công
ty tiên phong về mảng điện thoại mà xuất phát điểm lại là phát triển máy tính cá nhân nhưng hiện tại Apple đang là công ty sản xuất điện thoại lớn thứ ba thế giới chỉ sau Samsung và Huawei Đồng hành cùng Apple trong sự tăng tiến này chính là hệ điều hành do chính công ty tạo ra đó là iOS – hệ điều hành phổ biến thứ 2 Thế giới chỉ sau Android và có bảo mật được đánh giá là tốt nhất Thế giới
Vậy iOS là gì? Kiến trúc bảo mật của hệ điều hành iOS như thế nào?
Trang 5I Thông tin chung về hệ điều hành iOS
- iOS là một hệ điều hành điện thoại di động được phát triển bởi Apple và phân phối độc quyền cho phần cứng của Apple Đây là hệ điều hành chạy trên các sản phẩm iPhone, iPad và iPod Touch hiện tại đã phát triển đến IOS15 với giao diện và tính năng nổi bật
- iOS là một trong những hệ điều hành phổ biến nhất hiện này Một trong số những đặc điểm ưu việt thường được nhắc tới của hệ điều hành này là tính bảo mật (hay nói đúng hơn là ít các vụ tấn công bảo mật xảy ra)
- Khác với Android, iOS không phải là một hệ điều hành mã nguồn mở, và ban đầu nó không hỗ trợ các ứng dụng của bên thứ ba
- Các phần mềm (ứng dụng) trên iOS được người dùng tải về
từ App Store - kho ứng dụng của iOS, ngoài ra cũng có những kho ứng dụng không chính thống khác, mà đa phần được tải qua Cydia khi jailbreak máy
App Store là nền tảng phân phối kỹ thuật số các ứng dụng cho các thiết bị chạy hệ điều hành iOS , phát triển và duy trì bởi Apple App Store được coi như là tính năng bảo mật tốt nhất của Apple nhờ sự kiểm duyệt nội dung khắt khe với các ứng dụng được đăng lên; duy trì tính bảo mật và không chứa các ứng dụng gây hại cho phần cứng và phần mềm của thiết bị.
Cydia là phần mềm ứng dụng trên nền tảng iOS cho phép người dùng tìm kiếm và cài đặt gói phần mềm, phục vụ cho quá trình Jailbreak iOS , chiếm quyền điều khiển và phá rào cản, can thiệp vào hệ điều hành iOS
Jailbreak là quá trình loại bỏ các rào cản phần mềm được Apple áp đặt trên iOS
- Các phần mềm này được các nhà phát triển sử dụng ngôn ngữ lập trình Objective-C và sau này được thay thế bằng Swift
Trang 6II Mô hình cấu trúc bảo mật của iOS
Hình 1: Cấu trúc bảo mật của iOS
- Như từ hình trên có thể thấy, mỗi app sẽ được chạy trong một sandbox riêng của mình Trong đó có một lớp bảo mật dữ liệu (Data protection class) Các sandbox này sẽ nằm trong phân vùng của người dùng Các dữ liệu trong vùng này sẽ được áp dụng các thuật toán mã hoá của iOS
Sandbox là một kỹ thuật quan trọng trong lĩnh vực bảo mật có tác
dụng cô lập các ứng dụng, ngăn chặn các phần mềm độc hại để chúng không thể làm hỏng hệ thống
- Phân vùng này là một phần của file system bên cạnh phân vùng hệ điều hành (OS partition)
- Ngoài ra, việc bảo mật phần cứng và firmware của iOS cũng rất được chú trọng Như việc sử dụng các secure enclave và
Trang 7secure element trong kernel, các crypto engine – thứ duy nhất truy cập được tới các khoá mã hoá của hệ thống
- Cùng với đó, ở sâu nhất của hệ thống sẽ là các khoá thiết bị và khoá group sẽ nói tới ở phần sau cùng chứng chỉ root của Apple (Apple Root Certificate)
- Secure enclave: Các thiết bị của Apple có Touch ID và Face
ID sử dụng một bộ xử lý riêng để xử lý thông tin sinh trắc học của bạn và được gọi là secure enclave về cơ bản nó giống như một chiếc máy tính hoàn chỉnh và cung cấp nhiều tính năng bảo mật khác nhau
- Secure Enclave khởi động riêng biệt với phần còn lại của thiết bị Nó chạy kênh vi mô của riêng mình, kênh này không thể truy cập trực tiếp bởi hệ điều hành của bạn hoặc bất kỳ chương trình nào đang chạy trên thiết bị của bạn
- Thông tin sinh trắc học của bạn không được lưu trữ trên Secure Enclave; 4MB không đủ dung lượng lưu trữ cho tất cả dữ liệu đó Thay vào đó, Enclave lưu trữ các khóa mã hóa được sử dụng để khóa dữ liệu sinh trắc học đó Các khóa này là duy nhất cho thiết bị của bạn và không bao giờ được đồng bộ hóa với đám mây hoặc thậm chí được nhìn thấy trực tiếp bởi hệ điều hành chính của thiết bị của bạn Thay vào đó, hệ thống yêu cầu Secure Enclave giải mã thông tin bằng các khóa
- Secure Enclave khiến tin tặc rất khó giải mã thông tin nhạy cảm nếu không có quyền truy cập vật lý vào thiết bị của bạn vì hệ điều hành chính của bạn không bao giờ thực sự thấy các khóa giải mã, nên việc giải mã dữ liệu của bạn mà không có ủy quyền thích hợp là vô cùng khó khăn
Trang 8- Các chương trình của bên thứ ba cũng có thể tạo và lưu trữ các khóa trong enclave để khóa dữ liệu nhưng các ứng
dụng không bao giờ có quyền truy cập vào các chìa khóa mà
các ứng dụng đưa ra yêu cầu Mã hóa bảo mật để mã hóa và giải mã dữ liệu Điều này có nghĩa là bất kỳ thông tin nào được mã hóa bằng Enclave đều cực kỳ khó giải mã trên bất kỳ thiết
bị nào khác
- Với Secure enclave bạn sẽ không bao giờ trực tiếp xử lý khóa mà chỉ hướng dẫn nó tạo khóa lưu trữ an toàn và nhận kết quả đầu ra của hoạt động này có thể là dữ liệu được mã hóa hoặc chữ ký bảo mật
- Mỗi thiết bị iOS sẽ có 2 key mã hoá AES-256 bits built-in là
ID của thiết bị (UID) và ID của nhóm thiết bị (GID) Hai key ID này sẽ được đính vào trong Application Processor (AP) và Secure Enclave Processor (SEP) ngay từ quá trình sản xuất Các khoá này chỉ có thể đọc từ các crypto engine
- GID là giá trị được chia sẻ giữa các bộ xử lý của cùng một lớp thiết bị, dùng để chống làm giả các file firmware cũng như ngăn các tác vụ mã hoá khác truy cập tới các thông tin của người dùng Trong khi đó UID là giá trị độc nhất cho từng thiết
bị, dùng để bảo vệ hệ thống khóa trong mã hoá các tệp tin hệ thống ở cấp độ thiết bị Giá trị UID không được ghi lại trong quá trình sản xuất nên Apple cũng không thể recover lại được
IV Secure Boot
- Đầu tiên khi khởi động hệ thống iOS, hệ thống sẽ gọi tới Boot ROM, nơi chứa các đoạn code không thể sửa được cũng như là Apply CA (Được gắn trong 1 silicon chip) Tiếp theo,
Trang 9nếu kiểm tra chữ kí (signature) của Low Level Bootloader (LLB) đúng, đến lượt LLB kiểm tra chữ kí của iBoot bootloader Nếu chính xác, công việc tiếp theo sẽ chuyển tới cho iOS kernel Nếu như thất bại tại 1 bước nào đó, quá trình khởi động
sẽ ngay lập tức bị huỷ và chuyển qua revorery mode, nơi có dòng chữ “Connects to iTunes” Tuy nhiên, nếu như không khởi động được Boot ROM, nỗ lực cuối cùng của hệ thống sẽ là gọi tới Device Firmware Upgrade (DFU) để khởi tạo lại trạng thái nguyên thuỷ của hệ thống
- Quá trình trên gọi là Secure Boot Chain với sự tham gia của kernel, kernel extensions, bootloader và baseband firmware Mục đích của nó là đảm bảo tính toàn vẹn của quá trình khởi động, chắc chắn hệ thống và các thành phần được viết và phân phối bởi Apple
- Apple đã triển khai một hệ thống DRM phức tạp với 1 mục đích duy nhất là chỉ các thiết bị được kí bởi Apple mới có quyền chạy trên thiết bị của Apple Mục đích của việc này là để cho người dùng chỉ có thể cài đặt ứng dụng thông qua Apple app store Có thể nói không ngoa rằng iOS chính là một nhà tù pha lê tráng lệ của người dùng hệ thống này
- Ngoài ra, các lập trình viên có chứng chỉ của Apple có thể chạy được ứng dụng Các developer sẽ phải tham gia một chương trình đào tạo developer của Apple và phải trả phí hàng năm cho việc này Ngoài ra cũng có các tài khoản miễn phí cho phép compile và deploy ứng dụng, tuy nhiên không được up lên App Store Trên các thiết bị đã jailbreak, các ứng dụng còn có thể được cài đặt thông qua sideloading
Trang 10VI Mã hóa và bảo vệ dữ liệu
- Apple sử dụng một thuật toán gọi là Fairplay Code Encrypting Về cơ bản, nó được phát triển như một DRM cho các nội dung đa phương tiện được thanh toán qua iTunes Ban đầu nó được ứng dụng cho các luồng MPEG và QuickTime, tuy nhiên cũng có thể sử dụng cho các file thực thi Nguyên lý
cơ bản sẽ như thế này: Khi người dùng đăng kí một Apple ID, Apple sẽ tạo ra một bộ public/private key, trong đó private key được lưu an toàn tại thiết bị của người dùng Khi người dùng tải một ứng dụng về, nó sẽ được mã hoá bằng public key và giải mã trên memory khi chạy RAM) Vì private key lưu trên máy người dùng, chỉ có thiết bị liên kết với tài khoản mới có quyền chạy ứng dụng
- Apple sử dụng mã hoá trên phần cứng và firmware ngay từ những đời 3GS Mỗi thiết bị đều có mã hoá phần cứng dựa trên các thuật toán AES-256 và SHA1 Thêm nữa, mỗi thiết bị
sẽ có 1 UID gắn trên Application Processor (AP) UID này không được lưu tại bất cứ đâu khác và không thể truy cập tới (ngoại trừ các engine mã hoá)
VII Sandbox
- Sandbox là một tính năng cốt lõi của iOS security Nó đảm bảo rằng các ứng dụng sẽ chạy với quyền mobile và chỉ rất ít ứng dụng có thể chạy với quyền root Một ứng dụng sẽ nằm trong 1 container, thứ quy định nó chỉ có quyền truy cập tới file mà nó sở hữu cũng như một vài API nhất định Việc truy cập
Trang 11tới các tài nguyên như file, network socket, IPC hay shared memory sẽ bị kiểm soát bởi sandbox Cơ chế như sau:
Ứng dụng chỉ được chạy tại thư mục mà nó được cấp thông qua một chroot-like process
Các syscall mmap và mprotect được sửa đổi đôi chút nhằm ngăn chặn ứng dụng cố gắng tạo ra các vùng thực thi trên bộ nhớ cũng như dừng các tiến trình được sinh ra từ source code
Tất cả các tiến trình độc lập với nhau
Không thể trực tiếp truy cập tới các driver phần cứng mà phải thông qua framework của Apple
VIII Các hạn chế chung khác
- iOS cũng sử dụng thêm address space layout randomization (ASLR) và eXecute Never (XN) để hạn chế các tấn công thực thi code
- ASLR sẽ sinh ra các địa chỉ ngẫu nhiên cho các file thực thi, dữ liệu, heap và stack mỗi lần thực thi Vì các thư viện cần truy cập từ nhiều tiến trình nên địa chỉ sẽ được sinh ngẫu nhiên khi khởi động thiết bị Việc này sẽ khiến địa chỉ của các tiến trình rất khó đoán, hạn chế các tấn công thực thi cũng như các tấn công return-to-lib
- XN là một cơ chế để đánh dấu một vùng nào đó trên memory là không thể thực thi Trong iOS, heap và stack của các tiến trình người dùng sẽ được đánh dấu này Các trang được gắn nhãn writable thì không thể gắn executable tại cùng thời điểm Điều này giúp hạn chế việc chạy các đoạn mã máy trên heap và stack
Trang 12IX Một số lỗ hổng trên hệ điều hành iOS
của Apple
- Một hệ thống dù phát triển đến đâu vẫn không thể tránh khỏi một số lỗ hổng bảo mật Dưới đây là một số lỗ hổng đã bị tận dụng:
Vấn đề nhức nhối của Apple từ những thế hệ iOS đầu tiên đó chính là quá trình loại bỏ các rào cản phần mềm hay còn gọi là jailbreak Vì iOS là hệ điều hành mã nguồn đong với nhiều hạn chế nên jailbreak có thể cho phép người dùng tải xuống và sử dụng các ứng dụng bổ sung, phần mở rộng và giao diện không có trên App Store Jailbreak sử dụng một loạt các bản vá nhân hệ điều hành, cho phép truy cập root vào hệ thống iOS Mặc dù Apple đã cảnh báo về các lỗ hổng có thể xảy ra đồng thời liên tục ra các bản cập nhật để ngăn cản jailbreak tuy nhiên cộng đồng vẫn liên tục tìm cách bẻ khóa mà không có bất kì quy định pháp lý nào có thể can thiệp
Đội ngũ bảo mật Project Zero của Google từng phát hiện 2 lỗ hổng “zero-day”:
CVE-2019-7286 (ảnh hưởng lên một thành phần cốt lõi của hệ điều hành iOS là iOS Foundation Framework) Nếu khai thác thành công lỗ hổng này, tin tặc có thể chiếm quyền kiểm soát bộ nhớ và truy cập dữ liệu người dùng dễ dàng
CVE-2019-7287 (ảnh hưởng tới I/O Kit module- thành phần
xử lí các luồng dữ liệu giữa phần cứng và phần mềm) Các hacker có thể lợi dụng lỗi bộ nhớ để chạy các đoạn mã tùy biến với đặc quyền riêng của kernel nhằm truy cập được mọi thứ trên điện thoại của nạn nhân
Gần đây nhất một lố hổng đã được phát hiện trên iMessage (phần mềm nhắn tin mặc định trên iPhone) NSO Group- một tổ chức có trụ sở tại Israel, đã thực hiện thành