2013-03-06 34 views
12

Tôi có câu hỏi nhanh:Bảo vệ dữ liệu iOS hoạt động như thế nào

Tôi đã tải xuống ứng dụng iOS sử dụng lớp NSFileProtectionComplete để bảo vệ tệp sqlite chứa thông tin nhạy cảm.

Theo tài liệu bảo mật iOS (http://images.apple.com/ipad/business/docs/iOS_Security_May12.pdf), khi thiết bị (iPhone/iPad) được ghép nối với máy tính xách tay, máy tính xách tay có được keybag ký quỹ từ thiết bị di động. Keybag chứa tất cả các khóa lớp cần thiết để giải mã thông tin trên thiết bị.

Tuy nhiên, tôi nhận thấy rằng khi tôi ghép nối thiết bị với máy tính xách tay và sử dụng iExplorer để duyệt hệ thống tệp, tệp sqlite chỉ khả dụng khi thiết bị được mở khóa. Khi điện thoại bị khóa (vẫn được ghép nối), tệp không thể đọc được. Các tập tin không sử dụng NSFileProtectionComplete có thể được xem trong khi thiết bị bị khóa.

Nếu keybag ký quỹ chứa tất cả các khóa lớp để giải mã thông tin, tại sao tôi phải mở khóa thiết bị để truy cập thông qua iExplorer?

Tôi đang sử dụng iOS 6.0 trên iPad3 và sử dụng công cụ ios-dataprotection (https://github.com/ciso/ios-dataprotection) để xác định lớp bảo vệ dữ liệu được sử dụng bởi các tệp.

ứng dụng iOS: AccountVault
File: PointMinder.sqlite

Bất kỳ trợ giúp sẽ được đánh giá cao.

Cảm ơn.

+1

quên đề cập rằng iPad được bảo vệ bằng mật khẩu. – Sec

+0

iExplorer có biết nơi để tìm keyrow ký quỹ và cụm từ mật khẩu dự phòng không? –

+0

iExplorer không thể truy cập vào hệ thống tệp nếu thiết bị không được ghép nối. Điều duy nhất thay đổi sau khi ghép nối thiết bị là keybag được chuyển qua. Vì vậy, tôi đoán rằng nó sử dụng keybag ký quỹ giống như iTunes để giải mã và đọc thông tin. – Sec

Trả lời

6

Từ tập tin tài liệu bạn đã liên kết:

Complete Protection (NSFileProtectionComplete): Chìa khóa lớp là bảo vệ với một chìa khóa từ mật mã người dùng và thiết bị UID. Ngay sau khi người dùng khóa thiết bị (10 giây, nếu cài đặt Yêu cầu Mật khẩu ngay lập tức), khóa lớp đã giải mã bị loại bỏ , khiến tất cả dữ liệu trong lớp này không thể truy cập được cho đến khi người dùng nhập lại mật mã.

Vì vậy, thiết bị sẽ được mở khóa nếu bạn muốn truy cập các tệp đó. Đó là cách Apple thực hiện nó.

Edit: Tìm thấy trong "Hacking và đảm bảo iOS Ứng dụng": Phím lớp

Protection là bậc thầy khóa mã hóa sử dụng để mở khóa tập tin dựa trên chính sách truy cập của họ. Lớp bảo vệ là cơ chế mã hóa được sử dụng để thực thi chính sách truy cập của tệp.

Một số tệp quan trọng đến nỗi hệ điều hành chỉ có thể giải mã chúng khi giao diện người dùng của thiết bị được mở khóa. Các khóa mã hóa của các tệp này được bao bọc bằng khóa lớp chỉ khả dụng sau khi người dùng đã nhập mật mã của mình. Khi thiết bị khóa lại, khóa sẽ bị xóa khỏi bộ nhớ, làm cho các tệp không khả dụng trở lại.

Khóa chính lớp bảo vệ được lưu trữ trong một ký quỹ được gọi là túi khóa. Túi khóa có chứa các khóa chính lớp bảo vệ được mã hóa cũng như các khóa khác cho tệp hệ thống trên thiết bị.Khóa hệ thống được mã hóa bằng cách sử dụng một khóa mã hóa khác có tên BAGI, cũng được lưu trữ trong kho lưu trữ có hiệu lực của NAND. Bất cứ khi nào người dùng xác thực để đáp ứng một chính sách bảo vệ cụ thể, các khóa mã hóa trong keybag có thể được giải mã.

Vì vậy, các khóa cho tệp đó được chuyển, nhưng được mã hóa. Khi bạn nhập mật mã, hệ điều hành giải mã khóa đó và sau đó nó có thể được sử dụng để giải mã các tệp được bảo vệ bằng khóa đó.

+0

Cảm ơn bạn đã trả lời. Tôi đã thử một thử nghiệm khác sau khi nhận xét của bạn: Sau khi ghép nối thiết bị với iTunes và mở khóa thiết bị, tôi đã mở iExplorer. Ở giai đoạn này, tệp sqlite có thể truy cập được - như ban đầu. Sau đó để thực hiện điều đó, tôi đã khóa thiết bị và chờ hơn 5 phút, và nhận thấy tệp sqlite vẫn có thể truy cập được. Thử nghiệm này không diễn ra như mong đợi. Tôi nên chỉ ra ở đây rằng thiết bị được thiết lập để mở khóa ngay lập tức, và các tập tin sqlite đang sử dụng NSFileProtectionComplete - tôi tăng gấp đôi kiểm tra nó. – Sec

+1

Theo tài liệu tôi đã giới thiệu: " Khi thiết bị khóa mật mã được kết nối đầu tiên với iTunes, người dùng được nhắc nhập mật mã. Thiết bị sau đó tạo một túi khóa Escrow và chuyển nó cho máy chủ. chính xác các phím lớp giống nhau được sử dụng trên thiết bị " Nó nói rằng tất cả các khóa lớp đều có trong túi khóa ký quỹ. Nếu tôi đã có tất cả các khóa lớp, tại sao nó sẽ yêu cầu mật mã để mở khóa khóa lớp? Nói cách khác, sự kết hợp của UID và mật mã là cần thiết để có được khóa lớp, nhưng tất cả các khóa lớp đã tồn tại trong keybag ký quỹ. – Sec

+2

Điều lạ lẫm là sau 5 phút vẫn có thể truy cập được. Có lẽ nó là một cái gì đó giống như phiên bản lưu trữ trong iExplorer (tôi đã không bao giờ sử dụng nó bản thân mình)? Ngoài ra: Khóa mỗi tệp được bao bọc bằng một trong nhiều khóa lớp, tùy thuộc vào các trường hợp mà tệp có thể truy cập được. Điều này có thể có nghĩa là không phải tất cả các khóa lớp đều được giải mã khi ghép nối. –

0

Điều này chỉ làm việc cho tôi đối với cơ sở dữ liệu SQLite trong ứng dụng của tôi, không phải cho các tài nguyên khác của tôi như tôi đã hy vọng. NHƯNG, tôi đã gặp vấn đề tương tự vẫn có thể truy cập cơ sở dữ liệu sau khi khóa thiết bị và đợi vài phút với iExplore vẫn mở và thiết bị vẫn được kết nối. Nếu tôi ngắt kết nối iPad và kết nối lại ngay, iExplore buộc phải làm mới tôi đoán và sau đó tôi KHÔNG thể truy cập cơ sở dữ liệu. Vì vậy, không chắc chắn nếu nó chỉ có thông tin cơ sở dữ liệu 'không được mã hóa' cũ trong bộ nhớ hoặc những gì.

Các vấn đề liên quan