Ứng dụng - Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là trong lĩnh vực bảo mật, an toàn thông tin: một văn bản được mã hóa bằng khóa công khai của một người sử dụng thì chỉ có
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT PHẦN MỀM
KHÓA LUẬN TỐT NGHIỆP
TÌM HIỂU CHỨNG THỰC ĐIỆN TỬ VÀ ỨNG
DỤNG VÀO THƯƠNG MẠI ĐIỆN TỬ
Giảng viên hướng dẫn: TS NGÔ THANH HÙNG
Sinh viên thực hiện: NGUYỄN BẢO TRUNG
LÊ CÔNG MINH THUẬN Lớp : CNPM 02
Khoá : KỸ THUẬT PHẦN MỀM
TP Hồ Chí Minh, tháng 07 năm 2012
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT PHẦN MỀM
KHÓA LUẬN TỐT NGHIỆP
TÌM HIỂU CHỨNG THỰC ĐIỆN TỬ VÀ ỨNG
DỤNG VÀO THƯƠNG MẠI ĐIỆN TỬ
Giảng viên hướng dẫn: TS NGÔ THANH HÙNG
Sinh viên thực hiện: NGUYỄN BẢO TRUNG
LÊ CÔNG MINH THUẬN Lớp : CNPM 02
Khoá : KỸ THUẬT PHẦN MỀM
TP Hồ Chí Minh, tháng 07 năm 2012
Trang 3MỞ ĐẦU
Ngày nay, công nghệ thông tin và các sản phẩm công nghệ thông tin đã góp phần giúp cuộc sống con người thoải mái hơn Sự phổ biến rộng rãi của internet đem lại nhiều ứng dụng tiện lợi, thú vị và dần thay thế các hoạt động truyền thống trong thế giới thực; tuy vậy nó đặt ra các vấn đề về sự an toàn, tính tin cậy của những giao dịch trên internet Cơ sở hạ tầng khóa công khai (PKI) có thể đáp ứng, giải quyết những vấn đề cơ bản nhất cho những yêu cầu trên Dựa trên các dịch vụ cơ bản về chứng thực điện tử và chữ ký điện tử, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đáp ứng nhu cầu bảo mật của người sử dụng
Không chỉ nằm trong lĩnh vực thương mại điện tử, chứng thực số hiện còn được sử dụng như một dạng chứng minh thư cá nhân Tại các nước công nghệ phát triển, chứng thực số CA được tích hợp vào các chip nhớ nằm trong thẻ chứng minh, thẻ tín dụng để tăng cường khả năng bảo mật, chống giả mạo, cho phép chủ thẻ xác thực danh tính của mình trên nhiều hệ thống khác nhau, chẳng hạn thẻ rút tiền ATM, kiểm soát hải quan, ra vào chung cư… Với các đặc điểm nổi bật như không thể giả mạo, chứng thực nguồn gốc xuất xứ, các quốc gia phát triển đều đã sử dụng chứng thực số như một bằng chứng pháp lý từ rất sớm Đây là yếu tố rất quan trọng để có thể phát triển thương mại điện tử, vì không ai dám mạo hiểm với tiền của mình, khi họ chưa chắc chắn được rằng các hoạt động đó có được đảm bảo, và có được pháp luật công nhận
Trong bản khóa luận tốt nghiệp này, chúng em xin trình bày tổng quát
về chứng thực điện tử và ứng dụng của nó trong thương mại điện tử Qua đó trình bày một bản platform mô phỏng hoạt động của một hạ tầng khóa công khai (PKI) cơ bản, cổng thanh toán trực tuyến ứng dụng chứng thực điện tử,
và một website mô phỏng thanh toán trực tuyến qua cổng thanh toán trực tuyến trên
Trang 4LỜI CẢM ƠN
Chúng em cám ơn khoa Kỹ Thuật Phần Mềm, trường đại học Công Nghệ Thông Tin Thành Phố Hồ Chí Minh đã tạo điều kiện cho chúng em thực hiện đề tài
Chúng con gởi tất cả lòng biết ơn và sự kính trọng của chúng con đến cha mẹ và toàn thể gia đình, những người đã sinh thành, dưỡng dục và
là chỗ dựa vững chắc cho chúng con vượt qua mọi khó khăn
Chúng em trân trọng biết ơn thầy Ngô Thanh Hùng đã tận tình chỉ bảo, hướng dẫn chúng em hoàn thành tốt đề tài khóa luận tốt nghiệp
Chúng em cám ơn quý thầy cô đã giảng dạy, trang bị những kiến thức quý báu cho chúng em trong những năm học vừa qua
Xin chân thành cảm ơn những bạn bè đã động viên, giúp đỡ chúng tôi trong thời gian nghiên cứu và thực hiện đề tài
Mặc dù chúng em đã cố gắng hoàn thành luận văn trong khả năng, nhưng không thể tránh khỏi nhiều thiếu sót Chúng em rất mong nhận được
sự thông cảm, góp ý và chỉ bảo tận tình của quý thầy cô và các bạn
Tp Hồ Chí Minh, 07/2012 Nhóm sinh viên thực hiện:
Nguyễn Bảo Trung – Lê Công Minh Thuận
Trang 5NHẬN XÉT (Của giảng viên hướng dẫn)
Trang 6
(Của giảng viên phản biện)
Trang 7
Mở đầu: i
Lời cảm ơn: ii
Chương 1: Tổng quan 1
1.1 Tìm hiểu mật mã khóa công khai 1
1.1.1 Mật mã khóa công khai 1
1.2 Thuật toán và độ phức tạp thuật toán 4
1.2.1 Thuật toán 4
1.2.2 Phân tích thuật toán 4
1.3 Hạ tầng khóa công khai (PKI) 5
1.3.1 PKI là gì ? 5
1.3.2 Cơ sở hạ tầng khóa công khai 5
1.4 Một vài kiến trúc và công nghệ PKI hiện tại 7
1.4.1 Một số ứng dụng 7
1.4.2 Một số hệ thống PKI 7
1.5 Mục đích của đề tài 7
1.6 Đặt vần đề? 8
1.7 Các vấn đề sẽ giải quyết trong khóa luận 8
1.7.1 Yêu cầu về hệ thống PKI 8
1.7.2 Yêu cầu về ứng dụng thương mại điện tử mô phỏng việc áp dụng chứng thực điện tử 9
Chương 2: Hạ tầng khóa công khai(PKI), vấn đề cấp phát chứng thực số và ứng dụng trong thương mại điện tử 10
2.1 Hàm băm mật mã học 10
2.1.1 Hàm băm 10
2.1.2 Hàm băm mật mã học 10
2.1.3 Đảm bảo tính toàn vẹn dữ liệu 10
2.1.4 Một số hàm băm thông dụng 11
2.2 Mã hóa thông tin 13
2.3 Chữ ký số 14
2.3.1 Chữ ký số 14
2.3.2 Ký điện tử trong hệ mã hóa công khai 14
2.3.3 Tạo và kiểm tra chữ ký số 15
2.4 Chứng thực số 23
2.4.1 Khái niệm chứng thực số 23
2.4.2 Nội dung của chứng thực khóa công khai theo chuẩn X.509 23
Trang 82.6.1 Cấp phát chứng thực số 27
2.6.2 Xác thực chứng thực số 28
2.7 Ứng dụng của hạ tầng khóa công khai và cấp phát chứng thực 28
2.7.1 Mã hóa 28
2.7.2 Chống giả mạo 29
2.7.3 Xác thực 29
2.7.4 Chống chối bỏ nguồn gốc 29
2.7.5 Chữ ký điện tử 30
2.7.6 Bảo mật website 30
2.7.7 Đảm bảo phần mềm 30
2.8 OpenCA hệ thống hạ tầng khóa công khai trong thực tế 31
2.8.1 Định nghĩa : 31
2.8.2 Đánh giá về hệ OpenCA 31
Chương 3: Đặc tả một Platform PKI 33
3.1 Giới thiệu 33
3.2 Vai trò và tính chất của một PKI 34
3.3 Các chức năng của một PKI 35
3.3.1 Cấp phát 35
3.3.2 Chứng thực 36
3.3.3 Toàn vẹn dữ liệu 36
3.3.4 Thu hồi và cấp phát lại chứng thực số 36
3.4 Kiến trúc của một PKI đơn (Single CA) 37
3.4.1 Khái niệm 37
3.4.2 Ưu và nhược điểm 37
3.5 Xây dựng một PKI 38
3.5.1 Ngôn ngữ lập trình 38
3.5.2 Kiến trúc 39
Chương 4: Ứng dụng mô phỏng áp dụng chứng thực số vào thương mại điện tử 46
4.1 Giới thiệu về mô hình thanh toán qua ePay 46
4.2 Trang thanh toán trực tuyến ePay 47
4.2.1 Tổng quan 47
4.2.2 Các chức năng chính 48
4.2.3 Tích hợp gởi tin nhắn SMS 50
4.2.4 Dữ liệu trang ePay 53
4.3 Trang web thương mại điện tử laptopShop 54
Trang 94.3.2 Các chức năng chính 55
4.3.3 Dữ liệu trang laptopShop 56
Chương 5: KẾT LUẬN 57
5.1 Một số kết quả đạt được 57
5.2 Hướng phát triển 58
Trang 10BẢNG 1.1 : Mô hình sử dụng xác thực 6
BẢNG 2.1: So sánh thời gian tạo khóa, tạo chữ ký và xác nhận chữ ký của RSAvới DSA 20
DANH MỤC HÌNH HÌNH 1.1 Cấp phát khóa riêng khóa công khai 2
HÌNH 1.2 Mã hóa thông tin 2
HÌNH 1.3 Tạo và xác thực chữ ký số 3
HÌNH 1.4 Mô hình xây dựng PKI cơ bản 5
HÌNH 2.1 Đặc điểm của các thuật toán băm SHA 13
HÌNH 2.2 Thời gian tạo khóa của RSA và DSA 20
HÌNH 2.3 Thời gian tạo chữ ký của RSA và DSA 21
HÌNH 2.4 Thời gian xác nhận chữ ký của RSA và DSA 22
HÌNH 2.5 Những nội dung thông tin cơ bản theo chuẩn X.509 25
HÌNH 2.6 Mô hình phân cấp 25
HÌNH 3.1 Mô tả một kiến trúc CA đơn 37
HÌNH 3.2 Bảng chính trong cơ sở dữ liệu của PKI 39
HÌNH 3.3 Sơ đồ xử lý việc client đăng ký khóa lên PKI 40
HÌNH 3.4 Sơ đồ xử lý quá trình kiểm tra khóa 40
HÌNH 3.5 Sơ đồ usecase của admin PKI 41
HÌNH 3.6 Giao diện chương trình CA Admin 41
HÌNH 3.7 Giao diện chức năng kiểm tra người dùng 42
HÌNH 3.8 Sơ đồ usecase của người dùng 43
HÌNH 3.9 Giao diện chương trình PKI phía client 44
HÌNH 3.10 Giao diện chức năng tạo khóa 44
HÌNH 3.11 Giao diện chức năng xem log 45
HÌNH 4.1 Mô hình thanh toán ePay 46
HÌNH 4.2 Giao diện chức năng ký thông tin 47
HÌNH 4.3 Giao diện trang chủ khi đăng nhập ePay 48
HÌNH 4.4 Quy trình giao dịch chuyển tiền 49
HÌNH 4.5 Mã tích hợp thanh toán ePay từ laptopShop 49
HÌNH 4.6 Hàm gởi tin nhắn SMS 52
HÌNH 4.7 Dữ liệu trang ePay 53
HÌNH 4.8 Giao diện trang chủ laptopShop 54
HÌNH 4.9 Giao diện giỏ hàng 55
HÌNH 4.10 Thông tin mua bán từ laptopShop chuyển qua ePay 56
HÌNH 4.11 Dữ liệu trang laptopShop 56
Trang 11Chương 1: Tổng quan
Dẫn nhập: nội dung chương này trình bày tổng quan về mật mã khóa công
khai, mục đích của hệ thống mã hóa công khai, các thuật toán và độ phức tạp của thuật toán tạo khóa Tìm hiểu về một số kiến trúc và hạ tầng khóa công khai hiện nay…
1.1 Tìm hiểu mật mã khóa công khai
1.1.1 Mật mã khóa công khai
1.1.1.1 Mật mã học khóa công khai (bất đối xứng) là gì?
- Là một chuyên ngành của mật mã học cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước
đó Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khaivà khóa cá nhân (hay khóa bí mật)
- Trong mật mã học khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã Điều quan trọng đối với
hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.[7]
- Lợi ích lớn nhất của mã hóa khóa công khai chính là giúp người sử dụng tránh các rủi ro khi trao đổi khóa Một số hệ thống mã hóa khóa công khai bao gồm: Diffe-Hellman (Whitfield Diffe – Martin Hellman), RSA (Rivest – Shamir – Adleman), Elgamal (Tahel Elgamal), DSA (David Kravitz) và ECC (Neal Koblitz – Victor Miller) Trong số đó, RSA được sử dụng rộng rãi nhất và những năm gần đây, ECC đang thu hút được sự quan tâm nghiên cứu của các nhà khoa học trên thế giới
- Mã hóa khóa công khai là nền tảng của nhiều ứng dụng bảo mật có ý nghĩa quan trọng trong đời sống xã hội như: chữ ký điện tử, chứng nhận điện tử, an toàn trong truyền dữ liệu mạng (SSL).[5]
Trang 121.1.1.2 Mục đích của hệ thống mã hoá công khai
- Cấp phát khoá riêng và khoá công khai
HÌNH 1.1 Cấp phát khóa riêng khóa công khai
Việc cấp phát khoá công khai và khoá bí mật thông qua thuật toán RSA (phổ biến) Thuật toán RSA tạo ra cặp khoá bằng các phương thức toán học từ 2 số nguyên tố bất kỳ đủ lớn
- Mã hoá:
HÌNH 1.2 Mã hóa thông tin
Trung mã hóa thông tin gửi cho Thuận bằng khóa công khai của Thuận Thuận nhận được tin nhắn từ Trung kiểm tra tin nhắn và giải
mã bằng khóa bí mật của Thuận
Trang 13- Tạo và xác thực chữ ký số :
HÌNH 1.3 Tạo và xác thực chữ ký số
( ) (Tạo chữ kí số)
Cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí
mật nào đó hay không
Tạo chữ kí số bằng khóa bí mật của Thuận
Và ký vào tin nhắn Thuận gửi cho Trung
Trung kiểm tra chữ ký số bằng khóa công khai của Thuận:
( ) với H(m) là giá trị sau khi băm tin nhắn Thuận
gửi cho Trung Chữ ký số đúng đắn đồng nghĩa với việc các thông tin Thuận gửi Trung là đúng đắn
Ứng dụng
- Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là trong lĩnh vực bảo mật, an toàn thông tin: một văn bản được mã hóa bằng khóa công khai của một người sử dụng thì chỉ có thể giải mã với khóa bí mật của người đó Các thuật toán tạo chữ ký số khóa công khai cho phép định danh một tin nhắn hay 1 tài liệu Một người sử dụng có thể mã hóa văn bản với khóa bí mật của mình Nếu một người khác có thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn bản thực sự xuất phát từ người gắn với khóa công khai đó (đây là nguyên lý sinh & xác thực chữ ký số, người gửi sử dụng khóa bí mật của mình để sinh ra 1 chữ ký số cho 1 tin nhắn, tài liệu Bên nhận có thể xác thực tính đúng đắn của chữ ký số đó nhờ vào khóa công khai của người gửi) Các đặc điểm trên còn có ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa thuận khóa
Trang 141.2 Thuật toán và độ phức tạp thuật toán
1.2.1 Thuật toán
- Thuật toán được hiểu là sự đặc tả chính xác của một dãy các bước có thể được thực hiện một cách máy móc để giải quyết một vấn đề Cần nhấn mạnh rằng, mỗi thuật toán có một dữ liệu vào (Input) và dữ liệu ra (Output); khi thực hiện thuật toán (thực hiện các bước đã mô tả), thuật toán cần cho ra các kiểu dữ liệu ra tương ứng với các dữ liệu vào.[1]
1.2.2 Phân tích thuật toán
1.2.2.1 Tính hiệu quả của thuật toán
- Khi giải một vấn đề, chúng ta cần chọn trong số các thuật toán, một
thuật toán mà chúng ta cho là “tốt” nhất Cơ sở đánh chọn lựa thuật toán :
Thuật toán đơn giản, dễ hiểu, dễ cài đặt (dễ viết chương trình)
Thuật toán sử dụng tiết kiệm nhất các nguồn tài nguyên của máy tính và đặc biệt chạy nhanh nhất có thể được
- Tính hiệu quả của thuật toán bao gồm 2 nhân tố cơ bản:
Dung lượng không gian nhớ cần thiết để lưu giữ các dữ liệu vào, các kết quả tính toán trung gian và các kết quả của thuật toán
Thời gian cần thiết để thực hiện thuật toán (hay thời gian chạy)
1.2.2.2 Đánh giá thời gian thực hiện thuật toán
- Thời gian chạy chương trình phụ thuộc vào các nhân tố chính sau:
Các dữ liệu vào
Chương trình dịch để chuyển chương trình nguồn thành mã máy
Tốc độ thực hiện của các phép toán của máy tính được sử dụng
để chạy chương trình
- Giả sử T(n) là thời gian thực hiện thuật toán và ( ) là hàm xác định dương ( ) ( ( )) nếu các hằng số dương c và sao cho ( ) ( )với mọi
Trang 151.3 Hạ tầng khóa công khai (PKI)
1.3.1 PKI là gì ?
- Để hiểu rõ về việc xây dựng cơ PKI và vần đề cấp phát chứng thực số
có vai trò và ứng dụng như thế nào trong thương mại điên tử Chúng ta sẽ đi phân tích từng khía cạnh xung quanh PKI
- Trước tiên chúng hiểu thế nào là PKI và tính cấp thiết của PKI hiện nay :
PKI : viết tắt của Public Key Infrastructure tức là hạ tầng cơ sở khóa công khai.Là một cơ chế để cho một bên thứ 3 (thường là nhà cung cấp chứng thực số) cung cấp và xác thực định danh các bên tham gia vào quá trình trao đổi thông tin Cơ chế này cũng cho phép gán cho mỗi người sử dụng trong hệ thống một cặp khóa công khai/khóa bí mật
Trong kỷ nguyên bùng nổ của công nghệ thông tin, mọi giao dịch từ
xa có thể thông qua internet Tuy nhiên, mặt khác khó mà bảo đảm rằng những giao dịch trên Internet luôn an toàn Cơ sở hạ tầng khóa công khai (PKI) đã đáp ứng những yêu cầu cấp thiết đó Dựa trên cách sử dụng của chìa khóa mật mã công cộng và chữ ký điện tử, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đáp ứng nhu cầu bảo mật của người sử dụng
1.3.2 Cơ sở hạ tầng khóa công khai
HÌNH 1.4 Mô hình xây dựng PKI cơ bản
Trang 16- PKI cung cấp một cặp chìa khóa, trong đó có một chìa là chìa khóa công khai (Public key) để có thể sử dụng dịch vụ, chìa còn lại là chìa khóa bí mật (Private key) mà người sử dụng phải giữ bí mật Hai chìa khóa này có liên quan mật thiết đến nhau, sao cho một thông điệp được mã hóa bởi một chìa khóa mật mã công khai thì chỉ giải mã được bởi một chìa khóa bí mật tương ứng.
- Ví dụ về mô hình sử dụng xác thực :
Giả sử có 2 người dùng Trung và Thuận muốn chuyển thư điện tử cho nhau để đảm bảo tính xác thực và bảo mật họ dùng 1 phần mềm PKI
Hành động Trạng thái của hệ thống PKI
Trung muốn chuyển một thư điện
tử đến cho Thuận, với yêu cầu rằng
giao dịch phải chứng minh được
chính anh đã gởi nó đi và nội dung
bức thư không bị thay đổi
Phần mềm PKI dùng chìa khóa cá nhân của Trung tạo ra một chữ ký điện tử cho bức thư
Trung muốn chắc chắn rằng không
ai ngoài Thuận đọc được bức thư
này
Phần mềm PKI của Trung dùng chìa khóa công cộng của Thuận để
mã hóa thông điệp của Trung
Thuận muốn đọc thư do Trung gởi Phần mềm PKI dùng chìa khóa cá
nhân của Thuận để để giải mã thông điệp
Thuận muốn kiểm chứng rằng
chính Trung đã gởi đi thông điệp
đó và nội dung thông điệp không bị
chỉnh sửa
Phần mềm PKI của Thuận dùng chìa khóa công cộng của Trung để kiểm chứng chữ ký điện tử của anh
ta
BẢNG 1.1 : Mô hình sử dụng xác thực
Trang 171.4 Một vài kiến trúc và công nghệ PKI hiện tại
1.4.1 Một số ứng dụng
- Mục tiêu chính của PKI là cung cấp khóa công khai và xác định mối liên hệ giữa khóa và định dạng người dùng Nhờ vậy người dùng có thể sử dụng trong một số ứng dụng như:
Mã hoá Email hoặc xác thực người gửi Email (OpenPGP hay
S/MIME)
Mã hóa hoặc nhận thực văn bản (Các tiêu chuẩn Chữ ký XML*
hoặc mã hoá XML* khi văn bản được thể hiện dưới dạng XML)
Xác thực người dùng ứng dụng (Đăng nhập bằng thẻ thông minh -
smartcard, nhận thực người dùng trong SSL)
Các giao thức truyền thông an toàn dùng kỹ thuật Bootstrapping
(IKE, SSL): trao đổi khóa bằng khóa bất đối xứng, còn mã hóa bằng khóa đối xứng
1.4.2 Một số hệ thống PKI
- Dưới đây là danh sách một số hệ thống PKI, trong đó một số nhà cung cấp chứng thực số hàng đầu (ví dụ VeriSign) không được liệt kê vì các phần mềm của họ không được công bố công khai:
Hệ thống quản lý chứng thực Red Hat
Computer Associate eTrust PKI
Trang 18- Đây là vấn là một đề tài khá mới mẻ, do vậy tìm hiểu chứng thực điện
tử và xây dựng hạ tầng cơ sở xác thực khóa công khai (PKI) là một cách tiếp cận cho một nền tảng mới Từ đó nêu rõ vai trò và ứng dụng của hạ tầng khóa công khai trong thương mại điện tử
- Tìm hiểu về các thuật toán (sinh số ngẫu nhiên trong việc tạo khóa, hàm băm, mã hóa, tạo chữ ký số )
- Tìm hiểu và xây dựng mô phỏng cơ sở hạ tầng khóa công khai
- Xây dựng ứng dụng thương mại điện tử mô phỏng việc áp dụng chứng thực điện tử
1.6 Đặt vần đề?
- Để xây dựng một cơ sở hạ tầng chúng ta phải giải quyết sơ bộ những vấn đề sau đây :
Làm sao để cấp phát khóa công khai và khóa bí mật cho từng người
Vấn đề đăng ký khóa công khai với một CA
Vấn đề thu hồi/cấp phát lại khóa công khai
Vấn đề kiểm chứng khóa công khai
Làm sao từ khóa công khai của 1 người hệ thống PKI phải xác định xem chữ ký số có phải của người đó hay không ?
Vấn đề toàn vẹn dữ liệu Hệ thống PKI phải xác định xem liệu tin nhắn gửi đi giữa client và server có bị thay đổi hay không?
Một thông điệp được mã hóa bởi một chìa khóa mật mã công khai thì chỉ giải mã được bởi một chìa khóa bí mật tương ứng
Khóa của bên thứ 3 bên thẩm định sẽ do cấp hay tổ chức nào giám định hay phải có cơ chế nào để chống giả mạo bên chứng thực
Các vấn đề liên quan đến chứng thực số cấp phát, xác thực và quản
lý tại server ra sao?
1.7 Các vấn đề sẽ giải quyết trong khóa luận
1.7.1 Yêu cầu về hệ thống PKI
Chương trình thiết kế phải bao gồm2 đối tượng :
- Server :
Cho phép người dùng trong hệ thống đăng ký khóa công khai Cấp phát một chứng thực số (certificate) cho người dùng đó nếu khóa công khai hợp lệ
Quản lý khóa công khai, thu hồi/cấp phát lại chứng thực số
Trang 19 Cho phép bên thứ 3 kiểm tra tính đúng đắn của 1 chứng thực số bất
kỳ
Kiểm tra trạng thái người dùng
Verify chữ ký Kiểm tra coi một người dùng nào đó có ký nội dung
đó hay không
- User :
Phần mềmsẽ tạo ra một khóa công khai cho user và khóa bí mật (Khóa riêng) và user phải giữ bí mật
Tạo chữ ký số cho từng văn bản ngẫu nhiên
Bên thứ 3 là bên thẩm định và đánh giá :
Cấp phát và bảo mật khóa riêng và khóa công khai của CA
Cho phép xem log các thông tin đã ký trước đây
Quản lý key: tạo mới và đổi khóa
Kiểm tra lại chữ ký
Kiểm tra và lấy khóa công khai của 1 người bất kỳ có trên PKI
1.7.2 Yêu cầu về ứng dụng thương mại điện tử mô phỏng việc áp dụng
Cho phép chuyển tiền giữa các tài khoản thuộc ePay quản lý
Tích hợp thanh toán cho các trang web thương mại điện tử
Các giao dịch chỉ được thực hiện khi được cơ quan CA xác thực
- Trang web thương mại điện tử bán hàng trực tuyến laptopShop
Các chức năng chính của trang web bán hàng trực tuyến: xem hàng, giỏ hàng, đặt hàng,…
Tích hợp thanh toán trực tuyến qua cổng thanh toán trực tuyến ePay
Trang 20Chương 2: Hạ tầng khóa công khai(PKI), vấn đề cấp phát chứng thực số
và ứng dụng trong thương mại điện tử
Dẫn nhập:nội dung chương này trình bày tổng quan về hàm băm mật mã học,
mã hóa thông tin, chữ ký số, chứng thực số, cấu trúc phân tầng của hệ thống PKI, việc cấp phát và xác thực chứng thực số, ứng dụng của hạ tầng khóa công khai, giới thiệu về hạ tầng khóa công khai OpenCA,…
2.1 Hàm băm mật mã học
2.1.1 Hàm băm
- Hàm băm (tiếng Anh: hash function) là hàm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đoạn tin nhắn ) Giá trị băm đóng vai trò gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta chấp nhận hiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giải thuật để giảm thiểu sự đụng độ đó Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc so sánh các giá trị băm nhanh
hơn việc so sánh những khối dữ liệu có kích thước lớn)
2.1.2 Hàm băm mật mã học
- Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin
đa dạng, chẳng hạn như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp (message integrity) Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký
tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp (message digest)
hoặc chữ ký số (digital fingerprint).[2]
2.1.3 Đảm bảo tính toàn vẹn dữ liệu
- Hàm băm mật mã học là hàm băm và có tính chất là hàm 1 chiều Từ khối dữ liệu hay giá trị băm đầu vào chỉ có thể đưa ra 1 giá trị băm duy nhất Như chúng ta đã biết đối với tính chất của hàm 1 chiều Một người nào đó dù bắt được giá trị băm họ cũng không thể suy ngược lại giá trị, đoạn tin nhắn
băm khởi điểm
- Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp Giá trị băm đóng vai trò gần
như một khóa để phân biệt các khối dữ liệu
Trang 21- Giá trị đầu vào(tin nhắn, dữ liệu ) bị thay đổi tương ứng giá trị băm cũng bị thay đổi Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết ngay lập tức
2.1.4 Một số hàm băm thông dụng
2.1.4.1 Thuật toán hàm băm MD5
a Thuật toán hàm băm MD5
- MD5 (Message-Digest algorithm 5) là một hàm băm mật mã được
sử dụng phổ biến, được thiết kể bởi Giáo sư Ronald L Rivest tại trường MIT vào năm 1991 để thay thế cho hàm băm trước đó là MD4 (1990) Là một chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật và cũng được dùng phổ biến
để kiểm tra tính toàn vẹn của tập tin Cũng như các hàm băm khác như MD4 và SHS (Secure Hash Standard), MD5 là phương pháp
có ưu điểm tốc độ xử lý rất nhanh, thích hợp với các thông điệp dài và cho ra giá trị băm dài 128 bit.[3]
- Trong MD5, thông điệp ban đầu X sẽ được mở rộng thành dãy bit
X có độ dài là bội của 512 Dãy bit X gồm các thành phần được sắp thứ tự như sau: Dãy bit X ban đầu, một bit 1, dãy d bit 0 (d được tính sao cho dãy X cuối cùng là bội của 512), dãy 64 bit l biểu diễn chiều dài của thông điệp Đơn vị xử lý trong MD5 là các
từ 32-bit, nên dãy bit X ở trên sẽ được biểu diễn thành dãy các từ
X[i] 32-bit sau:
X=X[0] X[1] X[2] …X[N−1], với N là bội của 16.[3]
b Phương pháp MD5 có những ưu điểm sau so với phương pháp MD4
- Thay vì có 3 chu kỳ biến đổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ 4 để tăng mức độ an toàn
- Trong mỗi thao tác của từng chu kỳ, MD5 sử dụng hằng số tiphân biệt, trong khi MD4 sử dụng hằng số chung cho mọi thao tác trong cùng chu kỳ biến đổi
- Hàm G ở chu kỳ 2 của MD4: G(X,Y,Z) = ((XZ) (XY) (Y
Z
)) được thay thế bằng G(X,Y,Z) = (XZ) (Y(Z)) để giảm tính đối xứng
Trang 22- Mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền (avalanche)
- Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ được tối ưu hóa nhằm tăng tốc độ hiệu ứng lan truyền Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch chuyển khác nhau
- Lý do MD5 được thiết kế thay thế cho MD4 là vì các phân tích chỉ
ra rằng phương pháp MD4 có vẻ không an toàn Den Boer và Bosselaers đã chỉ ra các điểm yếu trong MD4 trong một bài báo được đăng vào năm 1991và một tấn công xung đột đầu tiên được tìm thấy bởi Han Dobbertin vào năm 1996
- Tuy nhiên, các nỗ lực tấn công, phân tích của các nhà nghiên cứu cho thấy MD5 cũng không còn an toàn và cần được thay thế bằng một thuật toán băm khác như các công bố của Den Boer và Bosselaers năm 1993; của Hans Dobbertin năm 1996; của nhóm tác giả Xiaoyun Wang, Dengguo Feng, Xuejia Lai, và Hongbo ngày 19/8/2004; của Arjen Lenstra, Xiaoyun Wang, và Benne de Weger ngày 1/3/2005; và của Vlastimil Klima,…[6]
2.1.4.2 Chuẩn băm an toàn SHS
- SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật mã an toàn (Secure Hash Algorithm – SHA) như SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 do NIST2
và NSA3
xây dựng[5]
- Phương pháp SHA-1 (cũng như SHA-0) được xây dựng trên cùng
cơ sở với phương pháp MD4 và MD5 Tuy nhiên, phương pháp SHA-1 sử dụng trên hệ thống Big-endian5
thay vì Little-endian6
như phương pháp MD4 và MD5 Ngoài ra, hàm băm SHA-1 tạo ra thông điệp rút gọn kết quả có độ dài 160 bit nên thường được sử dụng.[5]
- Phương pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhưng thông điệp tóm tắt được tạo ra có độ dài 160 bit Dưới đây là một
số điểm so sánh giữa MD5 và SHA-1:
Giống như MD5, SHA-1 cũng thêm chu kỳ thứ 4 để tăng mức độ an toàn cho thuật toán Tuy nhiên, chu kỳ 4 của SHA-1 sử dụng lại hàm f của chu kỳ thứ 2
Trang 23 Trong SHA-1, 20 bước biến đổi trong cùng một chu kỳ sử dụng cùng một hằng số K[t] Trong khi đó, mỗi bước biến đổi trong cùng một chu kỳ của MD5 sử dụng các hằng số khác nhau
So với MD4, hàm G trong MD5 được thay thế thành hàm mới để làm giảm tính đối xứng Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại hàm G của MD4
Cả MD5 và SHA-1, mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền
HÌNH 2.1 Đặc điểm của các thuật toán băm SHA
(Nguồn từ internet)
2.2 Mã hóa thông tin
- Có rất nhiều thông tin mà chúng ta không muốn người khác biết khi gửi
đi như: thông tin về Credit-Card, thông tin về kinh doanh của công ty, thông tin về tài khoản cá nhân, thông tin về cá nhân như số chứng minh thư, số
thẻ
- Các thông tin bí mật được cung cấp cho các máy tính quan mạng Internet bằng nhiều phương thức khác nhau ví dụ:Một cách bảo mật đơn giản nhưng minh bạch nhất là lưu các thông tin bí mật trên các bộ nhớ có thể xoá được (Removable Storage) như đĩa mềm Tuy nhiên dạng bảo mật phổ biến
nhất vẫn là dựa vào quá trình mã hoá dữ liệu (Encryption)
- Các hệ thống mã hoá trong máy tính phổ biến nhất thuộc một trong hai
loại sau:
Trang 24o Hệ thống mã hóa sử dụng cùng một khóa gọi là khóa bí mật (secret key/ symmetric key) để thực hiện mã hóa hay giải mã thông tin Việc bảo mật thông tin này tùy thuộc vào việc bảo mật khóa bí mật
o Trong phương pháp mã hoá với khoá đối xứng, mỗi máy tính có một khoá bí mật (dạng mã) dùng để mã hoá các gói thông tin trước khi chúng được gửi qua mạng tới các máy tính khác Phương pháp mã hoá với khoá đối xứng đòi hỏi người sử dụng phải xác định được những máy tính nào đang liên lạc trao đổi thông tin với nhau để cài đặt khoá này trên mỗi máy
Mã hoá với khoá công khai (Public-key Encryption)
2.3 Chữ ký số
2.3.1 Chữ ký số
- Chữ ký số (Digital Signature) chỉ là tập con của chữ ký điện tử Chữ
ký số là chữ ký điện tử dựa trên kỹ thuật mã hóa với khóa công khai, trong
đó, mỗi người có một cặp khóa (một khóa bí mật và một khóa công khai) Khóa bí mật không bao giờ được công bố, trong khi đó, khóa công khai được
tự do sử dụng Để trao đổi thông điệp bí mật, người gửi sử dụng khóa công khai của người nhận để mã hóa thông điệp gửi, sau đó, người nhận sẽ sử
dụng khóa bí mật tương ứng của mình để giải mã thông điệp
- Chữ ký điện tử là thông tin được mã hoá bằng khoá riêng của người gửi, được gửi kèm theo văn bản nhằm đảm bảo cho người nhận định danh, xác thực đúng nguồn gốc và tính toàn vẹn của tài liệu nhận được Chữ ký điện tử thể hiện văn bản gửi đi là đã được ký bởi chính người sở hữu một
khoá riêng tương ứng với một chứng chỉ điện tử nào đó.”
- Chữ ký số khóa công khai (hay hạ tầng khóa công khai) là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật và qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật Khóa công khai thường được phân phối thông qua chứng thực khóa công khai Quá trình sử dụng chữ ký số bao gồm 2 quá trình: tạo chữ ký
và kiểm tra chữ ký
2.3.2 Ký điện tử trong hệ mã hóa công khai
- Với hệ mã khóa công khai, một quy trình ký văn bản điện tử được thiết lập dựa trên ý tưởng của hai nhà khoa học Diffie và Hellman
Trang 25 Người gửi (chủ nhân văn bản) ký văn bản bằng cách mã hóa nó với khóa bí mật của mình rồi gửi cho người nhận
Người nhận văn bản (đã ký) tiến hành kiểm tra chữ ký bằng cách sử dụng chìa khóa công khai của người gửi để giải mã văn bản Nếu giải
mã thành công thì văn bản ký là đúng của người gửi
Giao thức này mang đầy đủ các thuộc tính của thủ tục ký thông thường Thật vậy:
Chữ ký là sản phẩm của người đã chủ động tạo ra nó, tức là người đã dùng chiếc chìa khóa bí mật của mình để mã hóa văn bản
Chữ ký cho biết chủ nhân của nó chính là người sở hữu chiếc chìa khóa bí mật đã được dùng để mã văn bản (kiểm tra bằng cách cho giải
mã bằng chìa khóa công khai của người đó) Không ai làm giả được
“chữ ký” vì rằng chỉ có duy nhất một người có chìa khóa bí mật đã dùng để “ký” (mã hóa)
Chữ ký cho văn bản này không thể “tái sử dụng” cho văn bản khác Thật vậy, việc biết chữ ký (văn bản mã) không cho phép tìm ra được chìa khóa bí mật của người gửi (để có thể ký một văn bản khác)
Văn bản đã ký không thể thay đổi (xuyên tạc) được nội dụng Thật vậy, nếu đã mở ra để thay đổi thì không thể “ký lại” được nữa, vì không có chiếc chìa khóa bí mật của “người đã ký” (như đã nói ở trên)
Người ký văn bản không thể thoái thác việc mình “đã ký”, vì ngoài anh ta ra không còn ai có cái chìa khóa đã được dùng để “ký” văn bản
- Rõ ràng, về mặt logic thì quy trình ký như trên là rất hợp lý Mọi thành viên tham gia sử dụng một hệ mã khóa công khai đều có được khả năngký văn bản điện tử(bằng chìa khóa bí mật của riêng mình) và kiểm tra chữ ký của những người khác (bằng chìa khóa công khai mà họ đã công bố)
- Việc dùng chìa khóa bí mật để mã hóa văn bản được gọi là ký điện tử,
và kết quả tạo ra là một dữ liệu dạng số, sẽ được gọi là chữ ký số
2.3.3 Tạo và kiểm tra chữ ký số
2.3.3.1 Các thuật toán chữ ký số thông dụng
- Chữ ký số giúp xác định được người tạo ra hay chịu trách nhiệm đối với
Trang 26thuật toán chính, đó là thuật toán dùng để tạo khóa, thuật toán dùng để tạo ra chữ ký sốvà thuật toán tương ứng để xác nhận chữ ký số.
2.3.3.2 Thuật toán chữ ký số RSA
- Trong các thuật toán phi đối xứng thì thuật toán RSA (phát minh năm
1978 bởi Rivest, Shamir và Adleman) được sử dụng rộng rãi và phổ biến nhất Hệ mã RSA có độ bảo mật cao, luôn là thách thức cho giới thám mã Nước ta đã đưa ra chuẩn chữ ký số, trong đó RSA được sử dụng như một hệ
mã chuẩn trong một thời gian dài sắp tới
- Phương pháp chữ ký số RSA được xây dựng dựa trên thuật toán mã hóa khóa công khai RSA Để tạo một cặp khóa, RSA thực hiện các bước sau:
Chọn 2 số nguyên tố lớn ngẫu nhiên p, q Nhằm có sự an toàn tối đa nên chọn p và q có độ dài bằng nhau
Dùng hàm băm ℋ để băm thông điệp m: h=ℋ(m)
Tạo chữ ký số sử dụng khóa bí mật (n,d) để tính:s=hd mod n
- Chữ ký của m là s và được gửi kèm với thông điệp m đến người nhận
Để xác nhận chữ ký, người nhận thực hiện các bước sau:
Sử dụng khóa công khai (n,e) của người ký để giải mã chữ ký:
h=se
mod n
Sử dụng cùng hàm băm ℋ với người ký để băm thông điệp m: h′=H(m)
Chấp nhận chữ ký nếu h′=h Ngược lại từ chối chữ ký
- Độ an toàn của RSA
Nếu ta chọn các số p và q khoảng 100 chữ số thập phân, thì nsẽ có khoảng 200 chữ số thập phân Để phân tích một số nguyên cỡ lớn như thế, với các thuật toán nhanh nhất hiện này và với những máy tính hiện đại nhất, ta mất hàng tỷ năm!
Trang 27 Sau khi tìm ra hệ mã, Rivest, Shamir và Adleman có viết một bài báo công bố phát minh dưới dạng một thông báo khoa học của MIT và, trên cột Martin Gardner’s của tờ báo Scienfitic American, họ có đưa
ra lời thách thức bạn đọc bẻ khóa một mẩu tin nhỏ đã được mã hóa với:
n=11438162575788886766923577997614661201021829672124236256256184293570693524573389783059712356395870505898907514
759929002687954354
e = 9007
Mẩu tin “first solver wins one hundred dollars”xuất hiện trong dạng
mã hóa (với A = 01, B=02, C=03 …) chỉ được giải mã vào ngày 26/4/1994, bằng một cố gắng tổng lực mang tính quốc tế (qua Internet) với việc sử dụng 1600workstations, mainframes, và supercomputers tấn công trong 8 tháng liên tục để phân tích số nêu trên ra thừa số nguyên tố
- Thực tế này cho thấy rằng thuật toán RSA là rất an toàn, vì không mấy khi có điều kiện để huy động một lực lượng tính toán hùng hậu như thế vào một công việc giải mã một mẩu tin
- Có một vài điều cần chú ý khi chọn các số p và q để tránh rơi vào trường hợp tích pq bị phân tích nhanh nhờ những thuật toán đặc biệt: p và
q cần chọn sao cho p1 và q1 không chỉ có toàn các ước nguyên tố nhỏ (có phân tích “vụn”) Ngoài ra, ước chung lớn nhất (p1,q1) phải là số nhỏ, p và q phải có số chữ số trong khai triển thập phân khác nhau không nhiều [5]
2.3.3.3 Thuật toán chữ ký số DSA
- Thuật toán chữ ký số DSA (Digital Signature Algorithm) được đề nghị bởi NIST vào tháng 8/1991 để sử dụng trong chuẩn chữ ký số DSS (Digital Signature Standard), được chỉ ra trong FIPS 186, được chấp nhận năm 1993 Một sửa đổi nhỏ được đưa ra ngày năm 1996 trong FIPS 186-1, chuẩn được
mở rộng hơn năm 2000, được xem như xem như FIPS 186-2 Việc tạo khóa gồm hai bước Bước thứ nhất là lựa chọn các tham số cho thuật toán được chia sẻ giữa các người sử dụng khác nhau trong cùng hệ thống:
Trang 28 Chọn một hàm băm mã hóa ℋ Trong DSS chuẩn ℋ luôn là SHA-1, nhưng các hàm băm tốt hơn trong nhóm SHA cũng đang được sử dụng Đôi khi đầu ra của một thuật toán băm mới hơn bị rút ngắn kích thước so với các thuật toán băm mới cũ để tương tích với cặp khóa hiện có
Chọn kích thước khóa L Đây là thước đo chính quyết định sức mạnh mã hóa của khóa DSS chuẩn ràng buộc L là bội số của 64 và 512≤L≤1024 Sau đó, FIPS 186-2 xác định L luôn là 1024 Không lâu sau, NIST 800-57 đề nghị độ dài khóa là 2048 (hoặc 3072) để thời gian an toàn đến năm 2010 (hoặc 2030), sử dụng tương ứng với các giá trị băm và q dài hơn Bản thảo FIPS 186-3 cũng tính đến các hàm băm sau này và các khóa dài hơn
Chọn một số nguyên tố q cùng số bit với đầu ra của ℋ
Chọn một số nguyên tố p độ dài L bit sao cho p–1 là bội của q Tức
là p=qz–1 với số nguyên z nào đó
Chọn g = h(p 1 ) /q mod p với h bất kỳ (1<h<p–1), và chọn lại nếu kết quả là 1 Hầu hết cách chọn h đều nhận được g có thể sử dụng, thông thường chọn h=2
- Các tham số thuật toán (p,q,g) có thể chia sẻ giữa những người khác nhau trong hệ thống Bước thứ hai tính các khóa bí mật và khóa công khai của từng người :
Chọn x ngẫu nhiên sao cho 0<x<q
Tính y=gx
mod p
Khóa công khai là (p,q,g,y), khóa bí mật là x
- Phiên bản FIPS 186-3 sắp tới sử dụng SHA-224/256/384/512 là các hàm băm, kích thước của q là 224 (hoặc 256 bit), và L bằng 2048 (hoặc 3072)
- Để ký một thông điệp m, người ký thực hiện các bước sau:
Phát sinh một số ngẫu nhiêu k (0<k<q) cho mỗi thông điệp
Trang 29- Để xác nhận chữ ký, người nhận thực hiện các bước sau:
Loại bỏ chữ ký nếu 0<r<q hoặc 0<s<q không thỏa mãn
Chữ ký có hiệu lực nếu v=r
- Tính đúng đắn của giải thuật được chứng minh như sau:
Đầu tiên, nếu g = h(p1)/qmod p suy ra gp=hp 1−1=1 (mod p) theo định lý Fermat nhỏ Bởi vì g>1 và q là số nguyên tố nên g có bậc q
Cuối cùng, tính đúng đắn của DSA suy ra từ:
r = (gk
mod p) mod q= (gu1
yu2 mod p) mod q=v
- Phương pháp DSA đã giải quyết vấn đề này bằng cách sử dụng chữ ký
320 bit cho văn bản 160 bit với các phép tính được thực hiện trên tập con có
2160 phần tử với p là số nguyên tố 512 bit.[5]
2.3.3.4 Kết quả thử nghiệm và nhận xét
- So sánh RSA và DSA
Để so sánh tốc độ của hai thuật toán chữ ký số RSA và DSA, Thử nghiệm 2.2 dưới đây đã được tiến hành và ghi nhận
Thử nghiệm 2.2: DSS chuẩn ràng buộc độ dài khóa L là bội số của
64 và 512≤L≤1024 và để an toàn lâu dài độ dài khóa L được đề nghị
là 2048 hoặc 3072 Do đó độ dài khóa được thử nghiệm cho cả RSA
và DSA là 576, 640, 704, 768, 832, 896, 960, 1024, 2048, 3072 (bit) Ứng với mỗi độ dài khóa, lần lượt cho cả RSA và DSA phát sinh khóa, ký văn bản ngẫu nhiên (kích thước 2 MB) và kiểm tra chữ ký tạo được Để thuận tiện so sánh, hàm băm mật mã SHA-1 được chọn để sử dụng cho cả RSA và DSA Thử nghiệm được lặp lại 50.000 lần Kết quả nhận được như sau:
Trang 30BẢNG 2.1: So sánh thời gian tạo khóa, tạo chữ ký và xác nhận chữ
ký của RSAvới DSA
RSA DSA RSA
/ DSA
RSA DSA RSA
/ DSA
Trang 31 Kết quả thử nghiệm 2.5 cho thấy tốc độ tạo khóa của RSA nhanh hơn rất nhiều so với DSA và khi kích thước khóa tăng lên thì tỷ lệ này ngày càng gia tăng Hơn nữa, khi tăng kích thước L của DSA và tương ứng với các hàm băm SHA có đầu ra lớn hơn thì DSA sẽ còn chậm hơn rất nhiều
HÌNH 2.3 Thời gian tạo chữ ký của RSA và DSA
(Nguồn từ internet)
Kết quả thử nghiệm 2.2 cho thấy tốc độ tạo chữ ký của RSA chậm hơn DSA nhưng tỷ lệ này có xu hướng giảm khi kích thước khóa tăng lên Nguyên nhân là do khi số mũ khóa công khai e cố định thì
số mũ khóa bí mật d sẽ tăng khi kích thước n tăng Mặt khác, phép tính chiếm thời gian nhiều nhất của quy trình ký chính là phép lũy thừa modulo nên khi số mũ tăng thì thời gian thực hiện cũng sẽ tăng Tuy nhiên, kích thước khóa được sử dụng phổ biến hiện nay là 1024
và 2048 nên thời gian ký lúc này sẽ không còn là vấn đề đáng lo
ngại do toàn bộ quy trình chỉ mất ít hơn 0,2 giây
Trang 32HÌNH 2.4 Thời gian xác nhận chữ ký của RSA và DSA
(Thử nghiệm trên môi trường Windows XP, bộ xử lý Pentium 4 3.00
GHz, bộ nhớ 512 MB Nguồn từ internet)
Kết quả thử nghiệm (bảng 2.1) cũng cho thấy tốc độ xác nhận chữ
ký của RSA không thay đổi đáng kể khi kích thước khóa tăng do số
mũ công khai e được sử dụng luôn là một số nhỏ (giá trị phổ biến hiện này là 65537) và tốc độ thực hiện phép lũy thừa modulo (phép toán chính trong quy trình xác nhận chữ ký) sẽ tăng không nhiều Ngược lại, tốc độ xác nhận chữ ký của DSA mặc dù thấp hơn RSA nhưng sẽ ngày càng tăng khi kích khóa tăng lên Nguyên nhân là do quy trình xác nhận chữ ký của DSA gồm rất nhiều phép tính tốn chi phí cao (phép lũy thừa modulo và phép nhân) nên khi kích thước khóa tăng dần thì điều này sẽ trở thành gánh nặng Mặc khác, nếu kích thước L được chọn lớn hơn thì tốc độ xác nhận chữ ký sẽ chậm hơn nữa Với các thử nghiệm trên ta dễ dàng nhận thấy RSA tốt hơn DSA về mọi mặt, đặc biệt là tốc độ phát sinh khóa của RSA nhanh hơn DSA rất nhiều Ngoài ra, tốc độ ký và xác nhận chữ ký dẫu có chậm hơn DSA nhưng thời gian này là không đáng kể
Trang 332.4 Chứng thực số
2.4.1 Khái niệm chứng thực số
- Trong mật mã học, chứng thực khóa công khai (còn gọi là chứng thực số/chứng thực điện tử) là một chứng thực sử dụng chữ ký số để gắn một khóa công khai với một thực thể (cá nhân, máy chủ hoặc công ty ) Nói cách khác, chứng thực khóa công khai là phương tiện giúp người ta khẳng định được một chìa khóa công khai nào đó thuộc về thực thể nào
- Một chứng thực khóa công khai chuẩn mực thường bao gồm chìa khóa công khai và một số thông tin về thực thể sở hữu chìa khóa đó (tên, địa chỉ,…) Như vậy, thông tin trên chứng thực khóa công khai không chỉ cho biết một chìa khóa công khai nào đó thuộc về ai, ta còn có thể biết được các thông tin liên quan khác, mà đôi khi cũng rất quan trọng trong một hệ thống
cụ thể, như là danh phận, chức vụ,… của người sở hữu
- CA phát hành các chứng thực khóa công khai trong đó thể hiện rằng
CA đó chứng nhận khóa công khai nằm trong mỗi chứng thực thuộc về cá nhân, tổ chức, máy chủ hay bất kỳ thực thể nào ghi trong cùng chứng thực
đó Nhiệm vụ của CA là kiểm tra tính chính xác của thông tin liên quan tới thực thể được cấp chứng thực Khi người sử dụng tin tưởng vào một CA và
có thể kiểm tra chữ ký số của CA đó thì họ cũng có thể tin tưởng vào khóa
công khai và thực thể được ghi trong chứng thực
2.4.2 Nội dung của chứng thực khóa công khai theo chuẩn X.509
Tiêu chuẩn về chứng thực số trên cơ sở hạ tầng khóa công khai phổ biến nhất hiện nay là X.509 được ban hành bởi ITU-T (International Telegraph Union – Telecom, tổ chức viễn thông quốc tế (về lĩnh vực viễn thông), thuộc liên hợp quốc) Bao gồm:
Version: Chỉ định phiên bản của chứng nhận X.509
Serial Number: Số loạt phát hành được gán bởi CA MỗiCA nên gán một mã số loạt duy nhất cho mỗi giấy chứng nhận mà nó phát hành
Signature Algorithm: Thuật toán chữ ký và chỉ rõ thuật toán mã hóa được CA sử dụng để ký giấy chứng nhân Trong chứng nhận X.509 thường là sự kết hợp giữa thuật toán băm (chẳng hạn như MD5) và thuật toán khóa công khai (chẳng hạn như RSA)
Trang 34 Issuer Name: Tên tổ chức CA phát hành chứng thực HaiCA khác nhau không được sử dụng cùng một tên phát hành
Validity Period: gồm hai giá trị chỉ định khoảng thời gian mà giấy chứng nhận có hiệu lực: not-before và not-after Not-before: thời gian chứng nhận bắt đầu có hiệu lực; Not-after: thời gian chứng nhận hết hiệu lực
Các giá trị thời gian này được đo theochuẩn thời gian quốc tế, chính xác đến từng giây
Subject Name: Tên chủ thể được cấp chứng thực
Public Key: Chìa khóa công khai của chủ thể được cấp chứng thực
Issuer Unique ID & Subject Unique ID: Được đưa vào sử dụng từ X.509 phiên bản 2, dùng để xác định hai tổ chức CA hoặc hai chủ thể khi chúng có cùng DN RFC 2459 đề nghị không nên sử dụng hai trường này
Extensions: Chứa các thông tin bổ sung cần thiết mà người thao tác
CA muốn đặt vào chứng nhận (Mới được đưa ra trong X.509 phiên bản 3)
Signature: chữ ký số được tổ chức CA áp dụng
Tổ chức CA tạo chữ ký bằng khóa bí mật với kiểu thuật toán mã được quy định trong trường thuật toán chữ ký
Chữ ký bao gồm tất cả các phần khác trong giấy chứng nhận.(Qua
đó thể hiện CA chứng nhận cho tất cả các thông tin khác trong giấy chứng thực, chứ không chỉ cho tên chủ thể và khóa công khai)