Các phương pháp xác thực
Mục lục
Nội dung Trang
Lời nói đầu ……………………………………………… …… 2
Phần I: Tổng quan về xác thực điện tử …………………………………… 3
1.1. Vấn đề xác thực điện tử…………………………………… 3
1.1.1. Khái niệm xác thực…………………………………………………………
4
1.1.2. Phân loại xác thực điện tử………………………………………………….
4
1.2. Xác thực dữ liệu ……………………………………………
4
1.2.1. Xác thực thông
điệp………………………………………………………….
4
1.2.2. Xác thực giao dịch…………………………………………………………
4
1.2.3. Xác thực khóa ………………………………………………………………
5
1.2.4. Xác thực nguồn gốc dữ liệu ………………………………………………
6
1.2.5. Xác thực bảo đảm toàn vẹn dữ liệu ……………………………………….
6
1.3. Xác thực thực thể …………………………………………….
6
1.3.1. Xác thực dựa vào thực thể: Biết cái gì (Something know)
……………
6
1.3.2. Xác thực dựa vào thực thể: Sở hữu cái gì (something possessed)……
12
1.3.3. Xác thực dựa vào thực thể: Thừa hưởng cái gì (Something inherent)
16
Phần II. Phương pháp xác thực thông điệp ………………………
19
2.1. Xác thực thông điệp bằng chữ ký số …………………………
19
2.2. Xác thực thông điệp bằng hàm băm ………………………….
20
2.2.1. Ý tưởng chính của phương pháp xác thực bằng hàm băm
……………
22
2.2.2. Ham băm MD4 (Message digest 4)………………………………………
22
2.2.3. Hàm băm MD 5……………………………………………………………….
23
2.2.4. Hàm băm SHA (Secure hast function)…………………………………
25
Kết luận ………………………………………………………………
26
Tài liệu tham khảo …………………………………………………
27
1
Các phương pháp xác thực
LỜI NÓI ĐẦU
Ngày nay Internet cùng với các dịch vụ phong phú của nó có khả năng cung cấp
cho con người các phương tiện hết sức thuận tiện để trao đổi, tố chức, tìm kiếm và
cung cấp thông tin. Tuy nhiên, cũng như trong các phương thức truyền thống, việc trao
đổi, cung cấp thông tin điện tử trong nhiều lĩnh vực đòi hỏi tính bí mật, tính toàn vẹn,
tính xác thực cũng như trách nhiệm về các thông tin được trao đổi. Bên cạnh đó, tốc độ
xử lý của máy tính ngày càng được nâng cao, do đó cùng với sự trợ giúp của các máy
tính tốc độ cao, khả năng tấn công các hệ thống thông tin có độ bảo mật kém rất dễ
xảy ra. Chính vì vậy người ta không ngừng nghiên cứu các vẫn đề bảo mật và an toàn
thông tin để đảm bảo cho các hệ thống thông tin hoạt động an toàn. Cho đến ngày nay
với sự phát triển của công nghệ mã hóa phi đối xứng, người ta đã nghiên cứu và đưa ra
nhiều kỹ thuật, nhiều mô hình cho phép chúng ta áp dụng xây dựng các ứng dụng đòi
hỏi tính an toàn thông tin cao.
Trong văn bản pháp luật của Quốc hội mới ban hành đã công nhận luật giao
dịch điện tử - Ngày 29/11/2005. Quốc hội đã thông qua luật giao dịch điện tử
51/2005/QH11. Phạm vi điều chỉnh chủ yếu là giao dịch điện tử trong hoạt động của
các cơ quan nhà nước, trong lĩnh vực dân sự, kinh doanh, thương mại… Luật công
nhận và bảo vệ hợp đồng điện tử. Trong giao kết và thực hiện giao dịch điện tử, thông
báo dưới dạng thông điệp “sô” có giá trị pháp lý như thông báo truyền thống.
Việc đòi hỏi an toàn trong giao dịch cũng như trao đổi thông điệp được đặt lên
hang đầu vì vậy việc xác thực thông điệp là một vấn đề quan trọng trong giao dịch
hiện nay, hợp đồng, đề nghị… vấn đề đặt ra là làm sao để xác định được đúng đối tác
giao dịch. Vì vậy bài tập lớn này nghiên cứu, tìm hiểu một số phương pháp xác thực.
Mặc dù đã cố gắng hết sức nhưng vẫn không tránh khỏi sai sót và hạn chế, chúng em
mong được sự chỉ bảo tận tình của cô để hoàn thiện thêm bài tập lớn này!
Chúng em xin chân thành cảm ơn!
2
Các phương pháp xác thực
PHẦN 1: TỔNG QUAN VỀ XÁC THỰC ĐIỆN TỬ
1.1: Vấn đề xác thực điện tử.
1.1.1: Khái niệm xác thực.
1.1.1.1: Xác thực theo nghĩa thông thường.
- Xác thực là một 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à 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 (provenance)
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
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
(Authentication factors) để chứng minh cụ thể.
1.1.1.2: Xác thực điện tử.
- Xác thực trong an ninh máy tính là một quy trình nhằm cố gắng xác minh
nhận dạng số (digital identity) của phần truyền gửi thông tin (sender) 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 xác thực có thể là một
người 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 máy tính
(computer program).
Ngược lại sự tin cậy mù quáng (blind credential) hoàn toàn không thiết lập sự
đòi hỏi nhận dạng, song chỉ thiết lập quyền hoặc địa vị hẹp hòi của người dùng hoặc
của chương trình ứng dụng mà thôi.
- Trong một mạng lưới tín nhiệm, việc “xác thực” là một cách để đảm bảo rằng
người dùng chính là người mà họ nói họ là, và người dùng hiện đang thi hành những
chức năng trong một hệ thống, trên thực tế chính là người đã được ủy quyền để làm
những việc đó.
1.1.2: Phân loại xác thực điện tử.
1.1.2.1: Xác thực dữ liệu
• Xác thực thông điệp (Message Authentication).
• Xác thực giao dịch (Transaction Authentication).
• Xác thực khóa (Key Authentication).
3
Các phương pháp xác thực
• Xác thực nguồn gốc dữ liệu ( Source của Data).
• Xác thực đảm bảo toàn vẹn dữ liệu (Data Integrity).
1.1.2.2: Xác thực thực thể.
• Xác thực dựa vào thực thể: biết cái gì (Something Known).
• Xác thực dựa vào thực thể: sở hữu cái gì (Something Possessed).
• Xác thực dựa vào thực thể: thừa hưởng cái gì (Something
Inherent).
1.2: XÁC THỰC DỮ LIỆU.
1.2.1: Xác thực thông điệp.
+ Khái niệm:
- Xác thực thông điệp 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ó.
1.2.2: Xác thực giao dịch.
a, Khái niệm:
- Xác thực giao dịch là xác thực thông điệp cộng them 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 giao dịch lien 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.
b, Ví dụ:
- Một thông điệp gửi đi có thể dã bị chặn và phát lại (tương tự như việc đổi tiền
bằng một bản sao của Séc). Để ngăn chặn tình huông này, người gửi và người nhận có
thể gắn vào thông điệp nhãn thời gian hoặc số thông điệp.
4
Các phương pháp xác thực
- Số thông điệp là một con số được gắn vào thông điệp. Nó có thể chỉ dùng một
lần duy nhất, giá trị không lặp lại, hoặc dùng dưới dạng dáy số tuần tự (Sequence
Numbers).
- Thám mã không có cách nào để biết được các bit của số này nằm ở vị trí nào
trong thông điệp, hoặc không thể biết cách thay đổi các bit để tạo ra dạng mã hóa của
số tiếp theo, hoặc không thế biết cách thay đổi các bit này mà không làm gián đoạn
việc giải mã phần còn lại của thông báo.
- Số thông báo này có thể bị thay thế, thay đổi hoặc giả mạo. Người nhận phải
duy trì việc đếm các số thông báo đã nhận được. Nếu hai người sử dụng một tập các số
thì người nhận có thể biết được có thông báo nào trước thông báo hiện thời đã bị mất
hoặc bị chậm trễ, vì số được mã hóa của thông báo hiện thời phải lớn hơn số được mã
hóa của thông báo trước.
- Nếu người gửi có nhiều thông báo thì có thể số thông báo sẽ quá dài. Vì thế,
người ta thường đặt lại bộ đếm số thông báo trước khi nó đạt tới giá trị lớn nào đó. Lúc
này tất cả bên thu phải được thông báo rằng số thông báo được gửi tiếp theo sẽ được
đặt lại về một số nhỏ (chẳng hạn là 0).
- Nhãn thời gian (TimeStamp) là dấu hiệu về thời gian và ngày tháng lấy từ
đồng bộ hệ thống hoặc đồng bộ địa phương. Bên gửi: gửi dữ liệu gắn TimeStamp đi.
Bên nhận: nhận được dữ liệu, tiến hành lấy TimeStamp tại thời điểm hiện thời trừ đi
TimeStamp nhận được. Dữ liệu nhận được sẽ được chấp nhận nếu:
• Độ lệch giữa hai TimeStamp nằm trong khoảng chấp nhận được.
• Không có thông báo nào có cùng TimeStamp được nhận trước đó
từ cùng một người gửi. Điều này được thực hiện bằng cách bên nhận lưu giữ
danh sách các TimeStamp từ người gửi để kiểm tra hoặc ghi lại TimeStamp gần
nhất và chỉ chấp nhận TimeStamp có giá trị lớn hơn.
Như vậy, bên nhận phải đồng bộ và bảo mật về thời gian rất chặt chẽ với bên
gửi, ngoài ra phải lưu giữ các TimeStamp.
5
Các phương pháp xác thực
1.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ó them 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ả hai yếu
tố trên, nó chứng tỏ được định danh của bên có khóa đã cho.
Chú ý:
- 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.
- 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.
+ Đảm bảo xác thực nguồn gốc dữ liệu -> phải đảm bảo tính toàn vẹn dữ liệu.
+ Đảm bảo tính toàn vẹn dữ liệu -> đảm bảo xác thực nguồn gốc dữ liệu.
1.2.4: Xác thực nguồn gốc dữ liệu.
Công cụ: dùng hàm băm, chữ ký số, thùy vân ký.
1.2.5. Xác thực bảo đảm toàn vẹn dữ liệu.
Công cụ: Dùng chữ ký số, hàm băm, thủy vân ký, mã xác thực.
1.3. XÁC THỰC THỰC THỂ.
Xác thực thực thể (hay Định danh thực thể) là xác định danh của một đối tượng
tham gia giao thức truyền tin.
Thực thể hay đối tượng có thể là người dùng, thiết bị đầu cuối…
Tức là: một thực thể được xác thực bằng định danh của nó đối với thực thể thứ
hai trong một giao thức, và bên thứ hai đã thực sự tham gia vào giao thức.
1.3.1. Xác thực dựa vào thực thể: Biết cái gì (Something Know).
Chẳng hạn mật khẩu ngữ (pass phrase) hoặc số định danh cá nhân (personal
identification number - PIN).
6
Các phương pháp xác thực
Định danh cá nhân (personal identification number - PIN) thường gắn với
Something pasessed để tăng tính bảo mật.
Chú ý:
- “Biết cái gì” được dùng trong Giao thức định danh, đó là cơ chế hỏi - đáp
(Challenge response).
- Một thực thể (Claimant) chứng tỏ định danh của nó đối với thực thể khác
(Verifier) bằng các biểu lộ hiểu biết về một thông tin mật liên quan nào đó cho
Verifier mà không bộ lộ bí mật của nó cho Verifier trong suốt giao thức.
Cơ chế đó gọi là “Chứng minh không tiết lộ thông tin”.
- Trong cơ chế hỏi - đáp thường dùng một người được ủy quyền có tín nhiệm
TA (Trusted Autherily) để tạo các tham số chung, các thuật toán ký, kiểm tra chữ ký
và các chuỗi định danh, dấu xác nhận cho các bên tham gia.
1.3.1.1. Xác thực dựa trên User name và Password
- Đây là giải pháp truyền thống hay được sử dụng nhất, là giải pháp sử dụng tài
khoản của hệ thống. Mỗi tài khoản bao gồm tên truy nhập (username) và mật khẩu
(password). Tên truy nhập dùng để phân biệt các người dùng khác nhau (thường là duy
nhất trong hệ thống), còn mật khẩu để xác thực lại người sử dụng tên đó đúng là người
sử dụng thật không. Mật khẩu thường cho người sở hữu tên truy nhập tương ứng đặt
và được giữ bí mật chỉ có người đó biết.
- Khi người dùng muốn đăng nhập và sử dụng tài nguyên hệ thống thì phải
đăng nhập bằng cách nhập tên và mật khẩu của mình. Trước hết, hệ thống sẽ đối chiếu
7
Các phương pháp xác thực
tên truy nhập của người dùng đưa vào với cơ sở dữ liệu tên người dùng, nếu tồn tại tên
người dùng như vậy thì hệ thống tiếp tục đối chiếu mật khẩu được đưa vào tương ứng
với tên truy nhập trong cơ sở dữ liệu. Qua 2 lần đối chiếu nếu thỏa mãn thì người đăng
nhập là người dùng hợp lệ của hệ thống.
Ưu điểm
- Thiết kế và sử dụng đơn giản, tốn ít tài nguyên. Hệ thống chỉ gồm một cơ sở
dữ liệu người dùng với 2 thông tin chủ yếu là tên truy nhập và mật khẩu. Tương ứng
với mỗi tên truy nhập là quyền sử dụng của người đó trong hệ thống. Do đó các thông
tin này không chiếm nhiều tài nguyên. Người dùng dễ hiểu và dễ sử dụng.
- Chi phí để thực hiện giải pháp này là rẻ so với các giải pháp khác. Nó không
phụ thuộc vào các thiết bị phần cứng mà chỉ dựa trên phần mềm. Giải pháp này có khả
năng làm việc trên mọi hệ điều hành. Do đó,việc thực hiện giải pháp này khá dễ dàng
và không tốn kém.
Nhược điểm
- Giải pháp này có nhược điểm lớn nhất là không có được sự bảo mật cao. Vì
người dùng thường có tên đăng nhập nhiều người dùng có. Mặt khác, người dùng
thường chọn mật khẩu dễ nhớ hoặc không cẩn thận khi gõ mật khẩu, do vậy dễ bị tấn
công. Kẻ tấn công có nhiều phương pháp để đạt được mật khẩu như thâm nhập vào hệ
thống đọc file mật khẩu, dự đoán mật khẩu, vét cạn các từ trong từ điển để tìm mật
khẩu, hoặc có thể lừa người dùng để lộ mật khẩu.
* Một số biện pháp để tăng tính bảo mật cho giải pháp này:
- Đặt mật khẩu phức tạp: mật khẩu phải chưa tối thiểu 6 ký tự, không trùng với
tên đăng nhập, chứa các loại ký tự là chữ cái, chữ số, ký tự đặc biệt. Nếu như vậy thì
kẻ muốn tấn công cũng sẽ rất khó đoán được mật khẩu.
- Thay đổi mật khẩu: quy định sau một thời gian nhất định mật khẩu sẽ không
còn tác dụng đối với hệ thống và người dùng phải đặt lại mật khẩu khác. Mật khẩu sẽ
được thây đổi nên khả năng kiểm soát tình trạng an toàn của mật khẩu cao hơn.
- Mã hóa thông tin: Trong môi trường làm việc là mạng, những nhà thiết kế
thường dùng biện pháp mã hóa thông tin đăng nhập từ một máy khách nào đó trước
8
Các phương pháp xác thực
khi chúng được gửi đi tới máy chủ của hệ thống. Do đó, khả năng mất cắp mật khẩu sẽ
giảm đi rất nhiều khi kẻ xấu bắt gói tin đăng nhập trên đường truyền.
Hiện nay, giải pháp mật khẩu sử dụng một lần (one-time password) được sử
dụng rất nhiều trong các ứng dụng. Các mật khẩu trong danh sách chỉ có thể sử dụng
một lần duy nhất mà không thể sử dụng lại trong những lần đăng nhập sau. Có 2 cách
đẻ hệ thống mật khẩu sử dụng một lần có thể làm việc là:
+ Danh sách các mật khẩu được tạo ra một cách ngẫu nhiên bởi hệ thống và
được sao làm 2 bản, một bản cho người dùng và một bản cho hệ thống.
+ Danh sách mật khẩu được tạo ra theo yêu cầu của người sử dụng và được hệ
thống công nhận.
- Quá trình thực hiện: Sử dụng thuật toán MD4 (hiện nay là MD5) từ một giá trị
cho trước (do người dùng hoặc do máy ngẫu nhiên tạo ra) để tạo ra khóa đầu tiên,tiếp
tục áp dụng thuật toán MD4 cho khóa đầu tiên để được khóa thứ 2 …và cứ áp dụng
liên tục thuật toán MD4 để sinh ra các khóa nối tiếp nhau. Khi xác thực người dùng,
hệ thống phải biết một trong các khóa (khóa thứ n), nó aẽ hỏi người dùng khóa trước
đó (khóa thứ n-1). Nếu người dùng nhập đúng khóa n-1 thì hệ thống sẽ cho người
dùng đăng nhập và đăng nhập và ghi lại khóa n-1 vào bộ nhớ. Đến lần đăng nhập sau,
hệ thống sẽ hỏi người dùng khóa thứ n-2…
Khi dùng thuật toán MD4 để sinh ra kết quả thì từ kết quả hầu như không thể
suy ngược lại giá trị đầu vào nên hệ thống không thể tìm ra được khóa thứ n-1 là gì,
mặc dù khi biết cả khóa thứ n.
Tuy nhiên, theo cách này kẻ xấu vẫn có thể tấn công. Nếu người dùng tự thiết
lập giá trị đầu vào để xây dựng hệ thống hóa thì rất có thể nó sẽ được đoán ra theo các
cách giống như khi đoán các mật khẩu thông thường. Đối với những từ đoán được, kẻ
tấn công sẽ áp dụng thuật toán MD4 để sinh ra các khóa và sẽ thử hết các khóa này
cho đến khi tìm được khóa người dùng đang sử dụng. Còn trong trường hợp hệ thống
sẽ tự sinh ra giá trị ban đầu và một lượng mật khẩu đủ dùng trong một thời gian nào
đó, người dùng sẽ có một danh sách các mật khẩu được đánh thứ tự. Về phái người
dùng, họ sẽ không thích phải dùng nhiều mật khẩu. Điều này gây phiền toái cho người
dùng và khả năng bị mất cắp danh sách khóa là rất cao. Ngoài ra, kẻ tấn công còn có
thể dùng phương pháp bắt gói tin đăng nhập của người dùng để lấy lại mật khẩu.
9
Các phương pháp xác thực
1.3.1.2. 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” cũng là mô hình xác thực dựa trên
tên người dùng/ mật khẩu. Khi người dùng cố gắng đăng nhập, server đảm nhiệm vai
trò thực sẽ gửi một thông điệp thử thách (Challenge message) trở lại máy tính người
dùng. Lúc này máy tính người dùng sẽ phản hồi lại tên người dùng và mật khẩu được
mã hóa. Server xác thực sẽ so sánh phiên bản xác thực người dùng được lưu giữ với
phiên bản mã hóa vừa nhận. Nếu trùng khớp, người dùng sẽ được xác thực. Bản thân
mật khẩu không bao giờ được gửi qua mạng. 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 mật khẩu được mã hóa gọi là mật khẩu băm (hash
password)
Ví dụ: Giả sử là Alice muốn chứng minh với Bob là “Tôi chính là Alice”
* Alice cũng cần biết người còn lại có đúng là Bob không.
* Malice là người xấu có ý muốn phá giao thức xác thực.
10
Các phương pháp xác thực
N: số nonce (number used once)
Tuy nhiên Bob phải biết trước Password của Alice.
1.3.1.3. Giao thức xác thực mật khẩu PAP
Giao thức xác thực mật khẩu PAP (Passwork Authentication Protocol) là một
giao thức bắt tay hai chiều; đó là, máy tính chủ tạo kết nối gửi nhận dạng người dùng
và mật khẩu kép (passwork pair) đến hệ thống đích mà nó cố gắng thiết lập một kết
nối và sau đó hệ thống đích xác thực rằng máy tính đó được xác thực đúng và được
chấp nhận cho việc truyền thông. Xác thực PAP có thể được dùng khi bắt đầu của kết
nối PPP, cũng như trong suốt một phiên làm việc của PPP để xác thực kết nối.
11
Các phương pháp xác thực
Khi một kết nối PPP được thiết lập, xác thực PAP có thể được diễn ra trong kết
nối đó. Điểm ngang hàng gửi một nhận dạng người dùng và mật khẩu đến bộ xác thực
cho đến khi bộ xác thực chấp nhận kết nối hay kết nối bị hủy bỏ. PAP không bảo mật
vì thông tin xác thực được truyền đi rõ rang và không có khả năng bảo mật bởi chống
lại tấn công trở lại hay lặp lại quá nhiều bởi những người tấn công nhằm cố gắng dò ra
mật khẩu đúng hay một cặp nhận dạng người dùng.
1.3.1.4. Dịch vụ xác thực người dùng quay số từ xa – RADIUS
- RADIUS (Remote Authentication Dial-In Use Service) cũng sử dụng kiểu
client/server để chứng nhận một cách bảo mật và quản trị các kết nối mạng từ xa của
các người dùng với các phiên làm việc. RADIUS giúp cho việc điều khiển truy cập dễ
quản lý hơn và nó có thể hỗ trợ các kiểu xác thực người dùng khác nhau bao gồm
PAP, CHAP.
- RADIUS tạo cơ sở dữ liệu đơn và tập trung và được lưu giữ tại máy chủ
RADIUS nhằm quản lý việc xác thực người dùng và các dịch vụ. Một người dùng ở xa
sử dụng RADIUS client sẽ có quyền truy cập đến các dịch vụ như nhau từ bất kỳ một
máy chủ nào đang truyền thông với máy chủ RADIUS.
1.3.2: Xác thực dựa vào thực thể: Sở hữu cái gì (Something Possessed).
Ví dụ như 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).
12
Các phương pháp xác thực
1.3.2.1: Phương pháp xác thực kerberos (Kerberos authentication).
Là phương pháp dùng một server trung tâm để kiểm tra việc xác thực người
dùng và cấp phát thẻ thông hành (service tickets) để người dùng có thể truy cập vào tài
nguyện. Kerberos là một phương thức rất an toàn trong xác thực bời vì 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à máy khách, do đó cẩn đảm bảo có một “time server” hoặc “authenticating
server” được đồng bộ thời gian từ các “Internet time server”. Kerberos là nền tảng xác
thực chính của nhiều OS như Unix, Windows.
Ví dụ: Giả sử là Alice muốn chứng minh với Bob là “Tôi chính là Alice”
* Alice cũng cần biết người còn lại có đúng là Bob không.
* Malice là người xấu có ý muốn phá giao thức xác thực.
Quá trình Alice login vào hệ thống sử dụng Kerberos:
13
Các phương pháp xác thực
* K
A
: khóa chung giữa Alice và KDC, KA = h(password)
* S
A
: khóa phiên.
* TGT
A
= {Alice, S
A
}
KKDC.
1. Alice gửi cho KDC: Alice, Bob, TGT
A
, {timestamp}
SA
2. KDC gửi cho Alice: {Bob, K
AB
, ticket-to-Bob}
SA
ticket-to-Bob: {Alice, K
AB
}
KB
3. Alice gửi cho Bob: ticket-to-Bob, {timestamp}
KAB
4. Bob gửi cho Alice: {timestamp + 1}
KAB
1.3.2.2: Phương pháp Tokens.
- Là phương tiện vật lí như các thẻ thông minh (smart card) hoặc thẻ đeo của
nhân viên (ID badges) chưa thông tin xác thực. Tokens có thể lưu trữ số nhận dạng cá
nhân – personal identification number (PINs), thông tin về người dùng, hoặc mật khẩu.
- Các thông tin trên token chỉ có thể được đọc và xử lý với các thiết bị đặc
dụng,ví dụ như thẻ smart card được đọc bởi đầu đọc smart card gắn trên máy tính,sau
đó thông tin này được gửi đến “authenticating server”.Tokens chứa chuỗi text hoặc giá
trị số duy nhất thông thương mỗi giá trị này chỉ sử dụng một lần.
14
Các phương pháp xác thực
- Thẻ thông minh (smart cart) là một thẻ plastic có kích cỡ như thẻ tín dụng
được trang bị một vi mạch dùng để chứa bộ nhớ và một mạch xử lý với hệ điều hành
để kiểm soát bộ nhớ.
Nó có thể lưu trữ dữ liệu về thông tin các nhân, tiền hoặc một số thông tin khác
mà sự thay đổi của chúng cần được kiểm soát chặt chẽ. Ngoài ra,nó có thể lưu trữ các
khóa mã hóa để người dùng có thể nhận dạng qua mạng, chữ ký điện tử … Đặc biệt,
thẻ thông minh có hỗ trợ chứng nhận số. Nó mã hóa dữ liệu và kiểm tra tính hợp lệ của
các giao dịch qua mạng. Đây là một giải pháp rất hiệu quả và linh động cho các vấn đề
về xác thực người dùng.
Hiện nay,các cơ quan tổ chức dùng thẻ rất nhiều. Đầu tiên, những thông tin cần
thiết cho việc nhận dạng các nhân viên trong cơ quan, tổ chức sẽ được lưu vào bộ nhớ
của thẻ. Sau đó, nó được cung cấp cho các nhân viên tương ứng với các thồng tin đó.
Mỗi cơ quan, tổ chức khác nhau sẽ có các yêu cầu về thông tin xác thực khác nhau
nhưng thường là các thông tin như tên truy nhập, mật khẩu và một số thông tin cá nhân
khác.
Trong hệ thống thông tin đòi hỏi phải có xác thực người dùng, nhân viên trong
tổ chức chỉ cần đưa thẻ và thiết bị đọc thẻ và nhập vào một mã số bí mật nào đó đẻ xác
nhận với hệ thống là chính họ là người sở hữu chiếc thẻ đó. Khi đã nhập đúng mã này,
thiết bị đọc thẻ sẽ đọc các thông tin nhận dạng được ghi trong thẻ và chuyển các thông
tin này vào hệ thống, sau đó hệ thống sẽ kiểm tra chúng với cơ sở dữ liệu người dùng.
Ưu điểm
- Nhờ vào kiến trúc vật lý và logic của thẻ mà đã giảm được rất nhiều các nguy
cơ gây mất an toàn thông tin. Mọi hoạt đọng của thẻ đều được kiểm soát bởi hệ điều
15
Các phương pháp xác thực
hành nên các thông tin cần giữ bí mật sẽ không thể lấy ra từ thẻ. Các thông tin bên
trong thẻ không thể bị kẻ xấu lấy cắp như các thông tin được lưu trữ trong các phần
mềm hệ quản trị cơ sở dữ liệu thông thường.
- Các khóa bí mật dùng cho chữ ký điện tử và nhận dạng đều được lưu trữ bên
trong thẻ. Nhà sản xuất thẻ cũng như người sở hữu thẻ đều không thể biết được các
khóa này. Vì vậy, chúng không thể bị sao chép hay bị lấy cắp.hay bị sao chép.
Mỗi chiếc thẻ đều có số nhận dạng PIN để tránh việc đánh cắp và bị kẻ xấu sử
dụng. Trước khi sử dụng thẻ, người dùng phải nhập vào số PIN của thẻ. Cơ chế quản
lý số PIN của thẻ cũng rất an toàn bởi vì số PIN gần như không thể đoán ra được. Mặt
khác, thẻ quy định số lần nhập tối đa, nếu số lần nhập không chính xác liên tục đến
con số quy định thì thẻ sẽ tự động khóa. Muốn mở khóa thì người dùng phải nhập vào
một số dùng để mở khóa của thẻ. Tương tự, nếu nhập không chính xác liên tiếp đến
một con số nào đó thì thẻ sẽ bị khóa vĩnh viễn và không thể sử dụng lại nữa. Như vậy,
việc sử dụng thẻ rất an toàn và thuận tiện. Giờ đây người dùng thay vì phải nhớ nhiều
số mà chỉ phải nhớ một số, còn các thông tin nhận dạng đều ở trong thẻ. Trong trường
hợp thẻ bị mất cắp, kẻ lấy cắp cũng không thể sử dụng được thẻ vì không có số PIN.
Nhược điểm
- Tuy giải pháp này đã hạn chế được sự mất cắp thẻ bằng cách kết hợp thẻ với
một số PIN nhưng vẫn có thề bị đánh cắp cả thẻ và số PIN. Vẫn bắt người dùng phải
nhớ số PIN và phải them một chiếc thẻ mới mới có thể thực hiện việc xác thực.
Để áp dụng giải pháp này, các cơ quan phải trang bị thêm các thiết bị như thiết
bị đọc thẻ, thiết bị ghi, các phần mềm hỗ trợ…Số lượng và giá thành của các thiết bị
này không phải là nhỏ, do đó khá là tốn kém.
- Các dịch vụ hỗ trợ phổ biến cho việc xác thực bằng thẻ là chưa đầy đủ. Các
dịch vụ thư điện tử, các dịch vụ thương mại…cần đến xác thực trên Internet đều chưa
hỗ trợ xác thực bằng thẻ. Hiện nay, hầu như các nhà cung cấp giải pháp xác thực
người dùng bằng thẻ đều phát triển các dịch vụ theo mô hình riêng của mình, sử dụng
các thiết bị riêng chưa thống nhất, do đó khả năng liên hệ giữa các hệ thống hầu như
không có.
1.3.3. Xác thực dựa vào thực thể: Thừa hưởng cái gì (Something Inherent)
16
Các phương pháp xác thực
- Tuy giải pháp xác thực sử dụng thẻ thông minh khá an toàn và linh hoạt
nhưng trong những lĩnh vực quan trọng cần an toàn chặt chẽ như ngân hàng, quân sự
… đòi hỏi phải có giải pháp khác an toàn hơn. Và các nhà nghiên cứu đã đưa ra giải
pháp xác thực sử dụng những kỹ thuật sinh trắc học đẻ giải quyết những vấn đề đó.
- Giải pháp này dựa vào một số bộ phận của con người như dấu vân tay, hình
dạng lòng bàn tay, mắt, giọng nói…Đây là những đặc điểm đặc trưng mà không của
người nào hoàn toàn giống của người nào. Để xác thực trong máy tính, chúng ta phải
số hóa và lưu trữ các đặc điểm này vào một cơ sở dữ liệu. Ngoài ra còn phải có có
thiết bị ghi nhận các thông tin và chuyển về để đối chiếu với cơ sở dữ liệu đã có trong
hệ thống.
- Ở phía máy khách, người dùng sử dụng một thiết bị đầu cuối có hỗ trợ biểu
mẫu dùng cho việc đăng nhập vào hệ thống hoặc trong môi trường Internet thì sử dụng
trình duyệt để mở trang đăng nhập.
- Người dùng sẽ phải điền vào biểu mẫu mật khẩu hay một thông tin nhận dạng
tương tự và cung cấp mẫu sinh trắc học như dấu vân tay, hình dạng lòng bàn tay, mắt,
giọng nói, chữ ký…Thông qua các thiết bị nhận dạng được tích hợp trong đó. Sau đó,
các thông tin này sẽ được chuyển về trung tâm xác thực của hệ thống để kiểm tra.
Trung tâm sẽ phân tích mẫu thu được và đối chiếu xem mẫu tương ứng với mật khẩu
được lưu trong cơ sở dữ liệu có trùng hay không, nếu trùng thì người dùng đăng nhập
là hợp lệ. Và hệ thống sẽ đưa các quyền hạn, tài nguyên phù hợp chi người sử dụng.
Ưu điểm
- Người dùng hầu như không thể thay đổi được các bộ phận như dấu vân tay,
mắt… để dùng trong xác thực.
17
Các phương pháp xác thực
- Người dùng cũng không thể đưa những đặc điểm này cho người khác sử dụng
như thẻ hay mật khẩu được.
- Các đặc điểm sinh trắc học này thì không thể bị mất cắp. Ngày nay với trình
độ khoa học công nghệ phát triển, việc nhận biết các thông tin sinh trắc học đã có thể
phân biệt được thông tin sinh trắc học của người sống và của người chết.
Nhược điểm
- Khi mà các dữ liệu sinh trắc học khó có sự thay đổi như dấu vân tay, mắt được
sử dụng trong các ứng dụng khác nhau thì rất dễ bị đánh cắp.
- Trên thế giới vẫn chưa có một chuẩn chung nào cho việc số hóa các mẫu sinh
trắc học. Mặt khác, các nhà sản xuất khác nhau cung cấp các thiết bị xác thực mẫu sinh
trắc học theo các chuẩn khác nhau không có sự thống nhất. Do đó, việc trang bị hệ
thống xác thực này không có tính linh động cao.
- Có một số thông tin có thể bị thay đổi vì nhiều lý do. Ví dụ: Dấu vân tay bị
thay đổi do bị chấn thương, giọng nói bị méo do bị viêm họng… Do đó, việc xác thực
đúng các thông tin này thường rất thấp.
- Ở nhiều nơi việc đưa giải pháp này vào các ứng dụng trên Internet là không
thực tế. Các thông tin xác thực sinh trắc học thường khá lớn trong khi băng thông
đường truyền không phải ở đâu cũng đủ rộng. Dẫn đến kết quả phản hồi lại rất chậm.
Vì nhận dạng sinh trắc học hiện rất tốn kém chi phí khi triển khai nên chưa
được sử dụng rộng rãi như các phương thức xác thực khác.
Trong lịch sử, vết lăn tay là một phương pháp xác minh đáng tin nhất, song
trong những vụ kiện tòa án (court cases) gần đây ở Mỹ và nhiều nơi khác, người ta đã
có nhiều nghi ngờ về tính đáng tin cậy của dấu lăn tay. Những phương pháp sinh trắc
khác được coi là khách quan hơn (quét võng mạc mắt và quét vết lăn tay là vài ví dụ),
song có những bằng chứng chỉ ra rằng những phương pháp này, trên thực tế, dễ bị giả
mạo.
18
Các phương pháp xác thực
PHẦN 2 : PHƯƠNG PHÁP XÁC THỰC THÔNG ĐIỆP
2.1: Xác thực thông điệp bằng chữ ký số.
- Để chứng thực nguồn gốc hay hiệu lực của tài liệu (ví dụ: đơn xin học, giấy
báo nhập học, …), lâu nay người ta dùng chữ ký “tay”, ghi vào phía dưới của mỗi tài
liệu. Như vậy người ký phải tực tiếp “ký tay” vào tài liệu.
- Ngày nay các tài liệu được số hóa, người ta cũng có nu cầu chứng thực nguồn
gốc hay hiệu lực của các tài liệu này. Rõ ràng không thể “ký tay” vào tài liệu, vì chúng
không được in ấn trên giấy. Tài liệu “số” (hay tài liệu “điện tử”) là một xâu các bít ( 0
hay 1), xâu bít có thể rất dài (nếu in trên giấy có thể hàng nghìn trang). “Chữ ký” để
chứng thực một xâu bít tài liệu cũng không thể là một xâu bít nhỏ đặt phía dưới xâu bít
tài liệu. Một “chữ ký” như vậy chắc chắn sẽ bị kẻ gian sao chép để đặt dưới một tài
liệu khác bất hợp pháp.
- Những năm 80 của thế kỷ 20, các nhà khoa học đã phát minh ra “chữ ký số”
để chứng thực là một “tài liệu số”. Đó chính là “bản mã” của xâu bít tài liệu.
Người ta tạo ra “chữ ký số”(chữ ký điện tử) trên “tài liệu số” giống như tạo ra
“bản mã” của tài liệu với “khóa lập mã”.
“Chữ ký số” không được sử dụng nhằm bảo mật thông tin mà nhằm bảo vệ
thông tin không bị người khác cố tình thau đổi để tạo ra thông tin sai lệch. Nói cách
khác, “chữ ký số” giúp xác định người đã tạo ra hay chịu trách nhiệm đối với một
thông điệp.
- Như vậy “ký số” trên “tài liệu số” là “ký” trên từng bít tài liệu. Kẻ gian khó có
thể giả mạo “chữ ký số” nếu nó không biết “khóa lập mã”.
Để kiểm tra một “chữ ký số” thuộc về một “tài liệu số”, người ta giải mã “chữ
ký số” bằng “khóa giải mã”, và so sánh với tài liệu gốc.
Ngoài ý nghĩa để chứng thực nguồn gốc hay hiệu lực của các tài liệu số hóa.
Mặt mạnh của “chữ ký số” hơn “chữ ký tay” là ở chỗ người ta có thể “ký”vào tài liệu
từ rất xa trên mạng công khai. Hơn thế nữa, có thể “ký” bằng các thiết bị cầm tay (VD
điện thoại di động) tại khắp mọi nơi (Ubikytous) và di động (Mobile), miễn là kết nối
được vào mạng. Đỡ tốn bao thời gian, sức lực, chi phí, …
19
Các phương pháp xác thực
- Trong mô hình tổng quát xác thực các thông báo thường có 5 mặt người tham
dự: người gửi A, người nhận B, kẻ xấu C, trung gian tin cậy D và trọng tài độc lập E.
Nhiệm vụ của người gửi A là hình thành và gửi thông báo T cho người nhận B. Nhiệm
vụ của người nhận B là nhận thông báo T và xác lập tính chân thực của nó. Nhiệm vụ
của trung gian tin cậy D là triển khai cung cấp thông tin công vụ cần thiết có tính
nghiệp vụ cho các thuê bao mạng, để trong trường hợp xuất hiện cạnh tranh giữa A và
B về tính chân thực của thông báo thì cung cấp các tài liệu cần thiết cho trọng tài.
Nhiệm vụ của trọng tài độc lập E là giải quyết tranh cãi giữa các thuê bao A và B về
tính chân thực của thông báo T.
- Chúng ta hãy liệt kê các phương pháp lừa dối có thể (các tấn công phá vỡ tính
chân thực của thông báo) trong điều kiện rằng giữa các thành viên A, B, C không có
sự hợp tác nào.
Phương pháp A: người gửi A tuyên bố rằng anh ta không gửi thông báo T cho
B, mặc dù trên thực tế anh ta đã gửi (đánh tráo thông báo đã được gửi hay là từ bỏ
quyền tác giả).
Phương pháp B1: người nhận B thay đổi thông báo đã nhận được từ A và
tuyên bố rằng thông báo đã bị thay đổi này anh ta nhận được từ A (đánh tráo thông báo
đã nhận).
Phương pháp B2: người nhận B tự mình hình thành thông báo và tuyên bó
rằng đã nhận được nó từ A (giả mạo thông báo nhận được).
Phương pháp C1: người xấu C xuyên tạc thông báo mà A đang truyền cho B
(đánh tráo thông báo đang truyền).
Phương pháp C2: kẻ xấu C hình thành và gửi cho B thông báo T với danh
nghĩa là người gủi A (giả mạo thông báo được gửi).
Phương pháp C3: kẻ xấu C copy thông báo trước đây mà A đã gửi cho B
(nhắc lại thông báo đã được gửi trước đó).
2.2: Xác thực thông điệp bằng hàm băm.
- Giải pháp cho các vấn đề vướng mắc đến chữ ký số là dùng hàm băm để trợ
giúp cho việc ký số. Các thuật toán băm với đầu vào là các bức thông điệp có dung
lượng, kích thước tùy ý (vài KB đến vài chục MB thậm chí hơn nữa) - các bức thông
20
Các phương pháp xác thực
điệp có thể là dạng văn bản, hình ảnh, âm thanh, file ứng dụng v.v… - và với các thuật
toán băm: MD2, MD4, MD5, SHA cho các bản băm đầu ra có kích thước cố định: 128
bit với dòng MD, 160 bit với dòng SHA.
- Hàm băm là thuật toán không dùng khóa để mã hóa (ở đây dùng thuật ngữ
“băm” thay cho “mã hóa” ), nó có nhiệm vụ “lọc” (băm) tài liệu (bản tin) và cho ra kết
quả là một giá trị “băm” có kích thước cố định, còn gọi là “ đại diện tài liệu” hay “ đại
diện bản tin”, “đại diện thông điệp”.
- Hàm băm là hàm một chiều, theo nghĩa giá trị của hàm băm là duy nhất, và từ
giá trị băm này, “không thể” suy ngược lại được nội dung hay độ dài ban đầu của tài
liệu gốc.
- Nguyên tắc của hàm băm là biến đổi khối thông tin gốc có độ dài bất kỳ thành
một đoạn thông tin có độ dài cố định gọi là mã băm ( hash code hay message digest).
Mã băm được dùng để kiểm tra tính chính xác của thông tin nhận được.
- Một hàm băm h áp dụng cho khối thông tin M tạo ra kết quả m.
Kí hiệu: h(M) = m
- Thông thường, mã băm được gửi kèm với thông tin gốc cùng với một số cơ
chế bảo vệ nào đó giúp mã băm không bị thay đổi hoặc tính lại. Ở phía nhận, hàm băm
lại được áp dụng đối với thông tin gốc để tìm ra mã băm mới, giá trị này được so sánh
với mã băm đi kèm với thông tin gốc. Nếu hai mã băm giống nhau, nghĩa là thông tin
gửi đi không bị thay đổi.
- Chỉ có thể dùng hàm băm để tạo ra mã băm từ thông tin gốc chứ không thể
phục hồi được thông tin gốc từ mã băm. Do đặc tình này, các hàm băm bảo mật cũng
còn được gọi là hàm băm một chiều (one way hash function).
21
Các phương pháp xác thực
2.2.1: Ý tưởng chính của phương pháp xác thực bằng hàm băm.
- Giả sử: A gửi cho B cặp tin (X,Y), trong đó X là bản tin, Y là đại diện bản tin
X, tức là Y= h(X), h là hàm băm.
Khi nhận được (X,Y), B tính lại h(X)= Z. Nếu Z= Y thì B chắc chắn rằng X
được bảo toàn, không bị sửa đổi trên đường truyền.
2.2.2: Hàm băm MD4 ( Message Digest 4)
- MD4 (Message-Digest thuật toán 4) là một thông điệp tiêu hóa thuật toán (thứ
tư trong loạt a) được thiết kế bởi Giáo sư Ronald Rivest của MIT vào năm 1990. Nó
thực hiện một hàm băm mật mã để sử dụng trong kiểm tra tính toàn vẹn thông điệp.
Chiều dài của giá trị băm là 128 bit.
- Thuật toán MD4 nhận dữ liệu đầu vào là một chuỗi bit x có chiều dài b >= 0
tùy ý và sinh ra mã băm của x có chiều dài cố định 128 bit. Trước tiên chuỗi bit x được
định dạng lại bằng cách thêm r > 0 bit phụ thuộc vào x sao cho chiều dài của chuỗi bit
mới là b’ = b + r là bội số của 512.
- Sau đó chia chuỗi bit mới này thành m khối, mỗi khối có độ dài đúng bằng
512 bit . Mỗi khối bit này lại chia thành 16 từ, mỗi từ có 32 bit.
- Thuật toán MD4 tuần tự xử lý dãy m khối trong m lượt tính toán. Dữ liệu đầu
vào tại lượt tính toán thứ k (1 <= k <= m) là khối thứ k trong dãy và mã băm nhận
được sau (k-1) lượt tính toán trước đó ( mã băm đầu vào ứng với k = 1 đã được khởi
tạo từ trước )
Tại lượt tính toán thứ k này, khối dữ liệu đầu vào 512 bit liên tiếp đi qua 3 vòng
tính toán, trong mỗi vòng gồm có 16 bước, mỗi bước thực hiện tính toán với dữ liệu là
một từ trong dãy và các kết quả nhận được sau bước trước. Kết quả sau khi qua 3 vòng
tính toán trên sẽ được kết hợp với mã băm trước đó để sinh ra mã băm mới (cho lượt
tính toán thứ k). Sau khi đã xử lý hết m khối, mã băm nhận được sau cùng là kết quả ta
cần tìm.
22
Các phương pháp xác thực
2.2.3 : Hàm băm MD5
- MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị
băm là 128bit. Từng được xem là một chuẩn trên Internet, MD5 đã được sữ dụng rộng
rải trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính
nguyên vẹn của tập tin. [14]
- MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm
băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2).
+ MD5 có 2 ứng dụng quan trọng:
- MD5 được sử dụng rộng rải trong thế giới phần mềm để đảm bảo
rằng tập tin tải về không bị hỏng. Người sử dụng có thể so sánh giữa thông số
kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm
tải về bằng MD5.
- MD5 được dùng để mã hóa mật khẩu. Mục đích của việc mã hóa
này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn
mã đó không thể nào lần trở lại mật khẩu. Có nghĩa là việc giải mã là không thể
hoặc phải mất một khoãng thời gian vô tận.
+ Thuật giải :
MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước
cố định 128 bits. Thông điệp đưa vào sẻ được cắt thành các khối 512 bits. Thông điệp
được đưa vào bộ đệm để chiều dài của nó sẻ chia hết cho 512. Bộ đệm hoạt động như
sau:
- Trước tiên nó sẽ chèn bit 1 vào cuối thông điệp.
- Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của
512 một khoảng 64 bit.
- Phần còn lại sẽ được lấp đầy bởi một số nguyên 64 bit biểu diễn chiều dài ban
đầu của thông điệp.
Thuật toán chính của MD5 hoạt động trên một bộ 128 bit. Chia nhỏ nó ra thành
4 từ 32 bit, kí hiệu là A,B,C và D. Các giá trị này là các hằng số cố định. Sau đó thuật
toán chính sẻ luân phiên hoạt động trên các khối 512 bit. Mỗi khối sẻ phối hợp với một
bộ. Quá trình xữ lý một khối thông điệp bao gồm 4 bước tương tự nhau, gọi là vòng
23
Các phương pháp xác thực
(“round”). Mỗi vòng lại gồm 16 quá trình tương tự nhau dựa trên hàm một chiều F,
phép cộng module và phép xoay trái…
Hình bên dưới mô tả một quá trình trong một vòng. Có 4 hàm một chiều F có
thể sử dụng. Mỗi vòng sử dụng một hàm khác nhau.
Hàm băm MD5 (còn được gọi là hàm tóm tắt thông điệp - message degests) sẽ
trả về một chuổi số thập lục phân gồm 32 số liên tiếp. Dưới đây là các ví dụ mô tả các
kết quả thu được sau khi băm : MD5("The quick brown fox jumps over the lazy dog")
= 9e107d9d372bb6826bd81d3542a419d6. Thậm chỉ chỉ cần một thay đổi nhỏ cũng
làm thay đổi hoàn toàn kết quả trả về: MD5("The quick brown fox jumps over the lazy
cog") = 1055d3e698d289f2af8663725127bd4b. Ngay cả một chuỗi rỗng cũng cho ra
một kết quả phức tạp: MD5("") = d41d8cd98f00b204e9800998ecf8427e
+ Những Lỗ Hổng :
Bất cứ thuật toán mã hóa nào rồi cũng bị giải mã. Với MD5, ngay từ năm 1996,
người ta đã tìm thấy lỗ hổng của nó. Mặc dù lúc đó còn chưa rõ ràng lắm nhưng các
chuyên gia mã hóa đã nghĩ đến việc phải đưa ra một thuật giải khác, như là SHA-1…
24
Các phương pháp xác thực
2.2.4: Hàm băm SHA (Secure hash function).
- SHA là hàm băm được viện Tiêu chuẩn và Công nghệ Hoa Kỳ (NIST) chuẩn
hóa năm 1993, sau đó được chỉnh sửa năm 1995 và đặt tên là SHA-1, từ đó phiên bản
cũ được gọi là SHA-0 và gần như không được dùng đến. SHA-1 dựa chủ yếu cấu trúc
của hàm băm MD4.
- SHA-1 tạo ra mã băm có chiều dài cố đinh là 160 bit. Năm 2002, xuất hiện
thêm một số phiên bản khác nhau của SHA, chủ yếu là tăng chiều dài mã băm, như :
SHA-256 (mã băm dài 256 bit), SHA-384 (mã băm dài 385 bit) và SHA-512 (mã băm
dài 512 bit).
Các phiên bản SHA :
SHA chấp nhận các khối thông tin có kích thước tối đa là 2
64
bit để tạo ra mã
băm với độ dài cố định 160 bit. Toàn bộ khối thông tin được xử lý theo từng khối 512
bit, qua 5 công đoạn :
- Gắn bit đệm - Append padding bit: thông tin gốc được gắn thêm các bit thừa
để có chiều dài (448 modulo 512)bit, tức là tất cả các khỗi trước có chiều dài bằng
nhau là 512bit, riêng khối cuối cùng là 448bit. Chú ý rằng việc chèn thêm bit vào khối
thông tin được thực hiện đối với tất cả các khối thông tin gốc, kể cả thông tin gốc có
số bit chính xác bằng 448 mod 512 (khi đó chuỗi bit chèn vào sẽ có chiều dài 512 bit).
Nguyên tắc đệm là thêm một bit 1 vào cuối chuỗi bit, sau đó gắn một chuỗi bit 0 đủ để
tạo thành khối 448 bit.
- Gắn chiều dài - Append length: một chuỗi 64 bit được gắn thêm vào khối
thông tin, 64 bit này được xử lý như một số nguyên không dấu, cho biết chiều dài của
khối thông tin gốc tính bằng bit (chiều dài thật sự của thông tin khi chưa thực hiện
công đoạn 1).
25