Chính vì những vấn đề thực tiễn trên, nhóm em đã chọn đề tài: “Nghiên cứu ứng dụng các thuật toán mã hóa, chữ ký điện tử xây dựng hệ thống trao đổi thông tin an toàn trên môi trường mạng
Trang 1MỤC LỤC
LỜI MỞ ĐẦU 2
Chương 1 TỔNG QUAN VỀ AN TOÀN THÔNG TIN 3
1.1 Một số khái niệm cơ bản
1.1.1 Khái niệm về an toàn thông tin
1.1.2 Khái niệm về đảm bảo an toàn thông tin
1.2 Thực trạng và nhu cầu về an toàn thông tin tại Việt Nam
1.3 Tổng quan về kỹ thuật mật mã
1.3.1 Các hệ mật mã
1.3.2 Chữ ký số
1.3.3 Phân phối khóa công khai
1.3.4 Chứng chỉ khóa công khai
1.3.5 Hạ tầng khóa công khai
1.4 Một số cơ sở mật mã phục vụ an toàn thông tin
1.4.1 Lược đồ mã RSA-OAEP
1.4.2 Thuật toán mã khối AES 11
Chương 2 XÂY DỰNG HỆ THỐNG THÔNG TIN AN TOÀN 15
2.1 Giới thiệu 15
2.2 Sơ đồ kiến trúc hệ thống xác thực tài liệu trên môi trường mạng 15
2.3 Phân tích thiết kế hệ thống 17
2.3.1 Các chức năng cần thiết cho yêu cầu của hệ thống 17
2.3.2 Lựa chọn ngôn ngữ lập trình và công cụ thiết kế 18
2.3.3 Công cụ ký số trên web 20
KẾT LUẬN 22
Trang 2LỜI MỞ ĐẦU
1 Tính cấp thiết của đề tài
Ngày nay, với sự phát triển mạnh mẽ của Công nghệ Thông tin, việc sử dụngthông tin trên mạng Internet ngày càng được mở rộng và hiệu quả trên tất cả cácngành nghề, các lĩnh vực Tuy nhiên, bên cạnh đó người sử dụng cũng phải đối mặtvới những nguy cơ mất mát, rò rỉ thông tin, bị xâm hại các quyền riêng tư khi truycập mạng Đây là một trong những lý do khiến người sử dụng lo ngại đặc biệt làcác cơ quan nhà nước
Nhận thức được lợi ích và tầm quan trọng của công nghệ thông tin và truyềnthông trong việc duy trì và thúc đẩy sự phát triển bền vững, trong những năm vừaqua lĩnh vực công nghệ thông tin nói chung và hoạt động ứng dụng công nghệthông tin nói riêng đã phát triển nhanh chóng, mạnh mẽ và ngày càng sâu rộngtrong mọi mặt của đời sống kinh tế xã hội Các hoạt động có thể kể đến như: Cáchoạt động thương mại điện tử; các hoạt động hành chính công phổ biến như gửinhận thư điện tử, các hệ thống hỗ trợ quản lý điều hành trên mạng Chính vì những
vấn đề thực tiễn trên, nhóm em đã chọn đề tài: “Nghiên cứu ứng dụng các thuật toán mã hóa, chữ ký điện tử xây dựng hệ thống trao đổi thông tin an toàn trên môi trường mạng” nhằm nâng cao việc xác thực và an toàn thông tin trong các
hoạt động trao đổi thông tin của các cơ quan, tổ chức trong các ứng dụng trên môitrường mạng
2 Kết cấu đề tài
Ngoài phần mở đầu, kết luận, bài tìm hiểu của nhóm gồm 2 chương:
Chương 1: Tổng quan về an toàn thông tin
Chương 2: Xây dựng hệ thống thông tin an toàn
Trang 3Chương 1 TỔNG QUAN VỀ AN TOÀN THÔNG TIN 1.1 Một số khái niệm cơ bản
1.1.1 Khái niệm về an toàn thông tin
Thông tin được lưu trữ bởi các sản phẩm và hệ thống CNTT là một tàinguyên quan trọng cho sự thành công của tổ chức đó, là tài sản của một cá nhânhay tổ chức Các thông tin cá nhân lưu trữ trong hệ thống thông tin cần được giữ bímật, bảo vệ và không bị thay đổi khi không được phép Trong khi các sản phẩm và
hệ thống CNTT thực hiện các chức năng của chúng, các thông tin cần được kiểmsoát để đảm bảo chúng được bảo vệ chống lại các nguy cơ, ví dụ như việc phổ biến
và thay đổi thông tin không mong muốn và trái phép, nguy cơ mất mát thông tin
1.1.2 Khái niệm về đảm bảo an toàn thông tin
Đảm bảo an toàn thông tin là đảm bảo an toàn kỹ thuật cho hoạt động củacác cơ sở hạ tầng thông tin, trong đó bao gồm đảm bảo an toàn cho cả phần cứng
và phần mềm hoạt động theo các tiêu chuẩn kỹ thuật do nhà nước ban hành; ngănngừa khả năng lợi dụng mạng và các cơ sở hạ tầng thông tin để thực hiện các hành
vi trái phép gây hại cho cộng đồng, phạm pháp hay khủng bố; đảm bảo các tínhchất bí mật, toàn vẹn, chính xác, sẵn sàng phục vụ của thông tin trong lưu trữ, xử lý
và truyền tải trên mạng
1.2 Thực trạng và nhu cầu về an toàn thông tin tại Việt Nam
Theo thống kê của Bkav, tính từ đầu năm 2012 đến nay, mỗi ngày có tới 6website tại Việt Nam bị tấn công, tương ứng với hơn 2.000 website bị hack mỗinăm Đã có 175 website của các cơ quan, doanh nghiệp tại Việt Nam bị hacker xâmnhập, trong đó có 24 trường hợp gây ra bởi hacker trong nước, 151 trường hợp dohacker nước ngoài Hầu hết nguyên nhân của các vụ hack này là do website tồn tạinhiều lỗ hổng
Trang 4Những thông tin trên cho thấy việc lựa chọn giải pháp và đầu tư cho an toànthông tin là vấn đề cần được các cơ quan nhà nước chú trọng đầu tư, bên cạnh đó làviệc hoàn thiện hành lang chính sách và pháp lý trong lĩnh vực này để việc ứngdụng CNTT thực sự có hiệu quả.
1.3 Tổng quan về kỹ thuật mật mã
Kỹ thuật mật mã đóng vai trò thiết yếu trong việc giải quyết vấn đề an toànthông tin Bảng 1.1 liệt kê một số kỹ thuật và công nghệ để giải quyết yêu cầu xácthực, toàn vẹn, bí mật, chống chối bỏ trong an toàn và bảo mật thông tin
Bảng 1.1 Một số kỹ thuật và công nghệ giải quyết yêu cầu an toàn và bảo mật
Bí mật Mã hóa và giải mã dựa vào khóa
Xác thực Sử dụng tên và mật khẩu của người dùng, đặc điểm sinh
trắc học, ký số và kiểm tra chữ ký số dựa vào khóaTin cậy Ký số và kiểm tra chữ ký số dựa vào khóa
Chống chối bỏ Ký số và kiểm tra chữ ký số dựa vào khóa
Trao quyền Áp dụng chính sách kiểm soát truy nhập và quản lý
quyền hạnKiểm toán Lưu nhật ký và sử dụng công cụ kiểm toán
1.3.1 Các hệ mật mã
Hệ mật chính là hệ thống cung cấp các kỹ thuật mã hóa và giải mã dữ liệu,được phân loại thành hệ mật khóa công khai và hệ mật khóa đối xứng Hệ mật khóađối xứng sử dụng cùng một khóa khi mã hóa và giải mã, được minh hoạ trong Hình
Trang 51.1 Độ an toàn của hệ mật này phụ thuộc chính vào sự bí mật của khóa.
Hình 1.1 Hệ mật khóa đối xứng đảm bảo tính bí mật và xác thực
Hệ mật khóa công khai sử dụng một cặp khóa (khóa riêng và khóa công khai), mộtkhóa được sử dụng để mã hóa và khóa còn lại được sử dụng để giải mã, được minhhoạ trong dưới đây:
Trang 6Hình 1.2 Hệ mật khoá công khai
Mục đích chính của hệ mật khóa công khai là phân phối khóa và ký số Cácứng dụng của hệ mật này gồm có: Mã hóa/giải mã, chữ ký, trao đổi khóa
Các thuật toán mật mã:
- Tóm lược thông báo (MD2-4-5, SHA, SHA1, SHA2,…): chuyển thông báo
rõ có độ dài không xác định thành thông báo mã có độ dài xác định
- Mật mã khóa bí mật (DES, IDEA, RC2-4-5, Triple-DES, AES,…): sử dụngcùng một khóa cho mã hóa và giải mã
- Mật mã khóa công khai (DSA, RSA,…): sử dụng một khóa để mã hóa vàmột khóa khác để giải mã
Khi A muốn truyền thông với B, thủ tục được tiến hành như sau:
1 A tạo ra một cặp khóa {KUa, KRa} và truyền thông báo cho B gồm KUa vàtên của A (IDA)
2 B tạo ra khóa bí mật Ks và gửi cho A sau khi mã hóa với khóa công khai củaA
3 A tính toán DKRa[EKUa[Ks]] để khôi phục lại khóa bí mật Chỉ A có khóariêng nên giải mã được khóa bí mật Chỉ A và B biết khóa bí mật Ks
Nếu kiểm soát được kênh truyền thông, đối tượng E có thể dàn xếp cuộctruyền thông mà không bị phát hiện, theo hình thức sau đây:
1 A tạo ra một cặp khóa {KUa, KRa} và truyền thông báo cho B gồm có KUa
và tên của A (IDA)
2 E chặn lấy thông báo, tạo ra một cặp {KUe KRe} và truyền KUe || IDA choB
3 B sinh ra một khóa bí mật Ks và truyền EKUe[Ks] cho A
4 E chặn lấy thông báo, biết được Ks bằng cách tính DKRe[EKUe[Ks]] Etruyền EKUa[Ks] cho A
5 A và B không biết E đã làm giả Ks và dùng Ks để trao đổi các thông báo.Không mất nhiều thời gian, E có thể can thiệp vào kênh truyền thông, nghe trộm và
Trang 7giải mã tất cả các thông báo vì biết Ks.
- Lược đồ phân phối khóa bí mật đảm bảo tính bí mật và xác thực:
1 A sử dụng khóa công khai của B để mã hóa thông báo (1) gửi cho B có chứatên của A (IDA) và một nonce N1 để nhận dạng giao dịch này
2 B gửi thông báo (2) cho A Thông báo được mã hóa bằng KUa, có chứa N1của A và nonce mới N2 do B sinh ra Do chỉ có B mới có thể giải mã thông báo (1)nên sự xuất hiện của N1 trong thông báo (2) đảm bảo A đang liên lạc với B
3 A trả lại N2, được mã hóa bằng khóa công khai của B để đảm bảo rằng Bđang liên lạc với A
4 A chọn một khóa bí mật Ks và gửi thông báo (3) M= EKUb[EKRa[Ks]] cho
B Việc mã hóa thông báo với khóa công khai của B đảm bảo chỉ có B mới có thểđọc Việc mã hóa với khóa riêng của A đảm bảo chính A đã gửi thông báo
5 B tính toán DKUa[EKRb[M]] để khôi phục khóa bí mật
1.3.2 Chữ ký số
Chữ ký số là dữ liệu để xác định nguồn gốc và tính toàn vẹn của thông báo.Người gửi sử dụng khóa riêng của mình để ký số thông báo hay tạo chữ ký số chothông báo được gửi đi Người nhận sử dụng khóa công khai của người gửi để kiểmtra nguồn gốc thông báo và xác định thông báo không bị thay đổi trên đườngtruyền
Chữ ký số tương tự như chữ ký viết tay và phải có một số tính chất sau:
- Có khả năng kiểm tra chữ ký số và thời gian ký số
- Có khả năng xác thực các nội dung tại thời điểm ký số
- Thành viên thứ 3 có thể kiểm tra chữ ký số để giải quyết các tranh chấp Dựavào các tính chất cơ bản này, chữ ký số có các yêu cầu sau:
- Phải là một mẫu bít phụ thuộc vào thông báo được ký số
- Phải sử dụng một thông tin duy nhất của người gửi để ngăn chặn tình trạnglàm giả và chối bỏ
Trang 8- Được tạo ra dễ dàng.
- Khó có thể làm giả chữ ký số bằng cách tạo ra một thông báo mới cho mộtchữ ký số hiện có, hoặc tạo ra một chữ ký số giả mạo cho một thông báo cho trước
- Trong thực tế, cần lưu giữ một bản sao của chữ ký số
1.3.3 Phân phối khóa công khai
Nhiều kỹ thuật phân phối khóa công khai được đưa ra như khai báo côngkhai, thư mục công khai, trung tâm quản lý khóa công khai và chứng chỉ khóa côngkhai Một giải pháp lựa chọn khác là sử dụng chứng chỉ khóa công khai Các thànhviên trao đổi khóa thông qua chứng chỉ khóa công khai mà không cần liên lạc với
cơ quan quản lý khóa công khai Khi cần sử dụng khóa công khai, các thành viênkiểm tra chứng chỉ do cơ quan quản lý phát hành
1.3.4 Chứng chỉ khóa công khai
Chứng chỉ khóa công khai là sự gắn kết khóa công khai của một thực thể(con người, thiết bị phần cứng, dịch vụ) với một hoặc nhiều thuộc tính nhận dạngthực thể, được một cơ quan chứng thực (Certification Authority - viết tắt là CA)phát hành
Việc sử dụng khóa công khai có trong chứng chỉ hoàn toàn rất đơn giảnnhưng việc công bố và quản lý các chứng chỉ gặp rất nhiều vấn đề như phát hành,hủy bỏ, kiểm tra tình trạng trực tuyến, thư mục lưu trữ, chứng thực chéo Nhữngvấn đề này được giải quyết thông qua hạ tầng khóa công khai
1.3.5 Hạ tầng khóa công khai
Các thành phần cơ bản của PKI X509 gồm phía nhà cung cấp (cơ quanchứng thực, cơ quan đăng ký, hệ thống quản lý và phân phối chứng chỉ) và phíangười dùng (các ứng dụng PKI) Mô hình cấp phát chứng chỉ khóa công khai củaPKI X509 được minh họa trong hình dưới đây
Trang 9Hình 1.3 Mô hình cấp phát chứng chỉ của PKI X50
1.4 Một số cơ sở mật mã phục vụ an toàn thông tin
dài theo byte của RSA modulo n)
M là thông báo được mã hóa, chuỗi byte có độ dài mLen vớimLen k –2hLen-2
L là nhãn tùy chọn liên quan đến thông báo, giá trị mặc địnhcủa L là chuỗi rỗng nếu không được cung cấp
Đầu ra: C bản mã, chuỗi byte có độ dài k
Các lỗi: “thông báo quá dài”, “nhãn quá dài”
Trang 10Giả thiết: Khoá công khai RSA (n, e) là hợp lệ.
Hình 1.4 Thuật toán mã hóa EME-OAE
1.4.1.2 Hàm giải mã RSAES-OAEP
RSAES-OAEP-DECRYPT(K, C,L)Các lựa chọn: Hash là hàm băm (hLen ký hiệu độ dài theo byte của đầu ra
hàm băm) MGF là hàm sinh mặt nạĐầu vào: K là khoá riêng RSA của người nhận (k ký hiệu độ dài theo
byte của RSA-modulo n)
C là bản mã cần được giải mã, chuỗi byte có độ dài k, với k 2hLen + 2
Trang 11L là nhãn tùy chọn liên quan đến thông báo, giá trị mặc địnhcủa L là chuỗi rỗng nếu không được cung cấp
Đầu ra: M thông báo, một chuỗi byte có độ dài mLen với mLen k –
2hLen -2 Các lỗi: “Lỗi giải mã”
1.4.1.3 Yêu cầu tham số an toàn cho hệ mật RSA
Số mũ công khai e phải được chọn với các ràng buộc sau:
a) Chọn trước khi tạo số mũ bí mật
b) Là số nguyên dương lẻ sao cho 65537 ≤ e < 2nlen-2x security_strength
Hai số nguyên tố p, q phải được chọn với ràng buộc:
a) p-1 và q-1 phải nguyên tố cùng nhau với e
b) Mỗi một trong bốn số p-1, p+1, q-1 và q+1 phải có ước nguyên tố lớn hơn2security_strength+20
c) √2x 2nlen/2-1 ≤ p, q ≤ 2nlen/2-1
Số mũ bí mật d phải được chọn sau khi tạo p và q với các ràng buộc:
a) d > 2nlen/2
b) d ≡ e-1 (mod lcm(p-1,q-1))
1.4.2 Thuật toán mã khối AES
1.4.2.1 Giới thiệu thuật toán AES
AES là thuật toán hướng byte Đơn vị thông tin được xử lý trong thuật toán
là byte Chúng được xem như một phần tử của trường Galois GF(28) với phép vàphép nhân
Mỗi byte có thể được biểu diễn theo nhiều cách khác nhau Ở dạng nhị phân
Trang 121.4.2.2 Cấu trúc bên trong của AES
Số lượng các vòng phụ thuộc vào kích cỡ khóa được chọn, ví dụ kích cỡkhóa 128 bit-10 vòng, 192bit-12 vòng, và 256 bit - 14 vòng Mỗi vòng gồm nhiềutầng khác nhau Các tầng cho quá trình mã hóa và giải mã như sau:
* Mã hóa
Tầng thay thế byte (ByteSub)
Tầng thay thế byte gồm 16 S-box có các tính chất sau:
Các S-box giống hệt nhau Là thành phần phi tuyến duy nhất trong AES,nghĩa là: ByteSub(Si) + ByteSub(Sj)≠ByteSub(Si+Sj), ∀ i , j
S-box của AES được xây dựng dựa trên ánh xạ nghịch đảo trên trườngGF(28) Trong cài đặt bằng phần mềm, các S-box thường được thực hiện như mộtbảng tra
Lược đồ tạo khóa (Keyschedule)
Các khóa con được tính một cách đệ quy từ 128/192/256 bit khóa gốc đầuvào Mỗi vòng mã hóa/giải mã, sử dụng một khóa con cộng với một khóa con ởphần bắt đầu của thuật toán AES Như vậy, số khóa con=số vòng +1 Tương ứngvới mỗi kích cỡ khóa đầu vào có một lược đồ khóa Với khóa 128 bit có số khóacon là 11, khóa 192 bit có số khóa con là 13 và khóa 256 bit có số khóa con là 15
* Giải mã
Trang 13AES không dựa vào cấu trúc Feistel nên mọi biến đổi phải thực hiện ngượckhi giải mã Với biến đổi MixColumn có InvMixColumns cho quá trình giải mã,với biến đổi ShiftRows, với ByteSub có InvByteSub Tầng cộng khóa cũng phảithực hiện với các khóa con có thứ tự ngược lại.
InvMixColumns: sử dụng đa thức d(x)={0b}x3+ {0d}x2 +{09}x+{0e}
InvShiftRows: tất cả các hàng trong ma trận trạng thái được dịch vòng theohướng ngược lại
InvByteSub: Vì S-box là song ánh nên chúng ta có thể xây dựng một ánh xạngược sao cho Ai=S-1(Bj) Ánh xạ này được dùng khi giải mã Nó thường đượclưu trữ ở dạng một bảng tra
Lược đồ khóa cho giải mã: Mọi khóa con phải được sử dụng theo thứ tựngược lại Trong thực tế, cả khi mã hóa và giải mã, chúng ta vẫn sử dụng cùng mộtlược đồ khóa Điều này dẫn đến việc phải tính toán các khóa con trước khi mã hóakhối đầu tiên
1.4.2.3 Một số yêu cầu đảm bảo an toàn khi ứng dụng mã khối AES
Hệ mã khối AES có vai trò quan trọng và được sử dụng nhiều trong các hệthống an toàn và bảo mật Tuy nhiên, ta cần tuân thủ một số yêu cầu về cài đặt hiệuquả và chọn lựa chế độ làm việc cho AES nhằm đảm bảo an toàn khi ứng dụng
Yêu cầu cài đặt hiệu quả AES trong thực tế:
Cách cài đặt trực tiếp là cách khá tốt đối với các bộ vi xử lý 8-bit, nhưngkhông hiệu quả với các bộ vi xử lý 32-bit hoặc 64-bit Đối với các bộ vi xử lý (hoặcthiết bị có tài nguyên nhỏ), việc cài đặt tối ưu cần chú ý vấn đề sau:
S-box: có thể lưu bảng tra đơn (1 S-box 8 bit) hoặc tính toán qua các phéptính số học trên GF(28)
- Biến đổi MixColumns: có thể tính phép nhân một phần tử với các hằng số0x09, 0x03, 0x0b, 0x0d, 0x0e có thể được tính thông qua các phép nhân với hằng
số 0x02, 0x01 Cụ thể:
Trang 14a.0x03 = (0x02.a) +(0x01.a) = (0x02.a) ^ a
a.0x09 = (((a.0x02).0x02).0x02) + (0x01.a)= (((a.0x02).0x02).0x02)^aa.0x0b = (((a.0x02).0x02).0x02) + (a.0x02) + (a.0x01)
= (((a.0x02).0x02).0x02) ^ (a.0x02) ^ aLựa chọn chế độ làm việc cho AES: Mỗi chế độ làm việc của mã khối đều cónhững ưu nhược điểm riêng, cần tìm hiểu và lựa chọn áp dụng