Hình 1.1th ut toỏn cp phỏt block ậấ

Một phần của tài liệu xây dựng chương trình bảo vệ dữ liệu trên môi trường không an toàn (Trang 88)

thuộc vùng trống này cho file Tìm vùng trống sao cho kích th ớc kt_bg (block) của nó nhỏ nhất thoả mãn: Kt_bg-so_block>0

Tìm đ ợc

Tìm vùng trống lớn nhất trong volume có kích th ớc kt_bl (block)

Cấp phát kt_bl block cho file; So_block=so_block-kt_bl;

Kết thúc Block_1= Số block chứa trong vùng trống

nằm ngay sau block cuối cùng đ ợc chỉ ra

+ + + - - -

Tong_kt phỏt thờmTổng kớch thước của file sau khi được cấp So_block

Số block cần cấp phỏt. Nó sẽ được trừ dần sau khi chương trỡnh cấp phỏt những tỡm được những vựng trống thoả món những điều kiện của thuật toỏn

Bl_hien_thoi

Số block hiện thời của file. Giỏ trị này được tớnh giỏn tiếp thụng qua kớch thước của file theo cụng thức tương tự nh tớnh so_block

Kich_thuoc_block

Kớch thước của 1 block (byte) được lưu trong bảng thụng tin volume

8.3.2.4 Nạp thụng tin block

Để thao tỏc trờn tầng này được nhanh chúng, khi volume được mở, chương trỡnh sẽ tiến hành nạp và xõy dựng một số cấu trỳc dữ liệu quan trọng sau:

Kết hợp cỏc bảng thụng tin trạng thỏi block địa phương lưu trong từng phõn vựng dữ liệu thành 1 bảng thụng tin trạng thỏi block tổng thể được lưu trong bộ nhớ. Danh sỏch này được cập nhật mỗi khi cỳ cỏc thao tỏc làm thay đổi trạng thỏi block.

Tạo cõy tỡm kiếm nhị phõn (T1) lưu cỏc vựng trống liờn tục trờn cỏc phõn vựng của volume (vựng trống liờn tục là một tập hợp cỏc block trong cựng 1 phõn vựng cú STT liờn tiếp nhau và đều ở trong trạng thỏi dỗi). Mỗi nút của cõy này cú 2 trường là STT của block đầu tiờn trong vựng trống và kớch thước (block) của vựng trống này. cỏc nút của cõy này được cập nhật mỗi khi cỳ cỏc thao tỏc làm thay đổi trạng thỏi block.

Tạo cõy tỡm kiếm nhị phõn (T2) lưu vị trớ cỏc vựng trống liờn tục trờn cỏc phõn vựng của volume. Mỗi nút của cõy này cú 2 trường là STT của block đầu tiờn trong vựng trống và nút tương ứng chứa thụng tin về vựng trống này trờn T1. Cỏc nỳt của cõy này cũng được cập nhật mỗi khi cỳ cỏc thao tỏc làm thay đổi trạng thỏi block.

Tớnh toỏn cỏc biến được sử dụng cho việc định vị cỏc đối tượng (trỡnh bày ở phần sau) và nạp một số đối tượng khỏc nhằm tăng tốc việc truy cập và bảo mật trờn volume ảo này.

Trong cỏc thụng tin trờn, cừy T1 cú một ý nghĩa quan trọng trong cỏc thuật toỏn cấp phỏp và giải phúng cỏc block, nó cho phộp ta cú thể tra cứu nhanh cỏc block cú kớch thước yờu cầu. Cõy T2 được sử dụng để tra lấy cỏc nỳt của T1 thụng qua vị trớ của chúng. Với việc tạo ra cỏc cấu trỳc trờn, cỏc thao tỏc trờn volume sẽ được tăng lờn đỏng kể bởi thay vỡ phải đọc chỳng trực tiếp trờn file chứa volume, chương trỡnh chỉ cần tra cứu chỳng trong cỏc cấu trỳc được lưu trong bộ nhớ.

8.3.3 Tầng truy cập file cơ bản

Bản chất của cỏc đối tượng trong hệ thống file chớnh là cỏc file. Thư mục chỉ là một file đặc biệt. Do đú tầng truy cập file cú chức năng cung cấp cỏc hàm vào ra cơ bản trờn file hiểu theo nghĩa tổng quỏt.

Với cấu trỳc volume ảo nh trờn thỡ một file hoàn toàn xỏc định khi ta biết được block đầu tiờn của file. Từ block này ta cú thể tỡm ra tất cả cỏc block tiếp theo của file thụng qua trạng thỏi của cỏc block tương ứng. Vỡ vậy ta cú thể dựng chớnh vị trớ của block này làm khúa (handle) để quản lý cỏc file. Cụ thể tầng truy cập file cơ bản đó sử dụng một cõy nhị phõn tỡm kiếm để quản lý cỏc file đang được mở. Mỗi nút của cõy này chứa cỏc thụng tin của 1 file đang được mở. Do được bố trớ theo cõy nhị phõn tỡm kiếm nờn việc tỡm kiếm cỏc handle được tiến hành rất nhanh.

Cỏc chức năng mà hệ thống cung cấp trờn tầng này gồm:

Mở file

Khi mở file, hệ thống sẽ nạp danh sỏch cỏc block mà file này được cấp phỏt vào một danh sỏch lưu trong bộ nhớ. Cụng việc này giỳp cho việc định vị cỏc block để đọc dữ liệu trờn file được thực hiện một cỏch nhanh chúng. Trong quỏ trỡnh thao tỏc file, nếu số lượng block cấp cho file bị thay đổi thỡ danh sỏch trờn

cũng sẽ được cập nhật đồng bộ với thao tỏc cấp phỏt hay giải phúng block tương ứng.

Đọc, ghi file

Cỏc hàm đọc ghi file trờn tầng này cho phộp đọc ghi file theo kớch thước khối dữ liệu bất kỳ. Từ thụng tin vị trớ cần đọc, hệ thống sẽ tớnh ra cỏc block chứa dữ liệu tương ứng cần đọc (ghi) và sử dụng những hàm đọc ghi theo block do tầng “quản lý block” cung cấp để thực hiện thao tỏc tương ứng. Sở dĩ ta cú thể đọc dữ liệu nhanh chúng trờn file này là vỡ ta cú thể định vị chớnh xỏc dữ liệu cần đọc trờn file lưu volume một cỏch đơn giản nh sau:

Giả sử danh sỏch STT cỏc block trờn là ds_block; vị trớ hiện tại của con trỏ file là vt_ht. Ta cần đọc s byte từ vị trớ này. Quỏ trỡnh đọc như sau:

Vt_ds=vt_ht div kt_block; Vt_dich= vt_ht mod kt_block;

So_bl_doc=(s+vt_dich) div kt_block;

Nếu (s+vt_dich) mod kt_block>0 thỡ So_block=so_block+1;

=> cần đọc so_bl_doc block cú STT là ds_block[vt_ds]; ds_block[vt_ds+1];..; ds_block[vt_ds+so_bl_doc-1];

Việc đọc cỏc block trờn rất nhanh nhờ cụng thức định vị cỏc block này trờn file chứa volume đó trỡnh bày ở trờn.

Thay đổi kớch thước file

Chức năng này được gọi theo 2 cỏch:

Trực tiếp: Khi người dựng trực tiếp yờu cầu hệ thống thay đổi kớch thước file. Giỏn tiếp: Khi ghi dữ liệu lờn file nhưng khối kớch thước cần ghi tại vị trớ con trỏ file hiện thời làm file khụng dủ chỗ để lưu khối dữ liệu đú. Trong trường hợp này, hệ thống sẽ tự động tăng kớch thước của file để đủ chỗ lưu khối thụng tin trờn

Quỏ trỡnh đúng file ngược với quỏ trỡnh mở file. Nú mở khoỏ file và những thư mục cú liờn quan đú khoỏ lại khi mở file. Nó giải phúng danh sỏch cỏc block đó được nạp trong quỏ trỡnh mở file.

8.3.4 Tầng dịch vụ

Chức năng của tầng dịch vụ là cung cấp cỏc hàm vào ra ở mứcgiao diện người dựng bao gồm:

Định danh file và thư mục bằng đường dẫn và tờn file (thay vỡ bằng vị trớ block đầu tiờn nh ở tầng trờn).

Quản lý cỏc khỳa file Thao tỏc trờn file

ỏp dụng cỏc thuật toỏn mó húa để đọc ghi dữ liệu trờn file căn cứ vào mức bảo mật của file đú.

8.3.4.1 Định vị, tỡm kiếm file và thư mục – Quy tắc đặt tờn file Định vị file:

Đối tượng lưu trữ trong volume chớnh là cỏc file và thư mục. Cỏc đối tượng này được định vị theo quy tắc đường dẫn +tờn file nh sau:

{1

|{ten_file}|

|{|:|{\}}|tm_1\|tm_2\|…|tm_n\|{ten_file}| |{vla_i:\}tm_1\}|tm_2\|…|tm_n\|{ten_file}| }

Cỏch viết 1 chỉ ra là file cú tờn ten_file nằm trờn thư mục hiện thời của volume. Cỏch viết 2 định vị file với đường dẫn đầy đủ

Cỏch viết 3 chỉ ra file cú tờn là ten_file nằm trờn đường dẫn nối tiếp từ đường dẫn của thư mục hiện thời.

1 {}: Ký hiệu bắt buộc phải có thành phần đó

Cả 3 cỏch viết này sẽ được chương trỡnh quy đổi thành đường dẫn đầy đủ cú dạng: |{vla_i}{tm_1\}|tm_2\|..|tm_n\|{ten_file}| trước khi tiến hành những thao tỏc khỏc.

Trong đú tm_1 nằm trờn thư mục gốc, tm_2 là thư mục con của tm_1,… Nếu trong cỏc sử dụng trờn mà tờn thư mục là “..” thỡ đường dẫn sẽ được lựi một mức tại vị trớ đỳ. vla_i là tờn của volume ảo thứ i đang được nạp vào hệ thống.

Vớ dụ: Giả sử thư mục hiện thời là tm_1\tm_2\tm_3. 1 file được xỏc định với đường dẫn là ..\..\tm_2\file_1 thỡ đường dẫn đầy đủ của file này là: tm_1\tm_2\file_1.

8.3.4.2 Quản lý khúa file

Mỗi file đều file cú thuộc tớnh truy cập khi mở. Cỏc thuộc tớnh này chớnh là cỏc khỳa file. Khúa này chỉ cú 2 kiểu (đọc và ghi). Căn cứ vảo kiểu khúa truy cập và trạng thỏi khúa hiện thời của file mà hệ thống sẽ cho phộp hay từ chối việc vào ra file.

8.3.4.3 Bảo mật dữ liệu

Việc truyền password và username khi đăng nhập volume được bảo vệ bằng mú khỳa cụng khai (RSA). Do vậy trỏnh được việc lấp cắp những thụng tin người dựng trong quỏ trỡnh đăng nhập.

8.3.4.4 Vào ra file Đọc thụng tin file

Muốn thao tỏc được trờn file ta cần phải đọc được thụng tin về file đú. Sau đõy là thuật toỏn đọc nội dung file khi đú biờt tờn và đường dẫn của nú dạng: tm_1\tm_2\..\tm_n\ten_file

Bước 1: Từ thụng tin về block đầu tiờn và kớch thước của thư mục gốc được lưu trong bảng thụng tin volume ta sẽ đọc được nội dung của thư mục này. Đọc cỏc

bản ghi lưu thụng tin file trong “file” này ta sẽ tỡm được thụng tin về thư mục tm_2.

Bước 2: Với thụng tin về thư mục tm_i vừa đọc được ta tỡm được block đầu tiờn và kớch thước của file lưu thụng tin về thư mục này. Làm tương tự nh bước 1 ta sẽ tỡm được thụng tin về thư mục tm_i+1. Lặp lại bước này cho đển khi i=n. Với thư mục tm_n vừa tỡm được ta tỡm trong file lưu nội dung của nú phần tử cú tờn là ten_file. Đừy chớnh là phần tử chứa thụng tin về file cần tỡm.

Tỡm kiếm file và thư mục:

Để hiển thị danh sỏch cỏc file và thư mục nằm trong một đường dẫn xỏc định, chương trỡnh cần phải hỗ trợ cỏc thao tỏc tỡm kiếm và lọc file cơ bản. Một phương phỏp truyền thống là sử dụng cỏc ký tự thường và ký tự đại diện (wild card) gồm 2 ký tự là “*” đại diện cho một nhúm ký tự và “?” đại diện cho một ký tự bất kỳ. Cú thể dựng một thuật toỏn đệ quy sau

Quy tắc đặt tờn file

Nh phần đầu đó trỡnh bày, mụ hỡnh của volume cho phộp người dựng cú thể tạo ra 1 file với tờn cỳ độ dài bất kỳ. Tuy nhiờn để cỏc thao tỏc định vị và tỡm kiếm khụng bị nhầm lẫn thỡ tờn file khụng được chứa những ký tự đặc biệt được sử dụng trong cỳ phỏp biểu diễn của cỏc thao tỏc đú. Mặt khỏc, hệ thống định vị file thụng qua tờn và đường dẫn của file. Vỡ vậy, tờn file phải được phõn biệt trong thư mục chứa nú. Những yờu cầu này dẫn tới tờn file phải được đặt theo những quy tắc sau:

Tờn file cú độ dài bất kỳ nhưng >0

Phõn biệt với tờn cỏc file và thư mục khỏc trong cựng thư mục chứa nú Khụng chứa cỏc ký tự đặc biệt là “*?/:”

Khụng trựng với xõu “..”

Cỏc tham số yờu cầu:

Tờn file (thư mục) cần tạo Đường dẫn

Thuộc tớnh

Kớch thước ban đầu

Thuật toỏn tạo file (thư mục) mới:

Bước 1: Kiểm tra sự hợp lệ của cỏc tham số đưa vào (tờn file đỳng quy tắc? Đường dẫn tồn tại? Thuộc tớnh chỉ gồm cỏc cờ cho phộp?) và kiểm tra thuộc tớnh chỉ_đọc của volume cú được tắt khụng. Nếu một trong những điều kiện trờn vi phạm thỡ kết thỳc và bỏo lỗi quỏ trỡnh tạo file. Nếu thoả món tất cỏc cỏc điều kiện trờn thỡ chuyển sang bước 2.

Bước 2: xõy dựng bảng mụ tả file với cỏc trường cú giỏ trị nh sau:

Tờn trường Giỏ trị

Ten Nếu tờn của file mới khụng quỏ 20 ký tự thỡ trường này được gỏn = tờn file mới. Nếu dài hơn hệ thống sẽ dành thờm một số Entry trong thư mục chứa file để lưu tờn này Thuoc_tinh = Thuộc tớnh của file mới đưa vào bởi tham số trờn

Kich_thuoc 0

Block_dau -1 (chưa cấp phỏt bất kỳ block nào cho file) Thoi_gian_tao = Thời điểm hiện tại

Thoi_gian_sua = thoi_gian_tao

Bi_xoa False

Bước 3: Dựng thuật toỏn định vị file trờn để mở file lưu nội dung của thư mục chứa file mới. Ghi bảng mụ tả file này vào cuối file.

Bước 4: Nếu kớch thước khởi tạo của file >0 thỡ gọi dịch vụ cấp phỏt block cho file này. Kết thỳc thành cụng việc tạo file mới.

8.3.4.6 Mở, đúng, đọc và ghi file Mở file

Đõy là thao tỏc đầu tiờn trước khi ta tiến hành bất kỳ một thao tỏc đọc ghi nào trờn file. Thao tỏc này yờu cầu cỏc tham số sau:

Tờn file Đường dẫn

Thuộc tớnh mở (chỉ đọc, đọc ghi)

Thao tỏc mở file được tiến hành thụng qua cỏc bước sau:

Bước 1: Kiểm tra cỏc tham số đầu vào (tờn file, đường dẫn phải tồn tại) và file đó bị khoỏ truy cập hay chưa. Nếu cỏc điều kiện trờn khụng thoả mún thỡ việc mở file sẽ bị huỷ bỏ. Ngược lại chuyển đến bước 2.

Bước 2: Xõy dựng một cấu trỳc bao gồm một bảng mụ tả file được đọc từ đĩa, danh sỏch cỏc phần tử chứa STT cỏc block theo thứ tự lưu trữ dữ liệu của file, thuộc tớnh truy cập và con trỏ file hiện thời (=0). Danh sỏch cỏch phần tử trờn cú thể dễ dàng xõy dựng bằng cỏch bắt đầu từ block đầu tiờn chứa dữ liệu của file, nó tham khảo bảng thụng tin trạng thỏi tổng thể đó được nạp vào bộ nhớ để xem block tiếp theo của file cú STT là bao nhiờu. Thờm những giỏ trị tỡm được trong quỏ trỡnh này vào danh sỏch cho tới khi tỡm được block cuối cựng của file.

Bước 3: Đăng ký khoỏ truy cập file này cựng cỏc thư mục cú liờn quan. Khi file được mở thỡ tất cả cỏc thư mục nằm trờn đường dẫn của nú đều bị khoỏ thay đổi tức là khụng thể đổi tờn hoặc xoỏ thư mục nằm trờn đường dẫn của file được mở. Đồng thời file được mở cũng bị khoỏ, tuỳ theo kiểu mở file mà file này được khoỏ với những khoỏ khỏc nhau. Nếu file chỉ mở để đọc thỡ nỳ bị khoỏ truy cập ghi thức là file này chỉ cú thể tiếp tục được mở để đọc nhưng khụng thể mở để ghi. Kiểu truy cập file là truy cập đọc-ghi thỡ nỳ sẽ bị khoỏ truy cập hoàn toàn tức là khụng thể mở file để đọc hoặc ghi thờm một lần nữa.

Đọc, ghi file

Nếu file được mở với thuộc tớnh đọc-ghi thỡ ta cú thể ghi dữ liệu trờn file này. quỏ trỡnh ghi cũng tương tự như qỳa trỡnh đọc trờn, chỉ khỏc là trước khi thực hiện quỏ trỡnh trờn hệ thống cầp tớnh toỏn xem kớch thước của file cú lớn lờn khụng. Nếu cú, nú sẽ kớch hoạt modul cấp phỏt block cho file và cập nhật nhanh những block mới được cấp phỏt cho file bằng việc tham khảo trạng thỏi của

block nhưng bắt đầu từ block cuối cựng trước khi mở rộng file. Sau đú nú thay đổi lại trường thoi_gian_sua để cập nhật thời gian cho lần thay đổi cuối cựng.

8.3.4.7 Copy, di chuyển, đổi tờn, xoỏ cỏc file và thư mục Copy

Thực chất của việc copy là việc tạo mới cỏc file hoặc thư mục và ghi lại nội dung từ nguồn của nú. Chỉ khỏc là nú giữ nguyờn giỏ trị của trường thoi_gian_sua trong bảng thụng tin mụ tả file.

Di chuyển

Việc di chuyển file (thư mục) được tiến hành thụng qua cỏc bước sau: Kiểm tra việc tồn tại của file nguồn và thư mục đớch, file khụng bị trựng tờn trờn thư mục đớch.

Kiểm tra file (thư mục) cú đang bị khoỏ hay khụng?

Đọc bảng mụ tả file của file tại thư mục nguồn và chốn vào cuối file lưu thụng tin của thư mục đớch

Đặt trường bi_xoa trong bảng mụ tả file của file tại thư mục nguồn =true. Trường này giỳp chỉ ra file (thư mục) đó vị xoỏ khỏi thư mục và bảng mụ tả này sẽ được dựng cho cỏc file được thờm mới vào thư mục sau này.

Đổi tờn

Thao tỏc này được thực hiện thụng qua một số bước sau:

Kiểm tra cỏc tham số đầu vào, tờn mới cú trựng với một tờn nào trong thư mục khụng?

Kiểm tra file (thư mục) cú đang bị khoỏ hay khụng?

Đọc bảng thụng tin mụ tả file của file tương ứng và sửa lại trường ten của bảng này.

Xoỏ:

Thao tỏc này được thực hiện thụng qua một số bước sau: Kiểm tra cỏc tham số đầu vào, file cần xoỏ cỳ tồn tại khụng? Kiểm tra file (thư mục) cú đang bị khoỏ hay khụng?

Một phần của tài liệu xây dựng chương trình bảo vệ dữ liệu trên môi trường không an toàn (Trang 88)

Tải bản đầy đủ (DOC)

(143 trang)
w