MÃ HÓA DỮ LIỆU VÀ ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN TỬ Ngày nay khi sự phát triển của Internet và công nghệ thông tin ngày càng cao. Đã cho phép chúng ta thực hiện những giao dịch điện tử thông qua internet, nhưng tính linh hoạt của internet cũng tạo cơ hội cho “bên thứ ba” có thể thực hiện các hành động bất hợp pháp cụ thể là: Tấn công trực tiếp Nghe trộm và quan sát mạng Giả mạo (Tampering)
Trang 1MÃ HÓA DỮ LIỆU VÀ ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN TỬ
I ĐẶT VẤN ĐỀ
Ngày nay khi sự phát triển của Internet và công nghệ thông tin ngày càng cao Đã chophép chúng ta thực hiện những giao dịch điện tử thông qua internet, nhưng tính linh hoạtcủa internet cũng tạo cơ hội cho “bên thứ ba” có thể thực hiện các hành động bất hợp pháp
cụ thể là:
Tấn công trực tiếp: Một phương pháp phổ biến đó là đoán và dò tìm username –
password theo các thông tin của nguời dùng như tên, ngày sinh, địa chỉ, số nhà Đây
là phương pháp đơn giản, dễ thực hiện và khả năng thành công cũng khá lớn, có thểtới 30%
Nghe trộm và quan sát mạng: Được tiến hành ngày sau khi kẻ tấn công đã chiếm
được quyền truy nhập vào hệ thống Thông tin không bị thay đổi nhưng tính bí mậtcủa nó thì đã không còn Bên thứ ba dễ dàng ghi lại các thông tin không được mãhóa khi truyền trên mạng như mật khẩu, số thẻ tín dụng hay các thông tin bảo mậtkhác
Giả mạo (Tampering): Cá thông tin trong khi truyền trên mạng có thể bị thay đổi nội
dung hoặc thay thế trước khi đến đúng người nhận Các kiểu giả mạo :
o Giả mạo các định tuyến: các thủ tục định tuyến chuẩn được dùng thông dụngtrong các cấu hình router cho phép bất kỳ người nào có thể lập lại cấu hìnhcho các router này Nó có thể được dùng để chuyển định tuyến các kết nối tớicác mạng mà bình thường chúng sẽ không được đi qua, ở đó các thông tin sẽ
Mạo danh: Một cá nhân có thể dựa vào thông tin của người khác để trao đổi với một
đối tượng Có 2 hình thức mạo danh sau:
Trang 2o Bắt chước: Một cá nhân có thể giả vờ như một người khác Ví dụ, dùng địachỉ mail của một người khác hoặc giả mạo tên miền của một trang web.
o Xuyên tạc: Một cá nhân hay một tổ chức có thể giả vờ như một đối tượng, hayđưa ra những thông tin về mình mà không đúng như vậy Ví dụ, có một trangchuyên về thiết bị nội thất mà có sử dụng thẻ tín dụng, nhưng thực tế là mộttrang chuyên đánh cắp mã thẻ tín dụng
Chối bỏ nguồn gốc (Repudiation): Một cá nhân có thể chối cãi là đã không gửi thông
tin tài liệu khi xảy ra tranh chấp Ví dụ điển hình là trong gửi mail, thông thườngngười nhận sẽ không thể khẳng định người gửi là chính xác
Từ chối dịch vụ (Denial of Service): Xảy ra khi một kẻ sử dụng một dịch ụ quan
trọng của hệ thống máy tính theo cách khiến cho dịch vụ giảm chất lượng rõ rệt, quátải, thậm chí tê liệt hệ thống dẫn đến ngăn cản người khác không thể sử dụng đượcdịch vụ đó
Truy nhập bất hợp pháp (Illegal Access): Xảy ra khi một người truy nhập vào một hệ
thống máy tính hay một phần nào đó của hệ thống mà không đuợc phép của ngườiquản trị
Tấn công vào yếu tố con người: Kẻ tấn công có thể liên lạc với người quản trị hệ
thống, giả làm một người sử dụng để thay đổi mật khẩu, thay đổi quyền truy nhậpcủa mình đối với hệ thống, hoặc thậm chí thay đổi một số cấu hình hệ thống để thựchiện các phương pháp tấn công khác
Do vậy để đảm bảo an toàn trong thương mại điện tử và giao dich điện tử cần có cáchình thức bảo mật có hiệu quả nhất Các vấn đề an toàn thông tin trên mạng có thể đượcgiải quyết dựa trên cơ sở lý thuyết mật mã Mật mã học được ứng dụng từ xa xưa từ thời Aicập cổ đại và xuyên suốt tiến trình lịch sử để truyền đi các thông tin quân sự và ngoại giao
bí mật
II CÁC KỸ THUẬT MÃ HÓA DỮ LIỆU
II.1 Khái niệm
Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang một dạng khác, mà một người không có thẩm quyền, không có phương tiện giải mã thì không thể đọc hiểu được Giải mã dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữ liệu đã được mã hóa về dạng thông tin ban đầu
Trang 3Quy trình mã hóa dữ liệu
Sau đây là một số khái niệm và kí hiệu liên quan về vấn đề mã hóa và giải mã dữ liệu :
- Mã hóa (Encryption): Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao người khác không thể đọc hiểu được (kí hiệu E);
- Giải mã (Decryption): Quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã hóa thành dạng gốc ban đầu (kí hiệu D);
- Thông điệp (Message), bản gốc (Plaintext): Tệp dữ liệu chưa mã hóa (kí hiệu M)
- Bản mã (Ciphertext): Tệp dữ liệu đã được mã hóa (kí hiệu C)
Theo quy ước, khi mã hóa thì C = E(M) và khi giải mã thì M = D(C)
= D(E(M)) Theo phương pháp truyền thống, người ta thường dùng cùng mộtkhóa để mã hóa và giải mã Lúc đó, khóa phải được giữ bí mật tuyệtđối Người ta gọi đây là hệ thống mã hóa cổ điển (hay còn gọi là mãhóa đối xứng, một khóa, khóa bí mật, )
Phương pháp khác sử dụng khóa công khai (còn gọi là phương pháp mã hóa bất đối xứng,hay hệ thống hai khóa) trong đó khóa để mã hóa và khóa để giải mã là khác nhau Các khóa nàytạo thành một cặp chuyển đổi ngược nhau và không khóa nào có thể suy ra được từ khóa kia.Phần tiếp theo của bài báo sẽ đề cập đến kỹ thuật mã hóa này
II.2 Các giải thuật mã hóa
II.2.1 Thuật toán MD5
Hàm băm (Hash Function) nhận giá trị vào (Input) là một thông điệp M ở có chiều dài bất
kỳ, để biến (băm) thành một giá trị h ở đầu ra (Output) có chiều dài cố định, h được gọi là giá trị băm (Hash Value)
Trang 4Minh họa hàm băm
Thuật toán MD5 (Message Digest 5), do Ronald Rivest thiết kế năm
1991, là xây dựng một hàm băm để mã hóa một tín hiệu vào có chiềudài bất kỳ và đưa ra một tín hiệu (Digest) ở đầu ra có chiều dài cố định
128 bit (tương ứng với 32 chữ số hệ 16) [2]
Dưới đây là các ví dụ mô tả các kết quả sau khi thực hiện hàm bămMD5
- MD5("xin chao") = 2201c07c37755e663c07335cfd2f44c6
Chỉ cần một thay đổi nhỏ (chẳng hạn viết hoa chữ x thành X) cũnglàm thay đổi hoàn toàn kết quả trả về :
- MD5("Xin chao") = e05c1d9f05f5b9eb56fe907c36f469d8
Thuật toán cũng cho kết quả đối với chuỗi rỗng :
- MD5(" ") = d41d8cd98f00b204e9800998ecf8427e
II.2.2 Mã hóa đối xứng
Mã hóa đối xứng hay còn gọi là mã hóa khóa bí mật Hai bên tham gia truyền thông sửdụng chung một khóa, gọi là khóa bí mật để thực hiện mã hóa và giải mã bản tin truyền chonhau Gọi là đối xứng vì ở đây sử dụng chung một khóa cho cả việc mã hóa và giải mã
Mô hình hệ mã hóa đối xứng
Hệ mã hóa đối xứng
Mức độ bảo mật của phương pháp mã hóa đối xứng phụ thuộc vào mức độ bảo mậtcủa khóa Việc trao đổi khóa bí mật K giữa hai bên tham gia truyền thông phải đảm bảo là
Trang 5hoàn toàn bí mật Với hệ mã hóa đối xứng, các phương pháp tấn công thường được sử dụng
là phân tích mã hóa và tìm kiếm vét cạn Phân tích mã hóa là quá trình nỗ lực để phát hiện
ra khóa hoặc khôi phục bản tin gốc Tìm kiếm vét cạn là cách thử tấn công toàn bộ khóa cóthể dựa trên khả năng tính toán
Ngày nay, khi tốc độ tính toán và xử lý ngày càng phát triển mạnh, việc mã hóa sử dụngthuật toán mã hóa khóa công khai có thể không an toàn
II.2.3 Mã hóa công khai và các giải thuật mã hóa công khai
II.2.3.1 Mã hóa công khai
Mã hóa bất đối xứng hay còn gọi là mã hóa khóa công khai, được đưa ra vào năm 1976bởi Diffie và Hellman Việc ra đời của hệ mã hóa khóa công khai mở đầu cho hàng loạtnhững thành tựu trong việc ứng dụng hệ mã này, tạo nên bước tiến quan trọng trong lịch sử
Mô hình hệ mã hóa bất đối xứng
Mã hóa công khai
Mã hóa khóa công khai được ứng dụng nhiều trong các lĩnh vực như để đảm bảo độ tincậy, phân phối khóa, chứng thực văn bản Mức độ an toàn của mã hóa bất đối xứng hơn hẳn
Trang 6so với hệ mã hóa đối xứng, bên tấn công không thể sử dụng phân tích mã hóa hay tấn côngvét cạn để tấn công hệ mã hóa công khai vì rất phức tạp về mặt tính toán khi biết khóa côngkhai và bản tin ciphertext để tìm được plaintext.
Đặc trưng của hệ mã hóa khóa công khai là sử dụng hai khóa, trong đó một khóa để mãhóa, khóa còn lại được giữ bí mật và dùng để giải mã Bên gửi sử dụng khóa công khai củabên nhận để mã hóa, như vậy ai cũng có thể thực hiện mã hóa được vì khóa đó là khóa côngkhai, mọi người đều có thể biết Nhưng khi tới bên nhận thì chỉ có người chủ đích thực mới
có thể giải được mã vì chỉ riêng người đó có khóa riêng để giải mã, những người thuộc bênthứ 3 không có khóa riêng nên không thể giả mạo tin nhắn được
Các bước thực hiện mã hóa theo hệ mã hóa khóa công khai :
1) Mỗi người dùng sinh một cặp khóa sử dụng để mã hóa và giải mã bản tin2) Người dùng đăng ký 1 trong 2 khóa là công khai hoặc chứa trong tệp để ngườikhác có thể truy nhập được Đó là khóa công khai
3) Nếu người dùng A muốn gửi bản tin tới người dùng B, thì A mã hóa bản tin
sử dụng khóa công khai của B4) Khi B nhận được bản tin, B sẽ thực hiện giải mã nó sử dụng khóa riêng.Không ai có thể giải mã được bản tin đó vì chỉ có B biết, đó là khóa riêng củaB
Với cách tiếp cận này, các bên tham gia truyền thông đều có thể truy nhập tới khóa côngkhai, còn khóa riêng được sinh cục bộ bởi mỗi bên và do đó không bao
giờ bị phân tán để kẻ thứ 3 có thể biết Miễn là người dùng bảo vệ tốt khóa riêng củamình thì bảo mật truyền thông được đảm bảo
Các yêu cầu của hệ mã hóa khóa công khai : Giả sử ở đây có hai bên tham gia truyền
thông là A và B, A muốn gửi tin cho B Các yêu cầu đặt ra với hệ mã hóa khóa công khai ởđây là :
1) Dễ dàng về mặt tính toán để bên B có thể sinh ra cặp khóa public/private Khóacông khai là KPU và khóa riêng là KPR
2) Dễ dàng cho bên gửi A biết được khóa công khai và bản tin cần mã hóa M đểsinh ra ciphertext tương ứng
C = EKpu(M)3) Dễ dàng cho bên nhận B thực hiện giải mã ciphertext sử dụng khóa riêng KPR đểphục hồi lại bản tin gốc
Trang 7II.2.3.2 Giải thuật RSA (Rivest Shamir Aldeman)
Thuật toán RSA là một trong những thuật toán khóa công khai được phát triển sớm nhất,được đưa ra vào năm 1977 bởi Ron Rivest, Adi Shamir và Len Adleman RSA hỗ trợ cả mãhóa và giải mã dữ liệu với độ dài khóa thay đổi Sử dụng khóa dài giúp tăng độ an toàn của
hệ thống nhưng phải trả giá về thời gian tính toán
RSA là một khối mã hóa (block cipher) trong đó plaintext và ciphertext là những sốnguyên từ 0 đến (n-1) với n xác định
Khối plaintext M và khối ciphertext C
C = Me mod n
M = Cd mod n = (Me)d mod n = Med mod n
Cả người gửi và người nhận đều phải biết giá trị của n và e, và chỉ có người nhận mới biếtgiá trị của d Đây là thuật toán mã hóa khóa công khai với khóa công kha KPU = {e, n} vàkhóa riêng KPR = {d, n},
Để thuật toán này thỏa mãn những điều kiện của mã hóa khóa công khai thì những yêu cầusau phải được thỏa mãn :
1) Có thể tìm ra giá trị của e, d, n mà thỏa mãn Med = M mod n với mọi M < n
2) Dễ dàng tính toán Me và Cd với mọi giá trị M < n
3) Với e và n đã cho, việc tìm ra d là điều không thể
Hai yêu cầu đầu tiên có thể dễ dàng đáp ứng, yêu cầu thứ 3 có thể đáp ứng với giá trị lớncủa e và n
Trang 8Sơ đồ thuật toán RSA
Thuật toán RSA được tổng quát trong 3 quá trình như sau :
Sau đó lựa chọn số nguyên e (1 < e < φ(n) ) là số nguyên tố cùng nhau với φ(n), tức
là thỏa mãn ƯSCLN (φ(n),e) = 1
Tính d thỏa mãn d = e-1 mod φ(n)
Khi đó cặp khóa sinh ra với khóa công khai là KPU = {n, e} và khóa riêng KPR={n,d}
2) Mã hóa
Giả sử người dùng A công khai khóa của họ và người dùng B muốn gửi tin cho A thì
B sẽ mã hóa bản tin sử dụng khóa KPU của A : C = Me mod n
Sau đó truyền C đi
3) Giải mã
Trang 9Khi A nhận được bản ciphertext, A sẽ thực hiện giải mã bằng cách tính :
M = Cd mod n
Ví dụ thuật toán RSA
Ta xét một ví dụ thuật toán RSA được thực hiện qua những bước như sau :
1.Lựa chọn 2 số nguyên tố p =7 và q =17
2.Tính n = 7 x 17 = 119 ; φ(n) = (7 -1)(17 - 1) =96
3.Chọn e < 96 và là nguyên tố cùng nhau với 96, chọn e = 5 (có thể chọn e = 3, 7 )
4.Xác định d : thỏa mãn d = e-1 mod φ(n) = 5-1 mod 96, ta xác định được d = 77 vì 77 x
II.3 So sánh mã hóa đối xứng và mã hóa công khai
Tiêu chí đánh giá Mã hóa đối xứng Mã hóa khóa công khai
cả mã hóa và giải mã
- Khóa được giữ bí mật(secret - key)
- Sử dụng 2 khóa: 1 khóacông khai (public key)được công bố rộng rãidùng để mã hóa Một khóariêng (private key) đượcgiữ bí mật dùng để giải mã
Trang 10Yêu cầu để hoạt
động - Giải thuật tương tự cho mãhóa và giải mã
- Người gửi và người nhậnphải sử dụng cùng giảithuật và cùng khóa
- Một giải thuật cho mã hóa
và một giải thuật cho giảimã
- Người gửi và người nhậnmỗi nguời có cặp khóacho riêng mình
Yêu cầu cho bảo
mật
- Khóa phải được giữ bí mật
- Không thể hay ít nhấtkhông có tính thực tế đểgiải mã đoạn tin nếu thôngtin khác không có sẵn
- Kiến thức về giải thuậtcùng với các mẫu về mật
mã không đủ để xác địnhkhóa
- Một trong hai khóa phảiđược giữ bí mật
- Không thể hay ít nhấtkhông có tính thực tế đểgiải mã đoạn tin nếuthông tin khác không cósẵn
- Kiến thức về giải thuậtcùng với khóa được côngkhai, cùng với các mẫu vềmật mã không đủ để xácđịnh được khóa bí mậtKhả năng ứng
II.4 Nhận xét về các kỹ thuật mã hóa
Hai kỹ thuật cơ bản trong lý thuyết mã hóa là mã hóa khóa bí mật (secret-keycrytography) và mã hóa khóa công khai (public – key cryptography) Hệ mã hóa khóa bímật giống như việc sử dụng khóa chìa, hai bên A và B đều phải có chìa giống nhau để đónghay mở, chỉ có hai người này mới sử dụng được khóa đó Hệ mã hóa khóa công khai giốngnhư việc dùng thùng thư riêng cho mỗi người, B hay người nào đó muốn gửi gì cho A thì bỏvào thùng, sau đó A sẽ dùng chìa riêng để mở
Tùy thuộc vào yêu cầu bảo mật thông tin mà người ta sẽ sử dụng hệ mã hóa khóa côngkhai hay hệ mã bí mật Ứng dụng trong phần sau của đồ án sử dụng thuật toán mã hóa khóacông khai RSA để tạo ra chữ ký số lên thông điệp truyền đi giữa các đối tác trong hệ thống
III TÌM HIỂU VỀ CHỮ KÝ ĐIỆN TỬ VÀ CHỮ KÝ SỐ
III.1 Chữ ký điện tử
III.1.1 Khái niệm về chữ ký điện tử:
Trang 11Chữ ký điện tử là đoạn dữ liệu gắn liền với văn bản gốc để chứng thực tác giả của vănbản và giúp người nhận kiểm tra tính toàn vẹn của văn bản gốc
III.1.2 Mô hình chung của chữ ký điện tử
Chữ ký điện tử được tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bảngốc để tạo ra bản ra bản phân tích văn bản (message digest) hay còn gọi là fingerprint, sau
đó mã hóa bằng private key tạo ra chữ ký số đính kèm với văn bản gốc để gửi đi khi nhận,văn bản được tách làm 2 phần, phần văn bản gốc được tính lại fingerprint để so sánh vớifingerprint cũ cũng được phục hồi từ việc giải mã chữ ký số Như vậy ta có thể xác địnhđược thông điệp bị gửi không bị sửa đổi hay can thiệp trong quá trình gửi
Mô hình chung cho chữ ký điện tử
III.1.3 Quy trình thực hiện của chữ ký điện tử:
Bước 1 : Mã hóa :
- Dùng giải thuật băm để thay đổi thông điệp cần truyền đi kết quả ta được
một message digest dùng giải thuật MD5 (Message Digest 5) ta được digest
có chiều dài 128-bit, dùng giải thuật SHA (Secure Hash Algorithm) ta có
chiều dại 160 bit
- Sử dụng khóa private key của người gửi để mã hóa message digest thuđược ở bước 1 thông thường ở bước này ta dùng giải thuật rsa kết quả thuđược gọi là digital signature của message ban đầu
- Gộp digital signature vào message ban đầu công việc này gọi là “kýnhận” vào message sau khi đã ký nhận vào message, mọi sự thay đổi trênmessage sẽ bị phát hiện trong giai đoạn kiểm tra ngoài ra, việc ký nhận nàyđảm bảo người nhận tin tưởng message này xuất phát từ người gửi chứ khôngphải ai khác
Bước 2: Kiểm tra :
- Dùng public key của người gửi (khóa này được thông báo đến mọi người) đểgiải mã chữ ký số của message
Trang 12- Dùng giải thuật md5 hoặc sha băm message đính kèm
So sánh kết quả thu được ở các bước trên Nếu trùng nhau , ta kết luận message này không
bị thay đổi trong quá trình truyền và message này là của người gửi
III.2 Chữ ký số
III.2.1 Khái niệm
Chữ ký số là một dạng đặc biết của chữ ký điện tử sử dụng công nghệ khóa công khaiPKI (Public Key Infrastructure) Trong đó mỗi người tham gia ký cần một cặp khóa baogồm khóa công khai và khóa bí mật Khóa bí mật dùng để tạo chữ ký số, khóa công khaiđược dùng để thẩm định, xác thực chữ ký số
III.2.2 Quy trình tạo và kiểm tra chữ ký số
- Tạo chữ ký số :
Dùng giải thuật băm để thay đổi thông điệp cần truyền đi Kết quả ta được mộtmessage digest Dùng giải thuật md5 (message digest 5) ta được digest có chiềudài 128-bit, dùng giải thuật sha (secure hash algorithm) ta có chiều dài 160-bit
Sử dụng khóa private key của người gửi để mã hóa message digest thu được ởbước 1 thông thường ở bước này ta dùng giải thuật rsa kết quả thu được gọi làdigital signature của message ban đầu
Gộp digital signature vào message ban đầu công việc này gọi là “ký nhận” vàomessage sau khi đã ký nhận vào message, mọi sự thay đổi trên message sẽ bịphát hiện trong giai đoạn kiểm tra ngoài ra, việc ký nhận này đảm bảo ngườinhận tin tưởng message này xuất phát từ người gửi chứ không phải là ai khác
Sơ đồ mô tả quy trình ký và gửi các tệp văn bản
- Quá trình thẩm định chữ ký số :
Dùng public key của người gửi (khóa này được thông báo đến mọi người) để giải
mã chữ ký số của message
Trang 13 Dùng giải thuật (md5 hoặc sha) băm message đính kèm
So sánh kết quả thu được ở bước 1 và 2 nếu trùng nhau, ta kết luận message nàykhông bị thay đổi trong quá trình truyền và message này là của người gửi
Sơ đồ mô tả quá trình nhận các tệp văn bản
- Có 3 nguyên nhân dẫn đến chữ ký không hợp lệ :
Nếu chữ ký số bị giả mạo (không thực) và nó được giải mã với khóa công khai,giá trị băm nhận được không phải là giá trị băm của bản tin nguyên gốc
Nếu bản tin bị thay đổi (bị giả mạo) sau khi ký, giá trị băm hiện thời nhận được từbản tin giả sẽ khác với giá trị băm ban đầu vì hai bản tin khác nhau tương ứng vớihai giá trị băm khác nhau
Nếu khóa công khai không tương ứng với khóa bí mật đã dùng trong quá trình ký
số, giá trị băm ban đầu nhận được khi giải mã chữ ký sẽ là một giá trị sai
III.2.3 Tính chất của chữ ký số
Dịch vụ bảo mật (Security Service) là những dịch vụ nhằm nâng cao tính an toàn cho hệthống xử lý dữ liệu và các thông tin được chuyển đi giữa các tổ chức Các dịch vụ bảo mậtđuợc hỗ trợ bao gồm :
Xác thực (Authentication): nhằm đảm bảo các bên tham gia truyền thông đều được
xác thực