LỜI CẢM ƠN .i
LỜI CAM ĐOAN .ii
LỜI MỞ ĐẦU.1
CHưƠNG 1. CÁC KHÁI NIỆM CƠ BẢN .3
1.1. Tổng quan về thương mại điện tử .3
1.1.1. Khái niệm về TMĐT.3
1.1.2. Vai trò tác động của TMĐT.4
1.1.3. Các đặc trưng của TMĐT .6
1.1.4. Các loại hình giao dịch TMĐT .8
1.1.5. Ba giai đoạn hoạt động của TMĐT.10
1.2. Tổng quan về An toàn thông tin.12
1.2.1. An toàn thông tin là gì? Tại sao cần bảo đảm An toàn thông tin?.12
1.2.2. Mục tiêu của An toàn thông tin.13
1.2.3. Các giải pháp bảo đảm An toàn thông tin.13
1.3. Mã hóa dữ liệu.14
1.3.1. Khái niệm Mã hóa dữ liệu.15
1.3.2. Phân loại hệ mã hóa .16
1.3.3. Một số Hệ mã hóa tiêu biểu .18
1.4. Chữ ký số.23
1.4.1. Khái niệm “Chữ ký số”.23
1.4.2. Một số chữ ký số tiêu biểu.25
1.5. Đại diện tài liệu và hàm băm.27
1.5.1. Hàm băm (Hàm tạo đại diện tài liệu).27
1.5.2. Các Hàm băm .28
1.6. Thủy vân số (Digital watermarking) .28
1.6.1 Phân loại Thủy vân số.29
1.6.2. Các ứng dụng của Thuỷ vân với ảnh số.30
68 trang |
Chia sẻ: honganh20 | Ngày: 10/03/2022 | Lượt xem: 335 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu một số bài toán về an toàn thông tin trong thỏa thuận và ký kết hợp đồng của thương mại điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
được nội dung.
15
Trên đường truyền nội dung của thông tin có thể bị theo dõi, bị đọc trộm hay
bị đánh cắp vì vậy để đảm bảo rằng chỉ có người nhận mới được đọc tin thì trước
khi gửi chúng cần phải được mã hóa thành “thông tin không có ý nghĩa”. Và để hiểu
được thông điệp này thì kẻ tấn công phải giải mã được nó, nếu chúng được mã hóa
với thuật toán càng tốt thì chi phí giải mã càng cao đối với những kẻ tấn công này
và đương nhiên chúng sẽ phải tính toán xem chi phí giải mã có cao hơn thông tin
cần biết hay không? Như vậy thuật toán mã hóa càng tốt thì vấn đề bảo mật thông
tin càng cao.
1.3.1. Khái niệm Mã hóa dữ liệu
Để bảo đảm ATTT lưu trữ trong máy tính hay bảo đảm ATTT trên đường
truyền tin [1] người ta phải “Che Giấu” (mã hóa) các thông tin này để người khác
khó nhận ra.
Mã hóa: Là quá trình chuyển thông tin từ dạng đọc được (bản rõ) thành
thông tin không thể đọc được (bản mã) đối với người không được phép.
Giải mã: Là quá trình chuyển đổi thông tin ngược lại từ thông tin không thể
đọ được (bản mã) sang thông tin có thể đọc được (bản rõ).
Hình 1.11: Sơ đồ mã hóa đơn giản.
1.3.1.1. Hệ mã hóa
Hệ mã hóa: là tập hợp các thuật toán, các khóa nhằm mã hóa và giải mã thông
tin. Hệ mã hóa là bộ năm (P, C, K, E, D) trong đó:
P là tập hữu hạn các bản rõ có thể. C là tập hữu hạn các bản mã có thể.
K là tập hữu hạn các khoá có thể.
E là tập các hàm lập mã. D là tập các hàm giải mã.
Khóa lập mã ke K, hàm lập mã eke E, eke: P C,
Khóa giải mã kd K, hàm giải mã dkd D, dkd: C P,
sao cho dkd (eke (x)) = x, x P.
x ở đây được gọi là bản rõ và eke (x) được gọi là bản mã.
16
1.3.1.2. Mã hóa và Giải mã
Người gửi G eke (T) Người nhận N
(có khóa lập mã ke) (có khóa giải mã kd)
Tin tặc có thể trộm bản mã eke (T)
Người gửi G muốn gửi bản tin T cho người nhận N. Để bảo đảm bí mật, G mã
hoá bản tin bằng khóa lập mã ke, sau khi mã hóa G nhận được bản mã eke (T), rồi
gửi cho N. Tin tặc có thể trộm bản mã eke (T), nhưng nếu có trộm được bản mã
này cũng “khó” hiểu được bản tin gốc T nếu không có khoá giải mã kd.
N nhận được bản mã và dùng khoá giải mã kd để giải mã bản mã eke (T), sau
khi giải mã xong sẽ nhận được bản tin gốc T = dkd (eke (T)).
1.3.2. Phân loại hệ mã hóa
Như chúng ta đã biết hiện nay có 2 loại mã hóa chính bao gồm: mã hóa khóa
đối xứng và mã hóa khoá công khai.
1.3.2.1. Hệ mã hóa khóa đối xứng
Mã hóa khóa đối xứng [1] là hệ mã hóa mà cả khóa lập mã và khóa giải mã
“giống nhau” nếu biết được khóa lập mã thì có thể “dễ” tính ra được khóa giải mã
và ngược lại biết được khóa giải mã thì sẽ “dễ” tính ra được khóa lập mã. Đặc biệt
có một số hệ mã hóa có khoá lập mã và khoá giải mã trùng nhau (ke = kd), chẳng
hạn như hệ mã hóa “dịch chuyển” hay DES.
Hệ mã hóa khóa đối xứng hay còn gọi là hệ mã hóa khoá bí mật, khóa riêng
bởi vì phải giữ bí mật cả hai khóa. Người gửi, người nhận phải thoả thuận khoá
chung (lập mã hay giải mã) và khoá này phải được giữ bí mật trước khi dùng hệ mã
hóa khóa đối xứng. Độ an toàn của hệ mã hóa khóa đối xứng phụ thuộc vào khoá.
Ưu điểm:
- Mã hóa khóa đối xứng thì mã hóa và giải mã nhanh hơn hệ mã hóa khóa
công khai.
Nhược điểm:
- Mã hóa khóa đối xứng chưa thật sự an toàn vì: người mã hoá và người giải mã
phải có “chung” một khoá. Do vậy khóa phải được giữ bí mật tuyệt đối (vì biết khoá
này “dễ” tính được khoá kia và ngược lại).
- Việc thỏa thuận và quản lý khóa chung là khó khăn và phức tạp. Người gửi,
người nhận luôn phải thống nhất với nhau về khoá chung. Việc thay đổi khoá là rất
khó và dễ bị lộ. Khóa chung phải được gửi cho nhau giữa người gửi và người nhận
trên kênh an toàn.
17
- Hai người (lập mã, giải mã) cùng biết “chung” một bí mật, thì việc giữ được
bí mật là rất khó!
Nơi sử dụng:
- Thường được sử dụng trong môi trường như trong cùng mạng nội bộ thì
khoá chung có thể dễ dàng trao chuyển bí mật.
- Hệ mã hóa khóa đối xứng mã hóa và giải mã nhanh hơn hệ mã hóa khóa
công khai nên thường dùng để mã hóa những bản tin lớn.
Mã hóa khóa đối xứng có thể chia thành:
Mã hóa khối: là mã hóa sử dụng phép biến đổi mã hóa cố định thao tác trên
các khối của bản rõ và bản mã. Bản rõ được chia thành một chuỗi các khối có kích
thước xác định và mã hóa từng khối một tại mỗi thời điểm. Các khối bản rõ cùng
với khóa luôn được mã hóa thành các khối bản mã tương ứng. Chẳng hạn, hệ mã
hóa DES và hệ mã hóa AES (thế hệ sau của DES) là hai hệ mã hóa sử dụng mã hóa
khối. DES thao tác trên những khối 64 bit với khóa 56 bit, còn AES thao tác trên
những khối 128 bit và kích cỡ khóa có thể là 128, 192 hoặc 256 bit.
Mã hóa dòng: Xử lý từng bit hoặc byte của bản rõ và bản mã tại một thời
điểm. Mỗi lần nó được mã hóa thì mỗi bit của bản rõ sẽ được mã hóa thành một bit
khác. Mã hóa dòng áp dụng những phép biến đổi mã hóa tùy thuộc vào một dòng
khóa được sử dụng.
1.3.2.2. Hệ mã hóa khóa công khai
Hệ mã hóa khóa công khai (hệ mã hóa khóa phi đối xứng) [1] do Diffie và
Hellman phát minh vào những năm 1970, là hệ mã hóa có khóa lập mã và khóa giải
mã khác nhau (ke kd), biết được khóa này cũng “khó” tính được khóa kia.
Một ai đó có thể dùng khoá công khai để mã hoá bản tin, nhưng chỉ người có
đúng khoá giải mã thì mới có khả năng đọc được bản rõ.
Ưu điểm:
- Người mã hoá dùng khóa công khai và ngược lại người giải mã giữ khóa bí
mật. Vì chỉ có một người giữ khóa bí mật nên khả năng lộ khóa bí mật khó hơn.
- Nếu thám mã cố gắng tìm khoá bí mật (mặc dù biết khoá công khai) thì
chúng phải đương đầu với bài toán “khó”.
- Thuận tiện ở chỗ là thuật toán được viết một lần nhưng có thể công khai
cho nhiều người dùng và cho nhiều lần dùng và họ chỉ cần giữ bí mật khóa
riêng của mình.
18
- Việc tính ra cặp khoá công khai, bí mật phải trong thời gian đa thức (cho biết
các tham số ban đầu của hệ mã hóa).
- Người gửi “dễ” tạo ra bản mã C khi có bản rõ P, khoá công khai.
- Người nhận “dễ” giải được thành bản rõ P khi có bản mã C, khoá bí mật.
- Việc tìm ra bản rõ P cũng là bài toán “khó” nếu thám mã biết khoá công
khai, biết bản mã C thì số phép thử là vô cùng lớn và không khả thi.
Nhược điểm:
- Hệ mã hóa khóa công khai mã hóa, giải mã chậm hơn hệ mã hóa khóa đối xứng.
Nơi sử dụng:
- Việc trao chuyển khoá bí mật khá khó khăn và thường sử dụng đa số trên các
mạng công khai như Internet.
- Khoá công khai, bản mã đều có thể gửi đi trên một kênh truyền tin không an toàn.
- Nếu có biết cả khóa công khai, bản mã thì việc thám mã khám phá được bản
rõ cũng không phải dễ dàng.
- Hệ mã hóa khóa công khai chỉ dùng để mã hóa những bản tin ngắn vì mã hóa
và giải mã chậm.
- Đa số được sử dụng cho cặp người dùng thỏa thuận khóa bí mật của hệ mã
hóa khóa riêng.
1.3.3. Một số Hệ mã hóa tiêu biểu
1.3.3.1. Hệ mã hóa đối xứng AES
Giới thiệu:
Advanced Encryption Standard (AES) - Tiêu chuẩn mã hóa tiên tiến là một
thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa
nhằm mã hóa và giải mã dữ liệu do Viện Tiêu chuẩn và Công nghệ quốc gia Hoa
Kỳ (National Institute Standards and Technology – NIST) phát hành ngày
26 11 2001 và được đặc tả trong Tiêu chuẩn Xử lý thông tin Liên bang 197 (Federal
Information Processing Standard – FIPS 197) sau quá trình kéo dài 5 năm trình phê
duyệt, AES tuân theo mục 5131 trong Luật Cải cách quản lý công nghệ thông tin
năm 1996 và Luật An toàn máy tính năm 1997.
Thuật toán được hai nhà mật mã học người Bỉ là Joan Daemen và Vincent
Rijmen thiết kế. Khi tham gia cuộc thi thiết kế AES thì thuật toán được đặt tên là
"Rijndael". Vào những năm 1990, nhận thấy nguy cơ của mã hóa DES là kích
thước khóa ngắn, nó có thể bị phá mã trong tương lai gần nên cục tiêu chuẩn
quốc gia Hoa Kỳ đã kêu gọi xây dựng một phương pháp mã hóa mới. Cuối cùng
19
một thuật toán có tên là Rijndael được chọn và đổi tên thành Andvanced
Encryption Standard (AES).
Thuật toán Rijndael dựa trên bản thiết kế trước đó của Daemen và Rijmen
(đó là Square và Square lại được thiết kế dựa trên Shark). Khác với Rijndael sử
dụng mạng thay thế hoán vị thì DES lại sử dụng mạng Feistel. AES không đòi hỏi
nhiều bộ nhớ và có thể dễ dàng được thực hiện với tốc độ cao bằng phần mềm
hoặc phần cứng.
Chuẩn mã hóa AES cho phép xử lý các khối dữ liệu đầu vào kích thước 128
bit và sử dụng các khóa có độ dài là 128, 192 hoặc 256 bit. Hệ mã hóa Rijndael có
thể làm việc với các khóa và khối dữ liệu có độ dài lớn hơn, nhưng khi được Ủy ban
tiêu chuẩn của Hoa kỳ đưa ra vào năm 2001 và chọn là chuẩn mã hóa thì nó được
quy định chỉ làm việc với khối dữ liệu 128 bit và các khóa có độ dài 128, 192 hoặc
256 bit (do vậy nó còn có các tên AES-128, AES-192, AES-256 tương ứng với độ
dài khóa sử dụng).
Ưu điểm:
- AES đã được sử dụng trong thông tin mật (do chính phủ Hoa Kỳ tuyên bố là
có độ an toàn cao).
- AES sử dụng bảng tra và phép thế có tính chất phi tuyến mạnh dẫn đến mức
độ phân tán thông tin phức tạp làm tăng độ an toàn cho thuật toán.
- AES mô tả cấu trúc rõ ràng, đơn giản, mô tả toán học đơn giản.
Nhược điểm:
Do cấu trúc toán học của AES mô tả toán học khá đơn giản mặc dù điều này
hiện tại chưa dẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu cho rằng
trong tương lai sẽ có người lợi dụng được cấu trúc này.
Ứng dụng:
Hiện nay, AES được sử dụng rộng rãi trên toàn thế giới để bảo vệ dữ liệu
ở các tổ chức như tài chính, ngân hàng, chính phủ, chữ ký điện tử, thương mại
điện tử.
Mã hóa AES được ứng dụng nhanh đối với cả phần mềm và phần cứng, chỉ
yêu cầu một không gian lưu trữ nhỏ sử dụng cho việc mã hóa những thiết bị cầm tay
nhỏ như ổ CD, ổ USB,
Mã hóa AES được sử dụng như một hàm băm.
20
Các khái niệm và định nghĩa:
1. Các khái niệm và ký hiệu
Biến đổi Affine Phép biến đổi bao gồm một phép nhân với một ma trận
sau đó là môṭ phép cộng của một vectơ
Bit Một số nhi ̣phân nhận giá tri ̣0 hoặc 1
Block Một dãy các bit nhi ̣phân tạo thành input, output, trạng
thái (state) và các khóa sử dụng tại các vòng lặp (Round
Key) của hệ mã. Độ dài của dãy (khối) là số lượng các
bit mà nó chứa. Các khối cũng có thể được xem là một
dãy các byte
Byte Một nhóm 8 bit
Cipher Thuật toán mã hóa
Cipher Key Khóa của hệ mã, có thể được biểu diễn dưới dạng một
mảng 2 chiều gồm 4 hàng và Nk cột
Ciphertext Bản mã
Inverse Cipher Thuật toán giải mã
Thủ tục sinh khóa (Key
Expansion)
Thủ tục được sử dụng để sinh ra các khóa sử dụng tại
các vòng lặp của thuật toán mã hóa, giải mã từ khóa
chính ban đầu
Round Key Là các giá trị sinh ra từ khóa chính bằng cách sử dụng
thủ tục sinh khóa. Các khóa này được sử dụng tại các
vòng lặp của thuật toán
Trạng thái (State) Các giá trị mã hóa trung gian có thể biểu diễn dưới
dạng môṭ mảng 2 chiều gồm 4 hàng và Nb cột
S-box Một bảng thế phi tuyến được sử dụng trong thủ tuc ̣sinh
khóa và trong các biến đổi thay thế các byte để thực
hiện các thay thế 1-1 đối với một giá tri ̣1 byte
Word Một nhóm 32 bit có thể được xem như 1 đơn vi ̣tính
toán độc lập hoặc là một mảng 4 byte
Bảng 1: Qui ước một số từ viết tắt và thuật ngữ của AES
21
2. Các hàm, ký hiệu và các tham số của thuật toán
Các tham số thuật toán, các ký hiệu và các hàm được sử dụng trong mô tả
thuật toán:
Tên hàm Giải thích
AddRoundKey() Hàm biến đổi được sử dụng trong thuật toán mã hóa và giải mã trong
đó thực hiện phép XOR bit giữa trạng thái trung gian (state) và một
khóa vòng lặp (Round Key). Kích thước của một Round Key bằng
kích thước của trạng thái, ví dụ với Nb=4 độ dài của một Round Key
sẽ là 128 bit hay 16 byte
MixColumns() Hàm biến đổi trong thuật toán mã hóa nhận tất cả các cột của một
trạng thái (state) và trộn với dữ liệu của nó (không phụ thuộc lẫn
nhau) để nhận được cột mới
ShiftRows() Hàm sử dụng trong quá trình mã hóa, xử lý các trạng thái bằng cách
dịch vòng ba hàng cuối của trạng thái với số lần dịch khác nhau
SubBytes() Hàm biến đổi sử dụng trong quá trình mã hóa, xử lý một trạng thái
bằng cách sử dụng một bảng thế phi tuyến các byte (S-box) thao tác
trên mỗi byte một cách độc lập
InvMixColumns() Hàm biến đổi được sử dụng trong thuật toán giải mã, là hàm ngược
của hàm MixColumns()
InvShiftRows() Hàm biến đổi sử dụng trong thuật toán giải mã và chính là hàm
ngược của hàm ShiftRows()
Inv SubBytes() Hàm biến đổi được sử dụng trong thuật toán giải mã, là hàm ngược
của hàm SubBytes()
K Khóa mã hóa
Nb Số lượng các cột (là các word 32 bit) tạo thành một trạng thái, Nb = 4)
Nk Số lượng các word 32 bit taọ thành khóa mã hóa K (Nk = 4, 6, hoặc 8)
Nr Số lượng các vòng lặp của thuật toán, là một hàm của Nk và Nb (là
các giá trị cố định) ( Nr = 10, 12 hoặc 14 tương ứng với các giá trị
khác nhau của Nk)
Rcon[] Mảng word hằng số sử dụng trong các vòng lặp
RotWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word 4-byte và thực
hiện một hoán vị vòng
SubWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word input 4-byte và sử
dụng một S -box trên mỗi giá trị 4-byte này để thu được 1 word output
XOR Phép or bit tuyệt đối
⊕ Phép or bit tuyệt đối
⊗ Phép nhân 2 đa thức (bậc nhỏ hơn 4) theo modulo (x4 + 1)
● Phép nhân trên trường hữu hạn
Bảng 2: Các hàm, ký hiệu, các tham số của thuật toán
22
Độ an toàn:
Việc sử dụng các hằng số khác nhau ứng với mỗi chu kỳ giúp hạn chế khả
năng tính đối xứng trong thuật toán. Sự khác nhau trong cấu trúc của việc mã hóa
và giải mã đã hạn chế được các khóa “yếu” như trong phương pháp DES. Ngoài ra,
thông thường những điểm yếu liên quan đến mã khóa đều xuất phát từ sự phụ thuộc
vào giá trị cụ thể của mã khóa của các thao tác phi tuyến. Trong phiên bản mở rộng,
các khóa được sử dụng thông qua thao tác XOR và tất cả những thao tác phi tuyến
đều được cố định sẵn trong S-box mà không phụ thuộc vào giá trị cụ thể của khóa
mã hóa. Tính chất phi tuyến cùng khả năng khuếch tán thông tin trong việc tạo bản
mã khóa mở rộng làm cho việc phân tích mật mã dựa vào khóa tương đương hay
các khóa có liên quan trở nên không khả thi.
Đối với phương pháp vi phân rút gọn, việc phân tích chủ yếu khai thác đặc
tính tập trung thành vùng của các vết vi phân trong một số phương pháp mã hóa.
Trong thuật toán AES, số lượng chu kỳ lớn hơn 6, không tồn tại phương pháp công
phá mật mã nào hiệu quả hơn phương pháp thử sai. Tính chất phức tạp của biểu
thức S-box cùng với hiệu ứng khuếch tán giúp cho thuật toán không thể bị phân tích
bằng phương pháp nội suy.
Đối với phương pháp thử sai với chiều dài khóa 256-bit tương ứng 2256 hay 1.2
x 10
77
khả năng có thể xảy ra. Thậm chí nếu sử dụng một trong những siêu máy
tính mạnh nhất hiện nay là Roadrunner 54 của IBM để xử lý thì cũng cần 3.5 x 1054
năm để kiểm tra tất cả khả năng (Roadrunner có khả năng thực hiện 1.042 triệu tỉ
phép tính / giây).
1.3.3.2. Hệ mã hóa RSA
Sơ đồ
Là hệ mã hóa sử dụng các phép tính toán trong Zn, trong đó n là tích của hai số
nguyên tố phân biệt p và q. Ta nhận thấy: (n) = (p-1).(q-1).
Mô tả thuật toán:
1. Tạo cặp khóa (bí mật, công khai) (a, b) :
Chọn bí mật nguyên tố lớn p, q và tính n = p * q, công khai n, đặt P = C = Zn
Tính bí mật (n) = (p-1).(q-1). Chọn khóa công khai b < (n) và b lànguyên tố
cùng nhau với (n).
Khóa bí mật a là phần tử nghịch đảo của b theo mod (n) ta có: a*b 1 (mod (n).
Cặp khóa (bí mật, công khai) K = (a, b)/ a, b Z(n) , a*b 1 (mod (n)).
Với Bản rõ x P và Bản mã y C, định nghĩa:
2. Mã hoá: y = ek (x) = x
b
mod n
3. Giải mã: x = dk (y) = y
a
mod n
23
Ta kiểm tra xem các phép mã hóa và giải mã có phải là nghịch đảo của nhau
không vì:
a*b 1 (mod (n)).
nên ta có: a*b t(n) +1
với một số nguyên t ≥ 1 nào đó. Giả sử x Zn
*
khi đó ta có:
(x
b
)
a
xt(n) +1(mod n)
(xt(n))x(mod n)
(1t)x(mod n)
x(mod n)
Thực hiện:
Thiết lập hệ RSA cần tuân theo các bước sau:
1. Tạo hai số nguyên tố lớn p và q.
2. Tính n = p × q và (n) = (p-1).(q-1).
3. Chọn một số ngẫu nhiên b (với điều kiện 1 < b < (n)) sao cho
UCLN(b, (n)) = 1
4. Tính a = b
-1
mod (n) dùng thuật toán Euclide mở rộng.
5. Công bố n và b trong cùng một danh bạ và dùng chúng làm khóa công khai.
Độ an toàn
1. Hệ mã hóa RSA là tất định nghĩa là với một bản rõ x và một khóa bí mật
a, thì chỉ có duy nhất một bản mã y.
2. Hệ mật RSA an toàn, khi giữ được bí mật khoá giải mã a, p, q, (n).
Thám mã dễ dàng tính được (n) = (q-1)*(p-1) nếu biết được p và q.
Thám mã sẽ tính được a theo thuật toán Euclide mở rộng nếu biết được (n)
Việc phân tích n thành tích của p và q là bài toán không dễ dàng hay nói cách khác
là bài toán “khó”.
Độ an toàn của hệ mật RSA dựa vào việc giải bài toán phân tích số nguyên
dương n thành tích của hai số nguyên tố lớn p và q.
1.4. Chữ ký số
1.4.1. Khái niệm “Chữ ký số”
Để chứng thực nguồn gốc hay hiệu lực của một tài liệu [1] trước đây 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
trự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ó nhu 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 bit (0 hay 1), xâu bít có thể rất dài (có thể hàng nghìn trang). “Chữ ký”
24
để chứng thực một xâu bít tài liệu cũng không thể là một xâu bit nhỏ đặt phía dưới
xâu bit 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.
“Chữ ký số” để chứng thực một “tài liệu số” đó chính là “bản mã” của xâu bit
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ã”.
Như vậy “ký số” trên “tài liệu số” là “ký” trên từng bit tài liệu. Kẻ gian khó
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,
“chữ ký số” còn dùng để kiểm tra tính toàn vẹn của tài liệu gốc.
Mặt mạnh của “chữ ký số” hơn “chữ ký tay” còn 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 tại khắp mọi nơi miễn là kết nối được vào mạng. Đỡ tốn thời gian,
sức lực, chi phí.
“Ký số” thực hiện trên từng bit tài liệu, nên độ dài của “chữ ký số” ít nhất
cũng bằng độ dài của tài liệu. Do đó thay vì ký trên tài liệu dài, người ta thường
dùng “hàm băm” để tạo “đại diện” cho tài liệu, sau đó mới “Ký số” lên “đại
diện” này.
Sơ đồ chữ ký số:
Sơ đồ chữ ký là bộ năm (P, A, K, S, V ), trong đó:
P là tập hữu hạn các văn bản có thể.
A là tập hữu hạn các chữ ký có thể.
K là tập hữu hạn các khoá có thể.
S là tập các thuật toán ký.
V là tập các thuật toán kiểm thử.
Với mỗi khóa k K, có thuật toán ký Sig k S, Sig k : P A,
có thuật toán kiểm tra chữ ký Ver k V, Ver k : P A đúng, sai,
thoả mãn điều kiện sau với mọi x P, y A:
Đúng, nếu y = Sig k (x)
Ver k (x, y) =
Sai, nếu y Sig k (x)
25
Chú ý:
Người ta thường dùng hệ mã hóa khóa công khai để lập “Sơ đồ chữ ký số”.
Ở đây khóa bí mật a dùng làm khóa “ký”, khóa công khai b dùng làm khóa kiểm
tra “chữ ký”.
Ngược lại với việc mã hóa, dùng khóa công khai b để lập mã, dùng khóa bí
mật a để giải mã.
Phân loại “Chữ ký số”:
1. Phân loại chữ ký theo khả năng khôi phục thông điệp gốc.
- Chữ ký có thể khôi phục thông điệp gốc
- Chữ ký không thể khôi phục thông điệp gốc
2. Phân loại chữ ký theo mức an toàn:
- Chữ ký “không thể phủ nhận”
- Chữ ký “một lần”
3. Phân loại chữ ký theo ứng dụng đặc trưng:
- Chữ ký “mù” (Blind Signature).
- Chữ ký “nhóm” (Group Signature).
- Chữ ký “bội” (Multy Signature).
- Chữ ký “mù nhóm” (Blind Group Signature).
- Chữ ký “mù bội” (Blind Multy Signature).
1.4.2. Một số chữ ký số tiêu biểu
1.4.2.1. Chữ ký RSA
Sơ đồ [1]:
Chú ý:
- So sánh giữa sơ đồ chữ ký RSA và sơ đồ mã hóa RSA ta thấy có sự tương ứng.
1. Tạo cặp khóa (bí mật, công khai) (a, b) :
Chọn bí mật số nguyên tố lớn p, q, tính n = p * q, công khai n, đặt P = A = Zn
Tính bí mật (n) = (p-1).(q-1).
Chọn khóa công khai b < (n), nguyên tố cùng nhau với (n).
Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1 (mod (n).
Tập cặp khóa (bí mật, công khai) K = (a, b)/ a, b Zn , a*b 1 (mod (n)).
2. Ký số: Chữ ký trên x P là y = Sig k (x) = x
a
(mod n), y A (R1)
3. Kiểm tra chữ ký: Verk (x, y) = đúng x y
b
(mod n) (R2)
26
- Việc ký là mã hoá, việc kiểm thử lại chính là việc giải mã
- Việc “ký số” vào x tương ứng với việc “mã hoá” tài liệu x.
- Kiểm thử chữ ký chính là việc giải mã “chữ ký”, để kiểm tra xem tài liệu đã
giải mã có đúng là tài liệu trước khi ký không? Thuật toán và khóa kiểm thử “chữ
ký” là công khai, ai cũng có thể kiểm thử chữ ký được.
1.4.2.2. Chữ ký không thể phủ định (Chaum - van Antwerpen)
Giới thiệu:
Sơ đồ chữ ký không thể chối bỏ được David Chaum và Hans van Antwerpen
đề xuất năm 1989. Giả sử tài liệu cùng chữ ký từ G gửi đến N. Khi N yêu cầu G
cùng kiểm thử chữ ký thì một vấn đề nảy sinh là làm sao để ngăn cản G chối bỏ một
chữ ký mà anh ta đã ký, G có thể tuyên bố rằng chữ ký đó là giả mạo?
Để giải quyết tình huống trên, cần có thêm giao thức chối bỏ, bằng giao thức
này, G có thể chứng minh một chữ ký là giả mạo. Nếu G từ chối tham gia vào giao
thức đó thì có thể xem rằng G không chứng minh được chữ ký đó là giả mạo.
Sơ đồ [6]:
Chuẩn bị các tham số:
+ Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là khó giải,
đồng thời thỏa mãn điều kiện p = 2 * q + 1, q cũng là nguyên tố.
+ Chọn g ∈
là phần tử có cấp q.
+ Chọn 1 ≤ a ≤ q – 1, tính h = ga mod p.
+ G là nhóm con (theo phép nhân) cấp q sinh ra bởi g của
+ Tập hữu hạn các văn bản có thể P, tập hữu hạn các chữ ký có thể A
+ P = A = G
+ Khóa công khai được định nghĩa pk = ( p, g, h ), khóa bí mật sk = a.
27
1.5. Đại diện tài liệu và hàm băm
1.5.1. Hàm băm (Hàm tạo đại diện tài liệu)
Khái niệm Hàm băm [1]:
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 và cho 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” hay “đại diện thông điệp”.
Hàm băm là hàm một chiều, nghĩa là giá trị của hàm băm là duy nhất và từ giá trị
băm này “khó có thể” suy ngƣợc lại được nội dung hay độ dài ban đầu của tài liệu gốc.
Thuật toán ký:
Dùng khóa bí mật sk ở trên để ký lên thông điệp x, chữ ký là:
y = sigsk( x ) = x
a
mod p
Giao thức kiểm thử:
Bob muốn xác thực chữ ký y trên thông điệp x được ký bởi Alice. Giao thức
được thực hiện như sau:
- Bob chọn ngẫu nhiên e1, e2∈ 𝑍𝑞
- Bob tính c = 𝑦𝑒1ℎ𝑒2 mod p và gửi cho Alice.
- Alice tính d = 𝑐𝑎
−1 𝑚𝑜𝑑 𝑞 mod p và gửi cho Bob.
- Bob chấp nhận y là chữ ký đúng trên x khi và chỉ khi d ≡ 𝑥𝑒1𝑔𝑒2 mod p
Giao thức chối bỏ chữ ký:
- Bob chọn ngẫu nhiên e1, e2 ∈ 𝑍𝑞
- Bob tính c = 𝑦𝑒1ℎ𝑒2 mod p và gửi cho Alice.
- Alice tính d = 𝑐𝑎
−1 𝑚𝑜𝑑 𝑞 mod p và gửi cho Bob.
- Bob kiểm tra d ≢ 𝑥𝑒1𝑔𝑒2 mod p
- Bob chọn ngẫu nhiên f1, f2 ∈ 𝑍𝑞
- Bob tính C = 𝑦𝑓1ℎ𝑓2 mod p và gửi cho Alice
- Alice tính D = 𝐶𝑎
−1 𝑚𝑜𝑑 𝑞 mod p và gửi cho Bob
- Bob kiểm tra D ≢ 𝑥𝑓1𝑔𝑓2 mod p
- Bob kết luận chữ ký y thực sự là giả mạo nếu:
(𝑑𝑔−𝑒2)𝑓1 ≡ (D𝑔−𝑓2)𝑒1 mod p
28
Đặc tính của Hàm băm:
Hàm băm h là hàm một chiều có các đặc tính sau:
1. Với tài liệu đầu vào (bản tin gốc) x, chỉ thu được giá trị băm duy nhất z = h(x).
2. Nếu dữ liệu trong bản tin x bị thay đổi hay bị xóa để thành bản tin x’, thì giá
trị băm h(x’) h(x).
Cho dù chỉ là một sự thay đổi nhỏ, ví dụ chỉ thay đổi 1 bit dữ liệu của bản tin
gốc x, thì giá trị băm h(x) của nó cũng vẫn thay đổi. Điều này có nghĩa là: hai thông
điệp khác nhau thì giá trị băm của chúng cũng khác nhau.
3. Nội dung của bản tin gốc “khó” thể suy ra từ giá trị hàm băm của nó.
Nghĩa là: với thông điệp x thì “dễ” tính được z = h(x), nhưng lại “khó” tính ngược
lại được x nếu chỉ biết giá trị băm h(x) (kể cả khi biết hàm băm h).
Ứng dụng của hàm băm:
1. Với bản tin dài x, thì chữ ký trên x cũng sẽ dài, như vậy tốn thời gian “ký”,
tốn bộ nhớ lưu giữ “chữ ký”, tốn thời gian truyền “chữ ký” trên mạng.
Người ta dùng hàm băm h để tạo đại diện bản tin z = h(x), nó có độ dài ngắn
(chẳng hạn 128 bit). Sau đó ký trên z, như vậy chữ ký trên z sẽ nhỏ hơn rất nhiều
so với chữ ký trên bản tin gốc x.
2. Hàm băm dùng để xác định tính toàn vẹn dữ liệu.
3. Hàm băm dùng để
Các file đính kèm theo tài liệu này:
- luan_van_nghien_cuu_mot_so_bai_toan_ve_an_toan_thong_tin_tro.pdf