Mã hóa và chữ ký số
Các hệ mật mã đóng một vai trò rất quan trọng trong quá trình phát triển công nghệ thông tin Các hệ mật riêng lẻ nh hệ mã hoá khoá đối xứng, hệ mã hoá khoá công khai, các hệ hàm băm mật mã đều có những đặc trng nhất định Ngoài việc sử dụng riêng lẻ các hệ mật trên theo đúng t tởng thiết kế của chúng thì việc kết hợp chúng với nhau để tạo thành các giao thức hoặc các ứng dụng trong những trờng hợp đặc biệt có thể nói là một nghệ thuật Để trình bày cơ sở của hệ thống này, sau đây ta điểm qua một số vấn đề của lý thuyết mã hóa và chữ ký số hiện đại,phục vụ cho việc bảo vệ chơng trình và dữ liệu.
Một số kiến thức toán học cơ sở
Thuật toán và độ phức tạp
1.1.1 Thuật toán Định nghĩa 1.1: Thuật toán bao gồm một quy tắc để với những dữ liệu ban đầu đã cho ta tìm đợc lời giải của bài toán đợc xét sau một khoảng thời gian hữu hạn
Nh vậy, thuật toán phải thoả mãn 2 yêu cầu:
1) Tính hữu hạn: Thuật toán cần phải kết thúc sau một số hữu hạn bớc Khi thuật toán ngừng làm việc, ta phải thu đợc câu trả lời cho vấn đề đặt ra.
2) Tính xác định: ở mỗi bớc, thuật toán cần phải xác định, nghĩa là chỉ rõ việc cần làm Nếu đối với ngời đọc, nếu cha thoả mãn trên cha thoả mãn điều kiện này thì đó là lỗi của ngời viết.
Ngoài ra, ta còn phải xét đến tính hiệu quả của thuật toán, có nhiều thuật toán về lý thuyết là kết thúc sau hữu hạn bớc, tuy nhiên thời gian hữu hạn đó vợt quá khả năng làm việc của chúng ta ( Ví dụ: 100 năm) Các thuật toán loại này không đợc xét đến ở đây
1.1.2 Độ phức tạp của thuật toán
Thời gian làm việc của máy tính khi chạy một thuật toán không chỉ phụ thuộc vào thuật toán mà còn phụ thuộc vào máy tính đợc sử dụng Do đó, xét một tiêu chuẩn chung để đo độ phức tạp của thuật toán đó là dựa vào số thao tác cơ sở phải làm khi thực hiện thuật toán.
Giả sử f(n) và g(n) là hai hàm xác định trên tập hợp các số nguyên dơng Ta nói f(n) có bậc O-lớn của g(n), và viết f(n)=O(g(n)) hoặc f=O(g), nếu tồn tại một số C > 0 sao cho với n đủ lớn, các hàm f(n) và g(n) đều dơng, đồng thời f(n) < Cg(n). Định nghĩa 1.2: Một thuật toán đợc gọi là có độ phức tạp đa thức theo cỡ (dữ liệu) n , hoặc có thời gian đa thức, nếu số các phép tính cần thiết khi thực hiện thuật toán không vợt quá O(n d ), trong đó n là độ lớn của đầu vào, và d là số nguyên dơng nào đó
Nh vậy, nếu đầu vào là các số k-bit thì thời gian thực hiện thuật toán là đa thức bậc d theo k nghĩa là là O(k d ), tức là tơng đơng với một đa thức của k (bậc d).
Các thuật toán với thời gian O(α n ), α >1 , đợc gọi là các thuật toán với độ phức tạp mũ, hoặc thời gian mũ.
Các thuật toán có độ phức tạp trung gian giữa đa thức và mũ đợc gọi là thuật toán dới mũ.
Phép tính đồng d và các vấn đề liên quan
Ký hiệu Z là tập các số nguyên: …,-2,-1,0,1,2,… và N là tập các số tự nhiên (tức là các số nguyên dơng: 1,2,3…).
Với a, b ∈ Z ta nói rằng b chia hết cho a nếu nh b có thể viết thành tích của a với một số nguyên khác; khi ấy ta cũng có thể nói rằng a chia hết b, hay a là một ớc số của b, và ký hiệu a | b.
Ta cã mét sè tÝnh chÊt:
4) Nếu a | b và a không chia hết c thì a không chia hết b ± c; Định nghĩa 1.3: Số tự nhiên lớn hơn 1 mà không chia hết cho số tự nhiên nào khác, trừ chính nó và 1, thì đợc gọi là số nguyên tố
Nếu p là một số nguyên tố thì ta sẽ sử dụng ký hiệu p α || b để chỉ rằng p α | b nhng p α+1 không chia hết b. Định lý 1.1 Mọi số nguyên lớn hơn 1 đều có thể phân tích một cách duy nhất dới dạng tích các luỹ thừa của các số nguyên tố khác nhau Nếu p là một số nguyên tố và p | ab thì ít nhất một trong 2 số a,b phải chia hết cho p ớc chung lớn nhất của hai số tự nhiên a,b là số lớn nhất trong tập các ớc chung của 2 số đó, đợc ký hiệu là gcd( a, b) hay đơn giản là (a,b)
Khi hai số tự nhiên có ớc chung lớn nhất là 1 thì chúng đợc gọi là nguyên tố cùng nhau.
1.2.2 Thuật toán Euclid và mở rộng
Giả sử m là một số nguyên dơng ta nói hai số nguyên a và b đồng d với nhau modulo m nếu m chia hết hiệu a-b ( Tức là m | gcd(a,b)) Ký hiệu là a ¿ b(mod m).
Nh vậy, a ¿ b(mod m) khi và chỉ khi tồn tại số nguyên k sao cho a=b+km. để tìm gcd( a,b) có một thuật toán nổi tiếng đó là thuật toán Euclid.
B0: Nếu a 4 x 10 26 dẫn đến việc vét cạn khoá của mã thay thế là một điều hết sức khó khăn Tuy nhiên, với phơng pháp tấn công theo xác suất mã thay thế vẫn không đủ đảm bảo an toàn.
Cho P =C = Z26 K chứa mọi hoán vị có thể của 26 kí hiệu 0,1, ,25
Với mỗi phép hoán vị K , ta định nghĩa: e(x) = (x) và d(y) = -1 (y)
Mã Affine
Giống nh mã dịch vòng mã Affine cũng là trờng hợp đặc biệt của mã thay thế Hàm giải mã của hệ mã Affine nh sau: e(x) = ax + b mod 26
Nếu a= 1 hệ mã Anffine chính là hệ mã dịch vòng. Để có thể giải mã thành công các hệ số a,b của hệ Affine phải thoả mãn yêu cầu sau: ∀ y ∈ Z26 luôn ∃ x để ax+b ¿ y (mod 26) tơng đơng: ax ¿ y-b (mod 26).
Do y-b ∈ Z26 nên đặt y-b=Y ta có đồng nhất thức: ax ¿ Y (mod 26).
Xét x là biến thì phơng trình đồng d trên có nghiệm duy nhất x phụ thuộc Y khi và chỉ khi gcd(a,26) = 1.
Do 26 x 3 nên các giá trị có thể của a là 1, 3, 5, 7, 9,
11, 13, 15, 17, 19, 21, 23 và 25 Tham số b ∈ Z26 Vì vậy, số khoá của hệ mã Anffine là 26 x 1212. Đây là một con số nhỏ nên hệ mật Anffine không đảm bảo an toàn.
Mã Vigenère
Trong cả hai hệ mã dịch vòng và mã thay thế mỗi ký tự sẽ đợc ánh xạ vào một ký tự duy nhất theo khoá Vì lý do đó, các hệ mật còn đợc gọi hệ thay thế đơn biểu Bây giờ ta sẽ trình bày một hệ mật không phải là bộ chữ đơn, đó là hệ mã Vigenère nổi tiếng Mật mã này lấy tên của Blaise de Vigenère sống vào thế kỷ XVI.
Ta thấy rằng các từ khoá có thể với số độ dài m trong mật mã Vigenère là 26 m , bởi vậy, thậm chí với các giá trị m khá nhỏ, phơng pháp tìm kiếm vét cạn cũng yêu cầu thời gian khá lớn Ví dụ, nếu m = 5 thì không gian khoá cũng có kích thớc lớn hơn 1,1 10 7 Lợng khoá này đã đủ lớn để ngăn ngừa việc tìm khoá bằng tay.
Trong hệ mật Vigenère có từ khoá độ dài m, mỗi ký tự có thể đợc ánh xạ vào trong m ký tự có thể có (giả sử rằng từ khoá
Cho m là một số nguyên dơng cố định nào đó Định nghĩa P =
C = K = (Z26) m Với khoá K = (k1, k2, ,km) ta xác định : eK(x1, x2, ,xm) = (x1+k1, x2+k2, , xm+km) và dK(y1, y2, ,ym) = (y1-k1, y2-k2, , ym-km) trong đó tất cả các phép toán đợc thực hiện trong Z26 chứa m ký tự phân biệt) Một hệ mật nh vậy đợc gọi là hệ mật thay thế đa biểu (polyalphabetic) Nói chung, việc thám mã hệ thay thế đa biểu sẽ khó khăn hơn so việc thám mã hệ đơn biÓu.
Mật mã Hill
Trong phần này sẽ mô tả một hệ mật thay thế đa biểu khác đợc gọi là mật mã Hill Mật mã này do Lester S.Hill đa ra năm 1929 Giả sử m là một số nguyên dơng, đặt P = C = (Z26)m ý tởng ở đây là lấy m tổ hợp tuyến tính của m ký tự trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử của bản mã.
Nói chung, có thể lấy một ma trận K kích thớc m m làm khoá Nếu một phần tử ở hàng i và cột j của K là ki,,j thì có thể viết K = (ki,,j), với x = (x1, x2, ,xm) P và K K , ta tính y eK(x) = (y1, y2, ,ym) nh sau:
Nói một cách khác y = xK.
Chúng ta nói rằng bản mã nhận đợc từ bản rõ nhờ phép biến đổi tuyến tính Ta sẽ xét xem phải thực hiện giải mã nh thế nào, tức là làm thế nào để tính x từ y Bản mã đợc giải mã bằng công thức y K -1 k1,1 k1,2 k1,m k2,1 k2,2
Nh vậy, không gian khoá chính là các ma trận cấp m có ma trận nghịch đảo Sau đây là mô tả của hệ mật Hill:
Việc tấn công hệ mật Hill là rất khó khăn tuy nhiên bằng ph- ơng pháp tấn công bản rõ thì khoá của hệ mật đợc tìm một cách rất dễ dàng.
Thám mã dùng m cặp vectơ khác nhau xj = (x1,j, x2,j, , , xm,j) và yj = (y1,j, y2,j, ,ym,j) (1 j m) sao cho yj = eK(xj), 1 j m Nếu xác định hai ma trận: X = (xi,j) Y = (yi,j) cấp mm thì ta có phơng trình ma trận Y = XK, trong đó ma trận K cấp mm là khoá cha biết Với điều kiện ma trận Y là khả nghịch.
Ta có thể tính K = X -1 Y và nhờ vậy phá đợc hệ mật.
Cho m là một số nguyên dơng có định Cho P = C = (Z26 ) m và cho
K = { các ma trận khả nghịch cấp m m trên Z26} Với một khoá K K ta xác định eK(x) = xK và dK(y) = yK -1
Các hệ mã dòng khoá
Trong các hệ mật nghiên cứu ở trên, các phần tử liên tiếp của bản rõ đều đợc mã hoá bằng cùng một khoá K Tức xâu bản mã y nhạn đợc có dạng: y = y1y2 = eK(x1) eK(x2 )
Các hệ mật thuộc dạng này thờng đợc gọi là các mã khối khoá. Một quan điểm sử dụng khác là mật mã dòng khoá ý tởng cơ bản ở đây là tạo ra một dòng khoá z = z1z2 và dùng nó để mã hoá một xâu bản rõ x = x1x2 theo quy tắc: y = y1y2 = ez1(x1) ez2(x1)
Mã dòng khoá hoạt động nh sau Giả sử K K là khoá và x x1x2 là xâu bản rõ Hàm fi đợc dùng để tạo zi (zi là phần tử thứ i của dòng khoá) trong đó fi là một hàm của khoá K và i-1 là ký tự đầu tiên của bản rõ: zi = fi (K, x1 , , xi -1 )
Phần tử zi của dòng khoá đợc dùng để mã xi tạo ra yi = eiz(xi).Bởi vậy, để mã hoá xâu bản rõ x1 x2 ta phải tính liên tiếp:z1, y1, z2 , y2
Việc giải mã xâu bản mã y1y2 có thể đợc thực hiện bằng cách tính liên tiếp: z1, x1, z2 , x2
Sau đây là định nghĩa dới dạng toán học: Định nghĩa 1.5: Mật mã dòng khoá là một bộ
(P,C,K,L,F,E,D) thoả mãn dợc các điều kiện sau:
1) P là một tập hữu hạn các bản rõ có thể.
2) C là tập hữu hạn các bản mã có thể.
3) K là tập hữu hạn các khoá có thể ( không gian khoá)
4) L là tập hữu hạn các bộ chữ của dòng khoá.
5) F = (f1 f2 ) là bộ tạo dòng khoá Với i 1
7) Với mỗi z L có một quy tắc mã ez E và một quy tắc giải mã tơng ứng dz D ez : P C và dz : C P là các hàm thoả mãn dz(ez(x))= x với mọi bản rõ x P.
Ta có thể coi mã khối khoá là một trờng hợp đặc biệt của mã dòng khoá trong đó dùng khoá không đổi: Zi = K với mọi i 1.
Một hệ mã dòng khoá đợc gọi là tuần hoàn với chu kỳ d nếu zi+d= zi với số nguyên i 1 Mã Vigenère với độ dài từ khoá m có thể coi là mã dòng khoá tuần hoàn với chu kỳ m Trong trờng hợp này, khoá là K = (k1, km ) Bản thân K sẽ tạo m phần tử đầu tiên của dòng khoá: zi = ki, 1 i m Sau đó dòng khoá sẽ tự lặp lại.
Có rất nhiều phơng pháp để tạo ra dòng khoá từ khoá ban đầu.
Ta xem xét một phơng pháp tạo một dòng khoá Giả sử bắt đầu với (k1, , km ) và zi = ki, 1 i m, ta tạo dòng khoá theo một quan hệ đệ quy tuyến tính cấp m: z i+m =∑ j=0 m−1 c j z i+ j mod2 trong đó c0, , cm-1 Z2 là các hằng số cho trớc.
Phép đệ quy đợc nói là có bậc m vì mỗi số hạng phụ thuộc vào m số hạng đứng trớc Phép đệ quy này là tuyến tính bởi vì Zi+m là một hàm tuyến tính của các số hạng đứng trớc Chú ý ta có thể lấy c0= 1 mà không làm mất tính tổng quát Trong trờng hợp ngợc lại phép đệ quy sẽ là có bậc m-1. ở đây khoá K gồm 2m giá trị k1, , km, c0, , cm-1 Nếu (k1, , km)= (0, , 0) thì dòng khoá sẽ chứa toàn các số 0 Dĩ nhiên phải tránh điều này vì khi đó bản mã sẽ đồng nhất với bản rõ Tuy nhiên nếu chọn thích hợp các hằng số c0, , cm-1 thì một véc tơ khởi đầu bất kì khác (k1, , km) sẽ tạo nên một dòng khoá có chu kỳ 2m -1 Bởi vậy một khoá ngắn sẽ tạo nên một dòng khoá có chu kỳ rất lớn.
Các hệ mã hoá cổ điển không thể đáp ứng đợc nhu cầu bảo mật dữ liệu trên các phơng tiện công nghệ thông tin hiện nay, nhng các t tởng của chúng vẫn còn nguyên giá trị Các hệ mã hoá mạnh nhất bây giờ vẫn luôn có bóng dáng của các hệ mã hoá cổ điển kèm theo Các hệ này đợc chia làm hai dòng chính là các hệ mã hoá khoá đối xứng và các hệ mã hoá khoá công khai.
Ch-ơng 4 Các hệ mã hóa hiện đại
Hệ mã hoá khoá đối xứng
Thuật toán mã hoá đối xứng là thuật toán có khoá dùng để giải mã có thể tính toán đợc từ khoá dùng để mã hoá Trong nhiều hệ thống khoá dùng để mã hoá và khoá dùng để giải mã là giống nhau Những thuật toán mã hoá này đợc gọi là thuật toán mã hoá bí mật, khoá đơn, hay một khoá (secret-key algorithms, single-key algorithms, one-key algorithms) Thuật toán mã hoá này cần ngời gửi và ngời nhận thống nhất một khoá trớc khi trao đổi thông tin Khoá này cần phải đợc cả hai giữ bí mật.
Sự bảo mật của một thuật toán đối xứng dựa trên khoá Tiết lộ khoá có nghĩa rằng bất cứ ai biết khoá đều có thể mã hoá và giải mã thông tin trên hệ thống này.
Nhóm mã hoá và giải mã bằng thuật toán đối xứng đợc thể hiện bằng công thức:
Thuật toán đối xứng lại đợc chia làm hai loại Một loại thực hiện trên bản rõ từng bít một, gọi là thuật toán mã hoá dòng(stream algorithms, stream ciphers) Còn một loại thực hiện trên bản rõ theo từng nhóm bít một, và thuật toán này đợc gọi là thuật toán mã hoá khối (block algorithms, block ciphers) Những thuật toán mã hoá khối thờng đợc thực hiện trên máy tính, thông thờng cỡ của một khối là 64 bít - đây là khối đủ lớn để ngăn ngừa sự phân tích của các nhà thám mã và cũng đủ nhỏ để nó làm việc một cách hiệu quả Trớc khi máy tính ra đời, những thuật toán này thực hiện trên bản rõ mỗi lần một ký tự Ta có thể xem nh là thuật toán mã hoá dòng thực hiện trên một dòng các ký tự còn thuật toán mã hoá khối thực hiện trên các khối 8 bÝt.
Hai thuật toán mã hoá khóa đỗi xứng nổi tiếng là DES và AES. Cho đến thời điểm này DES với số lợng khoá tối đa là 2 56 đã không còn đợc coi là an toàn Giải pháp thay thế cho DES chính là AES Sau đây là các trình bày về AES.
Trớc nguy cơ sụp đổ của DES trớc các cuộc tấn công của các siêu máy tính đơng thời, ngày 2/1/1997 Viện tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) đã chính thức đa ra đề nghị cộng đồng tham gia vào việc xây dựng một chuẩn mã hoá nâng cao( Advanced Encryption Standard-AES) Các tiêu chí của việc xây dựng này có một số điểm đáng chú ý nh sau:
+ AES đợc xác lập công khai.
+ AES là hệ mã khối đối xứng.
+ AES đợc thiết kế sao cho có độ dài khoá có thể mở rộng theo yêu cầu.
+ AES có thể triển khai đợc trên cả phần cứng và phần mÒm
+ AES cần phải là sản phẩm miễn phí hoặc đợc cho dới các điều kiện phù hợp với chính sách về bản quyền của Viện tiêu chuẩn quốc gia Hoa Kỳ.
+ Các thuật toán thoả mãn các điều kiện trên đợc xem xét trên cơ sở các phơng diện sau:
Tính hiệu quả về mặt tính toán;
Nhu cầu đòi hỏi về bộ nhớ;
Tính mềm dẻo, linh động;
Các yêu cầu về phơng diện bản quyền.
Sau một thời gian xem xét và thảo luận thêm, tháng 9/1997 NIST chính thức đa ra lời kêu gọi hởng ứng cuộc thi xây dựng thuật toán cho AES.
Trong vòng I, từ tháng 8/98 đến 4/99, sau khi loại bỏ các ph- ơng án không thoả mãn các tiêu chí đề ra, ngời ta chính thức đa vào xem xét 15 phơng án (gửi đến từ khắp nơi trên thế giới: Đức, Bỉ, áo, Pháp, Nhật…).
Trong vòng 2, từ 8/1999 đến 5/2000, từ 15 phơng án xem xét ngời ta lọc ra đợc 5 phơng án để đa vào vòng chung kết, đó là:
Trong vòng chung kết, diễn ra trong 90 ngày từ đầu tháng
3 đến cuối tháng 5/2001, với sự xem xét tỷ mỷ cả 5 thuật toán từ mọi phơng diện, ngời ta đã chọn Rijndael làm thuật toán cho AES NIST tổng hợp các thông tin về Rijndael và tiếp tục đa ra cho cộng đồng xem xét và bình luận lần cuối, trớc khi đến kết luận cuối cùng vào cuối mùa hè năm 2001.
Thuật toán Rijdael mang đậm màu sắc toán học Trong thuật toán này, ngoài các tính toán đồng d và các phép tính bit (thờng gặp trong các thuật toán khác), ngời ta đã thiết lập những phép toán khá đặc biệt trong trờng hữu hạn và trong vành đa thức trên trờng hữu hạn.
AES sử dụng khối đầu vào, khối đầu ra và khối trung gian State có chiều dài 128 bit Khoá đợc sử dụng có chiều dài 128,
Tên thuật toán Những ngời sáng chế
MARS IBM ( đại diện bởi Nevenko Zunic)
RC6 RSA Laboratories (đại diện bởi Burt Kaliski)
Rijdael Joan Anderson, Vincent Rijmen
Serpent Ross Anderson, Eli Biham, LarsKnudsen
192 hoặc 256 bit tuỳ chọn Tơng ứng với khoá ta có 3 phiên bản AES là AES-128, AES-192, AES-256
Sau đây là các thông số tơng ứng với 3 phiên bản AES:
Cì khèi Nb (Đơn vị 32 bit)
Hình 1.1 Bảng mô tả các thông số của 3 phiên bản AES
Các thông số ở bảng này sẽ đợc mô tả kỹ hơn trong các mục tiếp theo.
Vì thuật toán Rijndael có những phơng pháp tiếp cận tơng đối mới nên những kiến thức cơ sở hầu nh không đáp ứng đợc do đó trong phần này cơ sở toán học của thuật toán đợc đề cập tới trong phần công cụ chuẩn bị.
Mục này đề cập đến 2 loại phép toán trên tập các byte( 8 bit) và loại phép toán trên các véctơ gồm 4 byte, hay còn gọi là word.
Các phép toán ở mức byte trong thuật toán Rijndael sẽ đợc định nghĩa thông qua phép biểu diễn mỗi byte nh một phần tử của trờng hữu hạn GF(2 8 ).
Các phép toán trên các word (4 byte) sẽ đợc thiết lập trên cơ sở các phép toán trên các byte theo ý tởng nh sau: Mỗi Word th- ờng đợc xem nh một véctơ trong không gian 4 chiều trên trờng các byte Tuy nhiên trong cấu trúc không gian tuyến tính không có phép nhân trong (vốn rất cần thiết cho các phép biến đổi dữ liệu), cho nên ngời ta đã cải tiến bằng cách xem mỗi véctơ (trên trơng các byte) nh tập các hệ số của một đa thức (có các hệ số là byte và có bậc kém số chiều của không gian véctơ một đơn vị) Nh vậy, các phép toán trên các từ có thể đợc định nghĩa thông qua các phép toán trên các đa thức (với các hệ số là byte).
Ta biết rằng mỗi byte (chứa 8 bit) biểu diễn một số trong khoảng từ 0 đến 255 Tên của byte đợc đặt theo giá trị mà nó biểu diễn: có thể đợc viết trong hệ cơ số 16 với dấu nháy đơn
‘…’, hoặc trong hệ nhị phân( cơ số 2) với dấu nháy kép ”…”
Mỗi byte b chứa các bit “b7 b6 b5 b4 b3 b2 b1 b0” đợc biểu diễn nh một đa thức bậc không quá 7 với các hệ số trong trờng {0, 1}, xác định nh sau: b7x 7 +b6x 6 +b5x 5 +b4x 4 +b3x 3 +b2x 2 +b1x +b0.
Trong trờng hợp này ta cũng nói b là byte biểu diễn các hệ số của đa thức nêu trên.
Trong phép biểu diễn dạng đa thức, tổng của 2 phần tử các phần tử đó, trong đó các hệ số đợc cộng theo modulo 2 (tức là theo nguyên tắc 1+1=0)
Nh vậy, có thể thấy phép cộng trong trờng hợp này chính là phép loại bit ở mức byte (8 bit) cho nên sẽ đợc ký hiệu là ).
Dễ nhận thấy phép cộng trên thoả mãn đầy đủ các yêu cầu đối với một nhóm Abel (với phần tử trung hoà là ‘00’, và mọi phần tử đều là ngợc của chính nó Nh vậy phép trừ cũng chính là phép céng.
Một cách tự nhiên là định nghĩa tích của 2 byte thông qua tích của hai đa thức biểu diễn các byte đó Tuy nhiên, tích của
2 đa thức bậc nhỏ hơn 7 có khả năng có bậc lớn hơn 7, cho nên để có đợc một đa thức bậc không quá 7 ngời ta tiến hành rút gọn theo modulo một đa thức bậc 8 Chính vì lý do này, để định nghĩa phép nhân trên tập các byte, ngời ta lấy một đa thức bất khả quy bậc 8 sau đây: m(x)= x 8 + x 4 + x 3 + x+ 1 và xem tích của 2 phần tử là một phần tử có đa thức biểu diễn là tích của các đa thức biểu diễn các nhân tử theo modulo m(x).
Ta có thể kiểm tra rằng: phép nhân nêu trên có tính kết hợp và là phân phối đối với phép cộng Nó có phần tử đơn vị là byte
Hệ mã hoá khoá công khai
Giả sử trong 1 hệ thống có n cá thể cùng trao đổi các thông tin mật Mỗi cá thể chọn cho mình một khoá lập mã k và không công thức mã hoá Ek đợc thông báo công khai Nh vậy có n khoá lập mã công khai k1, k2,…, kn Khi cá thể thứ i muốn gửi thông báo cho cá thể thứ j, mỗi chữ trong thông báo đợc chuyển thành con số, nhóm thành từng khối với độ dài nào đó Sau đó, mỗi khối P trong văn bản đợc mã hoá bằng khoá lập mã Ekj của cá thể thứ j
(đã thông báo công khai), và gửi đi dới dạng
C=Ekj(P). Để giải mã thông báo này, cá thể thứ j chỉ cần ding khoá giải mã ( bí mật riêng cho mình) Dkj:
Bởi vì Ekj và Dkj là các khoá giải mã và lập mã của cùng một cá thể thứ j Các cá thể trong hệ thống, nếu nhận đợc văn bản mật, cũng không thể giải mã, vì việc biết khoá lập mã không cho phép tìm đợc khoá giải mã trong thời gian chấp nhận đợc
Hệ mã RSA do Rivest, Shamir, và Adleman phát minh ra năm
1978 đã thể hiện đợc toàn bộ những nguyên tắc vừa nêu trên.
Hệ RSA đợc xây dựng trên cơ sở mã mũ, trong đó khóa lập mã là cặp (e,n), gồm số mũ e và modulo n Số n đợc dùng ở đây là tích của hai số nguyên tố rất lớn nào đó, n=pq, còn e đợc chọn sao cho (e,φ(n))=1 với φ(n) là giá trị hàm Euler của n ( trong tr- ờng hợp này ta biết rằng φ(n)=(p-1)(q-1) Để mã hoá một thông báo, trớc tiên ta chuyển nó sang dạng số và nhóm thành các khối với độ dài lớn nhất có thể (tuỳ thuộc khả năng tính toán và tốc độ yêu cầu) với một số chẵn chữ số Đẻ mã hoá một khối P trong văn bản, ta tính:
Khi ấy, do một hệ quả của Định lý Euler (chơng I, Mục 2.5, hệ quả 2), quá trình giải mã không đòi hỏi phải “khai căn bậc e modulo n”của khối văn bản mã, nếu nh biết đợc số nghịch đảo d của e modulo φ(n) ,tức là thoả mãn : ed ¿ 1 (mod φ (n)
Nghịch đảo này tồn tại theo điều kiện gcd(e,φ n))=1,
Nhờ các tính toán số học, ta có thể thấy
D(C):=C d ≡(P e ) d ≡P ed ≡P(modn) và công thức trên cho thấy việc giải mã một khối trong văn bản mật cũng chính là việc nâng lên luỹ thừa bậc d rồi rút gọn theo modulo n Cặp (d,n) đợc gọi là khoá giải mã.
Bây giờ ra chỉ ra rằng, hệ mã RSA thoả mãn các nguyên tắc của hệ mã khoá công khai nói ở mục trên Trớc tiên, ta chú ý rằng, mỗi cá thể phải chọn hai số nguyên tố lớn p và q, cỡ chừng 100 chữ số thập phân Điều này có thể làm trong ít phút nhờ máy tính với một phần mềm tính toán số học đủ tốt Khi các số nguyên tố p và q đã đợc chọn, số mũ e dùng để mã hoá đợc lấy sao cho gcd(e,φ(pq))=1 Nói chung nên chọn e là số nguyên tố tuỳ ý lớn hơn giá trị lớn nhất giữa p và q Số e đợc chọn nhất thiết phải thỏa mãn 2 e >n=pq.
Nếu điều kiện này không đợc thoả mãn thì có thể xảy ra khả năng P e n đợc thoả mãn, mọi khối P khác 0 và 1 đều có văn bản bằng
Ta cần phải chứng tỏ rằng, việc biết chìa khoá lập mã (e,n) không dẫn đến việc tìm đợc chìa khoá giải mã (d, n).
Chú ý rằng, để tìm nghịch đảo d của e modulo φ(n) ,trớc tiên phải tìm đợc φ(n) Việc tìm φ(n) không dễ hơn so với phân tích n, bởi vì một khi đã biết φ(n) và n, ta sẽ phân tích đợc n
ThËt vËy ta cã: p+q=n-φ (n)+1; p-q=√ ( p+q ) 2 −4 pq = √ ( p+ q) 2 − 4 n từ các công thức đó tìm đợc p và q.
Do tính đơn giản trong thiết kế và triển khai, RSA đợc sử dụng rộng rãi và có lẽ là đợc dùng nhiều nhất trong số các thuật toán với khoá công khai Cũng chính vì vậy, nó đã trải qua nhiều cuộc thử thách, xem xét, khảo cứu kỹ lỡng của cộng đồng và đã có đợc nhiều bằng chứng kiểm nghiệm về tính an toàn của nó
Có thể kết luận rằng hệ mã hoá khoá công khai RSA là an toàn nếu nh ta có những phơng pháp chọn các số nguyên tố p, q một cách đủ tốt theo nghĩa tránh đợc các phơng pháp phân tích thừa số lớn trong một vài trờng hợp cụ thể của số n.
4.2.2.2 Các phơng pháp tấn công hệ mật RSA
Chúng ta biết rằng nếu n0 là hằng số), đợc gọi là mã băm Ký hiệu D là miền xác định, R là miền giá trị của hàm băm h(x), ta thờng có số lợng phần tử của D (ký hiệu là | D| ) lớn hơn rất nhiều so với số lợng của phần tử trong R Vì vậy, h(x) không thể là đơn ánh, có nghĩa là sẽ tồn tại ít nhất 2 giá trị x1 và x2 để h(x1)=h(x2) Vì vậy tính tơng ứng đã nói ở trên bị vi phạm tuy nhiên một kết quả xác suất sau có thể làm ta yên tâm : Giả sử hạn chế miền xác định hàm h(x) chỉ bao gồm các chuỗi có độ dài cố định t (t>n) Nếu h(x) là ngẫu nhiên đợc hiểu theo nghĩa tất cả các giá trị đầu ra của nó có xác suất nh nhau thì có khoảng 2 (t-n) có đầu vào ánh xạ vào mỗi giá trị đầu ra Nh vậy xác suất để hai giá trị đầu vào ánh xạ vào cùng một đầu ra là 2 -n (không phụ thuộc t) Nếu n đủ lớn thì có thể thiết kế h(x) thoả mãn yêu cầu của hàm băm (trong thuật toán MD5 n8 số này đủ lớn để ta có thể yên tâm rằng nếu MD5 đủ tốt sẽ có đủ mã băm
Hàm băm mật mã h(x) cần phải đợc thoả mãn các tính chất sau:
1) Tính nén: với chuỗi bit đầu vào x ánh xạ tới chuỗi bit y=h(x) có chiều dài cố đinh.
2) Dễ tính toán: Đợc hiểu theo nghĩa độ phức tạp về thời gian là đa thức và không gian cần cho việc tính toán đủ nhỏ (bộ nhớ máy tính).
3) Tính kháng tiền ảnh: Với đầu ra y không thể tính ra x sao cho h(x)=y
4) Tính kháng tiền ảnh thứ 2: Với đầu vào x không thể tìm đợc x’ sao cho h(x)=h(x’).
5) Tính kháng xung đột: “Không thể” tìm đợc x và x’phân biệt sao cho h(x)=h(x’).
Thuật toán MD5
Giải thuật MD5 đợc phát triển bởi Ron Rivest ở MIT Thuật toán nhận đầu vào là một khối bất kỳ và nó xử lý thành các khối 512 bit để cuối cùng sau hàng loạt sử lý nó trở thành một khối thông điệp với chiều dài 128 bit.
Khởi tạo giá trị cho các biến dây chuyền
Thuật toán MD5 sử dụng 4 hàm, đợc định nghĩa nh sau:
Định nghĩa các hằng số cộng thêm cho mỗi bớc: y[j] bằng 32 bit đầu tiên của hàm | sin(j+1)|, trong đó |x| là giá trị tuyệt đối của x, j+1 đợc tính bằng radian với (j=1 63).
Khởi tạo mảng thứ tự truy xuất của các từ 32-bit: z[ 0 15] = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
Định nghĩa số vị trí bit xoay trái cho mỗi bớc: s[ 0 15] = [ 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
Việc xử lý chuỗi bit bản tin đợc thực hiện nh sau: chèn thêm thông tin để cho chiều dài bản tin (theo bit) là bội số của 512. Thông tin đợc chèn thêm bao gồm 1số 1, và các số 0 và cuối cùng là 64 bit chứa độ dài của bản tin,
Chia chuỗi bit bản tin đã xử lý thành các khối 512 bit word Đợc đánh số theo thứ tự: x0, x1, ,x16m.
Thực hiện tính toán theo thuật toán sau:
Hình 1.1 Thuật toán tính thông tin băm bằng MD5
Ghép nối 4 từ 32 bit là H1, H2, H3, H4 để tạo thành một chuỗi bit H=H1H2H3H4 ta đợc chuỗi bit có chiều dài đúng bằng 128 bit. Đây là kết quả cuối cùng của thuật toán.
Các hình sau làm cho thuật toán MD5 trở nên sáng tỏ hơn:
Hình 1.2 Tạo thông điệp băm cho MD5
Hình 1.3 Xử lý khối đơn 512 bit (HDMD5) a b c d g
Hình 1.4 Tác vụ MD5: [abcd k s i]
Bảng 1.3 Bảng T đợc xây dựng từ hàm sin
Bảng 1.4 Các tác vụ [abcd k s i]trong mỗi vòng
Qua việc nghiên cứu những hệ mật và chữ ký số ở trên, ta thấy đợc khả năng to lớn của chúng trong việc bảo vệ những thông tin quan trọng Nếu biết cách kết hợp những thuật toán mã hóa trên một cách hợp lý, ta sẽ tạo đợc giao thức có đủ độ phức tạp để bảo vệ dữ liệu trên môi trờng không an toàn.
Bảo vệ dữ liệu trên môi trờng không an toàn
Trên cơ sở những lý thuyết về mã hóa và chữ ký số đã trình bày ở phần trên, chúng em đã xây dựng một cấu trúc lu trữ đặc biệt có khả năng bảo vệ dữ liệu trên môi trờng không an toàn Cấu trúc này có tên gọi là “volume ảo” Đây là một cấu trúc lu trữ các file có phân cấp theo th mục tơng tự nh những hệ thống lu trữ trên các ổ đĩa của hệ điều hành nhng có khả năng bảo vệ đợc những dữ liệu lu trữ bên trong nó Với mục đích bảo mật, volume ảo không chấp nhận các dịch vụ trên hệ thống file của hệ điều hành Vì khi máy bị truy cập bất hợp pháp bởi hacker, họ sẽ có toàn quyền truy cập các nguồn tài nguyên của hệ thống Do đó, nếu chấp nhận các dịch vụ file của hệ điều hành (có thể vào ra dữ liệu trên volume ảo thông các qua dịch vụ này) thì dữ liệu trên volume ảo cũng sẽ bị lấy cắp nh dữ liệu lu trên đĩa thờng Vì vậy, những thao tác vào ra và các dịch vụ trên volume ảo phải đợc xây dựng riêng Phần này sẽ trình bày chi tiết về cấu trúc của volume ảo và xây dựng công cụ quan trọng nhất trên trên môi trờng này Đó là trình điều khiển vào ra volume ảo Với mục đích nh trên, phần này đợc chia làm 3 chơng sau:
- Chơng 1: Khảo sát và xác lập giải pháp thiết kết cấu trúc volume ảo
- Chơng 2: Trình bày chi tiết về Cấu trúc volume ảo
- Chơng 3: Trình bày chi tiết về trình điều khiển vào ra trên volume ảo
Khảo sát và xác lập giải pháp thiết kết cấu trúc
Những yêu cầu đặt ra đối với đối với cấu trúc volume ảo 61
1) Yêu cầu về lu trữ dữ liệu Volume ảo cần có một cấu trúc cho phép lu trữ và thao tác với hệ thống file theo cấu trúc ph©n cÊp th môc.
2) Yêu cầu về bảo mật dữ liệu Đây là yêu cầu quan trọng nhất của volume ảo Nó cần có cấu trúc cho phép áp dụng những thuật toán mã hóa khác khác nhau để bảo vệ dữ liệu.
3) Yêu cầu về an toàn dữ liệu Volume ảo cần có một cấu trúc cho phép khôi phục dữ liệu mỗi khi nó bị sự cố. Để đáp ứng những yêu cầu trên, ta cần khảo sát một số hệ thống file thông dụng hiện nay để làm cơ sở cho việc thiết kế cấu trúc của volume ảo.
Khảo sát một số hệ thống quản lý và lu trữ file
Hệ thống FAT đợc sử dụng đầu tiên trên hệ điều hành DOS sau đó đợc nâng cấp thành các phiên bản VFAT sử dụng cho win95 và FAT32 sử dụng cho Win98 đến WinMe Hệ thống này chia không gian lu trữ của đĩa thành các cluster Đây chính là đơn vị kích thớc nhỏ nhất mà hệ thống quản lý Các cluster có kích thớc nh nhau và bằng số nguyên lần kích thớc 1 sector của đĩa Trạng thái của các cluster đợc quản lý bởi một bảng gọi là
Boot SectorReserved sectorFAT 1 FAT 2Data Block (các cluster) bảng cấp phát file (File Allocation Table -FAT) Mỗi phần tử trong bảng này chỉ ra trạng thái của cluster tơng ứng đang còn trống, bị hỏng hay đã đợc cấp phát Kích thớc mỗi phần tử trong bảng này tơng ứng với những phiên bản khác nhau của FAT nh FAT16 (kích thớc 1 phần tử của bảng FAT là 16 bit 2byte) hay FAT32 (kích thớc mỗi phần tử của bảng FAT là 4 byte).
Về mặt cấu trúc logic, hệ thống file FAT có cấu trúc nh sau:
Hình 2.1 Cấu trúc của FAT
Trong cấu trúc trên, bootsector đợc sử dụng nh một bảng thông tin cấu hình của hệ thống file, nó chỉ ra kích thớc của sector, cluster, tên volume và một số thông tin khác Theo sau nó là một số sector dự trữ và bảng FAT đợc lu thành 2 bản nhằm mục đích phục hồi thông tin khi có sự cố.
Các file trên hệ thống FAT đợc quản lý thông qua trạng thái của các block lu trong bảng FAT Bắt đầu từ cluster đầu tiên chứa file, ta căn cứ vào trạng thái của block tơng ứng với cluster này để biết cluster tiếp theo của file là cluster nào hay đây là cluster cuối cùng của file đó Th mục trên hệ thống FAT chính là một file đặc biệt mà nội dung của nó là các điểm vào (Entry) chứa thông tin định danh cho các th mục con hay các file thuộc th mục đó Thông tin định danh này bao gồm tên của file (th mục), kích thớc, thuộc tính, cluster đầu tiên, thời gian tạo và sửa đổi….
Nhợc điểm chủ yếu của hệ thống FAT là độ an toàn không cao và không có khả năng bảo mật Độ an toàn không cao thể hiện ở điểm là khi một th mục bị hỏng thì cấu trúc phía sau nó bao gồm các th mục con và các file chứa trong đó sẽ bị mất và việc phục hồi cũng rất khó khăn.
NTFS là một hệ thống tập tin mạnh và linh động, những đặc điểm nổi bật là :
- Quản lý đợc đĩa dung lợng lớn và kích thớc tập tin lớn
Cấu trúc tập tin và volume của NTFS
NTFS sử dụng những khái niệm sau : Sector, cluster, volume
Cluster là đơn vị định vị cơ bản trong NTFS Kích thớc tập tin tối đa trong NTFS là 2 32 cluster, tơng đơng 2 48 bytes Cấu trúc của NTFS có dạng nh hình sau :
Partition boot sector Master File
Table Các tập tin hệ thống Vùng các tập tin
Hình 2.1 Cấu trúc của NTFS
NTFS bao gồm bốn vùng Vùng thứ nhất là các sector khởi động của partition (có thể đến 16 sectors) bao gồm các thông tin về cấu trúc của volume, cấu trúc của hệ thống tập tin cũng nh những thông tin và mã nguồn khởi động Vùng tiếp theo là bảng Master File (MFT) lu các thông tin về tất cả tập tin và th mục trên volume NTFS này cũng nh thông tin về các vùng trống. Sau vùng MFT là vùng các tập tin hệ thống có kích khoảng 1Mb bao gồm :
- MFT2 : bản sao của MFT
- Log file : thông tin về các giao tác dùng cho việc phục hồi.
- Cluster bitmap : biểu diễn thông tin lu trữ của các cluster
- Bảng định nghĩa thuộc tính : định nghĩa các kiểu thuộc tính hỗ trợ cho volume đó.
MFT đợc tổ chức thành nhiều bản ghi (record) có kích thớc cố định Mỗi bản ghi mô tả cho một tập tin hoặc một th mục trên volume Nếu kích thớc tập tin nhỏ thì toàn bộ nội dung của tập tin đợc lu trong bản ghi này mỗi bản ghi cũng lu những thuộc tính cho tập tin hay th mục mà nó quản lý.
Kiểu thuộc tính Mô tả
Thông tin chuẩn Bao gồm các thuộc tính truy xuất
(chỉ đọc, đọc/ghi, ), nhãn thời gian, chỉ số liên kết
Danh sách thuộc tính sử dụng khi tất cả thuộc tính vợt quá 1 bản ghi của MFT Tên tập tin
Mô tả an toàn Thông tin về ngời sở hữu và truy cËp Dữ liệu
Chỉ mục gốc dùng cho th mục
Thông tin volume nh tên version và tên volume
Bitmap hiện trạng các bảng ghi trong
Bảng 1.5 Các kiểu thuộc tính của tập tin và th mục của NTFS Điểm đặc biệt trong cấu trúc th mục của hệ thống NTFS là nó lu trữ thông tin về các file và các th mục con dới dạng cây nhị phân Do vậy nó có khả năng tìm kiếm file rất nhanh.
Ngoài ra, NTFS còn hỗ trợ khả năng nén, mã hóa file, chống phân mảnh rất hiệu quả Các thao tác vào ra file trên NTFS đợc quản lý theo cơ chế log Khi có sự cố trên hệ thống file, nó sẽ tự
“rollback” các thao tác bị hỏng, do vậy độ an toàn dữ liệu trên NTFS rÊt cao.
1.2.3 Hệ thống Extfs và Ext2fs
Hệ thống file Extfs (Extended File System) và phiên bản sau Ext2fs (Second Extended File System) của nó đợc phát triển và sử dụng trên hệ điều hành Linux Hệ thống này chia ổ đĩa vật lí thành các đơn vị lu trữ logic có dung lợng bằng nhau gọi là các block Mỗi block có dung lợng là 1024 hoặc 2048 hoặc 4096 bytes và đợc lựa chọn cố định một giá trị lúc định dạng logic cho phân vùng đĩa Block là các đơn vị lu trữ nhỏ nhất có thể cấp phát Một số cố định các block liên tiếp nhau lại đợc nhóm lại về mặt logic thành các block group Mỗi block group trong hệ thống bao gồm một bản sao các thông tin điều khiển và các thành phần khác của hệ thống file Cấu trúc chung của một hệ thèng file Ext2fs nh sau :
Hình 2.1 cấu trúc của hệ thống Ext2fs
File trên hệ thống ext2fs đợc quản lý thông qua một cấu trúc gọi là inode Mỗi inode chứa các mô tả về file mà nó đại diện : kiểu file, quyền truy nhập đến file, ngời tạo file (owner), các nhãn thời gian, kích thớc, con trỏ đến các khối dữ liệu (data blocks) Các cấu trúc inode đợc đánh số và mỗi hệ thống file chỉ có một số giới hạn inode có thể cấp phát Khi số inode này đợc cấp phát hết thì hệ thống không thể tạo thêm bất kì một file nào cho dù có thể vẫn còn không gian đĩa trống Phần quan trọng nhất trong inode là các con trỏ đến các khỗi dữ liệu Trên Linux nói riêng các con trỏ đến các khối dữ liệu chia làm 4 loại : trực tiếp (direct), gián tiếp (indirect), gián tiếp 2 mức (double- indirect), gián tiếp 3 mức (triple-indirect)
Th mục chính là một loại file đặc biệt và cũng đợc đại diện bởi một inode number Thực tế, th mục chính là một file mà nội dung của file đó là một danh sách, mỗi một phần tử trong danh sách gồm một inode number và tên file tơng ứng với inode number, hai thành phần này tạo nên một file hoặc một th mục con nằm trong th mục mẹ.
Hệ thống Ext2fs có u điểm là hỗ trợ những phân vùng đĩa lớn, có cơ chế phân quyền ngời dùng, và sử dụng hiệu quả không gian đĩa hơn FAT Tuy nhiên do lu trữ thônh tin điều khiển ở nhiều nơi nên việc đồng bộ sẽ phức tạp hơn Một hệ thống quản lý file mở rộng NTFS hiện cũng đang đợc phát triển mạnh, do khuôn khổ bài viết chúng tôi xin không trình bày ở ®©y.
Các hệ thống quản lý file trên điều chia và quản lý không gian lu trữ theo khối (block hay cluster) Đều coi th mục là một file đặc biệt nhng cách quản lý file khác nhau Tuy nhiên, việc hỗ trợ bảo mật của các hệ thống này hoặc không có, hoặc chỉ thực hiện ở mức hệ điều hành tức là chỉ đợc thực hiện khi ng- ời dùng thao tác file trên hệ điều hành, còn nếu đọc trực tiếp từ đĩa thì vẫn có thể lấy đợc dữ liệu Mặc khác, đây là những hệ thống dùng để quản lý ổ cứng, do vậy chúng không có cơ chế thay đổi kích thớc của volume Đây chính là những điểm cần đợc cải tiến trong cấu trúc của volume ảo.
Giải pháp thiết kế cấu trúc volume ảo
Để đáp ứng 3 yêu cầu quan trọng là lu trữ, bảo mật và an toàn dữ liệu trên, volume ảo cầu có những đặc điểm sau:
- Toàn bộ volume ảo đợc lu trữ trên ổ đĩa của hệ điều hành chủ dới dạng 1 hay nhiều file hoặc một phân vùng nào đó trên ổ đĩa Vì vậy, nếu không có những trình vào ra cho volume ảo thì chỉ có thể sao chép đợc toàn bộ volume ảo Muốn lấy đợc từng file thì cần phải phân tích cấu trúc rất phức tạp của nó.
- Dữ liệu lu trữ trên volume ảo đợc mã hóa bằng những thuật toán mã hóa phức tạp sử dụng bộ khóa động là những thông tin định danh ngời dùng (username, password) 1 Mặt khác, trên volume chỉ lu trữ những thông tin kiểm tra là kết quả của những hàm mã hóa 1 chiều của thông tin 1 Do đó không thể phục hồi lại chúng từ những thông tin này Vì vậy việc giải mã dữ liệu trên volume (nếu không có những key trên) sẽ rất khó khăn.
- Những thông tin quan trọng của volume đợc sao lu thành nhiều bản và đính kèm chữ ký số của chúng nhằm bảo vệ và khôi phục những thông tin này khi có sự cố.
- Khi lu trữ dới dạng file, volume ảo có khả năng mở rộng về kÝch thíc
Bảng thông tin trạng thái block Block 1 … Block m
Cấu trúc volume ảo
Bảng thông tin volume
Giống nh boot sector trong mô hình FAT Nội dung của thông tin này chứa toàn bộ thông tin quy định khuôn dạng của chính volume đó Chi tiết các trờng cho bởi bảng sau:
Tên trờng KT Mô tả
Ký hiệu volume 10 Nội dung của trờng này là một xâu ký tự xác định cho biết đây là file chứa volume ảo
Tên volume 40 Xâu ký tự (UNICODE) chứa tên của volume
Thuéc tÝnh volume 2 Trờng này bao gồm các bit cờ xác định các thuộc tính của volume Phiên bản 2 Phiên bản của volume này
Số lợng bản sao 1 Chỉ ra số lợng bản sao của các bảng thông tin hệ thống
KÝch thíc block 2 Kích thớc 1 đơn vị lu trữ của volume tính bằng byte
KÝch thíc phân vùng 4 Kích thớc 1 phân vùng (tính theo block)
Th mục gốc 4 STT của block đầu tiên lu nội dung của th môc gèc vị trí phân vùng 4 Khoảng cách từ đầu volume ảo đến phân vùng đầu tiên vị trí block 4 Khoảng cách từ đầu mỗi phân vùng đến block đầu tiên thuộc phân vùng đóChữ ký 16 Chữ ký số của bảng thông tin này
Dự phòng 1K Đây là một vùng đệm dùng để lu những thông tin khác của hệ thống và dùng cho mục đích phát triển volume ở những phiên bản sau.
Hình 2.1 Bảng thông tin volume
ý nghĩa của một số trờng quan trọng trong bảng trên:
Trờng “ký hiệu volume” và trờng “chữ ký” đợc dùng cho việc kiểm tra 1 file có phải là file chứa vô lume ảo hay không Khi ch- ơng trình mở file chứa volume ảo, nó đọc bảng thông tin trên và kiểm tra xem trờng ký hiệu volume có trùng với ký hiệu quy định của chơng trình hay không Nếu có nó mới tiếp tục việc sát thực chữ ký số của bảng thông tin đợc lu trong trờng “chữ ký” Nếu chữ ký này khớp với nội dung của bảng thì file này mới thực sự là một volume ảo do chơng trình tạo ra.
Trờng “số lợng bản sao” kết hợp với trờng “chữ ký” còn đợc sử dụng với mục đích an toàn dữ liệu Các bảng hệ thống của volume ảo sẽ đợc sao lu với số lợng đợc chỉ ra trong trờng “số l- ợng bản sao” Khi có sự cố xảy ra, có thể là máy bị tắt đột ngột khi đang thao tác dữ liệu trên volume ảo hoặc sector trong khu vực lu trữ bảng thông tin này bị hỏng Những sự cố này làm cho chữ ký số không còn khớp với nội dung của bảng thông tin volume Trong trờng hợp này, các bảng lu dự phòng sẽ đợc huy động để sửa lỗi cho volume.
Trờng “vị trí phân vùng” và “vị trí block” có căn các bảng hệ thống và các block vào đúng vị trí đầu của các sector làm tăng tốc việc đọc ghi dữ liệu trên volume ảo nếu không có các trờng này, các block sẽ bị lệch khỏi đầu các sector Do đó, nếu
1 block có kích thớc =n sector sẽ cần n+1 sector để lu trữ nó.mỗi khi đọc hoặc ghi 1 block ta sẽ phải truy cập n+1 sector nên làm tăng đáng kể thời gian vào ra volume ảo.
Phân vùng dữ liệu
Theo sau bảng thông tin volume là các phân vùng dữ liệu. Việc nhóm các block thành phân vùng nhằm tạo cho volume có khả năng mở rộng Nếu không có các phân vùng thì sẽ chỉ có một bảng thông tin trạng thái duy nhất Nhng kích thớc của bảng này là cố định nên ta không thể mở rộng volume đợc Nếu tách chúng thành từng phân vùng thì việc mở rộng volume có thể đợc thực hiện bằng cách thêm các phân vùng mới vào cuối file chứa volume Mỗi phân vùng chỉ quản lý các block thuộc phân vùng đó thông qua bảng thông tin trạng thái block Bảng này gồm một danh sách có số lợng các phần tử đợc chỉ ra trong bảng thông tin volume tại trờng “Kích thớc phân vùng” và một chữ ký số đợc thêm vào với mục đích an toàn dữ liệu trong các trờng hợp mất dữ liệu Mỗi phần tử trong danh sách trên lu trữ trạng thái của block tơng ứng với nó Giá trị của mội phần tử trong danh sách này có ý nghĩa nh sau:
Trạng thái block Mô tả
0 FFFFFFF0 Chỉ ra block tiếp theo của file có STT là giá trị này.
FFFFFFF1 Block cuối cùng của file.
FFFFFFF3 Block đã đợc dùng vào mục đích đặc biệt.
FFFFFFF6 FFFFFFFF Dự phòng cho các phiên bản sau.
Bảng 1.6 Các trạng thái của block
Có thể thấy các trạng thái của block lu trong bảng này tơng tự nh trạng thái của các cluster đợc lu trong bảng FAT Tuy nhiên, chúng có một số điểm khác nhau cơ bản là:
Nếu volume ảo đợc lu trữ dới dạng 1 file trên hệ điều hành chủ thì trạng thái hỏng không đợc dùng Lý do là khi xuất hiện sector đĩa nằm trong một block nào đó bị hỏng thì các chơng trình sửa đĩa của hệ điều hành sẽ thay thế cluster chứa sector hỏng tơng ứng sang 1 cluster mới còn trống và đang ở trạng thái sử dụng tốt Vì vậy, file chứa volume ảo sẽ không còn bị hỏng ở bất kỳ điểm nào trên file.
Nếu giá trị của phần tử trong bảng chỉ ra STT block tiếp theo của file thì STT này là STT tuyệt đối STT block tuyệt đối là vị trí của block đợc đánh số tăng dần từ 0 bắt đầu từ block đầu tiên của phân vùng đầu tiên.
Bảng thông tin trạng thái block cũng đợc sao lu với số lợng đ- ợc chỉ ra tại trờng “số lợng bản sao” trong bảng thông tin volume Khi trình quản lý volume ảo hoạt động nó sẽ tổng hợp tất cả các bảng thông tin block trên các phân vùng để tạo thành
1 bảng thông tin block chung biến volume trở thành một cấu trúc giống nh hệ thống FAT.
PV 1-Bảng thông tin block (10block)
PV2-Bảng thông tin block
Lu trữ file trên volume ảo
Việc sử dụng bảng thông tin trạng thái block đã chỉ ra ph- ơng pháp lu trữ file trong volume Các file đợc cấp phát theo từng block Bắt đầu từ block đầu tiên chứa nội dung 1 file, dựa vào các bảng thông tin trạng thái block tại các phân vùng, ta có thể tìm ra các block tiếp theo của file cho đến khi gặp block đợc đánh dấu là block cuối cùng của file đó Khi file cần mở rộng, hệ thống sẽ tính toán số lợng block cần cấp phát tơng ứng và thay đổi trạng thái của block cuối cùng để nó trỏ đến block đầu tiên trong khối block mới đợc cấp phát Ví dụ sau chỉ ra cách lu trữ các file trên volume ảo:
Hình 2.1 Lu trữ file trong volume ảo
Trong ví dù này, file1 đợc cấp phát 4 block (3,5,12,16) xuất phát block 3 nằm trên phân vùng 1 File 2 đợc cấp 2 block là 4 và 8 Các kí hiệu giá trị trạng thái của block trên hình có ý
- FR: Block tơng ứng còn rỗi
- EF: Block cuối cùng của 1 file
- X (số nguyên): Vị trí block tuyệt dối tiếp theo của file.
Lu trữ th mục trên volume ảo
Th mục thực chất là một file đặc biệt mà nội dung của nó lu trữ thông tin về các file và các th mục con chứa trong nó Mỗi phần tử này đợc gọi là một điểm vào (Entry) của th mục Cấu trúc cây th mục trong volume ảo đợc lu trữ theo mô hình đệ quy Bắt đầu từ th mục gốc mà block đầu tiên đợc chỉ ra tại trờng “th mục gốc”, trong bảng thông tin volume Ta sẽ tìm đợc các file và các th mục con của th mục gốc Căn cứ vào thông tin về vị trí của các th mục con này ta lại tìm đợc các th mục con của chúng… và cứ nh vậy ta sẽ tìm đợc cả hệ thống cây th mục Cấu trúc chung của một th mục có dạng nh hình sau:
H×nh 2.1 CÊu tróc th môc
Khác với cấu trúc FAT, th mục trong volume ảo có thêm phần Header gồm các thông tin sau:
Tên trờng Kích thớc Mô tả
Ma_nhan_dang 10 Khối mã nhận dạng th mục
So_entry 4 Số lợng entry trong th mục
Du_phong 4 Dự phòng cho những phiên bản sau
Bảng 1.7 Thông tin Header của th mục
Trong bảng Header trên, trờng mã nhận dạng có một ý nghĩa rất quan trọng trong an toàn dữ liệu Khi đĩa hỏng hoặc máy bị tắt đột ngột khi đang thực hiện các lệnh vào ra trên volume ảo sẽ có thể làm hỏng thông tin trong entry của th mục nào đó Nếu entry này là một th mục con thì toàn bộ các file và th mục con của nó đều bị mất Căn cứ vào trạng thái của các block, ta có thể phục hồi lại các file và th mục con này nhng chỉ thu đợc chúng ở dạng các file mà không biết đợc file này là th mục hay file thực sự Việc này sẽ đợc giải quyết thông qua tr- ờng mã nhận dạng trên Nếu file nào có đoạn đầu khớp với mã này thì đây rất có thể là 1 th mục Khi đã khôi phục đợc th mục, ta sẽ dễ dàng khôi phục lại đợc các file và th mục con chứa trong nó Đây chính là điểm nâng cấp của volume ảo, khắc phục đợc nhợc điểm của hệ thống FAT về an toàn dữ liệu.
2.5.2 Nội dung Entry của th mục
Mỗi Entry là một bảng mô tả file bao gồm các thông tin sau:
Tên trờng KT Mô tả
Ten 40 Tên của file (th mục) con (UNICODE) Thuoc_tinh 2 Thuộc tính của file (th mục) con
Kich_thuoc 4 Kích thớc thực (byte) của file (th môc)
Kich_thuoc_ma 4 Kích thớc (byte) của file (th mục) khi đã đợc mã hóa. block_dau 4 STT của block đầu tiên chứa nội dung file này Thoi_gian_tao 8 Thời điểm tạo của file
Thoi_gian_sua 8 Thời điểm sửa đổi nội dung cuối cùng của file Thoi_gian_xoa 8 Thời điểm file bị xóa
Muc_bao_mat 1 Chỉ ra mức bảo mật của file
Du_phong 4 Dự phòng cho version sau
Nội dung một số trờng trong bảng trên
Trờng “thuoc_tinh” mô tả những thuộc tính của file (th mục) tơng ứng Thuộc tính này là sự kết hợp của các bit thuộc tÝnh sau:
Tt_Thumuc Nếu cờ này đợc bật thì đối tợng có thuộc tính tơng ứng là một th mục Nếu không thì nó là một file
Tt_an Nếu đối tợng có thuộc tính này thì sẽ chỉ đợc liên kê trong các lệnh tìm kiếm khi tuỳ chọn “hiển thị file ẩn” đợc đặt
Tt_hethong Đối tợng có thuộc tính này là những đối t- ợng đợc trình quản lý volume tạo tự động nhằm thực hiện một số mục đích đặc biệt Các đối tợng này sẽ không đợc liệt kê trong các lệnh tìm kiếm kể cả khi tên của chúng khớp với mẫu cần tìm Các lệnh thao tác của ngời dùng đối với đối tợng có thuộc tính này cũng bị huỷ bỏ.
Tt_chidoc Chỉ cho phép đọc, không cho phép sửa nội dung (vẫn có thể sửa tên).
Tt_nhap File có thuộc tính này đợc dùng để ghi nháp Tt_bixoa File hoặc th mục đã bị xóa
Ten_file_dai Ten của file có độ dài >20 ký tự, trongtr- ờng hợp này hệ thống sẽ dành 2 Entry tiếp theo để lu tên đầy đủ của file tơng ứng.
Các dạng volume ảo
2.6.1 Volume ảo lu trên 1 file Đây là dạng đơn giản nhất của volume ảo Cấu trúc của nó rất giống với cấu trúc chung của volume ảo trình bày ở trên Tuy nhiên bảng thông tin volume đợc bổ sung một số trờng mô tả kiểu mở rộng của volume ảo gồm:
Kiểu mở rộng Xác định kiểu mở rộng của volume ảo
Giá trị mở rộng Phụ thuộc vào kiểu mở rộng
Bảng 1.10 Bảng thông tin mở rộng volume ảo lu trên 1 file
Các kiểu mở rộng của volume ảo gồm:
Kiểu mở rộng của volume ảo
Mô tả ý nghĩa của tr- ờng giá trị mở réng
VLA_NEXP Volume ảo có kích thớc cố định, không thể mở rộng đợc
Kích thớc thực của volume ảo
VLA_EXPTO Volume ảo sẽ đợc mở rộng tối đa đến kích thớc đợc chỉ ra trọng trờng giá trị mở rộng
KÝch thíc tèi ®a của volume ảo
VLA_EXPUNTIL Volume ảo sẽ đợc mở rộng tới khi kích thớc vùng trống trên đĩa 0)
Bảng 1.12 Thông tin liên kết của volume ảo lu trên nhiều file
Hai trờng fSign và fNSign đợc dùng để kiểm tra liên kết giữa các file có chính xác hay không Khi một file chứa volume ảo đợc tạo ra, trình quản lý volume ảo sẽ tự động sinh ra một mã định danh cho file đó căn cứ vào thời điểm tạo ra file và tên của file này Vì 2 file chứa volume ảo khác nhau thì nội dung của 2 thông tin này rất khó trùng nhau Vì vậy nó có thể đợc sử dụng làm định danh cho file tơng ứng Nếu trờng fnName của
1 file fi chứa volume ảo không phù hợp có thể do ngời dùng đổi tên hoặc di chuyển file Trình quản lý volume ảo sẽ hỏi ngời dùng vị trí mới của file tơng ứng Khi đó trờng fSign của fi sẽ đợc so với trờng fNSign của file đợc chỉ ra Nếu chúng khớp nhau thì file đợc chỉ ra chính xác là file fi+1 của volume ảo.
Các file phụ của volume ảo chỉ chứa các thông tin liên kiết, phần không gian còn lại sẽ đợc sử dụng để lu trữ các phân vùng của volume ảo.
2.6.3 Volume ảo lu trên phân vùng của ổ cứng
2.6.3.1 Sơ lợc về phân vùng trên ổ cứng
Phân vùng đĩa là phơng phân chia một ổ đĩa vật lí thành một số ổ đĩa logic tức là ngời sử dụng có thể sử dụng một phân vùng đĩa trên một ổ đĩa vật lí nh là một ổ đĩa vật lí khác Để dễ dàng quản lí các phân vùng đĩa, mỗi phân vùng đĩa sẽ chiếm một số sector có địa chỉ logic kế tiếp nhau và mỗi ổ đĩa cứng luôn phải có ít nhất một phân vùng đĩa. Sector đầu tiên của mỗi phân vùng thờng chứa thông tin khởi động hệ điều hành và các thông tin cấu trúc của chính phân vùng đó Trên mỗi ổ đĩa cứng các thông tin về phân vùng đĩa đợc lu trữ ở sector đầu tiên (sector số 1) của track số 0, ngời ta gọi sector này là Master Boot Sector (hay Master Boot
Record viết tắt là mbr) Tuy nhiên, bảng thông tin này chỉ cho phép một ổ đĩa cứng tối đa chỉ có thể phân chia thành tối đa là 4 phân vùng đĩa Để khắc phục hạn chế này ngời ta đa ra khái niệm phân vùng đĩa mở rộng Phân vùng đĩa mở rộng thực chất cũng là một phân vùng đĩa bình thờng chỉ có điều khác là phân vùng đĩa mở rộng này không chứa dữ liệu mà chứa các phân vùng đĩa logic nằm trong phân vùng đĩa mở rộng này Sector đầu tiên của phân vùng đĩa mở rộng cũng có cấu trúc giống hệt nh mbr và đợc gọi là logical master boot record Một phân vùng đĩa mở rộng cũng chỉ có thể chứa bốn phân vùng đĩa logic, nhng trong phân vùng đĩa mở rộng lại có thể có phân vùng đĩa mở rộng khác và nh vậy số lợng phân vùng đĩa có thể tạo đợc trên một ổ đĩa vật lí là không hạn chÕ.
Các phân vùng đợc định dạng theo những cấu trúc nhất định để quản lý hệ thống file lu trữ trên nó Volume ảo chính là một cấu trúc quản lý file nên hoàn toàn có thể định dạng phân vùng theo cấu trúc của volume ảo.
2.6.3.2 Cấu trúc của volume ảo lu trên phân vùng của ổ cứng
Khi đợc lu trên phân vùng của ổ cứng, volume ảo có cấu trúc giống hoàn toàn với cấu trúc chung đã trình bày ở trên Nó thực sự trở thành một volume của đĩa nhng sẽ không đợc nhìn thấy trên hệ điều hành.
Bảo mật dữ liệu trên volume ảo
Cấu trúc của volume ảo tạo ra một cơ chế cho phép áp dụng bảo mật dữ liệu lu trên nó thông quan những đặc điểm sau:
- Việc bảo mật dữ liệu trên volume ảo đợc chia làm nhiều mức:
+ Không bảo mật: Dữ liệu đợc ghi thẳng vào volume ảo mà không dùng một thuật toán mã hóa nào.
+ Bảo mật mức thấp: Dữ liệu cũng đợc ghi thẳng vào volume ảo nhng khi đăng nhập volume ảo ở mức này, ngời dùng phải đa và những thông tin xác thực ngời dùng Nh vậy, việc bảo mật dữ liệu ở mức này chỉ là xác thực ngời dùng Nếu phân tích cấu trúc của volume ảo, dữ liệu vẫn có thể bị lấy cắp
+ Bảo mật mức cao: Dữ liệu có mức bảo mật này sẽ đợc khóa đợc sinh từ những thông tin xác thực ngời dùng Tuy nhiên, để thuật toán thực hiện nhanh, khóa này có chiều dài vừa phải.
+ Bảo mật mức rất cao: Mức bảo vệ này tơng tự nh bảo mật mức cao nhng chiều dài khóa đợc sinh là rất lớn làm cho việc giải mã khối dữ liệu này gần nh không thể thực hiện đợc.
Sở dĩ ta cần phân chia việc bảo vệ dữ liệu thành nhiều mức nh trên bởi, bản thân dữ liệu lu trên volume ảo cũng có độ quan trọng khác nhau Mặt khác, nếu ta áp dụng các thuật toán mã hóa càng phức tạp bao nhiêu thì việc vào ra dữ liệu sẽ chập đi bấy nhiêu Vì vậy, với những dữ liệu không quan trọng, ta có thể lựa chọn mức bảo vệ thấp cho chúng Ngợc lại, với những dữ liệu quan trọng thì ra cần lựa chọn những mức bảo mật cao để bảo vệ dữ liệu này Trên volume ảo, mức bảo mật của từng file đợc lu trong khối thông tin mô tả file bởi trờng “mức bảo mật” Các thông tin xác thực ngời dùng không đợc lu trực tiếp trên volume ảo mà chỉ lu dới dạng kết quả của những hàm băm 1 chiều Những thông tin này giúp cho trình quản lý volume ảo có thể kiểm tra ngời dùng có đăng nhập đúng hay không nhng không thể phục hồi các thông tin đăng nhập để tạo khóa giải mã dữ liệu Do vậy, việc giải mã những dữ liệu có mức bảo vệ cao trên volume ảo là rất khó thực hiện.
Bảo đảm an toàn dữ liệu trên volume ảo
An toàn dữ liệu trên volume ảo đợc đảm bảo thông qua những đặc điểm cấu trúc sau:
- Các bảng thông tin hệ thống quan trọng của volume ảo bao gồm bảng thông tin volume ảo và các bảng trạng thái block trên các phân vùng con đều đợc lu thành nhiều bản.
Số bản sao của chúng đợc chỉ ra trong trờng “số bản sao” trong bảng thông tin volume Khi có sự cố, các bản sao này sẽ đợc huy động để phục hồi các thông tin trên volume ảo.
- Sau mỗi bảng thông tin hệ thống của volume ảo đều lu chữ ký số của bảng tơng ứng Việc này giúp trình quản lý volume ảo biêt chính xác bảng nào đã bị hỏng (chữ ký của nó không khớp với thông tin chữ ký gốc đợc lu phía sau nó) và bảng nào có thông tin chính xác (chữ ký của nó khớp với thông tin chữ ký gốc đợc lu phía sau nó)
- Th mục trên volume ảo có chứa một khối Header Khối thông tin này giúp nhận ra th mục khi thông Entry tơng ứng của th mục bị hỏng.
Trình điều khiển vào ra trên volume ảo
Chức năng tự kiểm tra
Để bảo vệ volume ảo, trớc hết, trình quản lý volume ảo cần phải có cơ chế tự bảo vệ chính nó, chống lại sự tấn công của virus hay bị debug để tìm hiểu các quá trình quan trọng nh quá trình tạo khóa từ thông tin xác thực ngời dùng, mã và giải mã dữ liệu… Để hiểu rõ vấn đề này, ta xét một tình huống sau:
Do volume ảo có thể lu trên đĩa dới dạng 1 file nên toàn bộ volume ảo có thể bị sao chép nếu máy tính bị tấn công từ mạng Giả sử A có đợc toàn bộ file chứa volume ảo lấy đợc của
B Muốn lấy đợc dữ liệu bên trong volume ảo A cần những thông tin đăng nhập hệ thống Để lấy đợc thông tin này, A có có thể dùng những cách sau:
- Đối với dữ liệu có mức bảo mật thấp, A có thể phân tích cấu trúc volume ảo để lấy đợc dữ liêu Hoặc sửa lại trình quản lý volume ảo để nó bỏ qua những đoạn kiểm tra quyền ngời dùng.
- Đối với dữ liệu có mức bảo vệ cao, A bắt buộc phải lấy đợc thông tin đăng nhập của B để giải mật Trong trờng hợp này, A sẽ sửa lại code trình quản lý volume ảo của B để theo dõi những thông tin đăng nhập hệ thống.
Muốn chống lại những nguy cơ trên, trình quản lý volume ảo đã sử dụng những ký thuật đặc biệt sau:
- Sử dụng chữ ký số để tự kiểm tra Khi mới đợc biên dịch, trình quản lý sẽ có một chữ ký số đợc xây dựng từ những hàm băm mã hóa trên Chữ ký này sẽ đợc lu vào một vùng bí mật của hệ thống Trong quá trình chạy, trình quản lý sẽ tự sinh lại chữ ký số của chính nó rồi so sánh chữ ký này với chữ ký gốc trên Nếu chúng khớp nhau có nghĩa là mã của trình quản lý không bị thay đổi thì nó mới tiếp tục cung cấp các dịch vụ vào ra trên volume ảo cho ngời dùng Nếu không khớp, tức là đã có một sự thay đổi bất thờng trong code của chơng trình này Sự thay đổi này chủ yếu do 2 nguyên nhân là bị nhiễm virus hoặc bị sửa code nhằm mục đích nào đó Trong trờng hợp này, trình quản lý volume ảo sẽ tự động kết thúc mọi dịch vụ của nó nhằm trách những hậu quả xấu đối với dữ liệu trên volume ảo.
- Sử dụng kỹ thuật “bom thời gian” và các hàm mã hóa một chiều khi so sánh các thông tin quan trọng nhằm trách bị crack Những điểm vào ra quan trọng của chơng trình đều đợc cài những đoạn mã theo dõi thời gian hoạt động của chúng Nếu phát hiện thời gian thực hiện quá lâu thì rát có thể nó đang bị debug Do vậy hệ thống sẽ tự động kết thúc để tránh bị debug Đối với các đoạn mã kiểm tra quan trọng, để chống lại việc bị bẻ khóa chơng trình, ta cần sử
Tạo và định dạng cho volume ảo
Công việc tạo và định dạng volume ảo đợc tiến hành khi volume ảo đợc tạo mới hoặc vừa đợc format lại theo định dạng mới Công việc cụ thể tùy vào từng kiểu volume ảo nhng trình tự khởi tạo chung là:
- Bớc 1: Khởi tạo bảng thông tin volume
- Bớc 2: Tạo phân vùng đầu tiên cho volume ảo
- Bớc 3: Cấp phát một số block mặc định th mục gốc.
Copy, di chuyển, đổi tên, xoá các file và th mục 101 Phần 3 Công cụ tìm kiếm mờ trên môi trờng volume ảo
Trong thời gian vừa qua chúng em đã khảo sát một số hệ thống tìm kiếm nh google, altavista và hệ thống tìm kiếm của th viện quốc gia Báo cáo này em xin trình bày những thông tin mà em thu đợc từ các hệ thống trên Nó tập chung vào một số điểm quan trọng sau:
- Phơng pháp thu nhận và lu trữ thông tin phục vụ cho quá tr×nh t×m kiÕm
- Phơng pháp trình bày giao diện cho phép ngời dùng nhập vào thông tin truy vấn
- Phơng pháp tìm kiếm và trình bày kết quả tìm kiếm, đặc biệt là khả năng tìm kiếm mờ, và hỗ trợ tìm kiếm tiếng Việt
- Các tiện ích hay trong từng hệ thống
Nói chung, các hệ thống tìm kiếm trên đợc chia thành 2 loại là tìm kiếm thông tin không định dạng và tìm kiếm thông tin có định dạng.
Thông tin không định dạng là thông tin có trong những tài liệu mà ta không thể hoặc rất khó xác định đợc thông tin trong nó có cấu trúc nh thế nào và có những nội dung gì Các tài liệu dạng này là các web page, các tài liệu đa phơng tiện đ- ợc lu trong các file có đuôi txt, rtf, doc, pdf… Hệ thống tìm kiếm thông tin dạng này thờng hoạt động trên mạng Chúng có một bộ phận thu nhận các tài liệu dạng này và cập nhật chúng vào cơ sở dữ liệu của mình để phục vụ cho việc trả lời ngời dùng Giao diện của các hệ thống này cũng khá đơn giản với
khảo sát một số hệ thống tìm kiếm hiện nay .104
1.1.1 Giới thiệu chung về Google
Google là một hệ thống tìm kiếm thông tin không định dạng điển hình hoạt động trên mạng Internet Kết quả tìm kiếm mà nó trả về là những trang web hoặc một số tài liệu trên mạng có chứa những thông tin liên quan đến từ khoá do ng- ời dùng nhập vào Tốc độ tìm kiếm của Google là rất nhanh và chính xác trên một số lợng khổng lồ các trang web.
1.1.2 Cấu trúc và hoạt động của hệ thống Google
Trong google có một bộ phận dò tìm và thu nhận các web page trên mạng gọi là Crawlers Từ danh sách các trang web do một bộ phận khác là URLserver gửi tới, nó tải các trang web này về và chuyển cho bộ phận Storeserver xử lý Bộ phận này sẽ nén và lu trữ chúng trong một kho chứa (Repository) Tại đây, mỗi tài liệu sẽ đợc xác định bởi một mã định danh docID. Những tài liệu mới sẽ đợc bộ phận Indexer đọc, giải nén và tiến hành phân tách chúng Từng tài liệu sẽ đợc tách thành các từ và đợc lu trong các hits Mỗi hits ghi thông tin về một từ trong tài liệu là mã từ (wordID), docID, vị trí, kích thớc font chữ… Sau đó các hits này sẽ đợc Indexer lu trữ trong một tập các đối tợng Barrels, sắp xếp chúng theo thứ tự tăng của docID Indexer cũng thực hiện một chức năng quan trọng khác là phân tách tất cả các liên kết (link) ở tất cả các trang web và lu chữ chúng trong một tệp đợc gọi là Anchors file File này chứa đầy đủ thông tin quyết định mỗi liên kết nằm trên trang nào và liên kết tới đâu đồng thời nó cũng cung cấp thông tin về cácURL cho bộ phận URLresolver Chức năng chủ yếu của bộ phận này là từ những liên kết đợc lu trong anchors file, nó tìm xem liên kết này trỏ đến tài liệu nào trong các tài liệu đã có sẵn trong kho Từ đó sinh ra CSDL các kết nối (links database) chứa các cặp docID phục vụ trong công việc tính hạng sau này Sau khi các hits đã đợc lu trữ trong các Barrels Bộ phận Sorter sẽ tiến hành tạo ra một bảng chỉ số ngợc bằng cách sắp xếp lại các sách các wordID mà mỗi phần tử của nó trỏ tới vị trí bắt đầu xuất hiện từ này trong bảng chỉ số ngợc trên Bộ phận
Searcher đợc chạy bởi web server Nó chính là bộ phận tạo ra giao diện của web site Google.com Sau khi yêu cầu tìm kiếm, Searcher tách cách câu truy vấn thành các từ khoá Sau đó nó tra bảng danh sách từ để biết đợc wordID của từ này rồi tra các bảng index trên và một số công nghệ khác để đa ra kết quả.
Hình 3.1 Cấu trúc bộ máy Google
1.1.3 Phơng pháp đánh hạng kết quả trong Google Để dánh hạng các kết quả tìm đợc google sử dụng một số công nghệ sau:
PageRank đợc coi là “trái tim” của google Đó là một hệ thống xếp hạng các trang web đã đợc crawlers tải xuống từ mạng ý tởng của pagerank là từ những liên kết giữa các trang web google tạo ra một bản đồ liên kết Từ đó biết đợc với một trang cho trớc (A) thì có những trang nào liên kết tới chúng và có bao nhiêu liên kết xuất phát từ trang đã cho từ đó tính đợc giá trị pagerank của trang này theo công thức:
PR(A) = (1-d) + d (PR(T1)/C(T1) + + PR(Tn)/C(Tn))
Víi: d là một hằng số cho trớc (0