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

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

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 (1.8 MB, 37 trang )

MỤ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




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. Q trình mã hóa tập tin................................................................... 17
Hình 2.5. Q trình giải mã tập tin .................................................................. 18

i


LỜI MỞ ĐẦU
Hệ thống NTFS - New Technology File System là một hệ thống quản trị
tập tin hiện đại, với các tính năng hữu ích cho người dùng, trong đó có tính năng
mã hóa mạnh mẽ thư mục, tài liệu giúp bảo vệ dữ liệu người dùng, tránh việc
truy cập bất hợp pháp. Bài báo cáo sau đây của em xin trình bày về cơ chế mã
hóa trong hệ quản trị tập tin NTFS. Bài báo cáo gồm 3 phần sau đây:
Chươ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!

1



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).
1.1.2. Khái niệm
Trong máy tính, hệ thống quản trị tập tin – filesystem (hay còn gọi là hệ
thống tệp) là một phương pháp được sử dụng bởi hệ điều hành, quy định cách
các tệp được đặt tên và vị trí chúng được đặt sao cho hợp lý để lưu trữ và truy
xuất. Nếu khơng có hệ thống quản trị tập tin, thông tin được lưu trữ sẽ không
được tách biệt thành các tệp riêng lẻ và sẽ khó xác định và truy xuất. Khi dung
lượng dữ liệu tăng lên, việc tổ chức và khả năng truy cập của các tệp riêng lẻ
càng trở nên quan trọng hơn trong việc lưu trữ dữ liệu. Bằng cách tách dữ liệu
thành từng mảnh và đặt tên cho mỗi mảnh, thông tin dễ dàng được phân tách và
xác định.
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.

2


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
3


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.

4


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.
5


+ Phần mở rộng về bản ghi hệ thống tập tin, danh sách của kiểm soát truy
cập bảo mật – access control list-ACL.
+ Chúng rất quan trọng cho các phân vùng hệ thống, đặc biệt là tính năng
đặt quyền truy cập cho tập tin.
Bê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 tồ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.
6


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). Ngồ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 số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
7


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.
8


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 tố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.
9


 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 System là đị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
10


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 tốn dữ liệu có sẵn.
Hệ thống tệp của Apple ngun bản hỗ trợ mã hóa tồ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.

11


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.

12


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.

13


Hình 2.2. Cấu trúc của một MFT entry
2.1.3. Thuộc tính – Attributes
Attribute là một cấu trúc dữ liệu, được sử dụng để chứa nội dung của tập
tin, chứa các thông tin liên quan đến tập tin, thư mục,…v.v trong hệ thống
NTFS. Có nhiều loại attribute, mỗi loại có cấu trúc tổ chức riêng, có một mã loại
(type ID) riêng. Mã loại là một số nguyên. Microsoft sắp xếp thứ tự các attribute
trong mỗi MFT entry theo chiều tăng dần của mã loại, nghĩa là, attribute nào có
mã 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 – Thuộc tính tệp

Mơ tả


$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

$BITMAP

Các thuộc tính cho Bitmaps

$DATA

Chứa dữ liệu mặc định của tệp

$EA

Mở rộng chỉ mục của thuộc tính

$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.
14



$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 ở ngồ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ỏ.

15


Attribute lưu phần nội dung ở các cluster bên ngoài MFT entry được gọi

là non-resident attribute (attribute không thường trú).
2.2. Cơ chế mã hóa file
EFS – Encrypting File System hoạt động bằng cách mã hóa tệp bằng khóa
đối xứng, cịn được gọi là khóa mã hóa tệp hay FEK. Nó sử dụng thuật tốn mã
hóa đối xứng vì mất ít thời gian hơn để mã hóa và giải mã một lượng lớn dữ liệu
so với nếu sử dụng mật mã khóa bất đối xứng. Thuật tốn mã hóa đối xứng được
sử dụng sẽ khác nhau tùy thuộc vào phiên bản và cấu hình của hệ điều hành. Sau
đó FEK (khóa đối xứng được sử dụng để mã hóa tệp) được mã hóa bằng khóa
cơng khai được liên kết với người dùng đã mã hóa tệp và FEK được mã hóa này
được lưu trữ trong luồng dữ liệu thay thế của tệp được mã hóa.
Mã hóa tệp trong NTFS là tiến hành mã hóa dữ liệu được lưu trong
Attributes $DATA của tệp. Về mặt lý thuyết, tất cả các Attribute đều có thể mã
hóa được, tuy nhiên, Windows chỉ thực hiện mã hóa cho các attribute kiểu
$DATA. Khi thực hiện mã hóa một attribute $DATA, Windows chỉ thực hiện
mã hóa phần nội dung (content), phần header khơng được mã hóa. Khóa để giải
mã được lưu trong thuộc tính $LOGGED_UTILITY_STREAM.
Trong Windows người dùng có thể thực hiện mã hóa cho một thư mục
hoặc tập tin bất kì. Khi mã hóa thư mục, bản thân thư mục khơng được mã hóa,
chỉ có các tập tin trong thư mục được mã hóa. Các thư mục con và tập tin được
tạo trong các thư mục đã được mã hóa cũng sẽ được mã hóa. ―Cờ báo‖ mã
hóa của một tập tin, thư mục được lưu trong attribute
$STANDARD_INFORMATION, ngồi ra cịn được lưu trong chính header của
attribute được mã hóa.
Khi thực hiện mã hóa attribute $DATA, phần nội dung của attribute
$DATA được mã hóa bằng phương pháp mã hóa đối xứng (gọi tắt là DES). Hệ
thống sẽ sinh ra một khóa ngẫu nhiên cho mỗi MFT entry được mã hóa, khóa
này được gọi là FEK (file encryption key). Nếu một MFT entry có nhiều
attribute $DATA, thì chúng sẽ được mã hóa bằng cùng một FEK.
FEK cũng sẽ được mã hóa và lưu trong attribute $LOGGEDUTILITY_STREAM. Attribute này chứa một danh sách các DDF (data
decryption fields) và DRF (data recovery fields). Mỗi người dùng có quyền truy

cập tập tin đều có một DDF riêng, trong đó gồm: SID (security ID) của người
dùng, thơng tin về mã hóa, FEK đã được mã hóa bằng public key của người
dùng. Mỗi phương pháp khôi phục dữ liệu (data recovery) được hệ thống tạo
cho một DRF tương ứng, mỗi DRF gồm: FEK đã được mã hóa bằng public key
của phương pháp phục hồi dữ liệu. DRF được administrator hoặc các người
16


dùng hợp lệ sử dụng khi truy cập dữ liệu. Q trình mã khóa phần nội dung của
attribute $DATA (nội dung của tập tin) được minh họa trong hình dưới đây.

Hình 2.4. Q trình mã hóa tập tin
2.3. Cơ chế giải mã file
Để giải mã attribute $DATA, hệ thống sẽ:
 Đọc attribute $LOGGED_UTILITY_STREAM để xác định DDF
của người dùng.
 Sử dụng private key của người dùng để giải mã FEK.
 Sử dụng FEK để giải mã attribute $DATA.
Khi gỡ bỏ quyền truy cập tập tin của người dùng, key của người dùng sẽ
bị gỡ bỏ khỏi danh sách trong $LOGGED_UTILITY_STREAM.
Private key của người dùng được lưu trong registry của Windows. Private
key được mã hóa bằng thuật tốn mã hóa đối xứng với Key là mật khẩu đăng
nhập của người dùng. Vì vậy quá trình giải mã sẽ cần sử dụng tới mật khẩu đăng
nhập của người dùng và registry.

17


Quá trình giải mã được minh họa trong hình dưới đây:


Hình 2.5. Q trình giải mã tập tin
Một vài cơng cụ có thể thực hiện tấn cơng, dị tìm được mật khẩu của
người dùng, khi có mật khẩu, người tấn cơng có thể thực hiện giải mã các tập tin
đã được mã hóa. Trong q trình thực hiện mã hóa, NTFS sẽ tạo ra tập tin tạm
có tên EFS0.TMP. Tập tin EFSS0.TMP chứa nội dung của tập tin đang mã hóa.
Sau khi thực hiện mã hóa xong, NTFS thực hiện xóa tập tin này, tuy nhiên, nội
dung của nó vẫn còn tồn tại trên đĩa nếu MTF entry của EFS0.TMP chưa được
cấp phát lại. Trong swap space hoặc page file cũng có chứa nội dung của dữ liệu
ở dạng chưa mã hóa. Tài khoản Administrator, các tài khoản có quyền hợp lệ
trên domain controller nếu được cấu hình để khơi phục dữ liệu của hệ thống, đều
có thể thực hiển giải mã được các tập tin trên hệ thống.

18


Chương III. Minh họa các trường hợp truy cập vào file trên NTFS
3.1. Chuẩn bị công cụ và mô tả minh họa
- Máy ảo chạy Windows Server 2012, có IP: 192.168.1.2.
- Máy ảo chạy Windows XP, có IP: 192.168.1.20.
- Hai máy này có kết nối mạng LAN với nhau.
Mơ tả:
+ Tiến hành phân quyền truy cập cho người dùng, các nhóm người dùng
theo 2 quyền là NTFS permission và Share permission, tương ứng với các
trường hợp người dùng truy cập tại chỗ (Local Users) và người dùng truy cập từ
xa (Remote Users).
+ Thực hiện mã hóa file trong NTFS, phân quyền truy cập đến file được
mã hóa.
+ Ở đây, bài demo sử dụng 2 nhóm người dùng là Giangvien và Sinhvien.
Trong Giangvien có 2 user là Giangvien1, Giangvien2. Trong Sinh vien có 2
user là Sinhvien1, Sinhvien2.

3.2. Thực hiện phân quyền đối với Local User
- Thực hiện trên máy ảo Windows Server 2012, có IP: 192.168.1.2.
Các bước thực hiện:
- Tạo người dùng và nhóm người dùng để phân quyền truy cập
- Tạo dữ liệu lưu trữ để phân quyền
- Phân quyền truy cập tới dữ liệu đã tạo
- Kiểm tra kết quả
3.2.1. Tạo người dùng và nhóm người dùng để phân quyền truy cập
Bật Server Manager, chọn công cụ Tools ở góc bên phải phía trên.

19


Trong danh sách thả xuống chọn Computer Management:

Cửa sổ mới xuất hiện và chọn chức năng Local User and Groups như
hình dưới đây:

Trong mục Users lần lượt tạo các người dùng: giangvien1, giang
vien2, sinhvien1, sinhvien2.

Sau khi tạo xong sẽ xuất hiện 4 tài khoản như trên.

20


Trong mục Groups tiếp tục tạo 2 group là Giangvien và Sinhvien:

Sau khi tạo thành công sẽ xuất hiện 2 Group như trên. Hai group này sẽ
chứa các member là các người dùng giangvien1, giangvien 2 và sinhvien1,

sinhvien2.
3.2.2. Tạo dữ liệu để phân quyền truy cập
Trong phân vùng ổ E, tạo các thư mục Bai giang, Tai lieu, Thuc hanh cua
sinh vien:

Thư mục Bài giảng chứa bài giảng của mỗi giáo viên. Thư mục này chỉ
có thành viên trong nhóm Giáo viên mới được truy cập vào. Còn thành viên
trong nhóm sinh viên khơng được phép truy cập vào thư mục này. Trong thư
mục Bài giảng cũng tạo các thư mục con tương ứng cho mỗi giáo viên, và mỗi
giáo viên chỉ được phép truy cập vào thư mục tương ứng của mình. Tài khoản
quản trị Administrator có tồn quyền.
Thư mục Tài liệu dùng chung cho cả giáo viên và sinh viên. Trong thư
mục này tất cả các thành viên của 2 nhóm đều được phép truy cập vào. Nhưng
chỉ thành viên trong nhóm Giáo viên mới có quyền tạo, xóa, chỉnh sửa, sao
chép cịn thành viên trong nhóm sinh viên chỉ được phép đọc, sao chép.
Thư mục Thực hành sinh viên chứa bài thực hành cho sinh viên. Thư
mục này chứa các bài thực hành của sinh viên mà nhóm giáo viên có quyền
tạo, xóa, chỉnh sửa, sao chép và sinh viên quyền tạo, sao chép, đọc.

21


3.2.3. Thực hiện phân quyền truy cập tới các dữ liệu đã tạo
- Thư mục Bài giảng:
Chuột phải vào thư mục → Properties

Chọn tab Security → chọn Advanced:

22



×