2.6.1. Một số ứng dụng
Mục tiêu chính của PKI là cung cấp khóa công khai và xác định mối liên hệ giữa khóa và định dạng ngƣời dùng. Nhờ vậy ngƣời dùng có thể sử dụng trong một số ứng dụng nhƣ:
- Mã hoá Email hoặc xác thực ngƣời gửi Email (OpenPGP hay S/MIME). - Mã hóa hoặc nhận thực văn bản (Các tiêu chuẩn Chữ ký XML* hoặc mã hoá XML* khi văn bản đƣợc thể hiện dƣới dạng XML).
- Xác thực ngƣời dùng ứng dụng (Đăng nhập bằng thẻ thông minh - smartcard, nhận thực ngƣời dùng trong SSL).
- Các giao thức truyền thông an toàn dùng kỹ thuật Bootstrapping (IKE, SSL): trao đổi khóa bằng khóa bất đối xứng, còn mã hóa bằng khóa đối xứng.
2.6.2. Một số hệ thống PKI
Dƣới đây là danh sách một số hệ thống PKI, trong đó một số nhà cung cấp chứng thực số hàng đầu (ví dụ VeriSign) không đƣợc liệt kê vì các phần mềm của họ không đƣợc công bố công khai :
- Hệ thống quản lý chứng thực Red Hat - Computer Associate eTrust PKI - Microsoft
- OpenCA (Một mô hình PKI mã nguồn mở) - RSA Security
- IDX-PKI - Simple CA
2.7. Giải pháp xác thực 2.7.1. Hàm băm mật mã học 2.7.1. Hàm băm mật mã học
Hàm băm (tiếng anh: hash function) là hàm sinh ra các giá trị băm tƣơng ứng với mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đoạn tin nhắn...). Giá trị băm đóng vai trò gần nhƣ một khóa để phân biệt các khối dữ liệu, tuy nhiên, ngƣời ta chấp nhận hiện tƣợng trùng khóa hay còn gọi là đụng độ và cố gắng cải
17 thiện giải thuật để giảm thiểu sự dụng độ đó. Hàm băm thƣờng đƣợc dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc so sánh các giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thƣớc lớn).[2]
Trong ngành mật mã học một hàm băm mật mã học (tiếng anh: Cryptographic hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn nhƣ chung thực (authentication) và kiểm tra tính toàn vẹn của tin nhắn (message integrity). Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi đƣợc gọi là tóm tắt thông điệp (message digest) hoặc chứ ký số (digital fingerprint).
Hàm băm mật mã học là hàm băm và có tính chất là hàm 1 chiều. Từ khối dữ liệu hay giá trị băm đầu vào chỉ có thể đƣa ra 1 giá trị băm duy nhất. Nhƣ chúng ta đã biết đối với tính chất của hàm 1 chiều. Một ngƣời nào đó dù bắt đƣợc giá trị băm họ cũng không thể suy ngƣợc lại giá trị, đoạn tin nhắn băm khởi điểm.
Hàm băm thƣờng đƣợc dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp. Giá trị băm đóng vai trò gần nhƣ một khóa để phân biệt các khối dữ liệu
Giá trị đầu vào(tin nhắn, dữ liệu...) bị thay đổi tƣơng ứng giá trị băm cũng bị thay đổi. Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết ngay lập tức.
2.7.2. Thuật toán hàm băm MD5
MD5 (Message-Digest algorithm 5) là một hàm băm mật mã đƣợc sử dụng phổ biến, đƣợc thiết kể bởi Giáo sƣ Ronald L. Rivest tại trƣờng MIT vào năm 1991 để thay thế cho hàm băm trƣớc đó là MD4 (1990). Là một chuẩn Internet (RFC 1321), MD5 đã đƣợc dùng trong nhiều ứng dụng bảo mật và cũng đƣợc dùng phổ biến để kiểm tra tính toàn vẹn của tập tin. Cũng nhƣ các hàm băm
18 khác nhƣ MD4 và SHS (Secure Hash Standard), MD5 là phƣơng pháp có ƣu điểm tốc độ xử lý rất nhanh, thích hợp với các thông điệp dài và cho ra giá trị băm dài 128 bit.
Trong MD5, thông điệp ban đầu X sẽ đƣợc mở rộng thành dãy bit X có độ dài là bội của 512. Dãy bit X gồm các thành phần đƣợc sắp thứ tự nhƣ sau: Dãy bit X ban đầu, một bit 1, dãy d bit 0 (d đƣợc tính sao cho dãy X cuối cùng là bội của 512), dãy 64 bit l biểu diễn chiều dài của thông điệp. Đơn vị xử lý trong MD5 là các từ 32-bit, nên dãy bit X ở trên sẽ đƣợc biểu diễn thành dãy các từ X[i] 32-bit sau:
X=X[0] X[1] X[2] …X[N−1] , với N là bội của 16.[5]
2.7.3.Chuẩn băm an toàn SHS
SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật mã an toàn (Secure Hash Algorithm – SHA) nhƣ SHA-1, SHA-224, SHA- 256, SHA-384, SHA-512 do NIST2 và NSA3 xây dựng.
Phƣơng pháp SHA-1 (cũng nhƣ SHA-0) đƣợc xây dựng trên cùng cơ sở với phƣơng pháp MD4 và MD5. Tuy nhiên, phƣơng pháp SHA-1 sử dụng trên hệ thống Big-endian5 thay vì Little-endian6 nhƣ phƣơng pháp MD4 và MD5. Ngoài ra, hàm băm SHA-1 tạo ra thông điệp rút gọn kết quả có độ dài 160 bit nên thƣờng đƣợc sử dụng
Phƣơng pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhƣng thông điệp tóm tắt đƣợc tạo ra có độ dài 160 bit. Dƣới đây là một số điểm so sánh giữa MD5 và SHA1
- Giống nhƣ MD5, SHA-1 cũng thêm chu kỳ thứ 4 để tăng mức độ an toàn cho thuật toán. Tuy nhiên, chu kỳ 4 của SHA-1 sử dụng lại hàm f của chu kỳ thứ 2.
- Trong SHA-1, 20 bƣớc biến đổi trong cùng một chu kỳ sử dụng cùng một hàng số K[t] . Trong khi đó, mỗi bƣớc biến đổi trong cùng một chu kỳ của MD5 sử dụng các hằng số khác nhau.
19 - So với MD4, hàm G trong MD5 đƣợc thay thế thành hàm mới để làm giảm tính đối xứng. Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại hàm G của MD4.
- Cả MD5 và SHA-1, mỗi bƣớc biến đổi trong từng chu kỳ chịu ảnh hƣởng kết quả của biến đổi trƣớc, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền.
2.8. Các thuật toán chữ ký số thông dụng
Chữ ký số giúp xác định đƣợc ngƣời tạo ra hay chịu trách nhiệm đối với một thông điệp đƣợc ký. Một phƣơng pháp chữ ký số phải bao gồm ít nhất 3 thuật toán chính, đó là thuật toán dùng để tạo khóa, thuật toán dùng để tạo ra chữ ký sốvà thuật toán tƣơng ứng để xác nhận chữ ký số.
2.8.1. Thuật toán chữ ký số RSA
- Phƣơng pháp chữ ký số RSA đƣợc xây dựng dựa trên thuật toán mã hóa khóa công khai RSA. Để tạo một cặp khóa, RSA thực hiện các bƣớc sau:
Chọn 2 số nguyên tố lớn ngẫu nhiên p, q. Để có sự an toàn tối đa nên chọn p và q có độ dài bằng nhau.
Tính n=pq và φ=(p−1)(q−1).
Chọn ngẫu nhiên một số nguyên e (1<e<φ) sao cho gcd(e, φ)=1 với gcd là ƣớc số chung lớn nhất.
Tính: d=e−1 mod φ.
- Kết quả là ta có đƣợc cặp khóa: khóa công khai (n,e) và khóa bí mật (n,d). Hai ngƣời sẽ sử dụng chung một hàm băm ℋ an toàn trƣớc hiện tƣợng xung đột. Để ký một thông điệp m, ngƣời ký thực hiện các bƣớc sau:
Dùng hàm băm để băm thông điệp m: h= ℋ (m).
Tạo chữ ký số sử dụng khóa bí mật (n,d) để tính:
s=hd mod n.
Chữ ký của m là s và đƣợc gửi kèm với thông điệp m đến ngƣời nhận. Để xác nhận chữ ký, ngƣời nhận thực hiện các bƣớc sau:
20
Sử dụng khóa công khai (n,e) của ngƣời ký để giải mã chữ ký:
h=semod n.
Sử dụng cùng hàm băm với ngƣời ký để băm thông điệp m: h′=H(m).
Chấp nhận chữ ký nếu h′=h. Ngƣợc lại từ chối chữ ký.
2.8.2. Thuật toán chữ ký số DSA
Thuật toán chữ ký số DSA (Digital Signature Algorithm) đƣợc đề nghị bởi NIST vào tháng 8/1991 để sử dụng trong chuẩn chữ ký số DSS (Digital Signature Standard), đƣợc chỉ ra trong FIPS 186, đƣợc chấp nhận năm 1993. Một sửa đổi nhỏ đƣợc đƣa ra ngày năm 1996 trong FIPS 186-1, chuẩn đƣợc mở rộng hơn năm 2000, đƣợc xem nhƣ FIPS 186-2. Việc tạo khóa gồm hai bƣớc. Bƣớc thứ nhất là lựa chọn các tham số cho thuật toán đƣợc chia sẻ giữa các ngƣời sử dụng khác nhau trong cùng hệ thống:
Chọn một hàm băm mã hóa trong DSS chuẩn luôn là SHA-1, nhƣng các hàm băm tốt hơn trong nhóm SHA cũng đang đƣợc sử dụng. Đôi khi đầu ra của một thuật toán băm mới hơn bị rút ngắn kích thƣớc so với các thuật toán băm mới cũ để tƣơng tích với cặp khóa hiện có.
Chọn kích thƣớc khóa L. Đây là thƣớc đo chính quyết định sức mạnh mã hóa của khóa. DSS chuẩn ràng buộc L là bội số của 64 và 512≤L≤1024. Sau đó, FIPS 186-2 xác định L luôn là 1024. Không lâu sau, NIST 800-57 đề nghị độ dài khóa là 2048 (hoặc 3072) để thời gian an toàn đến năm 2010 (hoặc 2030), sử dụng tƣơng ứng với các giá trị băm và q dài hơn. Bản thảo FIPS 186-3 cũng tính đến các hàm băm sau này và các khóa dài hơn.[4]
Chọn một số nguyên tố q cùng số bit với đầu ra của.
Chọn một số nguyên tố p độ dài L bit sao cho p–1 là bội của q. Tức là p=qz–1 với số nguyên z nào đó.
Chọn g = h(p1)/q mod p với h bất kỳ (1<h<p–1), và chọn lại nếu kết quả là 1. Hầu hết cách chọn h đều nhận đƣợc g có thể sử dụng, thông thƣờng chọn h=2.
21 - Các tham số thuật toán (p,q,g) có thể chia sẻ giữa những ngƣời khác nhau trong hệ thống. Bƣớc thứ hai tính các khóa bí mật và khóa công khai của từng ngƣời:
Chọn x ngẫu nhiên sao cho 0<x<q.
Tính y=gx
mod p.
Khóa công khai là (p,q,g,y), khóa bí mật là x.
- Phiên bản FIPS 186-3 sắp tới sử dụng SHA-224/256/384/512 là các hàm băm, kích thƣớc của q là 224 (hoặc 256 bit), và L bằng 2048 (hoặc 3072).
- Để ký một thông điệp m, ngƣời ký thực hiện các bƣớc sau:
Phát sinh một số ngẫu nhiêu k (0<k<q) cho mỗi thông điệp.
Tính r=(gk
mod p) mod q.
Tính s = k1
((m) + xr)) mod q.
Tính toán lại chữ ký trong trƣờng hợp không chắc chắn r=0 hoặc s=0.
Chữ ký là (r,s).
- Để xác nhận chữ ký, ngƣời nhận thực hiện các bƣớc sau:
Loại bỏ chữ ký nếu 0<r<q hoặc 0<s<q không thỏa mãn.
Tính w=s1 mod q. Tính u1=((m)×w) mod q. Tính u2=(r×w) mod q. Tính v=( (gu1 ×yu2 )mod p) mod q Chữ ký có hiệu lực nếu v=r.
- Tính đúng đắn của giải thuật đƣợc chứng minh nhƣ sau:
Đầu tiên, nếu g = h(p1)/q
mod p suy ra gp=hp1−1=1 (mod p) theo định lý Fermat nhỏ. Bởi vì g>1 và q là số nguyên tố nên g có bậc q.
Ngƣời ký tính s = k1
((m) + xr)) mod q.
Nhƣ vậy k=(m)s1
+xrs1=(m)w+xrw (mod q).
22
gk=gH(m)w.gxrw=gH(m)wyrw=gu1
yu2
(mod p).
Cuối cùng, tính đúng đắn của DSA suy ra từ:
r= (gk mod p) mod q= (gu1
yu2
mod p) mod q=v.
- Phƣơng pháp DSA đã giải quyết vấn đề này bằng cách sử dụng chữ ký 320 bit cho văn bản 160 bit với các phép tính đƣợc thực hiện trên tập con có 2160 phần tử với p là số nguyên tố 512 bit.[7]
23
CHƢƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG VÀ CÀI ĐẶT 3.1. Dữ liệu bài toán
Từ các thông tin về hệ thống, phân hệ thống thành nhóm dữ liệu vào ra nhƣ sau:
Nhóm dữ liệu đầu vào:
- Thông tin xác thực: tài khoản, mật khẩu, chứng thực số (smart usb)... - Thông tin sinh viên: Họ tên, ngày sinh, khóa, nơi sinh ..
- Nhóm dữ liệu liên quan tới điểm: Điểm thi các môn, điểm tổng kết
- Nhóm dữ liệu về các danh mục cần quan tâm: Danh sách lớp, danh sách các môn học, học phần ...
- Nhóm dữ liệu đầu ra:
- Danh sách sinh viên tƣơng ứng với điểm của các học lập, theo từng lớp - Kết quả học tập mỗi sinh viên. [8]
Mô hình tổng thể tiến trình xử lý điểm
Xác thực
Ngƣời dùng Điểm sinh viên Thống kê, xử
lý điểm Phân loại điểm
Lƣu điểm vào cơ sở dữ liệu Hiển thị điểm
24
3.2. Phân tích hệ thống
3.2.1. Biểu đồ phân cấp chức năng
Quản lý điểm
Đăng nhập Tra cứu Nhập thông
tin
Xử lý thông
tin Báo cáo
Nhập thông tin sinh viên Nhập điểm Nhập học phần Tìm kiếm Phân loại điểm Lưu điểm Hiển thị dữ liệu
Hình 3.2. Biểu đồ phân cấp chức năng Mô tả các chức năng:
- Chức năng Đăng nhập: Ngƣời quản lý hoặc sinh viên liên quan sẽ đƣợc cấp phát một chứng thực số, để vào hệ thống quản lý điểm ngƣời dùng phải xác thực bằng tài khoản, mật khẩu, chứng thực số đã đƣợc cấp phép
- Chức năng Tra cứu: Dựa vào thông tin về sinh viên, thông tin học phần, thông tin lớp ... để tìm danh sách bảng điểm tƣơng ứng
- Chức năng Nhập thông tin: Chức năng này liên quan tới những ngƣời quản lý hệ thống quản lý điểm khi đăng nhập vào hệ thống xong thì họ có quyền
25 đƣợc thêm bớt, chỉnh sửa thông tin của sinh viên cũng nhƣ thông tin về điểm, học phần, hay tên lớp...
- Chức năng Xử lý thông tin: chức năng này thực hiện nhiệm vụ phân loại điểm đầu vào, thông tin sinh viên. Dựa vào bảng điểm đầu vào sẽ tính toán sinh viên đó trƣợt hay đỗ, học lại hay không phải học lại. Ngoài ra nó có nhiệm vụ lƣu thông tin xử lý và nhận đƣợc vào cơ sở dữ liệu và hiển thị dữ liệu lên màn hình cho ngƣời dùng xem
- Chức năng Báo cáo: Dựa vào thông tin đã tìm kiếm, ngƣời dùng có có thể in báo cáo về thông tin đã tìm kiếm
3.2.2. Phân tích các yêu cầu nghiệp vụ Các thao tác nghiệp vụ: Các thao tác nghiệp vụ:
- Sinh viên: là ngƣời sử dụng chung, là những ngƣời có nhu cầu xem thông tin điểm của các sinh viên. Họ chỉ có quyền xem điểm
Sinh viên
- Quản lý: Có tất cả các quyền của hệ thống, nhóm này còn có thêm chức năng quản lý ngƣời dùng, quản lý học phần, quản lý khoa, quản lý lớp
Quản lý
- Nghiệp vụ Xác thực
Xác thực
Nghiệp vụ Xác thực dành cho cả sinh viên và quản lý, để xác thực ngƣời dùng có đƣợc phép truy cập vào hệ thống quản lý điểm
26
Tra cứu
Nghiệp vụ Tra cứu dành cho cả sinh viên và quản lý, để có thể tìm kiếm thông tin từ thông tin đầu vào nhƣ thông tin sinh viên, thông tin lớp, thông tin học phần...
- Nghiệp vụ Nhập thông tin
Nhập thông tin
Nghiệp vụ Nhập thông tin chỉ dành cho quản lý, quản lý có thể thêm sửa xóa thông tin về sinh viên, thông tin điểm, học phần, lớp…
- Nghiệp vụ Xử lý thông tin
Xử lý thông tin
Nghiệp vụ Xử lý thông tin tính toán thông tin đầu vào và hiển thị dữ liệu lên màn hình cho ngƣời dùng, đồng thời lƣu dữ liệu vào cơ sở dữ liệu
- Nghiệp vụ Báo cáo
Báo cáo
Nghiệp vụ Báo cáo cho phép cả Quản lý và Sinh viên in, chiết xuất nội dung từ thông tin đã xem, tìm kiếm.
27 Lƣợc đồ usecase nghiệp vụ: Sinh viên Quản lý Xác thực Tra cứu Nhập thông tin Xử lý thông tin Báo cáo Quản lý điểm
Hình 3.3. Biểu đồ Usecase nghiệp vụ Phân tích yêu cầu hệ thống:
Danh sách tác nhân:
Tác nhân Mô tả
Sinh viên Là những sinh viên có nhu cầu xem kết quả học tập ở khoa mà mình đang học. Có thể gọi chung là khách Quản lý Là những ngƣời có quyền quản lý nhƣ giáo viên, nhân
viên quản trị hệ thông đƣợc quyền đăng nhập thể thực hiện các thao tác thêm sửa xóa thông tin sinh viên, điểm, khóa, lớp, thống kê và báo cáo