Bất kỳ ai cũng có thể sử dụng khoá công khai để mã hoá thông điệp, nhưng chỉ người sở hữu khoá bí mật mới có thể đọc được.. Các chữ ký số được tạo ra bằng cách sử dụng khoá bí mật của ng
Trang 1DSA Digital Signature Algorithm
EMSA Encoding Method for Signatures with Appendix I2OSP Integer-to-Octet-String Primitive
OS2IP Octet-String-to-Integer Primitive
PKCS Public-Key Cryptography Standards
PSS Probabilistic Signature Scheme
RSASP1 RSA Signature Primitive 1
RSASSA RSA Signature Scheme with Appendix
RSAVP1 RSA Verfication Primitive 1
SHA-1 Secure Hash Algorithm 1
Trang 2MỞ ĐẦU
Giao tiếp là một phần quan trọng của cuộc sống, nó đánh dấu quá trình phát triển của loài người Hình thức giao tiếp truyền thống là nói chuyện trực tiếp, gửi thư qua bưu điện, giao tiếp bằng điện thoại Các hình thức giao tiếp truyền thống này đã tồn tại trong một khoảng thời gian dài và các điều khoản đặc biệt được tạo ra để mọi người có thể giao tiếp với nhau theo một cách an toàn
Giao tiếp trực tiếp, người này có thể nhận ra các đặc điểm vật lý của người kia, hoặc họ có thể so sánh các chữ ký được viết bằng tay cùng với các tài liệu liên quan khác (như thẻ căn cước) Việc bắt chước tất cả các đặc điểm vật lý của một người là rất khó Giao tiếp bằng điện thoại, người ta có thể nhận ra nhau qua giọng nói Ngày nay giao tiếp trên Internet là hình thức giao tiếp mới, bản chất của hình thức giao tiếp này khác với các hình thức giao tiếp truyền thống, đó là các nhóm tham gia giao tiếp không có sự liên lạc “vật lý” Họ không nhìn thấy nhau, không nghe được giọng nói của nhau Do vậy cần phải áp dụng các quy tắc, công nghệ để bảo đảm giao tiếp của mọi người trên Internet được an toàn và thông suốt
Vì vậy trong luận văn này, tôi sẽ tìm hiểu một số vấn đề về giải pháp và công nghệ “nhận dạng” giữa các đối tác trên mạng Internet Các khái niệm toán học, độ phức tạp, được xem như đã biết
Luận văn này gồm 4 chương:
Chương 1: Các khái niệm cơ bản Đề cập tới một số khái niệm cơ bản trong
an toàn thông tin như: mã hoá, chữ ký số, tóm lược thông điệp, xác thực
Chương 2: Giao thức SSL Giới thiệu về giao thức SSL, những khái niệm cơ bản và nguyên tắc hoạt động chung của giao thức SSL
Chương 3: Sơ đồ chữ ký RSASSA-PSS và chương trình OpenSSL Tìm hiểu
sơ đồ chữ ký RSASSA-PSS và chương trình OpenSSL
Chương 4: Thử nghiệm ứng dụng Xây dựng chương trình ứng dụng theo mô hình truyền tin Client/Server có bảo mật, sử dụng sơ đồ chữ ký RSASSA-PSS và thuật toán mã hoá DES
Trang 3Chương 1 CÁC KHÁI NIỆM CƠ BẢN
1.1 MỘT SỐ VẤN ĐỀ AN TOÀN BẢO MẬT THÔNG TIN.
Ngày nay việc giao tiếp trên Internet là rất phổ biến và do vậy tính an toàn trong giao tiếp là rất cần thiết Giả sử Alice muốn gửi một thông điệp tới ngân hàng của
cô với yêu cầu chuyển tiền Alice muốn thông điệp đó phải bí mật, bởi vì thông điệp này chứa một số thông tin quan trọng như số tài khoản và số lượng tiền cần chuyển Giải pháp là sử dụng thuật toán mã hoá, cho phép chuyển thông điệp của Alice thành một dạng đã được mã hoá, và chỉ những người có khoá giải mã mới đọc được Một thuật toán mã hoá tốt phải đảm bảo thông điệp khó có thể bị những kẻ tấn công giải mã để thu lại văn bản rõ Có hai loại thuật toán mã hoá đó là mã hoá khoá đối xứng và mã hoá khoá phi đối xứng
Mã hoá khoá đối xứng yêu cầu bên gửi và bên nhận thông điệp cùng sử dụng chung một khoá, một thông tin bí mật được sử dụng để lập mã và giải mã Chỉ có người gửi và người nhận biết được khoá bí mật này Như vậy nếu Alice và ngân hàng có một khoá bí mật thì họ có thể gửi các thông điệp bí mật cho nhau
Mã hoá khoá phi đối xứng hay mã hoá khoá công khai sử dụng cặp khoá, một khoá được sử dụng để mã hoá thông điệp và khoá còn lại được sử dụng để giải mã thông điệp Khóa dùng để mã hoá thông điệp được công bố công khai, gọi là khoá
công khai (public key) Khoá dùng để giải mã thông điệp sẽ được giữ bí mật, gọi là khoá bí mật (private key)
Bất kỳ ai cũng có thể sử dụng khoá công khai để mã hoá thông điệp, nhưng chỉ người sở hữu khoá bí mật mới có thể đọc được Theo cách này Alice gửi thông điệp
bí mật tới người sở hữu cặp khoá (ngân hàng) bằng cách mã hoá thông điệp đó và chỉ có ngân hàng mới có thể giải mã
Mặc dù Alice có thể mã hoá thông điệp để đảm bảo tính bí mật Tuy nhiên một
ai đó có thể sửa đổi thông điệp của Alice hoặc thay thế bằng thông điệp khác để ngân hàng chuyển tiền tới chính họ
Một cách để đảm bảo tính toàn vẹn thông điệp ban đầu của Alice là tạo ra tóm lược thông điệp gốc, và gửi bản tóm lược này tới ngân hàng Dựa vào thông điệp
Trang 4gốc nhận được, ngân hàng tạo ra tóm lược thông điệp và so sánh với bản tóm lược
mà Alice gửi Nếu chúng phù hợp thì thông điệp nhận được là còn nguyên vẹn
Bản tóm lược thông điệp còn gọi là đại diện thông điệp (message digest – MD),
là một biểu diễn ngắn gọn, có độ dài cố định từ các thông điệp có độ dài lớn Thuật
toán tóm lược (digest algorithm) sẽ tạo ra tóm lược duy nhất cho một thông điệp
“Khó” có thể xác định thông điệp gốc từ bản tóm lược của nó “Khó” có thể tìm ra hai thông điệp khác nhau mà tạo ra cùng một tóm lược
Một thách thức khác mà Alice phải đối mặt là tìm cách để gửi bản tóm lược tới ngân hàng một cách an toàn Khi nào công việc này hoàn tất thì việc toàn vẹn của thông điệp mới được đảm bảo Điều này được thực hiện bằng cách gửi bản tóm lược cùng với chữ ký số trên bản tóm lược đó
Khi Alice gửi một thông điệp tới ngân hàng, họ cần phải biết chắc chắn rằng thông điệp này thực sự được gửi từ Alice, và không phải là từ người khác Một chữ
ký số, được Alice tạo ra và gộp vào trong thông điệp để phục vụ cho mục đích trên Các chữ ký số được tạo ra bằng cách sử dụng khoá bí mật (của người gửi) mã hoá tóm lược thông điệp Bất kỳ ai cũng có thể giải mã chữ ký bằng khoá công khai, nhưng chỉ có người ký mới biết được khoá bí mật Gộp tóm lược thông điệp trong chữ ký đó, có nghĩa là chữ ký này chỉ có ích đối với thông điệp đó, nó sẽ đảm bảo tính toàn vẹn của thông điệp bởi vì không ai có thể thay đổi tóm lược thông điệp Mặc dù Alice có thể gửi một thông điệp bí mật tới ngân hàng, thực hiện ký thông điệp đó, và đảm bảo tính toàn vẹn của thông điệp, Alice vẫn cần phải biết chắc chắn rằng đang giao tiếp với ngân hàng Điều này có nghĩa là Alice cần đảm bảo khoá công khai mà Alice đang sử dụng, phải tương ứng với khoá bí mật của ngân hàng
Tương tự như vậy, ngân hàng cần phải xác định chữ ký trên thông điệp, là chữ
ký của Alice Nếu mỗi bên có chứng chỉ công nhận danh tính của người khác, xác nhận khoá công khai của họ và được ký bởi trung tâm có quyền chứng thực, thì cả hai có thể tin tưởng lẫn nhau trong giao tiếp Mỗi bên sử dụng khoá công khai của trung tâm xác thực để xác định chứng chỉ của bên kia và sau đó tin chắc về tính xác thực của khoá công khai
Trang 5Trung tâm xác thực được gọi là Certification Authority (CA), thực hiện ký
chứng chỉ bằng khoá bí mật của mình, và bên giao tiếp xác nhận chứng chỉ bằng
cách sử dụng khoá công khai tương ứng với khoá bí mật của CA đã dùng để ký
1.2 VẤN ĐỀ MÃ HOÁ.
1.2.1 Khái niệm về mã hoá
Mã hoá được sử dụng để bảo vệ tính bí mật của thông tin Giả sử người gửi A
muốn gửi một văn bản p đến người nhận B Để bảo mật A lập cho p bản mã c Thay
cho việc gửi p, A gửi cho B bản mã c, B nhận được c và giải mã c để thu lại được
văn bản p như A đã gửi Để A biến p thành c và B biến ngược lại c thành p , A và B
phải thỏa thuận trước với nhau thuật toán lập mã và giải mã, một khóa mật mã
chung K Người ngoài, không biết các thông tin đó (đặc biệt không biết khóa K),
cho dù có lấy trộm được c trên kênh truyền thông công cộng, cũng khó có thể tìm
được văn bản p mà hai người A, B muốn gửi cho nhau.
1.2.2 Hệ mã hoá khoá đối xứng
1.2.2.1 Khái niệm
Sơ đồ hệ mã hoá khoá đối xứng là một bộ năm: S = (P, C, K, E, D)
thỏa mãn các điều kiện sau đây:
P là tập hữu hạn bản rõ
C là tập hữu hạn bản mã
K là tập hữu hạn các khóa
Với mỗi kK tồn tại quy tắc lập mã ekE và quy tắc giải mã tương ứng dkD
Mỗi ek : P > C và dk : C >P thoả mãn dk(ek(x))=x với mỗi bản rõ xP
Như vậy cứ mỗi lần truyền tin bảo mật, người gửi A và người nhận B phải cùng
thỏa thuận trước với nhau một khóa chung k, sau đó người gửi dùng e k để lập mã
cho thông điệp gửi đi, và người nhận dùng d k để giải mã bản mã nhận được Hệ mã
hoá với cách sử dụng đó là mã hoá khóa đối xứng
Một số hệ mã hoá khoá đối xứng như:
Advanced Encryption Standard (AES)
Trang 6 Data Encryption Standard (DES).
Triple Data Encryption Standard (3DES).Sau đây tôi xin giới thiệu hệ mã hoá DES
Trang 71.2.2.2 Hệ mã hoá DES
Hệ mã hoá DES là hệ mã hoá theo khối, mỗi khối bản rõ là từ 64 bít, và khối
bản mã cũng là từ 64 bít Mỗi khoá K của DES là một từ 56 bít
Với mỗi khoá K và bản rõ x , quá trình lập mã diễn ra như sau:
Đầu tiên, thực hiện phép hoán vị ban đầu IP, từ x 64 bít sẽ biến thành từ mới
IP(x), từ này được chia thành hai nửa L0 và R0 , mỗi nửa là một từ 32 bít
Sau đó thực hiện tiếp 16 lần những phép toán giống nhau để nhận được các cặp
Trang 9IP là phép hoán vị vị trí của các ký tự trong mỗi từ 64 bít, từ vị trí 1 đến vị trí
64 Bảng dưới đây cho phép hoán vị IP, với cách hiểu là bít thứ nhất của IP(x) là bít thứ 58 của từ x, bít thứ hai của IP(x) là bít thứ 50 của x, Bảng của phép hoán vị
IP -1 cũng được hiểu tương tự
Trang 10Sơ đồ hàm f: Đầu vào là hai từ R có 32 bít và K có 48 bít Đầu ra là từ f (R, K )
có 32 bít, được xác định theo sơ đồ sau:
Trang 11Trong sơ đồ hàm f, E là phép hoán vị “mở rộng” theo nghĩa là nó biến mỗi từ R
32 bít thành từ E(R) bằng cách hoán vị 32 bít của R, nhưng có một số cặp bít được lặp lại để E(R) thành một từ có 48 bít Phép hoán vị “mở rộng” cho bởi bảng sau:
Theo đó, mỗi từ R = a1a2a3 a32 sẽ biến thành từ
E (R) = a32 a1a2a3a4a 5a4a 5a6a7a8a9a8a9 a32a1
Tiếp theo E(R) sẽ được cộng (từng bít theo mod 2) với K, được một từ 48 bít, chia thành 8 đoạn B1, , B8
Mỗi hộp S i (i = 1, , 8) là một phép thay thế, biến mỗi từ B j (6 bít) thành một từ
C j (4 bít) Các hộp S i được cho bởi các bảng dưới đây với cách hiểu như sau:
Mỗi từ B j = b1b2b3b4b5b6 ứng với một vị trí (r, s) ở hàng thứ r và cột thứ s trong bảng Các hàng được đánh số từ 0 đến 3 ứng với biểu diễn nhị phân b1b6 Các cột
được đánh số từ 0 đến 15 ứng với biểu diễn nhị phân b2b3b4b5
Giá trị của S i (B j ) = C j = c1c2c3c4 là một từ 4 bít, biểu diễn nhị phân của số tại
Trang 14Sơ đồ thuật toán G tạo các khoá K1, , K16
Thuật toán G tạo ra các khoá K1, , K16 từ khoá mã K, được thực hiện theo sơ
đồ trên Khoá K là một từ 56 bít, chia thành 8 đoạn, mỗi đoạn 7 bít, và thêm cho
mỗi đoạn 7 bít đó một bít thử tính chẵn lẻ vào vị trí cuối để được một từ 64 bít
Trước tiên, thuật toán PC-1 biến K thành một từ 56 bít, chia thành hai nửa C0D0,
mỗi nửa có 28 bít Phép hoán vị PC-1 được xác định bởi bảng sau (chú ý là trong
bảng không có các số 8, 16, 24, 32, 40, 48, 56, 64, là vị trí của những bít được thêm
vào khi hình thành khoá mới K )
Trang 15Qui ước của phép hoán vị, bít thứ nhất của PC-1(x ) là bít thứ 57 của x , bít thứ hai của PC-1(x ) là bít thứ 49 của x ,
Với mỗi i = 1, 2, , 16, LS i là phép chuyển dịch vòng sang trái, chuyển dịch một
vị trí nếu i = 1, 2, 9, 16, và chuyển dịch hai vị trí với những giá trị i còn lại
Phép hoán vị PC-2 biến mỗi từ 56 bít C i D i (i =1,2, 16) thành từ 48 bít K i theo bảng dưới đây:
Thuật toán lập mã E của hệ mã DES là y =E(K, x ) với mỗi khoá K và bản rõ x Thuật toán giải mã D là x =D(K, y ), được thực hiện bằng cùng một quá trình tính toán như quá trình lập mã, chỉ khác là thứ tự dùng các K i được đảo ngược lại theo
Trang 161.2.2.3 Các chế độ thực hiện của DES
Có 4 chế độ mà DES có thể thực hiện và được sử dụng rộng rãi trong các ứng dụng Các chế độ này xác định cách dữ liệu sẽ được mã hoá và được giải mã, đó là các chế độ:
Electronic CodeBook (ECB)
Cipher Block Chaining (CBC)
Cipher FeedBack (CFB)
Output FeedBack (OFB)
a Chế độ Electronic Codebook (ECB)
Trong mã hoá ECB, một khối dữ liệu rõ (D1, D2, , D64) được sử dụng trực tiếp làm khối đầu vào DES (I1, I2, , I64) Khối đầu vào được xử lý qua thiết bị DES ở trạng thái mã hoá Khối đầu ra (O1, O2, , O64) được sử dụng trực tiếp làm bản mã
Trang 17b Chế độ Cipher Block Chaining (CBC)
Thông điệp cần mã hoá sẽ được chia thành các khối Trong mã hoá CBC, khối
dữ liệu vào DES đầu tiên được định dạng bằng cách thực hiện phép toán XOR (cộng các bít theo modul 2) khối đầu tiên của thông điệp với 64 bít vectơ khởi đầu
(IV),
ví dụ: (I1, I2, , I64) = (IV1 XOR D1, IV2 XOR D2, , IV64 XOR D64)
Khối đầu vào này được xử lý qua thiết bị DES ở trạng thái mã hoá và khối đầu
ra được sử dụng làm bản mã (C1, C2, , C64) = (O1, O2, , O64) Khối bản mã đầu tiên được thực hiện XOR với khối bản rõ thứ hai để tạo ra khối đầu vào DES thứ hai
(I1, I2, , I64) = (C1 XOR D1, C2 XOR D2, , C64 XOR D64)
Khối đầu vào thứ hai được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo ra khối bản mã thứ hai
Quá trình mã hoá tiếp tục xích chuỗi lần lượt các bản mã với các bản rõ với nhau cho tới khi khối bản mã cuối cùng trong thông điệp được mã hoá Nếu thông điệp không là một số nguyên lần các khối dữ liệu 64 bít, thì phần dữ liệu của khối cuối cùng sẽ được mã theo một cách riêng
Trang 18Trong quá trình giải mã, khối bản mã đầu tiên của thông điệp được sử dụng làm khối đầu vào và được xử lý qua thiết bị DES ở trạng thái giải mã,
(I1, I2, , I64) = (C1, C2, , C64) Khối đầu ra được thực hiện phép toán XOR với IV (giống với IV được sử dụng trong quá trình mã hoá) để tạo ra khối bản rõ đầu tiên,
(D1, D2, , D64) = (O1 XOR IV1, O2 XOR IV2, , O64 XOR IV64)
Quá trình giải mã thực hiện tiếp tục theo cách này cho tới khi khối bản mã cuối cùng được hoàn thành Bản mã biểu diễn khối cuối, nếu chỉ có một phần dữ liệu phải được giải mã theo cách riêng
Hình 1.5 Sơ đồ mã hoá DES chế độ CBC
Trang 19c Chế độ Cipher Feedback (CFB)
Thông điệp cần được mã hoá sẽ được chia thành các khối dữ liệu gồm K bít
(K=1, 2, , 64) Đối với cả hai hoạt động mã hoá và giải mã CFB, một vectơ khởi đầu IV có độ dài L được sử dụng Vectơ IV này được đặt vào các bít thấp nhất của khối đầu vào DES, và các bít không được sử dụng được thiết lập là “0”,
ví dụ: (I1, I2 , , I64) = (0, 0, , 0, IV1, IV2, IVL)
Khối đầu vào này được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo một khối
ở đầu ra
Trong suốt quá trình mã hoá, bản mã được tạo ra bởi thực hiện phép XOR trên một đơn vị dữ liệu rõ với K bít cao nhất của khối đầu ra,
(C1, C2, , CK) = (D1 XOR O1, D2 XOR O2, , DK XOR OK)
Tương tự như vậy trong quá trình giải mã, bản rõ được tạo ra bằng cách thực hiện phép XOR trên một đơn vị bản mã gồm K bít với K bít cao nhất của khối đầu
ra, (D1, D2, , DK) = (C1 XOR O1, C2 XOR O2, , CK XOR OK)
Trong cả hai trường hợp, các bít không được sử dụng của khối đầu ra DES sẽ bị loại bỏ Khối đầu vào tiếp theo được tạo ra bằng cách loại bỏ K bít ở vị trí cao nhất của khối đầu vào trước đó Dịch K vị trí của các bít còn lại sang trái và sau đó chèn
K bít của bản mã được tạo ra trong quá trình mã hoá, hoặc được sử dụng trong hoạt động giải mã tại các bít có vị trí thấp,
(I1, I2, , I64) = (I[K+1l, I[K+2], , I64, C1, C2, , CK)
Khối đầu vào này sau khi được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo ra khối đầu ra tiếp theo Quá trình này tiếp tục cho tới khi toàn bộ bản rõ được
mã hoá hoặc cho tới khi toàn bộ bản mã được giải mã
Trang 20Chế độ CFB có thể hoạt động trên các đơn vị dữ liệu có kích thước từ 1 đến 64
K bít CFB được định nghĩa là chế độ CFB hoạt động trên các đơn vị dữ liệu gồm K bít (1<=K<=64)
Đối với mỗi hoạt động của thiết bị DES, một đơn vị K bít bản rõ tạo ra một đơn
vị K bít bản mã hoặc một đơn vị bản mã tạo ra một đơn vị K bít bản rõ
Hình 1.6 Sơ đồ mã hoá DES chế độ CFB
Trang 21d Chế độ Output Feedback (OFB).
Thông điệp cần mã hoá được chia thành các đơn vị dữ liệu có kích thước là K bít (K=1, 2, , 64) Trong cả hai hoạt động mã hoá và giải mã OFB, một vectơ khởi đầu IV có kích thước là L được sử dụng Vectơ IV này được đặt trong các bít thấp nhất của khối đầu vào DES, và các bít không sử dụng được đặt là “0”,
ví dụ: (I1,I2, ,I64) = (0, 0, , 0, IV1, IV2, , IVL)
Khối đầu vào được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo khối đầu
ra Trong quá trình mã hoá, bản mã được tạo bằng cách thực hiện XOR một đơn vị
dữ liệu K bít với K bít cao nhất của khối đầu ra,
ví dụ (C1, C2, , CK) = (D1 XOR O1, D2 XOR O2, , DK XOR OK)
Trong cả hai trường hợp, các bít không được sử dụng của khối đầu ra DES sẽ được loại bỏ Khối đầu vào tiếp theo được tạo bằng cách loại bỏ K bít cao nhất của đầu vào trước đó, dịch K vị trí của các bít còn lại sang trái,
(I1, I2, , I64) = I[K+1], I[K+2], , I64, O1, O2, , OK)
Sau đó khối đầu vào này được xử lý qua thiết bị DES ở trạng thái mã hoá để tạo khối đầu ra tiếp theo Quá trình này tiếp tục cho tới khi toàn bộ bản rõ được mã hoá
Hình 1.7 Sơ đồ mã hoá DES chế độ OFB
Trang 22hoặc toàn bộ bản mã được giải mã
Nhận xét 4 chế độ thực hiện của DES:
Chế độ ECB ứng dụng trực tiếp thuật toán DES để mã hoá, giải mã dữ liệu Thực hiện biến đổi 64 bít đầu vào thành 64 bít đầu ra Các khối bản rõ giống nhau sẽ tạo ra các bản mã giống nhau nếu cùng một khoá mã
Chế độ ECB, một lỗi bít đơn trong một khối bản mã khi giải mã chỉ gây ra lỗi trong khối bản rõ đó, mà không ảnh hưởng tới các khối khác
Chế độ ECB thực hiện mã hoá khối 64 bít Nếu người sử dụng mã hoá ít hơn 64 bít, thì các bít thấp nhất chưa được sử dụng của khối dữ liệu đầu vào phải được
bổ sung cho đủ với các bít ngẫu nhiên hoặc giả ngẫu nhiên, trước khi mã hoá ECB Thiết bị giải mã tương ứng phải loại bỏ các bít bổ sung, sau khi giải mã khối bản mã
Chế độ CBC là chế độ mở rộng của ECB, thực hiện xích chuỗi các khối bản mã lại với nhau
Chế độ CBC tạo ra các bản mã giống nhau, khi bản rõ giống nhau được mã hoá cùng một khoá và cùng vectơ khởi đầu IV
Chế độ CBC, một hoặc nhiều lỗi xảy ra trong khối bản mã sẽ ảnh hưởng việc giải mã của hai khối, đó là khối hiện tại có lỗi xảy ra và khối kế tiếp
Chế độ CFB sử dụng bản mã trước đó làm đầu vào cho DES, và tổ hợp với bản
rõ hiện thời để tạo ra bản mã Bởi vậy CFB thực hiện xích chuỗi các bản mã lại với nhau
Chế độ OFB giống như CFB ngoại trừ đầu ra trước đó của DES trong OFB được làm đầu vào Bởi vậy OFB không xích chuỗi các bản mã lại với nhau
Trang 231.2.3 Hệ mã hoá khoá phi đối xứng
1.2.3.1 Khái niệm
Sơ đồ hệ mã hoá khoá phi đối xứng còn được gọi là hệ mã hoá khoá công khai
Đó là một bộ năm S = (P, C, K, E, D) thỏa mãn các điều kiện sau:
k’’ dành cho việc giải mã (và có hàm giải mã dk’’ )
Mỗi ek’ : P > C và dk’’ : C >P thoả mãn dk’’ (ek’ (x)) = x với mọi x P
Trong một hệ mã hoá khóa phi đối xứng, các khóa lập mã và giải mã (k’ và k’’) là khác nhau, nhưng có quan hệ với nhau Trong hai khóa đó, khóa cần phải giữ bí mật là khóa giải mã k’’, còn khóa lập mã k’ có thể được công bố công khai Tuy nhiên điều đó chỉ có ý nghĩa thực tiễn khi việc biết k’ tìm k’’ là cực kỳ khó, đến mức hầu như không thể thực hiện được
Một số hệ mã hoá khoá công khai như:
Hệ RSA
Hệ ElGamal
Hệ Knapsack Merkle-Hellman
Hệ mật trên đường cong Elip
Sau đây tôi xin giới thiệu hệ mã hoá RSA
Trang 241.2.3.2 Mô tả hệ mã hoá RSA
Sơ đồ chung của hệ mã hoá RSA được cho bởi:
S = (P, C, K, E, D) trong đó:
P là tập hữu hạn bản rõ
C là tập hữu hạn bản mã
K là tập các khoá k , mỗi khoá k gồm có hai phần k =(k’,k’’)
k’ là khoá công khai dành cho lập mã
k’’ là khoá bí mật dành cho giải mã
Với mỗi ký tự bản rõ xP, thuật toán lập mã E cho ký tự mã tương ứng
E(k’, x) = xe mod n, với mọi x P
D(k’’, y) = yd mod n, với mọi y C
Trang 25Với mỗi k =(k’, k’’), trong S có thuật toán ký sigk’ : P -> A,
và trong V có thuật toán kiểm thử verk’’ : PxA -> {đúng, sai}
thoả mãn điều kiện với mọi thông điệp xP và mọi chữ ký yA:
verk’’(x, y) = đúng y =sigk’(x )
Người sở hữu bộ khoá k =(k’,k’’), công bố công khai khoá k’’ để mọi người có thể kiểm thử chữ ký của mình, và giữ bí mật khoá k’ để thực hiện chữ ký trên các thông điệp mà mình muốn gửi đi
1.3.2 Khái niệm MAC (Message Authentication Code)
Mã xác thực thông điệp (Message Authentication Code): Là một số, được tính
từ nội dung của thông điệp, được sử dụng xác nhận tính toàn vẹn thông điệp
MAC là tổng kiểm tra (checksum), được tạo ra bằng mã hoá DES hoặc AES, với khoá bí mật (secret key) MAC được gửi cùng với thông điệp đó
Bên nhận tính toán lại MAC, sử dụng thuật toán và khoá bí mật tương ứng như bên gửi, và so sánh nó với MAC của bên gửi Nếu chúng giống nhau, thì thông điệp không bị thay đổi
MAC giống như chữ ký số, ngoại trừ khoá bí mật (secret key) được sử dụng ( thay cho khoá riêng (private key))
Trang 271.3.3 Thuật toán ký số (Digital Signature Algorithm – DSA)
Khi nhận được thông điệp, bên nhận có thể yêu cầu xác minh thông điệp đó không bị thay đổi trong khi truyền Hơn nữa bên nhận có thể muốn biết chính xác danh tính của người gửi thông điệp đó Cả hai dịch vụ này có thể được cung cấp bởi DSA Một chữ ký số có thể được sử dụng để chứng minh với bên nhận rằng thông điệp này được họ ký
Chữ ký số là một số lớn được biểu diễn trong máy tính dưới dạng một chuỗi số nhị phân
Bên ký sử dụng thuật toán DSA để tạo ra chữ ký số trên thông điệp, và bên xác nhận sử dụng thuật toán DSA tương ứng để xác nhận tính xác thực của chữ ký Mỗi bên thực hiện cam kết có một khoá công khai và một khoá bí mật Khoá bí mật được sử dụng trong quá trình tạo chữ ký, và khoá công khai được sử dụng trong quá trình xác nhận chữ ký
Hình 1.8 Sơ đồ ký và xác thực chữ ký
Trang 28Các tham số của thuật toán DSA
k là số nguyên được tạo ngẫu nhiên hoặc giả ngẫu nhiên với 0<k<q
Các số p, q, g có thể công khai Tham số x và k được sử dụng để tạo chữ ký, và được giữ bí mật Tham số k được chọn lại đối với mỗi lần ký
a Tạo chữ ký:
Chữ ký trên thông điệp M là cặp số r và s được tính theo công thức:
r = (gk mod p) mod q
s = (k-1(SHA-1(M) + xr)) mod q
k-1 là nghịch đảo của k mod q, (k-1k) mod q =1 và 0<k-1<q
SHA-1 (Secure Hash Algorithm –1) là thuật toán tạo ra tóm lược trên thông điệp Thuật toán này được trình bày ở phần sau
SHA-1(M) tạo tóm lược trên thông điệp M, có độ dài là 160 bít
Chữ ký này được truyền cùng với thông điệp tới bên xác nhận
Trang 29v = (((g)ul (y)u2) mod p) mod q
Nếu v=r’ thì chữ ký được xác nhận, và bên xác nhận có thể chắc chắn rằng thông điệp nhận được, là của chủ nhân có khoá bí mật x tương ứng với khoá công khai y
Trang 301.3.4 Thuật toán SHA-1 (Secure Hash Algorithm – 1 )
Thuật toán băm an toàn (SHA-1) là một trong những thuật toán để tạo ra tóm lược thông điệp từ một thông điệp hoặc từ một file dữ liệu Đầu vào của SHA-1 là thông điệp có độ dài < 264 bít , và kết quả đầu ra của SHA-1 là 160 bít, được gọi là
tóm lược thông điệp (message digest) Tóm lược thông điệp này là dữ liệu đầu vào
cho thuật toán ký số
Việc ký trên bản tóm lược thường hiệu quả hơn việc ký trên thông điệp vì kích thước của thông điệp ban đầu cần ký thường lớn hơn nhiều so với kích thước của bản tóm lược đó Bên nhận phải sử dụng thuật toán băm tương tự như bên ký, để xác nhận chữ ký
SHA-1 được gọi là an toàn bởi vì khó có thể tính toán để tìm ra một thông điệp tương ứng với bản tóm lược cho trước, hoặc tìm hai thông điệp khác nhau mà tạo ra cùng một bản tóm lược Trong quá trình truyền, nếu thông điệp đó bị thay đổi thì kết quả là cho một bản tóm lược khác, và chữ ký xác nhận là sai
Trang 31a Một số khái niệm
Một số hexa là một phần tử của tập {0, 1, , 9, A, B, C, D, E, F},
được biểu diễn bởi 4 bít Ví dụ: 7=0111, A=1010
Một từ là một dãy 32 bít, có thể biểu diễn 8 số hexa
Ví dụ 1010 0001 0000 0011 1111 1110 0010 0011 = A103FE23
Một số nguyên có giá trị từ 0 tới 232–1 có thể được biểu diễn là một từ
4 bít thấp nhất của một số nguyên được biểu diễn bởi một số hexa ở phía bên phải nhất của một từ Ví dụ số nguyên 291=28+25+21+20 = 256+32+2+1,
được biểu diễn bằng một từ 00000123
Nếu z là một số nguyên, 0 z < 264thì z = 232x + y trong đó 0 x < 232 và
0 y < 232 Bởi vì x và y có thể được biểu diễn như là các từ X và Y nên z có thể được biểu diễn là một cặp từ (X,Y)
Một khối (block) = 512 bít Một khối có thể được biểu diễn bằng một dãy 16 từ
* Một số phép toán thực hiện trên các bít:
X ^ Y: toán tử AND các bít của X với Y
X \ / Y: toán tử OR các bít của X với Y
X XOR Y: toán tử XOR các bít của X với Y
~ X: Thực hiện lấy phần bù của X
Ví dụ: 01101100101110011101001001111011
XOR 01100101110000010110100110110111 - = 00001001011110001011101111001100
* Phép toán X+Y:
Cho X, Y là các từ biểu diễn các số nguyên x và y
Trong đó 0 x < 232 và 0 y < 232 n, m là hai số nguyên dương,
n mod m là phần dư của kết quả chia n cho m
Tính z=(x+y) mod 232. Biến đổi z thành một từ Z và định nghĩa Z=X+Y
Trang 32* Toán tử dịch vòng sang trái S n (X):
X là một từ và số nguyên n với 0 n < 32
Khi đó Sn(X) = (X << n) OR (X >> 32-n)
X<<n: Loại bỏ n bít trái nhất của X, thêm n bít 0 vào bên phải của X
X>>n: Loại bỏ n bít bên phải của X, thêm n bít 0 vào bên trái
Do đó Sn(X) tương đương với dịch vòng n bít của X sang bên trái
Ví dụ: X=00110010 11000001 11010101 00010010, với n=5
X<<5 = 01011000 00111010 10100010 01000000 X>>27 = 00000000 00000000 00000000 00000110
S5(X) = (X << 5) OR (X >> 27) = 01011000 00111010 10100010 01000110
b Các hàm, hằng số sử dụng trong SHA-1
Các hàm logic f0, f1, , f79 được sử dụng trong SHA-1
Mỗi hàm ft (0 t 79) thực hiện trên 3 từ B, C, D, đầu ra của hàm là một từ 32 bít
ft(B, C, D) được định nghĩa như sau:
ft(B, C, D) = (B AND C) OR ((NOT B) AND D) ( 0 t 19)
Trang 33c Thông điệp đệm (Message padding)
SHA-1 tạo ra tóm lược thông điệp từ một thông điệp (trong một tệp dữ liệu) Thông điệp được xem là một dãy các bít Độ dài thông điệp là số bít của nó (thông điệp rỗng có độ dài bằng 0) Nếu số bít của thông điệp là bội số của 8, thì có thể biểu diễn dưới dạng hexa
Mục đích của thông điệp đệm là đảm bảo tổng độ dài của thông điệp sau khi đệm phải là bội số của 512 SHA-1 sẽ xử lý các khối 512 bít
Mô tả tóm tắt:
Bít 1 được nối vào, tiếp theo là m bít 0, và sau đó là một số nguyên 64 bít được thêm vào thông điệp để tạo ra thông điệp có kích thước 512*n
Số nguyên 64 bít có giá trị L, là độ dài của thông điệp ban đầu
Giả sử thông điệp có kích thước L<264 Trước khi là dữ liệu đầu vào của SHA-1, thông điệp này được bổ sung vào bên phải như sau:
Bít “1” được thêm vào Ví dụ thông điệp ban đầu là “01010000” Sau khi được bổ sung, thông điệp là “010100001”
Bít “0” được bổ sung vào Số bít “0” được thêm phụ thuộc vào kích thước ban đầu của thông điệp 64 bít sau cùng của khối cuối 512 bít được dành riêng cho độ dài ban đầu của thông điệp
Kết quả hai từ biểu diễn giá trị L, số bít của thông điệp ban đầu Thêm 2 từ này vào thông điệp
Ví dụ: Thông điệp ban đầu là dãy 40 bít
Trang 34Hai từ biểu diễn độ dài L của thông điệp ban đầu là 00000000 00000028
Do đó thông điệp sau khi đệm sẽ có dạng hexa là:
d Quá trình tạo tóm lược thông điệp
Tóm lược thông điệp được tính toán và được tạo từ thông điệp sau khi đệm Trong quá trình tính toán, sử dụng 2 vùng đệm (mỗi vùng đệm bao gồm 5 từ), một dãy 80 từ, và một từ đệm TMP
5 từ trong vùng đệm thứ nhất được gán nhãn là A, B, C, D, E
5 từ trong vùng đệm thứ hai được gắn nhãn là H0, H1, H2, H3, H4
Các từ trong dãy 80 từ được gán nhãn là W0, W1, , W79
Trước khi xử lý các khối M1, M2, , Mn cần phải khởi tạo {Hi} dưới dạng hexa:
H0 = 67452301 H1 = EFCDAB89
H2 = 98BADCFE H3 = 10325476
H4 = C3D2E1F0
Xử lý khối Mi như sau:
Chia Mi thành 16 từ W0, W1, , W15, trong đó W0 là từ ở bên trái nhất
Trang 35Sau khi xử lý khối Mn, tóm lược thông điệp là một chuỗi 160 bít được biểu diễn bởi
5 từ H0 H1 H2 H3 H4
Trang 361.4 VẤN ĐỀ XÁC THỰC.
1.4.1 Khái niệm xác thực
Xác thực là việc xác minh, kiểm tra một thông tin để công nhận hoặc bác bỏ tính hợp lệ của thông tin đó Xác thực luôn là yêu cầu quan trọng trong các giao tiếp cần có sự tin cậy Để đơn giản ta xét mô hình giao tiếp gồm hai thực thể trao đổi thông tin A và B, họ cùng mục đích trao đổi thông tin M nào đó
Khi đó việc xác thực bao gồm:
A cần xác minh B đúng là B và ngược lại
Cả A và B cần xác minh tính an toàn của thông tin M mà họ trao đổi
Như vậy, xác thực bao gồm hai việc chính:
Xác thực tính hợp lệ của các thực thể tham gia giao tiếp
Xác thực tính bảo mật và toàn vẹn của thông tin trao đổi
Theo phương pháp truyền thống, việc xác thực thực thể được thực thi bằng các giấy tờ như chứng minh thư, giấy phép lái xe, hoặc các giấy tờ cá nhân khác Việc xác thực tính an toàn của thông tin thường dựa trên chữ ký, con dấu
Trang 371.4.2 Khái niệm xác thực số (điện tử)
Một trong những thách thức lớn nhất của xã hội số hoá là ngăn ngừa các hành vi truy nhập bất hợp pháp và ngăn ngừa các loại tội phạm tin học Đa phần các nguy
cơ bắt nguồn từ bản chất phân tán của mạng, khi mà các thành viên tham gia không giao tiếp trực tiếp với nhau
Xác thực số cũng là một loại xác thực nhưng bằng phương pháp “điện tử”
Có nhiều phương pháp xác thực số đã được phát triển Tuy nhiên có 3 phương pháp xác thực chính sau đây:
a Phương pháp thứ nhất: Xác thực dựa vào những gì mà ta “biết”
Phương pháp này thường sử dụng mật khẩu, mã PIN để xác thực chủ thể Khi cần xác thực, hệ thống yêu cầu chủ thể cung cấp những thông tin mà chủ thể biết (mật khẩu, mã PIN, )
b Phương pháp thứ hai: Xác thực dựa vào những gì mà ta “có”
Phương pháp này đòi hỏi người dùng phải sở hữu một thứ gì đó để có thể xác nhận, chẳng hạn như chứng chỉ số, thẻ ATM, thẻ SIM
c Phương pháp thứ ba: Xác thực những gì mà ta “đại diện”
Phương pháp này thường sử dụng việc nhận dạng sinh học như dấu vân tay, mẫu võng mạc, mẫu giọng nói, để xác thực
Xác thực bằng mật khẩu, mã PIN có ưu điểm là tạo lập và sử dụng đơn giản, nhưng có nhược điểm lớn là người dùng thường chọn mật khẩu dễ nhớ, do vậy dễ đoán nên dễ bị tấn công Kẻ tấn công cũng có thể có nhiều phương pháp tấn công để đạt được mật khẩu
Phương pháp nhận dạng sinh học đòi hỏi phải dựa trên hạ tầng công nghệ thông tin tốt Sử dụng sơ đồ định danh thì giao thức phức tạp, yêu cầu nhiều tương tác hỏi đáp giữa các thực thể, và phương pháp này cũng chỉ dùng để xác thực thực thể
Trang 381.4.3 Công cụ xác thực: Chứng chỉ số
1.4.3.1 Khái niệm chứng chỉ số (Digital Certificate)
Chứng chỉ số là một văn bản điện tử theo định dạng chuẩn nhất định, được sử dụng để xác minh danh tính của một cá nhân, một máy chủ hay một thực thể nào đó trên mạng truyền thông công cộng Nó giống như bằng lái xe, chứng minh thư, hộ chiếu hay các giấy tờ xác minh cá nhân
Chứng chỉ số phải do một nhà cung cấp chứng chỉ số phát hành,
gọi tắt là CA (Certificate Authority) CA phải đảm bảo độ tin cậy, chịu trách nhiệm
về độ chính xác của chứng chỉ số mà mình cung cấp Thông tin trên chứng chỉ số gồm 3 thành phần chính:
Thông tin cá nhân của đối tượng được cấp
Khoá công khai của đối tượng được cấp
Chữ ký số của CA cấp chứng chỉ
Nếu đối tượng được cấp chứng chỉ là các cá nhân thì thông tin gồm có tên, quốc tịch, địa chỉ, email, tên tổ chức, Phần này giống như các thông tin trên chứng minh thư của mỗi người Nếu đối tượng được cấp là một máy chủ, một website thì thông tin gồm có tên miền, tên máy chủ, IP,
Khoá công khai của đối tượng được cấp chứng chỉ dùng để mã hoá thông tin, xác minh chữ ký,
Chữ ký của CA là sự xác nhận của CA, bảo đảm tính chính xác và hợp lệ của chứng chỉ Muốn kiểm tra một chứng chỉ số, trước tiên phải kiểm tra chữ ký số của
CA cấp chứng chỉ có hợp lệ hay không
Trang 391.4.3.2 Định dạng X.509 của chứng chỉ số
Cơ sở hạ tầng của mật mã khoá công khai (Public-Key Infrastructure) được xây dựng để bảo đảm an toàn bảo mật thông tin Trong hệ thống này người ta sử dụng một thành phần dữ liệu được gọi là chứng chỉ số, nó gắn thông tin về người sở hữu khoá riêng với khoá công khai tương ứng
Hình 1.9 mô tả chứng chỉ số theo phiên bản 3, được định nghĩa theo chuẩn X.509, chuẩn được sử dụng phổ biến trên thế giới hiện nay
Các thành viên tham gia hệ thống, sử dụng hệ mật mã khoá công khai hoàn toàn có thể tin rằng: Khoá công khai chứa trong chứng chỉ số là thuộc về đối tượng
có thông tin trong trường đối tượng được cấp CA sử dụng chữ ký điện tử để đảm bảo tính toàn vẹn và xác thực các thông tin có trong chứng chỉ số
Chữ ký được tạo ra như sau:
Thiết lập đại diện của toàn bộ thông tin trong chứng chỉ số (gồm các thông tin
cơ bản và phần mở rộng)
CA sử dụng khoá riêng (private key) của mình ký trên đại diện vừa có được, để tạo ra chữ ký số
Đóng gói các thông tin cùng với chữ ký trên, đó là chứng chỉ
Sự tin tưởng của các thành viên chỉ có thể được đảm bảo khi họ tin tưởng vào
CA đã tạo ra chứng chỉ số đó Mỗi chứng chỉ số đều có hạn sử dụng Việc kiểm tra chứng chỉ số được thực hiện độc lập với hệ thống cấp chứng chỉ, nó được thực hiện tại đầu cuối, hoặc thông qua các dịch vụ kiểm tra trạng thái của chứng chỉ số Chứng chỉ số có thể công khai
Trang 40Các trường cơ bản của một chứng chỉ số:
Phiên bản (Version)
Mã số (Serial Number) Thông tin của chữ ký điện tử Người cấp (Issuer) Hạn sử dụng (Validity) Người sở hữu (Subject) Thông tin về khoá công khai Chỉ danh người cấp (Issuer Unique ID) Chỉ danh người sở hữu (Subject Unique ID) Các thành phần mở rộng, tuỳ chọn (Extensions)