ĐỀ TÀI: TRÌNH BÀY VỀ VẤN ĐỀ XÁC THỰC
(NHẬN DẠNG
MỤC LỤC
I. Vấn đề xác thực 2
II. Phân loại xác thực 2
II.1. Xác thực thực thể 2
II.1.1. Những gì người dùng biết 3
II.2. Xác thực dữ liệu 5
II.2.1. Xác thực thông điệp 5
II.2.2. Xác thực giao dịch 5
II.2.3. Xác thực khóa 6
II.2.4. Xác thực nguồn gốc dữ liệu 6
II.2.5. Xác thực bảo đảm toàn vẹn dữ liệu 6
VẤN ĐỀ XÁC THỰC (NHẬN DẠNG)
I. Vấn đề xác thực
Xác thực (Authentication Protocols) là một hành động thiết lập hoặc
chứng thực một cái gì đó (hoặc một người nào đó) đáng tin cậy, có nghĩa là,
những lời khai báo do người đó đưa ra hoặc về vật đó là đúng sự thật. Xác thực
một đối tượng còn có nghĩa là công nhận nguồn gốc của đối tượng, trong khi xác
thực một người thường bao gồm việc thẩm tra nhận dạng của họ. Việc xác thực
thường phụ thuộc vào một hoặc nhiều nhân tố xác thực để chứng minh cụ thể.
Trong an ninh máy tính, xác thực là một quy trình nhằm cố gắng xác minh
nhận dạng số của phần truyền gửi thông tin trong giao thông liên lạc, chẳng hạn
như một yêu cầu đăng nhập. Phần gửi cần phải xác thực có thể là một người
dùng sử dụng một máy tính, bản thân một máy tính hoặc một chương trình ứng
dụng máy tính.
Nói cách khác, xác thực thông tin là một quá trình nhằm đảm bảo một
người đang có ý định truy cập tới tài nguyên là đáng tin cậy.
Xác thực là một khâu đặc biệt quan trọng trong việc đảm bảo an toàn cho
hoạt động của hệ thống thông tin. Hệ thống luôn xác thực một thực thể trước
tiên khi nó cố thử thiết lập liên lạc. Khi đó nét nhận dạng của thực thể được
của người thân ). Ngoài ra, con người chỉ nhớ được một số lượng bản ghi hữu
hạn, họ phải nhớ mật khẩu của nhiều tài khoản khác nhau do đó họ chọn cách sử
dụng lại mật khẩu cho nhiều tài khoản khác nhau. Vì vậy nên những kẻ tấn công
dễ dàng truy cập tới tài khoản khác khi đã lấy được một tài khoản.
b. Giao thức Chứng thực bắt tay thách thức - Challenge Handshake
Authentication Protocol (CHAP)
Giao thức Chứng thực “Bắt tay Thách thức” là mô hình xác thực dựa trên
username/ password có cải tiến. Khi User cố gắng đăng nhập, server đảm nhiệm
vai trò xác thực sẽ gửi một thông điệp thử thách (challenge message) trở lại máy
tính user. Lúc này máy tính của User sẽ phản hồi lại username/ password được
mã hóa. Server xác thực sẽ so sánh phiên bản xác thực User được lưu giữ với
phiên bản mã hóa vừa nhận. Nếu trùng khớp, User sẽ được xác thực. Bản thân
password không bao giờ được gửi qua mạng.
3
Phương thức CHAP thường được sử dụng khi người dùng đăng nhập vào
các “remote servers” của công ty chẳng hạn như RAS server. Dữ liệu chứa
password được mã hóa gọi là mật khẩu băm (hash password). Một gói băm là
một loại mã hóa không có phương pháp giải mã.
II.1.2. Những gì người dùng có
Ví dụ như sở hữu khóa bí mật để ký điện tử, sở hữu thẻ từ (Magnetic-
striped Card), thẻ tín dụng (Credit Card), thẻ thông minh (Smart Card), chứng
minh thư (ID card), chứng chỉ an ninh (security token), chứng chỉ phần mềm
(software token) hoặc điện thoại di động (cell phone), …
a. Phương pháp xác thực Kerberos (Kerberos authentication)
Xác thực Kerberos là phương pháp dùng một Server trung tâm để kiểm tra
việc xác thực User và cấp phát thẻ thông hành (service tickets) để User có thể
truy cập vào tài nguyên hệ thống. Kerberos là một phương thức xác thực rất an
toàn nhờ việc dùng cấp độ mã hóa rất mạnh. Kerberos cũng dựa trên độ chính
xác của thời gian xác thực giữa Server và Client computer, do đó cần đảm bảo
kết nối đồng bộ thời gian giữa các thành phần của hệ thống. Kerberos là nền
được, nhưng với người chuyên nghiệp, thì các thông tin này có thể lấy được và
lưu trữ trước, sau đó làm giả mà hệ thông khó phát hiện được.
II.2. Xác thực dữ liệu
II.2.1. Xác thực thông điệp
Xác thực thông điệp (Message Authentication) hay Xác thực tính nguyên
bản của dữ liệu (Data Origin Authentication) là một kiểu xác thực đảm bảo một
thực thể được chứng thực là nguồn gốc thực sự tạo ra dữ liệu này ở một thời
điểm nào đó. Xác thực thông điệp bao hàm cả tính toàn vẹn dữ liệu, nhưng
không đảm bảo tính duy nhất và sự phù hợp về thời gian của nó.
II.2.2. Xác thực giao dịch
Xác thực giao dịch là xác thực thông điệp cộng thêm việc đảm bảo tính
duy nhất (Uniqueness) và sự phù hợp về thời gian (Timeliness) của nó. Xác thực
5
giao dịch liên quan đến việc sử dụng các tham số thời gian (TVB-Time Variant
Parameters).
Transaction Authentication = Message Authentication + TVB
Xác thực giao dịch “mạnh hơn” Xác thực thông điệp.
II.2.3. Xác thực khóa
+ Xác thực không tường minh khóa (Implicit Key Authentication): Một
bên được đảm bảo rằng chỉ có bên thứ hai (và có thể có thêm các bên tin cậy-
Trusted Parties) là có thể truy cập được khóa mật.
+ Khẳng định (Xác nhận) khóa (Key Confirmation): Một bên được đảm
bảo rằng bên thứ hai chắc chắn đã sở hữu khóa mật.
+ Xác thực tường minh khóa (Explicit Key Authentication) Bao gồm cả 2
yếu tố trên, nó chứng tỏ được định danh của bên có khóa đã cho.
Xác thực khóa tập trung vào định danh bên thứ hai có thể truy cập khóa
hơn là giá trị của khóa. Khẳng định khóa lại tập trung vào giá trị của khóa. Ta
gọi ngắn gọn Explicit Key Authentication là Key Authentication.
Chú ý: Xác thực dữ liệu đã bao gồm tính toán vẹn dữ liệu. Ngược lại thì
không.
mod p
Tập khóa K = {p,g,a,h}
Công khai: p,g,h
Bí mật a
2. Ký số:
Dùng 2 khóa ký: Khóa a và khóa ngẫu nhiên bí mật r thuộc Z
p-1
*
Chữ ký trên x là s = Sigk(x,r) = (y,gama)
Trong đó:
y = g
r
mod p
gama = (x-a*y)*r
-1
mod (p-1)
3. Kiểm tra chữ ký:
Ver(x,y,gama) = đúng <=> h
y
* y
gama
= g
x
mod p
Chú ý: nếu chữ ký được tính đúng kiểm thử sẽ thành công vì:
h
y
* y
gama
= g
// Kiem tra tinh nguyen to cua p;
if (HamThaoTac.KiemTraNguyenTo(Int64.Parse(txt_p.Text)) == 0)
{
MessageBox.Show("p không phải số nguyên tố");
return;
}
// Kiem tra tinh nguyen to cung nhau cua g va a voi p
if(HamThaoTac.UCLN(Int64.Parse(txt_g.Text),Int64.Parse(txt_p.Text))!
=1)
{
MessageBox.Show("g không phải số nguyên tố cùng nhau với p");
return;
}
if (HamThaoTac.UCLN(Int64.Parse(txt_a.Text), Int64.Parse(txt_p.Text)) != 1)
{
MessageBox.Show("a không phải số nguyên tố cùng nhau với p");
return;
}
// Tinh khoa cong khai h
BienToanCuc.h =
HamThaoTac.soMuTheoMod1(Int64.Parse(txt_g.Text),
Int64.Parse(txt_a.Text), Int64.Parse(txt_p.Text));
BienToanCuc.g = Int64.Parse(txt_g.Text);
BienToanCuc.a = Int64.Parse(txt_a.Text);
BienToanCuc.p = Int64.Parse(txt_p.Text);
txt_h.Text = BienToanCuc.h.ToString();
}
}
8
Encoding.Unicode);
StreamWriter writer2 = new StreamWriter(FileHashStream,
Encoding.Unicode);
MD5 md = new MD5CryptoServiceProvider();
byte[] result = md.ComputeHash(FileVanBanStream);
writer2.WriteLine(BitConverter.ToString(result));
//long lenght = FileVanBanStream.Length;
int lenght = result.Length;
Int64 i;
string tmp_y,tmp_gama;
Int64 y, gama;
for (i = 0; i < lenght; i++)
{
vanban = result[i];
y = HamThaoTac.soMuTheoMod1(BienToanCuc.g, BienToanCuc.r,
BienToanCuc.p);
Int64 b1 = vanban % (BienToanCuc.p -1);
9
Int64 b2 = ((Int64.Parse(txt_khoabimat.Text) %(BienToanCuc.p -1))*(y%
(BienToanCuc.p-1)))%(BienToanCuc.p-1);
gama = (((b1 - b2)%(BienToanCuc.p-1))*(nghichdao_r%
(BienToanCuc.p-1)))%(BienToanCuc.p - 1);
if (gama < 0)
gama = gama + (BienToanCuc.p-1);
tmp_y = HamThaoTac.toBinary(y);
tmp_gama = HamThaoTac.toBinary(gama);
writer.WriteLine(HamThaoTac.Chuanhoachuoi(tmp_y) +
HamThaoTac.Chuanhoachuoi(tmp_gama));
StreamReader reader1 = new StreamReader(fileChuKyStream);
//BinaryReader reader2 = new BinaryReader(fileVanBanStream);
MD5 md = new MD5CryptoServiceProvider();
byte[] result = md.ComputeHash(fileVanBanStream);
//MessageBox.Show(result[1].ToString());
Int64 lenght = result.Length;
Int64 i, tmp_byte; string tmp_str, tmp_str1, tmp_str2;
Int64 y, gama,s1,s2;
for (i = 1; i <= lenght; i++)
{
tmp_byte = result[i-1];
if ((tmp_str = reader1.ReadLine()) == null)
{
MessageBox.Show("Chữ ký sai");
fileChuKyStream.Close();
fileVanBanStream.Close();
reader1.Close();
//reader2.Close();
return;
}
tmp_str1 = tmp_str.Substring(0, 15);
tmp_str2 = tmp_str.Substring(15);
y = HamThaoTac.toDecimal(tmp_str1);
gama = HamThaoTac.toDecimal(tmp_str2);
s1 =
(HamThaoTac.soMuTheoMod1(Int64.Parse(txt_KhoaCongKhai.Text), y,
BienToanCuc.p)*HamThaoTac.soMuTheoMod1(y, gama, BienToanCuc.p))%
BienToanCuc.p;
s2 = HamThaoTac.soMuTheoMod1(BienToanCuc.g, tmp_byte,
BienToanCuc.p);
}
}
12
Tài liệu tham khảo:
[1] Giáo trình an toàn dữ liệu, PGS-TS. Trịnh Nhật Tiến, Đại học Công nghệ - ĐH
QGHN.
[2] Luận văn Nghiên cứu một số phương pháp xác thực thông điệp, URL:
http://luanvan.net.vn/luan-van/luan-van-nghien-cuu-mot-so-phuong-phap-xac-
thuc-thong-diep-46039/
13