Cơ chế mã hóa tập tin trong hệ quản trị tập tin NTFS - Báo cáo học phần mật mã ứng dụng
Trang 1MỤC LỤC
DANH MỤC HÌNH ẢNH i
LỜI MỞ ĐẦU 1
Chương I Tổng quan về các hệ quản trị tập tin có hỗ trợ mật mã 2
1.1 Tổng quan về hệ quản trị tập tin 2
1.1.1 Nguồn gốc ra đời 2
1.1.2 Khái niệm 2
1.1.3 Kiến trúc 3
1.2 Một số hệ quản trị tập tin có hỗ trợ mật mã 3
1.2.1 Hệ thống quản trị tập tin NTFS 3
1.2.2 Một số hệ quản trị tập tin của Linux 7
1.2.3 Hệ quản trị tập tin AFS – Apple File System của MacOS 10
Chương II Cơ chế mã hóa – giải mã file trong NTFS 12
2.1 Một số khái niệm liên quan đến hệ thống tệp NTFS 12
2.1.1 Luồng dữ liệu 12
2.1.2 MFT – Master File Table 13
2.1.3 Thuộc tính – Attributes 14
2.2 Cơ chế mã hóa file 16
2.3 Cơ chế giải mã file 17
Chương III Minh họa các trường hợp truy cập vào file trên NTFS 19
3.1 Chuẩn bị công cụ và mô tả minh họa 19
3.2 Thực hiện phân quyền đối với Local User 19
3.2.1 Tạo người dùng và nhóm người dùng để phân quyền truy cập 19
3.2.2 Tạo dữ liệu để phân quyền truy cập 21
3.2.3 Thực hiện phân quyền truy cập tới các dữ liệu đã tạo 22
3.2.4 Kiểm tra kết quả 27
3.3 Thực hiện phân quyền với Remote User 28
3.4 Thực hiện mã hóa một thư mục trên phân vùng NTFS 30
KẾT LUẬN 33
TÀI LIỆU THAM KHẢO 34
Trang 3i
DANH MỤC HÌNH ẢNH
Hình 1.1 Phân vùng được chia ở định dạng NTFS trên Windows 5
Hình 2.1 Luồng dữ liệu thay thế 12
Hình 2.2 Cấu trúc của một MFT entry 14
Hình 2.3 Cấu trúc một Attribute 15
Hình 2.4 Quá trình mã hóa tập tin 17
Hình 2.5 Quá trình giải mã tập tin 18
Trang 4Chương 1: Tổng quan về các hệ quản trị tập tin có hỗ trợ mật mã
Chương 2: Cơ chế mã hóa – giải mã trong hệ quản trị tập tin NTFS
Chương 3: Minh họa trường hợp file được truy cập bởi 1 người dùng và nhiều người dùng
Trong quá trình nghiên cứu, do tài liệu còn hạn chế, do nhiều nguyên nhân chủ quan và khách quan nên bài báo cáo của em không tránh khỏi sai sót
Em mong được thầy chỉ dẫn, đưa ra những ý kiến quý báu giúp em hoàn thiện tốt hơn bài báo cáo
Em xin chân thành cảm ơn!
Trang 52
Chương I Tổng quan về các hệ quản trị tập tin có hỗ trợ mật mã
1.1 Tổng quan về hệ quản trị tập tin
1.1.1 Nguồn gốc ra đời
Trước khi sự ra đời của máy tính, hệ thống tập tin đã được sử dụng để mô
tả một phương pháp lưu trữ và lấy tài liệu giấy Đến năm 1961, thuật ngữ này đã được áp dụng cho việc quản lý trên máy vi tính cùng với nghĩa gốc Đến năm
1964, nó được sử dụng chung
Nhiều hệ điều hành bao gồm hỗ trợ cho nhiều hơn một hệ thống file Đôi khi hệ điều hành và hệ thống file được đan xen chặt chẽ đến mức khó có thể tách rời các chức năng của hệ thống file
Cần phải có một giao diện được cung cấp bởi phần mềm hệ điều hành giữa người dùng và hệ thống file Giao diện này có thể là văn bản (như được cung cấp bởi giao diện dòng lệnh, chẳng hạn như shell Unix hoặc OpenVMS DCL) hoặc đồ họa (như được cung cấp bởi giao diện người dùng đồ họa, như trình duyệt file)
Thuật ngữ này cũng được sử dụng để chỉ một phân vùng hoặc ổ đĩa được
sử dụng để lưu trữ các tập tin hoặc loại hệ thống tập tin
Có một số loại hệ thống tệp, tất cả đều có cấu trúc và thuộc tính logic khác nhau, chẳng hạn như tốc độ và kích thước Loại hệ thống tệp có thể khác nhau tùy theo hệ điều hành và nhu cầu của hệ điều hành đó, chẳng hạn như Microsoft Windows, MacOS và các hệ thống dựa trên Linux hay hệ điều hành di động bao gồm Apple iOS và Google Android Một số hệ thống tệp được thiết kế cho các ứng dụng cụ thể Các loại hệ thống tệp chính bao gồm hệ thống tệp phân tán, hệ thống tệp dựa trên đĩa và hệ thống tệp mục đích đặc biệt
Trang 63
Một số loại hệ thống quản trị tập tin đặc trưng ở các hệ điều hành như: FAT32, exFAT, NTFS của Windows; Minix, Xia, Ext3, Ext2 của Linux; APFS – Apple File system của MACOS,… hay đến các loại hệ thống tệp đặc biệt như ISO 9660 được thiết kế dành riêng cho đĩa quang
1.1.3 Kiến trúc
Một hệ thống quản trị tập tin bao gồm hai hoặc ba lớp Đôi khi các lớp được phân tách rõ ràng và đôi khi các chức năng được kết hợp, đan xen với nhau
Hệ thống file logic chịu trách nhiệm tương tác với ứng dụng người dùng
Nó cung cấp giao diện chương trình ứng dụng (API) cho các thao tác với file OPEN, CLOSE, READ, v.v và chuyển thao tác được yêu cầu đến lớp bên dưới
-để xử lý Hệ thống file logic "quản lý mở các mục trong bảng file và mô tả file theo quy trình." Lớp này cung cấp "quyền truy cập file, hoạt động thư mục, bảo mật và bảo vệ."
Lớp tùy chọn thứ hai là hệ thống file ảo "Giao diện này cho phép hỗ trợ nhiều phiên bản đồng thời của các hệ thống file vật lý, mỗi phiên bản được gọi
là triển khai hệ thống file."
Lớp thứ ba là hệ thống file vật lý Lớp này liên quan đến hoạt động vật lý của thiết bị lưu trữ (ví dụ: đĩa) Nó xử lý các khối vật lý đang được đọc hoặc ghi
Nó xử lý bộ đệm và quản lý bộ nhớ và chịu trách nhiệm cho việc đặt các khối vật lý vào các vị trí cụ thể trên phương tiện lưu trữ Hệ thống tệp vật lý tương tác với trình điều khiển thiết bị hoặc với kênh để điều khiển thiết bị lưu trữ
1.2 Một số hệ quản trị tập tin có hỗ trợ mật mã
1.2.1 Hệ thống quản trị tập tin NTFS
1.2.1.1 Lịch sử ra đời
Vào giữa thập niên 1980, Microsoft và IBM thành lập một dự án hợp tác
để ra hệ điều hành đồ họa thế hệ tiếp theo Kết quả của dự án là OS/2, nhưng cuối cùng Microsoft và IBM bất đồng về nhiều vấn đề quan trọng và sau đó đã chia rẽ OS/2 tiếp tục là một dự án của IBM Còn Microsoft bắt đầu phát triển hệ điều hành Windows NT Hệ thống tập tin HPFS của OS/2 có một số tính năng mới quan trọng Khi Microsoft tạo ra hệ điều hành mới, họ đã vay mượn nhiều khái niệm cho NTFS Có lẽ do có chung nhiều khái niệm nên HPFS và NTFS có cùng mã phân loại nhận dạng phân vùng ổ đĩa (07) Có cùng một số nhận dạng
là không bình thường khi có tới hàng chục mã có sẵn, và các hệ thống tập tin ổ đĩa lớn khác có mã của riêng chúng FAT có hơn 9 mã (mỗi mã cho FAT12, FAT16, FAT32, vân vân) Các thuật toán trong đó xác định hệ thống tập tin trong một kiểu phân vùng 07 phải thực hiện kiểm tra bổ sung Đây cũng rõ ràng
Trang 74
rằng NTFS cũng dùng chung thiết kế kiến trúc cho Files-11 được sử dụng bởi VMS Điều này hầu như không đáng ngạc nhiên khi Dave Cutler là người đứng đầu của cả VMS và Windows NT
Từ khi ra đời cho đến nay, NTFS đã được Microsoft phát hành ra thị trường với 5 phiên bản, trong đó gồm có:
+ Giữa năm 1993, Microsoft phát hành phiên bản 1.0 (V1.0) với tên gọi NT3.1
+ Cuối năm 1994, Microsoft phát hành phiên bản 1.1 (V1.1) với tên gọi NT3.5
+ Giữa hai năm 1995 với 1996, Microsoft đã phát hành phiên bản 1.2 (V1.2) với tên gọi NT3.51 và NT4 Hai phiên bản này, đôi khi còn được gọi với cái tên khác là ―NTFS 4.0‖ bởi phiên bản của OS là 4.0
+ Phiên bản 3.0 (V3.0), Windows 2000 (NTFS V5.0)
+ Phiên bản 3.1 (V3.1), Windows XP (NTFS V5.1 – Mùa thu năm 2001); Windows Server 2003 (còn được gọi là NTFS V5.2 – mùa xuân 2003); Windows Vista (ra đời giữa năm 2005 – còn được gọi là NTFS V6.0) rồi Windows Server 2008
1.2.1.2 Khái niệm, đặc điểm
NTFS (New Technology File System) là hệ thống tập tin trên Windows,
sử dụng để định dạng cho 1 phân vùng, ổ cứng, thiết bị lưu trữ được kết nối với máy tính
Khi cài đặt Windows thì mặc định ổ đĩa cài Windows sẽ là NTFS Kích thước file và dung lượng tối đa của phân dùng dùng NTFS rất lớn về mặt lý thuyết NTFS lần đầu xuất hiện trên Windows NT 3.1 và đến với người dùng cá nhân trên phiên bản thương mại của Windows XP
Trang 85
Hình 1.1 Phân vùng được chia ở định dạng NTFS trên Windows
NTFS thay thế hệ thống tập tin FAT vốn là hệ thống tập tin ưa thích cho các hệ điều hành Windows của Microsoft NTFS có nhiều cải tiến hơn FAT
và HPFS (High Performance File System - Hệ thống tập tin hiệu năng cao) như
hỗ trợ cải tiến cho các siêu dữ liệu và sử dụng các cấu trúc dữ liệu tiên tiến để cải thiện hiệu suất, độ tin cậy, và sử dụng không gian ổ đĩa, cộng thêm phần mở rộng như các danh sách kiểm soát truy cập bảo mật (access control list-ACL) và bản ghi hệ thống tập tin
Một số tính năng hiện đại của NTFS có thể kể đến là các tính năng về bảo mật như:
+ Đặt quyền truy cập cho tập tin
+ Ghi nhận những thay đổi dữ liệu giúp dễ dàng phục hồi nếu máy tính gặp sự cố
+ Tạo các bản sao (copy) dành cho sao lưu (backup)
+ Mã hoá (encryption); đặt hạn ngạch đĩa (disk quota limit) cùng một số tính năng khác
Trang 9Bên cạnh các tính năng, ưu điểm, NTFS vẫn tồn tại 1 số những hạn chế:
Tên tập tin dành riêng: Mặc dù hệ thống tập tin hỗ trợ đường dẫn lên đến
khoảng 32.767 ký tự Unicode với mỗi thành phần đường dẫn (thư mục hoặc tên tập tin) có tới 255 ký tự chiều dài, như vậy sẽ có tên nào đó không sử dụng được, vì NTFS lưu siêu dữ liệu của mình trong các tập tin bình thường (mặc dù
ẩn và cho hầu hết các phần không có); theo đó các tập tin người dùng không thể
sử dụng các tên này Những tập tin này tất cả đều có trong thư mục gốc của một
ổ đĩa (và chỉ dành riêng cho thư mục đó) Các tên: $MFT, $MFTMirr, $LogFile,
$Volume, $AttrDef, $Bitmap, $Boot, $BadClus, $Secure, $Upcase, và $Extend;
và $Extend đều lưu trong cả các thư mục và các tập tin khác
Kích thước ổ đĩa tối đa: Theo lý thuyết, ổ đĩa NTFS tối đa có 264−1
cluster Tuy nhiên, kích thước ổ đĩa NTFS tối đa trên Windows XP Professional
là 232−1 cluster Ví dụ, bằng cách sử dụng 64 KiB cluster, kích thước ổ đĩa NTFS tối đa sẽ là 256 TiB trừ 64 KiB Sử dụng kích thước cluster mặc định là 4 KiB, kích thước ổ đĩa NTFS tối đa là 16 TiB trừ 4 KiB (cả hai lớn hơn nhiều so với giới hạn 128 GiB tăng thêm trong Windows XP SP1) Bởi vì các bản phân vùng trên ổ đĩa bản ghi khởi động chủ (MBR) chỉ hỗ trợc kích thước phân vùng lên tới 2 TiB, ổ đĩa GPT hay động có thể sử dụng để tạo ra các ổ đĩa NTFS khởi động trên 2 TiB
Kích thước tập tin tối đa: Theo lý thuyết là 16 EiB trừ 1 KiB (264 − 210
hay 18.446.744.073.709.550.592 bytes) Thực tế: 16 TiB trừ 64 KiB (244 − 216 hay 17.592.185.978.880 bytes)
Các dòng dữ liệu luân phiên: các lệnh hệ thống Windows có thể xử lý
các dòng dữ liệu luân phiên Tùy thuộc vào hệ điều hành, tiện ích và hệ thống tập tin xa, một chuyển giao tập tin có thể âm thầm tách các dòng dữ liệu Một cách an toàn của các tập tin di chuyển hay sao chép là sử dụng các lệnh hệ thống BackupRead và BackupWrite, cho phép các chương trình đếm dòng, để xác minh xem từng dòng nên được khi vào ổ đĩa đích hay chủ định bỏ qua các dòng
vi phạm
Chiều dài đường tối đa: một đường tuyệt đối có thể lên đến 32.767 ký tự
chiều dài; một đường tương đối được giới hạn trong 255 ký tự Trong trường hợp xấu nhất này có nghĩa độ sâu tối đa là 128 thư mục, nhưng trong thực thế giới hạn này hiếm khi được thực hiện
Trang 107
Miền thời gian: NTFS sử dụng cách tính thời gian như trong Windows
NT: nhãn giờ 64 bit với phạm vi từ 1 tháng 1 năm 1601 đến 28 tháng 5 năm
60056 với độ chính xác 10 triệu tích tắc (107) trong một giây (tức là 100 nano giây cho mỗi tích tắc) Tuy nhiên trong thực tế, đồng hồ hệ thống không cung cấp độ chính xác như vậy, và chỉ có độ chính xác nhất được giữ (thường là 10 giây mà không hỗ trợ phần cứng thêm vào cho đồng hồ hệ thống tốt hơn) Ngoài
ra, không phải tất cả các nhãn giờ có độ chính xác này: trong các thuộc tính tiêu chuẩn (tương thích với các ứng dụng DOS và Windows 95/98/ME), độ chính xác thấp hơn nhiều, và ngày truy cập cuối (nếu nó chưa được vô hiệu hóa trong các thiết lập đăng ký hệ thống) không phải luôn luôn được báo cáo ngay lập tức cho hệ thống tập tin và được làm tròn trong khoảng lớn hơn
Thiếu độ dư thừa: NTFS không giữ bản sao dự phòng của tập tin MFT có
chứa các tham chiếu đến tập tin nào được lưu trữ trên phân vùng đó Nếu MFT
bị hư hại, mọi dữ liệu sẽ không thể khôi phục lại được Kể từ khi chỉ sao lưu dữ liệu này, ảnh MFT, không chứa tất cả các mục của MFT, nó có thể không thể sử dụng bản thân nó để phục hồi dữ liệu quan trọng
Tuy nhiên, các nền tảng hỗ trợ khá hạn chế NTFS (MAC OS chỉ đọc, không thể ghi, Linux thì chỉ một số phiên bản có thể đọc/ghi)
1.2.2 Một số hệ quản trị tập tin của Linux
1.2.2.1 Hệ quản trị tập tin ZFS
ZFS - Zettabyte File System được Sun Microsystems giới thiệu lần đầu
tiên vào năm 2005 như một hệ thống quản lý dữ liệu kết hợp giữa khả năng quản
lý dung lượng cao và sự linh hoạt Hoạt động trên nền tảng công nghệ RAID, ZFS cho phép người dùng tạo và quản lý dữ liệu theo sự phân cấp Định dạng này được tích hợp các tính năng mức doanh nghiệp như snapshot và thuật toán checksum
ZFS cung cấp khả năng lưu trữ dữ liệu và siêu dữ liệu gần như không giới hạn Nó có thể quản lý tới 1 tỷ terabyte dữ liệu Để tổ chức dữ liệu đó, ZFS sử dụng một cấu trúc cây linh hoạt trong đó mỗi hệ thống mới là một tệp con của
hệ thống trước đó ZFS cho phép người dùng di chuyển các tệp này bất cứ nơi nào và thậm chí gắn chúng vào ZFS trên các điểm bên ngoài điểm chính Người dùng có thể tách các tệp con khỏi các hệ thống cha, quản lý không gian đĩa theo thứ bậc và xem toàn bộ cây bằng một lệnh duy nhất
Về cơ bản, ZFS cho phép các nhà quản lý dữ liệu tổ chức và kiểm soát lượng thông tin khổng lồ một cách dễ dàng Với một lệnh, người dùng có thể định vị lại một cây con, sao lưu hoặc nhân bản một cây con hoặc chụp nhanh hệ thống tệp ZFS và tất cả các phần tử con của nó với nhau Tính năng tự động gắn
Trang 118
kết của ZFS có nghĩa là các tệp được gắn kết ngay khi chúng vào hệ thống mặc
dù người dùng có thể ghi đè lệnh này Hơn nữa, nó tự động theo dõi không gian tệp đã sử dụng, tăng tốc các hoạt động của hệ thống và cung cấp cho người dùng một bản cập nhật gần như tức thì về những gì mà xảy ra với dữ liệu được lưu trữ
Với Oracle Solaris, khả năng mã hóa trong ZFS được nhúng vào đường dẫn I / O Trong khi ghi, một khối có thể được nén, mã hóa, tổng kiểm tra và sau
đó được khử trùng lặp, theo thứ tự đó Chính sách mã hóa được đặt ở cấp tập dữ liệu khi tập dữ liệu (hệ thống tệp hoặc ZVOL) được tạo Các khóa gói do người dùng / quản trị viên cung cấp có thể được thay đổi bất kỳ lúc nào mà không cần
sử dụng hệ thống tệp ngoại tuyến Hành vi mặc định là để khóa gói được kế thừa bởi bất kỳ tập dữ liệu con nào Các khóa mã hóa dữ liệu được tạo ngẫu nhiên tại thời điểm tạo tập dữ liệu Chỉ các bộ dữ liệu con (ảnh chụp nhanh và bản sao) mới chia sẻ khóa mã hóa dữ liệu Lệnh chuyển sang khóa mã hóa dữ liệu mới cho bản sao hoặc bất kỳ lúc nào được cung cấp — điều này không mã hóa lại dữ liệu đã có, thay vào đó sử dụng cơ chế khóa chính được mã hóa Kể từ năm
2019, tính năng mã hóa cũng được tích hợp đầy đủ vào OpenZFS 0.8.0 có sẵn cho các bản phân phối Debian và Ubuntu Linux
1.2.2.2 Hệ quản trị tập tin Ext4
Hệ thống file nhật ký ext4 hoặc Hệ thống file mở rộng thứ tư là một hệ thống file nhật ký cho Linux, được phát triển như là sự kế thừa cho ext3 Đây
là hệ thống file mặc định cho hầu hết các bản phân phối Linux.Ext4 ban đầu là một loạt các phần mở rộng tương thích ngược với ext3, nhiều phần mở rộng ban đầu được phát triển bởi Cluster File Systems cho hệ thống file Luster giữa năm
2003 và 2006, nhằm mở rộng giới hạn lưu trữ và thêm các cải tiến hiệu suất khác Tuy nhiên, các nhà phát triển nhân Linux khác phản đối việc chấp nhận các phần mở rộng cho và đề nghị fork mã nguồn của ext3, đổi tên nó thành ext4,
và thực hiện tất cả sự phát triển đó, mà không ảnh hưởng đến người dùng ext3 hiện tại Đề xuất này đã được chấp nhận và vào ngày 28 tháng 6 năm 2006, Theodore Ts'o, người duy trì ext3, đã công bố kế hoạch phát triển mới cho ext4 Phiên bản phát triển sơ bộ của ext4 đã được đưa vào phiên bản 2.6.19 của nhân Linux Ngày 11 tháng 10 năm 2008, các bản vá đánh dấu ext4 là mã ổn định đã được hợp nhất trong kho lưu trữ mã nguồn Linux 2.6.28,biểu thị sự kết thúc của giai đoạn phát triển và khuyến nghị áp dụng ext4 Kernel 2.6.28, chứa hệ thống file ext4, cuối cùng đã được phát hành ngày 25 tháng 12 năm 2008 Ngày 15 tháng 1 năm 2010, Google đã thông báo rằng họ sẽ nâng cấp cơ sở hạ tầng lưu trữ của mình từ ext2 lên ext4 Ngày 14 tháng 12 năm 2010, Google cũng tuyên
bố sẽ sử dụng ext4, thay vì YAFFS, trên Android 2.3
Trang 129
Ext4 bao gồm các đặc điểm, tính năng đặc trưng như:
+ Hệ thống file lớn: Hệ thống file ext4 hỗ trợ các phân vùng có kích
thước lên tới 1 exbibyte (EiB) và các file đơn lẻ có kích thước tới 16 tebibytes (TiB) với block size 4 KiB tiêu chuẩn Giới hạn kích thước file, thư mục và kích thước hệ thống file tối đa tăng theo tỉ lệ với block size hệ thống file lên đến kích thước block 64 KiB tối đa có sẵn trên CPU ARM và PowerPC/Power ISA
+ Tương thích ngược: ext4 tương thích ngược với ext3 và ext2, làm cho
nó có thể mount ext3 và ext2 giống như ext4.Điều này sẽ cải thiện hiệu suất một chút, bởi vì một số tính năng mới của việc triển khai ext4 cũng có thể được sử dụng với ext3 và ext2, chẳng hạn như thuật toán phân bổ block mới, mà không ảnh hưởng đến định dạng trên đĩa
+ Không giới hạn số lượng thư mục con: Ext4 không giới hạn số lượng
thư mục con trong một thư mục, ngoại trừ bởi giới hạn kích thước vốn có của chính thư mục đó (Trong ext3 một thư mục có tối đa 32000 thư mục con) Để cho phép các thư mục lớn hơn và tiếp tục hoạt động, ext4 trong Linux 2.6.23 trở lên, kích hoạt mảng HTree (một phiên bản đặc biệt của B-tree) theo mặc định, cho phép các thư mục được lưu trữ trong khoảng 10-12 triệu mục trong mục lục 2-level HTree và và giới hạn kích thước thư mục 2GB cho kích thước block 4 KiB, tùy thuộc vào độ dài tên file Trong Linux 4.12 trở lên tính năng largedir kích hoạt một 3-level HTree và kích cỡ thư mục trên 2GB, cho phép khoảng 6 tỷ mục trong một thư mục
+ Kiểm tra nhật ký: ext4 dùng checksums trong nhật ký để cải thiện độ
tin cậy, vì nhật ký là một trong những file được sử dụng nhiều nhất của đĩa Tính năng này có một lợi ích phụ: nó có thể tránh sự chờ đợi I/O của đĩa trong quá trình ghi nhật ký, cải thiện hiệu suất một chút Kiểm tra nhật ký được lấy cảm hứng từ một bài báo nghiên cứu từ University of Wisconsin, có tên là IRON File Systems (cụ thể, phần 6, được gọi là "kiểm tra giao dịch"), với các sửa đổi trong việc thực hiện các giao dịch hỗn hợp được thực hiện bởi hệ thống file IRON (ban đầu được đề xuất bởi Sam Naghreezeh trong hội nghị thượng đỉnh RedHat)
+ Kiểm tra siêu dữ liệu
+ Mã hóa trong suốt (Transparent Encryption): Hỗ trợ mã hóa trong
suốt đã được thêm vào Linux kernel 4.1 vào tháng 6 năm 2015 Mã hóa ext4 hoạt động trên cơ sở từng thư mục Lúc đầu, một chính sách mã hóa được áp dụng cho một thư mục trống Chính sách chỉ định thông tin cơ bản như:
Thông tin phiên bản
Mật mã được sử dụng để mã hóa tên tệp
Trang 1310
Mật mã được sử dụng để mã hóa nội dung tệp
Độ dài của phần đệm cho tên tệp (4, 8, 16 hoặc 32)
Bộ mô tả 8 byte được sử dụng để xác định vị trí khóa chính trong khóa người dùng
1.2.2.3 Hệ quản trị tập tin F2FS
F2FS - Flash-Friendly File Systemlà định dạng hệ thống thân thiện được phát triển bởi SamSung cho nhân hệ điều hành Linux Mục tiêu F2FS là xây dựng hệ thống File mới tận dụng đặc tính của bộ nhớ lưu trữ dạng NAND flash, chẳng hạn như ổ SSD, chip nhớ eMMC trên điện thoại, thẻ SD
F2FS được xây dựng dựa trên Log-structured File System (LFS), một loại
hệ thống tập tin mà trong đó, tất cả những sự thay đổi xảy ra với dữ liệu và metadata (dữ liệu dùng để mô tả cho một dữ liệu khác) sẽ được ghi liên tục theo một luồng tiếp diễn, gọi là một log Samsung thiết kế F2FS để giải quyết những hạn chế cơ bản hiện đang tồn tại trong LFS, đó là đôi khi tốc độ đọc bị chậm do
sự phân mảnh và tài nguyên bị sử dụng nhiều hơn bình thường Samsung đã bổ sung cho F2FS nhiều tham số khác nhau để cấu hình việc bố cục dữ liệu, thiết lập phương pháp phân bố tập tin và tạo ra những thuật toán để dọn dẹp bộ nhớ Tất cả đều đảm bảo tối ưu hóa cho ổ nhớ NAND flash
1.2.3 Hệ quản trị tập tin AFS – Apple File System của MacOS
Hệ thống tệp của Apple là hệ thống tệp độc quyền dành cho MacOS High Sierra (10.13) trở lên, iOS 10.3 trở lên, tvOS 10.2 trở lên, watchOS 3.2 trở lên,
và tất cả các phiên bản iPadOS, được phát triển và được triển khai bởi Apple Inc Nó nhằm mục đích khắc phục các vấn đề cốt lõi của HFS + (còn gọi là Mac
OS Extended), tiền thân của APFS trên các hệ điều hành này Hệ thống tệp của Apple được tối ưu hóa để lưu trữ ổ đĩa thể rắn và flash, với trọng tâm chính là
mã hóa
Hệ thống tệp của Apple đã được công bố tại hội nghị các nhà phát triển của Apple (WWDC) vào tháng 6 năm 2016 để thay thế cho HFS +, đã được sử dụng từ năm 1998 APFS được phát hành cho các thiết bị iOS 64 bit vào ngày
27 tháng 3 năm 2017, với việc phát hành iOS 10.3 và cho các thiết bị macOS vào ngày 25 tháng 9 năm 2017, với việc phát hành macOS 10.13 Apple đã phát hành một phần thông số kỹ thuật cho APFS vào tháng 9 năm 2018, hỗ trợ quyền truy cập chỉ đọc vào Hệ thống tệp của Apple trên các thiết bị lưu trữ không được
mã hóa, không phải Fusion Đặc điểm kỹ thuật cho mã hóa phần mềm đã được ghi lại sau đó
Hệ thống tệp có thể được sử dụng trên các thiết bị có dung lượng lưu trữ tương đối nhỏ hoặc lớn Nó sử dụng số inode 64-bit, và cho phép lưu trữ an toàn
Trang 1411
hơn Mã APFS, giống như mã HFS +, sử dụng lệnh TRIM, để quản lý không gian và hiệu suất tốt hơn Nó có thể làm tăng tốc độ đọc-ghi trên iOS và macOS, cũng như dung lượng trên thiết bị iOS, do cách APFS tính toán dữ liệu có sẵn
Hệ thống tệp của Apple nguyên bản hỗ trợ mã hóa toàn bộ đĩa và mã hóa tệp với các tùy chọn sau:
+ Không có mã hóa
+ Mã hóa một khóa
+ Mã hóa nhiều khóa, trong đó mỗi tệp được mã hóa bằng một khóa riêng biệt và siêu dữ liệu được mã hóa bằng một khóa khác
Trang 1512
Chương II Cơ chế mã hóa – giải mã file trong NTFS
2.1 Một số khái niệm liên quan đến hệ thống tệp NTFS
2.1.1 Luồng dữ liệu
Luồng là một chuỗi các byte Trong hệ thống tệp NTFS, các luồng chứa
dữ liệu được ghi vào tệp và cung cấp nhiều thông tin về tệp Ví dụ: bạn có thể tạo luồng có chứa từ khóa tìm kiếm hoặc danh tính của tài khoản người dùng tạo tệp
Tất cả các tệp trên ổ đĩa NTFS bao gồm ít nhất một luồng là luồng chính đối với tệp bình thường, trong đó có dữ liệu được lưu trữ Tên đầy đủ của một luồng có dạng dưới đây: <filename>:<stream name>:<stream type>
Luồng dữ liệu thay thế - Alternative Data Stream là một tính năng mới của hệ thống NTFS, có chứa siêu dữ liệu Các luồng dữ liệu thay thế (ADS) là một tính năng ẩn dữ liệu duy nhất của hệ thống tệp NTFS Tệp trong NTFS bao gồm luồng dữ liệu chính, chưa được đặt tên nơi dữ liệu thực sự được chứa ($Data) và luồng dữ liệu thay thế có thể lưu trữ siêu dữ liệu bổ sung Nó cho phép lưu trữ thông tin bổ sung (ví dụ: Hai tệp văn bản hoặc một văn bản và hình ảnh đồng thời) trong một tệp duy nhất
Hình 2.1 Luồng dữ liệu thay thế
Các hoạt động tệp như sao chép và xóa hoạt động với luồng mặc định Khi hệ thống nhận được yêu cầu xóa luồng mặc định của tệp, hệ thống sẽ xóa tất
cả các luồng thay thế được liên kết
Trang 1613
2.1.2 MFT – Master File Table
Master File Table (MFT) là trung tâm của hệ thống NTFS vì nó chứa thông tin về tất cả các tệp và thư mục Khi đĩa được định dạng theo NTFS, Microsoft sẽ khởi tạo MFT với kích thước nhỏ nhất có thể, sau này sẽ mở rộng thêm khi có nhu cầu Cách làm này giúp tăng tính linh hoạt của hệ thống NTFS, MFT có thể mở rộng một cách dễ dàng khi người dùng tăng dung lượng của ổ đĩa logic Mọi tệp và thư mục đều có ít nhất một mục để ghi lại (MFT entry - bản ghi) vào MTF Các bản ghi có kích thước cố định và chỉ chứa một số trường MFT được xem là điểm bắt đầu để đi đến các tập tin trên một ổ đĩa logic, có thể xem nó như là ―mục lục‖ của ổ đĩa logic
MFT được chia nhỏ thành các phần bằng nhau gọi là MFT entry Kích thước của một MFT entry được quy định trong BPB, thường là 1024 byte Khi một tập tin hoặc thư mục được tạo ra, sẽ có ít nhất một MFT entry được tạo ra trong MFT, để mô tả thông tin cho tập tin hoặc thư mục đó
Trong các hệ thống của Microsoft, MFT entry sẽ không bị xóa, khi đã được tạo ra Ví dụ, khi người dùng tạo tập tin A, một MFT entry cho tập tin A sẽ được tạo ra trong MFT Khi tập tin A bị xóa, hệ thống sẽ không xóa MFT entry thuộc về tập tin A, mà nó chỉ đánh dấu MFT entry đó là chưa có tập tin nào sử dụng và có thể cấp cho các tập tin khác MFT bản chất là một tập tin, do vậy cũng có một MFT entry mô tả cho chính nó, đó chính là MFT entry đầu tiên trong MFT, có tên là $MFT $MFT mô tả về kích thước và tổ chức của MFT
Có hai loại MFT entry:
+ MFT entry cho tập tin siêu dữ liệu (metadata file): chứa các thông tin
mô tả về cấu trúc tổ chức của hệ thống NTFS
+ MFT entry cho tập tin dữ liệu (data file): chứa thông tin mô tả cho các tập tin dữ liệu, có thể chứa cả phần dữ liệu của tập tin
Windows dành một số MFT entry đầu tiên trong MFT cho các tập tin siêu
dữ liệu Các MFT entry còn lại cho các tập tin dữ liệu
MFT entry gồm hai thành phần: Header và các Attribute
+ Header gồm 42 byte đầu tiên được sử dụng để chứa một số thông tin mô
tả cho MFT entry
+ Phần còn lại của MFT entry được sử dụng để chứa các Attribute Nếu các attribute không sử dụng hết 1024 byte, hệ thống sẽ sử dụng giá trị 0xffffffff
để đánh dấu kết thúc
Trang 17mã loại nhỏ sẽ đứng trước, attribute nào có mã loại lớn sẽ đứng sau
Các attribute quan trọng thường sử dụng mã loại mặc định, tuy nhiên mã này có thể được định nghĩa lại trong siêu tập tin $AttrDef Mỗi loại attribute cũng có một tên gọi riêng, tên gọi được viết hoa toàn bộ, bắt đầu bằng kí hiệu $
Bảng dưới đây liệt kê một số loại Attribute
$ATTRIBUTE_LIST Liệt kê vị trí của tất cả các bản ghi thuộc
tính không phù hợp với bản ghi MFT
$FILE_NAME
Chứa tên tập tin (dạng Unicode), thời gian tạo, thời điểm ghi tập tin mới nhất, thời điểm truy cập mới nhất
$LOGGED_UTILITY_STREAM
Sử dụng bởi hệ thống mã hóa của tệp Chứa khóa (key) và thông tin mã hóa attribute (encrypted attribute) trong các phiên bản từ 3.0 về sau
Trang 1815
$STANDARD_INFORMATION
Chứa thông tin chung, ví dụ: các cờ, thời gian tạo, thời gian truy cập mới nhất, thời gian ghi mới nhất, người sở hữu, định danh bảo mật (security ID)
Hình 2.3 Cấu trúc một Attribute
+ Attribute header: Tiêu đề thuộc tính xác định loại thuộc tính, kích thước
và tên của thuộc tính đó Nó cũng chứa cờ để xác định xem giá trị được nén hay
mã hóa
+ Attribute content: Phần nội dung của Attribute được sử dụng để chứa dữ liệu ở định dạng bất kì, với kích thước bất kì Ví dụ, Attribute chứa nội dung của một tập tin có thể có kích thước từ vài MB tới hàng GB Tuy nhiên, kích thước của một MFT entry chỉ là 1024 byte, nên việc chứa toàn bộ nội dung của attribute trong MFT entry là không thực tế
Để giải quyết vấn đề này, hệ thống NTFS cung cấp hai tùy chọn để lưu nội dung của attribute:
+ Lưu trực tiếp trong MFT entry,
+ Và lưu ở ngoài MFT entry
Attribute có phần nội dung được lưu ngay trong MFT entry được gọi là resident attribute (attribute thường trú), thường áp dụng với các attribute có kích thước phần nội dung nhỏ