MỞ ĐẦU Trong kĩ thuật bảo mật thông tin, mật khẩu password được sử dụng rộng rãi trong quá trình đăng nhập log-on để xác thực người dùng khi truy nhập vào các hệ thống máy tính và mạng,
Trang 1LÊ THU HƯƠNG
NGHIÊN CỨU VẤN ĐỀ XÁC THỰC GIAO DỊCH NGÂN HÀNG TRỰC TUYẾN SỬ DỤNG MẬT KHẨU DẠNG
OTP
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
THÁI NGUYÊN, 2016
Trang 2LÊ THU HƯƠNG
NGHIÊN CỨU VẤN ĐỀ XÁC THỰC GIAO DỊCH NGÂN HÀNG TRỰC TUYẾN SỬ DỤNG MẬT KHẨU DẠNG
OTP
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: TS VŨ VINH QUANG
THÁI NGUYÊN, 2016
Trang 3LỜI CAM ĐOAN
Sau quá trình học tập tại Trường Đại học công nghệ thông tin & truyền thông, với những kiến thức lý thuyết và thực hành đã tích lũy được, với việc vận
dụng các kiến thức vào thực tế, em đã tự nghiên cứu các tài liệu, các công trình nghiên cứu, đồng thời có sự phân tích, tổng hợp, đúc kết và phát triển để hoàn thành luận văn thạc sĩ của mình
Em xin cam đoan luận văn này là công trình do bản thân em tự tìm hiểu,
nghiên cứu và hoàn thành dưới sự hướng dẫn của thầy giáo TS Vũ Vinh Quang
Thái Nguyên, tháng 12 năm 2016
Học viên
Lê Thu Hương
Trang 4LỜI CẢM ƠN
Trong thời gian hai năm của chương trình đào tạo thạc sỹ, trong đó gần một nửa thời gian dành cho các môn học, thời gian còn lại dành cho việc lựa chọn đề tài, giáo viên hướng dẫn, tập trung vào nghiên cứu, viết, chỉnh sửa và hoàn thiện luận văn Với quỹ thời gian như vậy và với vị trí công việc đang phải đảm nhận, không riêng bản thân em mà hầu hết các sinh viên cao học muốn hoàn thành tốt luận văn của mình trước hết đều phải có sự sắp xếp thời gian hợp lý, có sự tập trung học tập
và nghiên cứu với tinh thần nghiêm túc, nỗ lực hết mình; tiếp đến cần có sự ủng hộ
về tinh thần, sự giúp đỡ về chuyên môn một trong những điều kiện không thể thiếu quyết định đến việc thành công của luận văn
Để hoàn thành được luận văn này trước tiên em xin gửi lời cảm ơn đến thầy
giáo hướng dẫn TS Vũ Vinh Quang, người đã có những định hướng cho em về nội
dung và hướng phát triển của đề tài, người đã có những đóng góp quý báu cho em
về những vấn đề chuyên môn của luận văn, giúp em tháo gỡ kịp thời những vướng mắc trong quá trình làm luận văn
Em cũng xin cám ơn các thầy cô giáo Trường Đại học Công nghệ thông tin
và Truyền thông đã có những ý kiến đóng góp bổ sung cho đề tài luận văn của em
Em xin hứa sẽ cố gắng hơn nữa, tự trau dồi bản thân, tích cực nâng cao năng lực chuyên môn của mình để sau khi hoàn thành luận văn này sẽ có hướng tập trung nghiên cứu sâu hơn, không ngừng hoàn thiện hơn nữa luận văn của mình để có những ứng dụng thực tiễn cao trong thực tế
Thái Nguyên, tháng 12 năm 2016
Học viên
Lê Thu Hương
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
MỤC LỤC iii
DANH MỤC CÁC CHỮ VIẾT TẮT vi
DANH MỤC HÌNH VẼ vii
MỞ ĐẦU 1
Chương 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ BẢO MẬT THÔNG TIN 3
1.1 Giới thiệu về an toàn và bảo mật thông tin 3
1.1.1 Các khái niệm cơ bản 3
1.1.2 Mục tiêu của an toàn bảo mật thông tin 3
1.1.3 Các chiến lược an toàn hệ thống 4
1.1.4 An toàn thông tin bằng mật mã 5
1.2 Một số hệ mã hóa thông dụng 8
1.2.1 Hệ mã RSA 8
1.2.2 Hệ mã Rabin 9
1.2.3 Hệ mã Elgamal 10
1.2.4 Hệ mã MHK (Merkle -Hellman Knapsack) 11
1.2.5 Hệ mật mã Rabin 12
1.2.6 Hệ mật mã McEliece 13
1.3 Giới thiệu về mật khẩu 15
1.3.1 Định nghĩa 15
1.3.2 Phương pháp xác thực 16
1.3.3 Độ an toàn 17
Chương 2 MỘT SỐ KHÁI NIỆM VỀ OTP CÁC PHƯƠNG PHÁP 26
2.1 Giới thiệu về OTP 26
2.1.1 Định nghĩa về OTP 26
2.1.2 Ưu điểm 26
2.1.3 Nhược điểm 27
2.2 Ứng dụng của OTP 27
2.2.1 Ứng dụng trong xác thực 27
2.2.2 Ứng dụng trong đăng nhập 28
Trang 62.3 Giới thiệu về hàm băm mật mã, các thuật toán 29
2.3.1 Giới thiệu 29
2.3.2 Cấu trúc, vai trò của hàm băm mật mã 29
2.3.3 Một số hàm băm mật mã thông dụng 36
2.3.4 Các ứng dụng cơ bản của hàm băm 37
2.4 Một số phương pháp sinh OTP 41
2.4.1 Phương pháp sinh theo thời gian 41
2.4.2 Phương pháp sinh theo thuật toán 42
2.4.3 Phương pháp sinh theo giải pháp S/KEY 44
2.4.4 Phương pháp sinh sử dụng HOTP 44
2.4.5 Phương pháp sinh sử dụng Security token 44
2.4.6 Phương pháp sinh bằng giao thức 44
2.5 Các phương pháp chuyển giao OTP 45
2.5.1 Chuyển giao OTP bằng giấy 45
2.5.2 Chuyển giao OTP bằng tin nhắn SMS 46
2.5.3 Tạo OTP sử dụng token 47
2.5.4 Tạo OTP sử dụng điện thoại di động 49
2.5.5 Chuyển giao OTP sử dụng gmail 51
Chương 3 XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG XÁC THỰC SỬ DỤNG OTP TRONG GIAO DỊCH NGÂN HÀNG TRỰC TUYẾN 53
3.1 Đặt vấn đề 53
3.2 Mô hình sử dụng giao dịch trực tuyến của ngân hàng Eximbank 54
3.2.1 Giới thiệu Mobile OTP 55
3.2.1 Hướng dẫn sử dụng Mobile OTP 56
3.3 Kết quả xây dựng mô hình thực nghiệm 56
3.4 Cài đặt 56
3.5 Kết chương 56
KẾT LUẬN 57
TÀI LIỆU THAM KHẢO 58
PHỤ LỤC 59
Trang 7DANH MỤC CÁC CHỮ VIẾT TẮT
DES Data Encrypt Standar RSA R.Rivest A.Shamir L.Adleman MHK Merkle -Hellman Knapsack SHA Secure Hash Algorithm
Trang 8DANH MỤC HÌNH VẼ
Hình 1: Mã hoá với khoá mã và khoá giải giống nhau 6
Hình 2: Minh họa xác thực mật khẩu 15
Hình 3: Minh họa đăng nhập một lần 16
Hình 4: Mô hình đăng nhập duy nhất SSO 26
Hình 5: Cơ chế hoạt động của openSSO 30
Hình 6: Người dùng truy cập vào ứng dụng khi 32
Hình 7: Người dùng truy cập ứng dụng mà chưa 32
Hình 8: Sơ đồ phân loại hàm băm 34
Hình 9: Cấu trúc tổng quát của hàm băm 35
Hình 10: Mô hình sinh mã OTP theo thời gian 39
Hình 11: Thiết bị sinh OTP - OTP Token 40
Hình 12: Ứng dụng Mobile OTP - IOS 40
Hình 13: Ứng dụng Mobile OTP - Window Phone 8 42
Hình 14: Mô hình xác thực người dùng dựa trên giao thức 44
Hình 15: Thẻ mật khẩu OTP với mật khẩu in sẵn của VinaGame 45
Hình 16: Chuyển giao OTP bằng tin nhắn SMS 46
Hình 17: Minh họa thẻ EMV 48
Hình 18: Minh họa thiết bị E-Token 49
Hình 19: Mô hình kết nối SSL VPN đến Vigor2950 có điện thoại 49
Hình 20: Cài đặt phần mềm sinh OTP trên iPhone với Vigor2950 51
Hình 21: Mô hình nhận OTP qua gmail 53
Hình 22: Hướng dẫn cài đặt ứng dụng Mobile OTP 54
Hình 23: Hướng dẫn đăng nhập và kích hoạt dịch vụ 54
Hình 24: Hướng dẫn sử dụng Mobile OTP để xác thực giao dịch 55
Hình 25: Hướng dẫn chức năng đồng bộ OTP 55
Hình 26: Hướng dẫn cấp lại mật khẩu 56
Hình 27: Hướng dẫn đổi mật khẩu 56
Hình 28: Người dùng đăng nhập vào hệ thống 56
Hình 29: Người dùng nhập thông tin chuyển khoản 56
Hình 30: Người dùng chấp nhận chuyển khoản 56
Hình 31: Người dùng chuyển khoản thành công 56
Hình 32: Mô tả lịch sử giao dịch 56
Trang 9MỞ ĐẦU
Trong kĩ thuật bảo mật thông tin, mật khẩu (password) được sử dụng rộng rãi trong quá trình đăng nhập (log-on) để xác thực người dùng khi truy nhập vào các hệ thống máy tính và mạng, các phần mềm ứng dụng trên máy tính cá nhân, máy chủ công ty và cả website của các tổ chức tài chính, ngân hàng Phương pháp phổ thông thường hay dùng nhất để xác thực người dùng chỉ là mật khẩu (tên đăng nhập username - password) Tuy nhiên, hầu hết các chuyên gia bảo mật đều đánh giá là việc sử dụng password không còn an toàn trước các thủ đoạn tấn công tinh vi hiện nay Mật khẩu có thể bị nghe lén, bị đánh cắp, hoặc bị phá mã Một trong những hướng nghiên cứu để tăng cường độ an toàn của hệ thống là mật khẩu sử dụng một
lần OTP (One Time Password) Đây là phương pháp được giới thiệu để tăng cường
độ an toàn trong quá trình xác thực người dùng, xác thực các giao dịch, đặc biệt là các giao dịch thanh toán trực tuyến trong các hệ thống ngân hàng đang được sử dụng phổ biến hiện nay
Đề tài "Nghiên cứu vấn đề xác thực giao dịch ngân hàng trực tuyến sử dụng mật khẩu dạng OTP" được lựa chọn với mục đích nghiên cứu sâu về mật khẩu sử
dụng một lần, các phương pháp sinh và tạo mật khẩu sử dụng một lần và ứng dụng trong việc xác thực các giao dịch ngân hàng, cài đặt thử nghiệm ứng dụng mật khẩu
sử dụng một lần để nâng cao an toàn cho xác thực các giao dịch ngân hàng trực
tuyến Mục đích của luận văn
Tìm hiểu nghiên cứu sâu về mật khẩu sử dụng một lần, các phương pháp sinh và tạo mật khẩu sử dụng một lần và ứng dụng trong xác thực giao dịch ngân hàng trực tuyến
Đối tượng và phạm vi nghiên cứu
Luận văn tìm hiểu nghiên cứu về lý thuyết mật mã, các thuật toán mã hóa cơ bản, lý thuyết về hàm băm và thuật toán mã hóa SHA-1, lý thuyết về OTP và vấn đề xác thực các giao dịch ngân hàng trực tuyến Xây dựng hệ thống xác thực các giao dịch ngân hàng bằng mật khẩu sử dụng 1 lần OTP trên ngôn ngữ Java
Cấu trúc của luận văn gồm có
Phần mở đầu: Nêu lý do chọn đề tài và hướng nghiên cứu chính
Chương 1: Các kiến thức cơ bản về lý thuyết bảo mật thông tin, một số thuật
toán mã hóa cơ bản, khái niệm về mật khẩu và ứng dụng
Trang 10Chương 2: Giới thiệu tổng quan về mật khẩu OTP, các ứng dụng cơ bản, các
phương pháp sinh mật khẩu OTP, các phương pháp chuyển giao
Chương 3: Xây dựng chương trình ứng dụng xác thực trong giao dịch trực
tuyến tại các ngân hàng Việt Nam dựa trên mật khẩu OTP
Trang 11Chương 1 MỘT SỐ KIẾN THỨC CƠ BẢN
VỀ BẢO MẬT THÔNG TIN
Nội dung chính của chương 1 sẽ giới thiệu các khái niệm cơ bản về lý thuyết
an toàn và bảo mật thông tin thông qua các hệ mật mã và mật khẩu, các kiến thức cơ bản này đã được tham khảo trong các tài liệu [1, 5, 6, 8]
1.1 Giới thiệu về an toàn và bảo mật thông tin
1.1.1 Các khái niệm cơ bản
Trong thời đại ngày nay, các phương thức truyền đạt thông tin ngày càng đa dạng và phát triển Với sự ra đời của máy tính và mạng máy tính, việc trao đổi thông tin đã trở nên dễ dàng hơn, nhanh chóng hơn, đa dạng hơn Nhưng kèm theo
đó là các nguy cơ xâm phạm thông tin cũng ngày càng tăng Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến bộ về điện tử - viễn thông và công nghệ thông tin không ngừng được phát triển ứng dụng để nâng cao chất lượng
và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin dữ liệu Các phương pháp bảo vệ an toàn thông tin
dữ liệu có thể được phân thành ba nhóm sau:
+ Bảo vệ an toàn thông tin bằng các biện pháp hành chính
+ Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng)
+ Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm)
Ba nhóm trên có thể được ứng dụng riêng rẽ hoặc phối kết hợp Môi trường khó bảo vệ an toàn thông tin nhất và cũng là môi trường đối phương dễ xâm nhập nhất đó là môi trường mạng và truyền tin Biện pháp hiệu quả nhất và kinh tế nhất hiện nay trên mạng truyền tin và mạng máy tính là biện pháp thuật toán
1.1.2 Mục tiêu của an toàn bảo mật thông tin
Một hệ thống an toàn thông tin cần đảm bảo các yếu tố sau đây:
+ Tính bí mật (Confjdentialy): Đảm bảo dữ liệu được truyền đi một cách an
toàn và không thể bị lộ thông tin Chỉ những người được phép mới có khả năng đọc được nội dung thông tin ban đầu
Trang 12+ Tính xác thực (Authentication): Giúp cho người nhận dữ liệu xác định
được chắc chắn dữ liệu mà họ nhận là dữ liệu gốc ban đầu Người nhận có khả năng kiểm tra nguồn gốc thông tin mà họ nhận được
+ Tính toàn vẹn (Integrity): dữ liệu không bị thay đổi trong quá trình
truyền đi
+ Tính không thể chối bỏ (Non-repudation): Người gửi hay người nhận
không thể chối bỏ sau khi đã gửi hoặc nhận thông tin
1.1.3 Các chiến lược an toàn hệ thống
Để xây dựng một hệ thống an toàn thông tin, người ta thường sử dụng các chiến lược sau:
+ Giới hạn quyền hạn tối thiểu (Last Privilege):
Đây là chiến lược cơ bản nhất theo nguyên tắc này bất kỳ một đối tượng nào cũng chỉ có những quyền hạn nhất định đối với tài nguyên mạng, khi thâm nhập vào mạng đối tượng đó chỉ được sử dụng một số tài nguyên nhất định
+ Bảo vệ theo chiều sâu (Defence InDepth):
Xây dựng hệ thống bảo vệ theo chiều sau để đảm bảo nâng cao hệ số an toàn
+ Nút thắt (Choke Point):
Tạo ra một “cửa khẩu” hẹp và chỉ cho phép thông tin đi vào hệ thống bằng con đường duy nhất chính, từ đó xây dựng tổ chức một cơ cấu kiểm soát và điều khiển thông tin đi qua cửa này
+ Điểm nối yếu nhất (Weakest Link):
Cần phải gia cố các vị trí yếu điểm nhất của hệ thống Thông thường chúng
ta chỉ quan tâm đến người tấn công trên mạng hơn là kẻ tiếp cận hệ thống, do đó an toàn vật lý được coi là yếu điểm nhất trong hệ thống của chúng ta
+ Tính toàn cục:
Các hệ thống an toàn đòi hỏi phải có tính toàn cục của các hệ thống cục bộ Nếu có thể bẻ gãy một cơ chế an toàn thì chúng có thể thành công bằng cách tấn công hệ thống tự do của ai đó và sau đó tấn công hệ thống từ nội bộ bên trong
- Tính đa dạng bảo vệ:
Cần phải sử dụng nhiều biện pháp bảo vệ khác nhau cho hệ thống khác nhau, nếu không có người tấn công vào được một hệ thống thì chúng cũng dễ dàng tấn công vào các hệ thống khác
Trang 131.1.4 An toàn thông tin bằng mật mã
Mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp truyền tin bí mật Mật mã bao gồm: Lập mã và phá mã Lập mã bao gồm hai quá trình: mã hóa và giải mã
Để bảo vệ thông tin trên đường truyền người ta thường biến đổi nó từ dạng nhận thức được sang dạng không nhận thức được trước khi truyền đi trên mạng, quá trình này được gọi là mã hoá thông tin (encryption), ở trạm nhận phải thực hiện quá trình ngược lại, tức là biến đổi thông tin từ dạng không nhận thức được (dữ liệu đã được mã hoá) về dạng nhận thức được (dạng gốc), quá trình này được gọi là giải
mã Đây là một lớp bảo vệ thông tin rất quan trọng và được sử dụng rộng rãi trong môi trường mạng
+ Che dấu nội dung của văn bản rõ (PlainText) để đảm bảo sao cho chỉ người chủ hợp pháp của thông tin mới có quyền truy cập thông tin (Secrety), hay nói cách khác là chống truy nhập không đúng quyền hạn
+ Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trong hệ thống đến người nhận hợp pháp là xác thực (Authenticity)
+ Tổ chức các sơ đồ chữ ký điện tử, đảm bảo không có hiện tượng giả mạo, mạo danh để gửi thông tin trên mạng
Ưu điểm lớn nhất của bất kỳ hệ mật mã nào đó là có thể đánh giá được độ phức tạp tính toán phải giải quyết bài toán để có thể lấy được thông tin của dữ liệu
đã được mã hoá Tuy nhiên mỗi hệ mật mã có một số ưu và nhược điểm khác nhau, nhưng nhờ đánh giá được độ phức tạp tính toán mà ta có thể áp dụng các thuật toán
mã hoá khác nhau cho từng ứng dụng cụ thể tuỳ theo độ yêu cầu về độ an toàn
Các thành phần của một hệ mật mã:
Một hệ mật mã là một bộ 5 (P,C,K,E,D) thoả mãn các điều kiện sau:
+ P: Là một tập hợp hữu hạn các bản rõ, nó được gọi là không gian bản rõ + C: Là tập hữu hạn các bản mã, nó được gọi là không gian bản mã Mỗi phần tử của C có thể nhận được bằng cách áp dụng phép mã hoá Ek lên một phần tử
của P, với k K
+ K: Là tập hữu hạn các khoá hay còn gọi là không gian khoá Đối với mỗi phần
tử k của K được gọi là một khoá Số lượng của không gian khoá phải đủ lớn để “kẻ địch” không có đủ thời gian để thử mọi khoá có thể (phương pháp vét cạn) Đối với
Trang 14mỗi k K có một quy tắc mã ek: PC và một quy tắc giải mã tương ứng dk D Mỗi
ek: P C và dk: CP là những hàm mà: Dk (ek(x))=x với mọi bản rõ x P
Hình 1: Mã hoá với khoá mã và khoá giải giống nhau
Để đánh giá một hệ mật mã người ta thường đánh giá thông qua các tiêu chí sau:
+ Độ an toàn: Một hệ mật được đưa vào sử dụng điều đầu tiên phải có độ an
toàn cao Ưu điểm của mật mã là có thể đánh giá được độ an toàn thông qua độ an toàn tính toán mà không cần phải cài đặt Một hệ mật được coi là an toàn nếu để phá
hệ mật mã này phải dùng n phép toán Mà để giải quyết n phép toán cần thời gian
vô cùng lớn, không thể chấp nhận được Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn sau:
- Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các khoá, công khai thuật toán
- Khi cho khoá công khai eK và bản rõ P thì chúng ta dễ dàng tính được
eK(P) = C Ngược lại khi cho dK và bản mã C thì dễ dàng tính được dK(M)=P Khi không biết dK thì không có khả năng để tìm được M từ C, nghĩa là khi cho hàm f: X Y thì việc tính y=f(x) với mọi x thuộc X là dễ còn việc tìm x khi biết y lại là vấn đề khó và nó được gọi là hàm một chiều
- Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ
+ Tốc độ mã và giải mã: Khi đánh giá hệ mật mã chúng ta phải chú ý đến tốc
độ mã và giải mã Hệ mật tốt thì thời gian mã và giải mã nhanh
Trang 15+ Phân phối khóa: Một hệ mật mã phụ thuộc vào khóa, khóa này được
truyền công khai hay truyền khóa bí mật Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các hệ mật có khóa công khai Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mật mã
Có nhiều cách để phân loại hệ mật mã Dựa vào cách truyền khóa có thể phân các Hệ mật mã thành hai loại:
- Hệ mật mã đối xứng (hay còn gọi là mật mã khóa bí mật): là những hệ mật
mã dùng chung một khoá cả trong quá trình mã hoá dữ liệu và giải mã dữ liệu Do
đó khoá phải được giữ bí mật tuyệt đối
- Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa công khai) : Hay còn gọi là hệ mật mã công khai, các hệ mật mã này dùng một khoá để mã hoá sau đó dùng một khoá khác để giải mã, nghĩa là khoá để mã hoá và giải mã là khác nhau Các khoá này tạo nên từng cặp chuyển đổi ngược nhau và không có khoá nào có thể suy được từ khoá kia Khoá dùng để mã hoá có thể công khai nhưng khoá dùng để giải mã phải giữ bí mật
Ngoài ra nếu dựa vào thời gian đưa ra hệ mật mã ta còn có thể phân làm hai loại: Mật mã cổ điển (là hệ mật mã ra đời trước năm 1970) và mật mã hiện đại (ra đời sau năm 1970) Còn nếu dựa vào cách thức tiến hành mã thì hệ mật mã còn được chia làm hai loại là mã dòng (tiến hành mã từng khối dữ liệu, mỗi khối lại dựa vào các khóa khác nhau, các khóa này được sinh ra từ hàm sinh khóa, được gọi là dòng khóa) và mã khối (tiến hành mã từng khối dữ liệu với khóa như nhau)
1.2 Một số hệ mã hóa thông dụng
1.2.1 Hệ mã RSA
Hệ mật mã RSA ra đời năm 1976 bởi các tác giả R.Rivets, A.Shamir, và L.Adleman Sơ đồ mã hoá RSA là sơ đồ mã hoá khối, đoạn tin được mã hoá từng khối với mỗi khối có giá trị < n với n là số nguyên đủ lớn RSA là hệ mã dựa vào bài toán logarit rời rạc và bài toán phân tích một số nguyên thành tích các thừa số nguyên tố, là
hệ mã được sử dụng rộng rãi nhất Nó cung cấp cả sự bí mật và chữ ký điện tử, và tính bảo mật của nó là cơ sở cho độ khó trong vấn đề tìm thừa số nguyên tố
Thuật toán
Tạo khoá:
Mỗi thực thể tạo một khoá công khai và một khoá riêng tương ứng
Thực thể A cần làm công việc sau:
Trang 161 Tạo 2 số nguyên tố lớn p và q bất kỳ có cỡ xấp xỉ nhau
2 Tính n = p×q và Ф(n)= (p-1)(q-1)
3 Chọn 1 số nguyên e, 1<e< Ф(n) sao cho UCLN(e, Ф(n)) = 1
4 Sử dụng thuật toán Euclid mở rộng để tính d, 1<d< Ф(n) sao cho: e×d 1 (mod Ф(n))
5 Khoá công khai của A là (n, e), khoá riêng của A là d
Mã hoá: B mã hoá một văn bản gửi cho A
1 Nhận được khoá xác thực công khai của A là (n, e)
2 Trình bày văn bản như một số nguyên m thuộc [0, n-1]
Mỗi số nguyên tố lớn có thể được phát sinh bằng cách đầu tiên tạo ra một số ngẫu nhiên lớn, sau đó kiểm tra các số kế tiếp cho tới khi tìm được một số nguyên
tố Các bước tính p dựa vào thuật toán Euclid
Độ an toàn của thuật toán RSA dựa trên cơ sở những khó khăn của việc xác định các thừa số nguyên tố của một số lớn
1.2.2 Hệ mã Rabin
Đây là hệ mật có độ an toàn cao về mặt tính toán chống lại được cách tấn công bản rõ
Thuật toán
Trang 17Tạo khoá: Mỗi thực thể tạo một khoá công khai và một khoá riêng tương ứng Mỗi thực thể A cần thực hiện các công việc sau:
1 Tạo hai số nguyên tố lớn p và q có cỡ xấp xỉ nhau
2 Tính n=p×q
3 Khoá công khai của A là n, khoá riêng của A là (p,q)
Mã hoá: B mã hoá văn bản m gửi cho A
1 Nhận được khoá công khai xác thực của A là n
2 Biểu diễn đoạn văn bản là một số nguyên trong miền: {0, 1, , n-1}
3 Tính c = m2 mod n
4 Gửi bản mã c cho A
Giải mã: Khôi phục bản rõ m từ c, cần phải dùng thuật toán tìm căn bậc hai
theo modulo n từ số nguyên tố p và q đã cho để tính ra 4 căn bậc hai m1, m2, m3 và
m4 của c theo modulo n Khi đó văn bản đã gửi là một trong các giá trị m1, m2, m3hoặc m4 A bằng cách này hay cách khác quyết định đâu là m
mở rộng này, và người nhận sẽ chọn đó là bản rõ mong đợi Nếu không có căn bậc 2 nào của c có phần mở rộng này thì người nhận từ chối Nếu phần mở rộng được sử dụng như đã nói ở trên, lược đồ Rabin không dễ bị tấn công bằng bản mã chọn trước
1.2.3 Hệ mã Elgamal
Hệ mã Elgamal xây dựng dựa trên bài toán logarit rời rạc là bài toán được dùng nhiều trong thủ tục mật mã
Thuật toán
Tạo khoá: Mỗi thực thể tạo một khoá công khai và một khoá riêng tương ứng
1 Tạo một số nguyên tố p và phần tử sinh nhóm nhân Z*
P
2 Chọn một số nguyên a, 1 a p-2, và tính a mod p
3 Khoá công khai của A là (p, , a); khoá riêng là a
Trang 18Mã hoá: B mã hoá văn bản m gửi cho A
1 Thu được khoá công khai của A (p, , a)
2 Biểu diễn văn bản như một số nguyên m trong {0, 1, ,p-1}
3 Chọn ngẫu nhiên một số nguyên k, 1kp-2
4 Tính k mod p và a k
m ( )
mod p
5 Gửi bản mã c = ( , ) cho A
Giải mã: Khôi phục bản rõ m từ c bằng việc tính ( 1 ) mod p
Chú ý: Một bất lợi của mã hoá Elgamal là sự mở rộng của văn bản, bản mã
có thể dài gấp 2 lần so với bản rõ Mã hoá Elgamal là một trong những lược đồ mã
hoá sử dụng sự ngẫu nhiên trong tiến trình mã hoá Những nguyên tắc cơ bản đằng sau kỹ thuật mã hoá ngẫu nhiên là sử dụng tính ngẫu nhiên để tăng thêm sự bảo mật
bằng mật mã của tiến trình mã hoá theo một trong các phương thức sau:
1 Tăng dần khoảng trống trong bản rõ một cách phù hợp
2 Ngăn ngừa hoặc làm suy giảm sự có hiệu lực của sự tấn công bản rõ chọn trước thông qua ánh xạ một - nhiều từ bản rõ đến bản mã
Tính bảo mật
Vấn đề bẻ khoá lược đồ mã hoá Elgamal, khôi phục m từ p, , a, , và
tương đương với giải quyết vấn đề Diff-Hellman Trên thực tế, lược đồ mã hoá Elgamal được xem như sự thay đổi khoá Diff-Hellman để quyết định khoá ak , và
việc mã hoá văn bản bằng tính nhân với khoá đó Vì lý do này, tính bảo mật của lược đồ mã hoá Elgamal được gọi là cơ sở trong vấn đề logarithm rời rạc trong Z*
P
1.2.4 Hệ mã MHK (Merkle -Hellman Knapsack)
Sơ đồ mã khoá công khai ba lô dựa trên cơ sở của bài toán tập con, quan điểm cơ bản là chọn một trường hợp của bài toán tổng con mà dễ dàng tìm lời giải, sau đó che giấu nó như một trường hợp của bài toán tổng con tổng quát khó có hy vọng giải được Khoá được thiết lập ban đầu có thể dùng như khoá riêng, còn khoá được thiết lập sau khi biến đổi là khoá công khai Sơ đồ mã hoá MHK che giấu lời giải bằng phép nhân theo modulo và phép hoán vị
Định nghĩa một dãy siêu tăng là một dãy các số nguyên dương (b1,b2, , bn)
Trang 192 Chọn số nguyên ngẫu nhiên W 1WM-1 sao cho UCLN(W, M) = 1
3 Chọn một phép hoán vị ngẫu nhiên của n số nguyên {1,2, ,n}
4 Tính ai = Wb(i) mod M với i = 1, 2, , n
5 Khoá công khai là (a1, a2, , an), khoá riêng là ( , M, W, (b1,b2, , bn))
Mã hoá: B mã hoá văn bản m gửi cho A
1 Thu được khoá công khai (a1, a2, , an) của A
2 Biểu diễn văn bản m như một chuỗi nhị phân có độ dài n, m=m1m2 mn
và sao cho các số nguyên b’i = U’ai mod M, 1 i n từ dãy siêu tăng Dãy này có
thể được một đối thủ sử dụng thay thế vào dãy (b1, b2, , bn) để giải mã văn bản
1.2.5 Hệ mật mã Rabin
Đây là hệ mật mã dựa trên độ phức tạp của việc tính căn bậc hai theo hợp số Đây là hệ mật mã có độ an toàn về mặc tính toán chống lại được tấn công bản rõ lựa chọn và không có khả năng phân tích được n=pq Thuật toán được ứng dụng rất nhiều trong thực tế
Quá trình tạo khóa:
Để tạo ra khóa A cần phải thực hiện các thao tác sau:
1 Chọn 2 số nguyên tố ngẫu nhiên p và q, thỏa mãn điều kiện sau: p q
Trang 20Quá trình giải mã:
Để giải mã bản mã c, A giải phương trình bậc hai sau:
)(mod0
2
n c
bM
Với M<n
Chúng ta chứng minh thuật toán này là một hệ mật, có nghĩa là quá trình giải
mã được thực hiện bởi A sẽ khôi phục lại bản rõ được mã hóa bới B
Giải phương trình bậc 2, chúng ta có nghiệm chung dạng:
)(mod
2
n c
bM
Có nghiệm trong *
n
Z Một trong các nghiệm của nó là số m, được gởi bởi
B Từ đây dẫn đến c phải là thặng dư bậc hai theo modulo n, hay là phần tử của nhóm QRn
1.2.6 Hệ mật mã McEliece
Hệ mật mã McEliece được đề xuất năm 1978, tác giả của nó là Robert McEliece Ý tưởng của bài toán này giống với ý tưởng của hệ mật mã Merkle-Hellman: Phép giải mã là trường hợp đặc biệt của bài toán NP đầy đủ
Gọi C[n,k] là mã tuyến tính, t là số bít bị sai khi truyền bản mã qua kênh nhiểu, các tham số này có liên quan với nhau bằng các hệ thức: m
n2 ,knmt
Để áp dụng trong thực tế hệ mật mã công khai McEliece đề nghị chọn 1024, t = 50
Hệ mật mã McEliece hình thành như sau:
A và B muốn truyền tin mật cho nhau bằng hệ mật mã McEliece Trước tiên
A phải hình thành khóa như sau:
Quá trình hình thành khóa:
Trang 211 A chọn mã tuyến tính C[n, k] có thể sửa được t lỗi Mã này phải có thuật toán giải mã hiệu quả
2 A tạo ra ma trận sinh G cấpkn cho mã C
y =(c’+e)P-1=(xSGP+e)P-1=xSG+e’
Ở đây e’ là véc tơ có trọng số là t A dùng thuật toán giải mã của mình để véc cạn các gía trị có thể của e’ và từ đó tìm xSG và từ đây chúng ta tính x dễ dàng bằng cách nhân với ma trận nghịch đảo
1.3 Giới thiệu về mật khẩu
1.3.1 Định nghĩa
Hiện nay, đăng nhập (log-on) là một khâu quan trọng trong đảm bảo an toàn cho hệ thống máy tính và mạng Thông thường, người dùng phải cung cấp một tên truy nhập (username) và mật khẩu (password) kèm theo để đăng nhập vào hệ thống Tên truy nhập là một tên do người dùng lựa chọn theo quy ước hệ thống đặt ra và phải duy nhất trong một hệ thống Trong khi tên truy nhập thường không cần giữ bí mật thì mật khẩu luôn cần giữ bí mật - chỉ người dùng biết mật khẩu của mình
Vậy mật khẩu là gì?
Trang 22Mật khẩu là một hay nhiều từ mà người dùng phải biết để được cấp quyền
truy cập, là một dạng thông tin đặc biệt như chuỗi các ký tự, hình ảnh, dấu vân tay… dùng để xác thực, chứng minh tính chính xác một người khi đăng nhập vào một hệ thống, một dịch vụ hay một ứng dụng nào đó
1.3.2 Phương pháp xác thực
Để đảm bảo an toàn, mật khẩu cần được giữ bí mật và chỉ bản thân người dùng mới biết Mật khẩu thường được sử dụng trong một thời gian dài và trao đổi thường xuyên giữa máy khách (client) của người sử dụng với máy chủ (server)
Sau khi người dùng gõ mật khẩu của mình, bên phía client sẽ xác thực mật khẩu với server Nếu mật khẩu đúng server sẽ xác nhận và cấp quyền truy nhập tương ứng cho client và qua đó tới người dùng
Hình 2: Minh họa xác thực mật khẩu
Trên thực tế, một mật khẩu an toàn cần thỏa mãn các yêu cầu sau:
Độ dài của mật khẩu phải từ 8 ký tự trở lên Khi độ dài mật khẩu đủ lớn, khả năng bị đoán hoặc tấn công vét cạn giảm đi;
Trang 23 Mật khẩu không nên chứa các từ đơn giản, dễ đoán, như tên người thân, tên con vật yêu thích, hoặc ngày tháng năm sinh Các mật khẩu như vậy thường dễ dàng bị dò tìm thông qua tấn công dựa trên từ điển;
Mật khẩu phải là tổ hợp của các chữ cái in hoa, in thường, chữ số và ký
tự đặc biệt (như các ký tự $ #, ) Khi số loại ký tự được sử dụng tăng lên, số tổ hợp mật khẩu có thể có trở lên rất lớn làm cho việc thực hiện tấn công vét cạn không khả thi
Kết luận
Trong chương 1, luận văn đã trình bày một số kiến thức cơ bản về an toàn và bảo mật thông tin, một số thuật toán mã hóa, khái niệm về mật khaur cvà ứng dụng trong bảo mật thông tin Các kiến thức này làm cơ sở để luận văn nghiên cứu về các nội dung quan trọng trong chương 2 và chương 3
Trang 24Chương 2 MỘT SỐ KHÁI NIỆM VỀ OTP CÁC PHƯƠNG PHÁP XÁC LẬP
Nội dung chính của chương 2 tập chung giới thiệu về mật khẩu OTP, các phương pháp xác lập và các ứng dụng của OTP Đây chính là trọng tâm của luận văn Các kiến thức cơ bản trong chương 2 được tham khảo trong các tài liệu [2, 3, 4, 7]
2.1 Giới thiệu về OTP
2.1.1 Định nghĩa OTP
Mật khẩu sử dụng một lần hay còn gọi là OTP (One time password), là
mật khẩu chỉ được sử dụng một lần hoặc chỉ có giá trị trong một phiên làm việc OTP có thể được sử dụng một lần trong xác thực người dùng cho một phiên làm việc hoặc xác thực một giao dịch của người dùng OTP thường được sử dụng trong các giao dịch điện tử hoặc các hệ thống xác thực có độ bảo mật cao
Xuất hiện từ đầu thế kỉ 20 và còn có tên gọi khác là Vernam Cipher, OTP được mệnh danh là cái chén thánh của ngành mã hóa dữ liệu OTP là thuật toán duy nhất chứng minh được về lý thuyết là không thể phá được ngay cả với tài nguyên vô tận (tức là có thể chống lại kiểu tấn công brute-force) Để có thể đạt được mức độ bảo mật của OTP, tất cả những điều kiện sau phải được thỏa mãn:
- Độ dài của chìa khóa phải đúng bằng độ dài văn bản cần mã hóa
- Chìa khóa chỉ được dùng một lần
- Chìa khóa phải là một số thực sự ngẫu nhiên
2.1.2 Ưu điểm
OTP có nhiều ưu điểm so với mật khẩu truyền thống Cụ thể:
+ An toàn: Giải quyết tốt các vấn đề giả mạo, đánh cắp, Key logger Đối với phương pháp xác thực hai yếu tố, OTP có thể được kết hợp sử dụng với một mã PIN hoặc mật khẩu thông thường
+ Dễ dàng sử dụng: Việc nhận dạng và xác thực được thực hiện trong vài giây, tránh được nguy cơ bị lỗi khi gõ các mã OTP dài qua các mã từ một thiết bị chứng thực vào một máy tính (Ví dụ OTP Token sử dụng màn hình hiển thị) Nó hoạt động với tài nguyên và đăng nhập được trên hầu hết các nền tảng máy tính và trình duyệt không cần cài đặt phần mềm Client chuyên dụng
+ Linh hoạt: Người dùng dễ dàng sử dụng cho các máy tính khác nhau và dễ mang theo thiết bị sinh OTP bên mình
Trang 25+ Mã nguồn mở: Sẵn sàng tích hợp với nhiều ứng dụng mã nguồn mở
Các giải pháp có thể ứng dụng OTP gồm: Web mail server, CRM (Hệ quản
lý khách hàng), ERP (Hoạch định nguồn lực doanh nghiệp), Hệ thống quản lý tài liệu, Thương mại điện tử
2.1.3 Nhược điểm
OTP sẽ mất an toàn khi chủ tài khoản bị mất thiết bị sinh OTP (OTP Token) hay người khác có thể xâm nhập vào hệ thống gửi/nhận tin nhắn SMS để biết được OTP mỗi khi khách hàng thực hiện giao dịch Ngoài ra, nếu như hệ thống mạng viễn thông bị chậm, quá tải hay vì lý do gì đó mà tin nhắn SMS gửi OTP đến chậm thì giao dịch dựa vào OTP chuyển giao qua SMS sẽ không thực hiện được
Hiện nay, do tiết kiệm chi phí đầu tư một số doanh nghiệp chỉ sử dụng hình thức xác thực qua tên định danh người dùng (username) và mật khẩu dùng một lần (OTP) chuyển giao đến người dùng qua tin nhắn SMS đến điện thoại di động Tên định danh người dùng dễ dàng bị lộ khi người dùng đăng nhập trên Internet, tham gia các hoạt động trên mạng xã hội hoặc diễn đàn…Còn OTP sẽ mất an toàn khi người dùng bị đánh cắp thẻ SIM điện thoại
2.2 Ứng dụng của OTP
2.2.1 Ứng dụng trong xác thực
Hiện nay, mật khẩu sử dụng một lần thường được sử dụng khá phổ biến trong lĩnh vực ngân hàng nhằm tăng tính bảo mật cho các giao dịch thanh toán như chuyển khoản, chuyển tiền,…Thông thường có hai hình thức xác thực giao dịch mà ngân hàng thường sử dụng, đó là:
+ Hệ thống sử dụng Token sinh OTP đồng bộ theo thời gian thực:
Hệ thống này sử dụng thời gian để đồng bộ việc sinh OTP giữa máy chủ và một thiết bị phần cứng được gọi là OTP Token (mỗi cá nhân sử dụng hệ thống sẽ được cấp một token cá nhân để sinh OTP theo thời gian thực)
Trang 26nhằm xác thực người sử dụng khi người sử dụng truy cập vào một chuỗi các ứng dụng có liên kết trong môi trường phân tán Người dùng chỉ cần cung cấp thông tin đăng nhập một lần và có thể truy nhập vào nhiều ứng dụng khác nhau trong hệ thống phân tán Như các ứng dụng và các tài nguyên khác nhau hỗ trợ các cơ chế xác thực khác nhau, SSO phải chuyển đổi nội bộ và lưu trữ các thông tin ủy quyền khác nhau để so sánh với những gì đã được sử dụng để xác thực trong lần đầu
Hình 3: Minh họa đăng nhập một lần
+ Đối với người dùng:
- Làm giảm sự mệt mỏi của người dùng khi phải đăng nhập nhiều lần vào các dịch vụ khác nhau;
- Làm giảm thời gian nhập lại mật khẩu cho cùng 1 danh tính;
- Có thể hỗ trợ các chứng thực thông thường như Windows Credentials (ID/password);
- Bảo mật trên tất cả các cấp trong việc truy cập, thoát khỏi hệ thống mà không gây bất tiện cho người sử dụng;
- Hệ thống SSO cung cấp cho người dùng công cụ xác thực đăng nhập một lần Công cụ này xác thực người dùng đăng nhập vào mọi hệ thống có tích hợp giải pháp SSO, vì vậy, người dùng chỉ cần nhớ một cặp tên truy cập/mật khẩu duy nhất
+ Đối với nhà cung cấp dịch vụ, quản trị hệ thống:
- Người quản trị chỉ cần bảo mật và quản lý thông tin đăng ký của người dùng một lần, vì vậy có thể giảm dung lượng cơ sở dữ liệu và tránh được các xung
Trang 27đột nảy sinh do phải xử lý mật khẩu của các hệ thống khác nhau, tăng khả năng mở rộng và triển khai các chiến lược bảo mật
- Người quản trị có thể thay đổi và cập nhật thông tin được bảo mật của người dùng khi cần thiết, một cách dễ dàng hơn so với việc thay đổi ở từng hệ thống riêng lẻ mà người dùng đó được phép truy cập Điều này rất hữu ích khi người dùng thay đổi vị trí của mình với các cấp độ bảo mật khác nhau
Những nhược điểm của SSO:
- Làm tăng các tác động tiêu cực trong trường hợp thông tin có sẵn cho người khác và được sử dụng sai Vì vậy khi xây dựng SSO cần tập trung tăng cường bảo vệ thông tin người dùng, do đó nên kết hợp các phương pháp xác thực mạnh, như thẻ thông minh hoặc password dùng một lần
- Yêu cầu về hệ thống xác thực rất quan trọng, chỉ cần hệ thống bị lỗi hoặc ko tiếp cận được với hệ thống, người dùng sẽ không truy cập được vào tất cả các dịch vụ trong hệ thống Cần đảm bảo việc truy cập được thực hiện mọi lúc và an toàn
Mặc dù có một số nhược điểm, nhưng giải pháp SSO vẫn đang được triển khai rộng rãi ở nhiều nước trên thế giới, trong nhiều hệ thống thông tin có nhu cầu xác thực và bảo mật Nó được đánh giá là một trong các giải pháp hiệu quả, tiện dụng và kinh tế khi triển khai trên diện rộng
Các hệ thống xác thực SSO đang được sử dụng rộng rãi là: CAS (Central Authentication Service), WebAuth RSA Single Sign On Manager, Open Single Sign - On (OpenSSO) hoạt động dựa trên Token, Java Open SSO (JOSSO)
+ Open SSO Enterprise
OpenSSO là một sản phẩm mã nguồn mở của SUN Nó là một sản phẩm đơn
lẻ, kết hợp các tính năng của Sun Java System Access Manager, Sun Java System Federation Manager và Sun System SAML v2 Java Plugin, kiểm soát truy nhập, đảm bảo an toàn các dịch vụ web và các dịch vụ định danh Web Khi truy cập vào những tài nguyên được bảo vệ của người dùng, yêu cầu truy cập cần được xác thực và phải
có đủ quyền truy cập Khi một người gửi yêu cầu để truy cập tài nguyên được bảo vệ, policy agent chặn yêu cầu này và kiểm tra Nếu OpenSSO token được tìm thấy không hợp lệ, policy agent sẽ yêu cầu máy chủ tiến hành xác thực và cấp phép
Trang 28Hình 4: Mô hình đăng nhập duy nhất SSO
Policy agent là ứng dụng web với nhiệm vụ ngăn tất cả yêu cầu đến ứng dụng,
để kiểm tra xem người dùng đã xác thực hay chưa
Hình 5: Cơ chế hoạt động của openSSO
Cơ chế hoạt động của OpenSSO như sau:
Trang 29- Từ trình duyệt, người dùng kết nối đến ứng dụng web
- Policy Agent sẽ kiểm tra token có tồn tại trong URL hay không Nếu token chưa tồn tại thì Policy Agent sẽ chuyển trình duyệt đến OpenSSO máy chủ
- OpenSSO máy chủ xác thực người dùng thông qua trang đăng nhập Người dùng nhập tên truy cập/mật khẩu để xác thực
- OpenSSO (tạo ra session cho người dùng và kích hoạt nó nếu xác thực thành công)
- OpenSSO gửi token cho trình duyệt (trình duyệt sẽ lưu token dưới dạng cookie) và Trình duyệt sẽ gửi token đến cho Agent
- Policy Agent sẽ lấy thông tin token gửi đến OpenSSO máy chủ để kiểm tra
- OpenSSO sẽ gửi thông tin đăng nhập (tên truy cập, mật khẩu) và thông tin vai trò đến Agent nếu kiểm tra token hợp lệ
- Policy Agent sẽ quyết định cho phép truy cập ứng dụng hay không và ghi thông tin session trên URL
+ Giải pháp Dịch vụ xác thực trung tâm CAS
CAS (Central Authenticate Service) là một giải pháp SSO mã nguồn mở được phát triển bởi đại học Yale, với các tính năng như sau:
- CAS hỗ trợ nhiều thư viện phía máy khách được viết bởi nhiều ngôn ngữ: PHP, Java, PL/SQL Nó lấy thông tin SSO thông qua cookie Cookie này sẽ bị hủy khi người dùng đăng xuất khỏi CAS hoặc đóng trình duyệt Cookie được sinh ra bởi CAS, còn được gọi là TGC (Ticket Granting Cookie) chứa một ID duy nhất
- CAS cung cấp nhiều trình quản lý xác thực (authenticate handler) khác nhau CAS xác thực nhiều loại thông tin người dùng như tên truy cập/mật khẩu, chứng chỉ khóa công khai X509, để xác thực những thông tin người dùng khác nhau này, CAS sử dụng những trình quản lý xác thực tương ứng
- CAS cung cấp tính năng “Remember me” Người phát triển có thể cấu hình tính năng này trong nhiều file cấu hình khác nhau và khi người dùng chọn
“Remember me” trên khung đăng nhập, thì thông tin đăng nhập sẽ được ghi nhớ với thời gian được cấu hình Khi người dùng mở trình duyệt thì CAS sẽ chuyển đến service URL tương ứng mà không cần hiển thị khung đăng nhập
Nguyên tắc hoạt động của CAS như sau:
Chứng thực người dùng với máy chủ CAS
- Người dùng nhập tên truy cập/mật khẩu vào khung đăng nhập Các thông tin này được truyền cho CAS máy chủ thông qua giao thức HTTPS
Trang 30- Xác thực thành công, TGC được sinh ra và thêm vào trình duyệt dưới hình thức là cookie TGC này sẽ được sử dụng để đăng nhập với tất cả các ứng dụng
Hình 6: Người dùng truy cập vào ứng dụng khi đã chứng thực với CAS máy chủ
Truy cập vào ứng dụng của người dùng
Trường hợp người dùng truy cập vào ứng dụng khi đã chứng thực với CAS máy chủ:
- Người dùng truy xuất ứng dụng thông qua trình duyệt
- Ứng dụng lấy TGC từ trình duyệt và chuyển nó cho CAS máy chủ thông qua giao thức HTTPS
- Nếu TGC này là hợp lệ, CAS máy chủ trả về một Service Ticket (ST) cho trình duyệt, trình duyệt truyền ST vừa nhận cho ứng dụng
- Ứng dụng sử dụng ST nhận được từ trình duyệt và sau đó chuyển nó cho CAS máy chủ
- CAS máy chủ sẽ trả về ID của người dùng cho ứng dụng, mục đích là để thông báo với ứng dụng là người dùng này đã được chứng thực bởi CAS máy chủ
- Ứng dụng đăng nhập cho người dùng và bắt đầu phục vụ người dùng Trường hợp người dùng truy cập vào ứng dụng mà chưa chứng thực với CAS máy chủ:
- Người dùng truy xuất ứng dụng thông qua trình duyệt Vì chưa nhận được TGC nên ứng dụng sẽ chuyển hướng người dùng cho CAS máy chủ
- Người dùng cung cấp tên truy cập/mật khẩu của mình thông qua khung đăng nhập để CAS xác thực Thông tin được truyền đi thông qua giao thức HTTPS
Trang 31- Xác thực thành công, CAS máy chủ sẽ trả về cho trình duyệt đồng thời cả TGC và ST
- Trình duyệt sẽ giữ lại TGC để sử dụng cho các ứng dụng khác (nếu có) và truyền ST cho ứng dụng nêu trên
- Ứng dụng chuyển ST cho CAS máy chủ và nhận về ID của người dùng
- Ứng dụng đăng nhập cho người dùng và bắt đầu phục vụ người dùng
Hình 7: Người dùng truy cập ứng dụng mà chưa chứng thực với CAS
2.3 Giới thiệu về hàm băm mật mã, các thuật toán
2.3.1 Giới thiệu
Khái niệm
Hàm băm mật mã là hàm toán học chuyển đổi một thông điệp có độ dài bất kỳ thành một dãy bit có độ dài cố định (tùy thuộc vào thuật toán băm) Dãy bit này được gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu Các hàm băm đóng vai trò cơ bản trong mật mã hiện đại
Mục tiêu của hàm băm (H) tạo ra bản nhận dạng (fingerprit) cho một tập tin, thông điệp hay một khối dữ liệu truyền đi nhằm đảm bảo tính toàn vẹn
+ H có thể được áp dụng trên khối dữ liệu có độ dài tùy ý
+ H tạo đầu ra có độ dài cố định
Trang 32+ H(x) tính toán đối với mọi x tương đối dễ dàng, tạo điều kiện cho việc cài đặt trên phần cứng lẫn phần mềm được thực hiện một cách dễ dàng
+ Với bất kì giá trị băm h, không thể tính được x để sao cho H(x)=h người ta gọi là hàm băm 1 chiều
+ Với bất kì giá trị x không thể tính được y khác x sao cho H(x)=H(y) Tính chất này được gọi là tính bền xung đột yếu (weak collision resistance)
+ Không thể tìm được 1 cặp (x, y) để H(x)=H(y) Tinh chất này được gọi là tính bền xung đột mạnh (strong collision resistance)
Phân loại hàm băm mật mã
Hình 8: Sơ đồ phân loại hàm băm
Hàm băm mật mã có khóa là hàm băm có dữ liệu đầu vào ngoài thông điệp
ra còn có thông điệp khác là một khóa bí mật, nếu không có khóa bí mật này thì không thể băm thông điệp đầu vào theo đúng yêu cầu Các hàm băm có khoá được
sử dụng để xác thực thông báo và thường được gọi là các thuật toán tạo mã xác thực thông báo (MAC)
Hàm băm không khóa là hàm băm có dữ liệu đầu vào chỉ là thông điệp, không chứa khóa Hàm băm không khóa có một số tính chất như sau:
Tính khó va chạm
Tính khó tính toán nghịch ảnh
Khó tìm nghịch ảnh thứ hai
Hàm băm không khóa bao gồm các lớp con MDC Các MDC được sử dụng
để tạo ra ảnh đặc trưng của thông điệp, đảm bảo sự toàn vẹn của dữ liệu
2.3.2 Cấu trúc, vai trò của hàm băm mật mã
Cấu trúc của hàm băm mật mã
Trang 33Thành phần chính của một hàm băm là một hàm nén và các hàm biến đổi khác Hàm nén được thực thi nhiều lần để băm thông điệp ban đầu của hàm băm thành một chuỗi có chiều dài cố định Các hàm biến đổi khác (có thể có hoặc không) nhận vào chuỗi bít sau lần cuối cùng thực thi hàm nén và cho kết quả chính là mã băm cuối cùng của hàm băm
Hình 9: Cấu trúc tổng quát của hàm băm
Có rất nhiều thuật toán hàm băm cho đến nay sử dụng chung một cấu trúc cơ bản Cụ thể, một hàm băm thường gồm các bước như sau:
Bước 1: Phân chia thông điệp đầu vào chiều dài hữu hạn thành các khối thông điệp con liên tiếp có chiều dài cố định r (giả sử là m, m2, m3, … mk)
Bước 2: Do m có độ dài bất kỳ nên luôn có một bước thêm các bit phụ sao cho chiều dài chuỗi mới m’ chia hết cho r (trong các bit thêm thường thêm 64 bit để lưu lại chiều dài ban đầu của chuỗi trước khi chèn)
Bước 3: Đưa khối thông điệp con m1, m2, m3, , mk sẽ lần lượt đi qua một hàm nén f của hàm băm h(m)
Bước 4: Kết quả của khối thứ mi-1 sau khi đi qua hàm nén f sẽ là nguồn dữ liệu đầu vào cho bước thứ i tiếp theo
2.3.3 Một số hàm băm mật mã thông dụng
Hàm băm MD4
Hàm MD4 (Message Digest Algorithm 4): Là một hàm băm 128 bit được thiết
kế bởi Ronald Rivest vào năm 1990 Mục tiêu thiết kế của MD4 là để tìm được hai thông điệp có cùng mã băm thì cần khoảng 264 phép toán và để tìm được tiền ảnh của một mã băm thì cần khoảng 2128 phép toán Nhưng đến nay mục tiêu đó đã bị thất bại Xung đột của MD4 có thể tìm thấy với khoảng 220 phép toán
Hàm băm MD5
Trang 34Được phát triển bởi Ron Rivest tại đại học MIT Hàm MD5 là một hàm băm
độ dài 128 bit Nó là hàm băm cải tiến của MD4 Đầu vào là những khối 512 bit, được chia cho 16 khối con 32 bit Đầu ra của thuật toán là một thiết lập của 4 khối
32 bit để tạo thành một hàm băm 128 bit duy nhất Giải thuật được thực hiện theo 5 bước như sau:
Bước 1: Nhồi dữ liệu
+ Nhồi thêm các bits sao cho dữ liệu có độ dài I=n*512 +448
+ Việc thực hiện nhồi dữ liệu ngay cả khi dữ liệu ban đầu có độ dài mong muốn tức là nếu dữ liệu có độ dài 448 thì cũng được nhồi thêm 512 để thu được độ dài 960 bits
+ Số lượng các bits nhồi thêm nằm trong khoảng từ 1 đến 512
+ Các bits được nhồi gồm bít 1 và các bits 0 theo sao
Bước 2: Thêm vào độ dài
+ Độ dài của khối dữ liệu ban đầu được biểu diễn dưới dạng nhị phân 64 bit
và được thêm vào cuối chuỗi nhị phân kết quả của bước 1
+ Nêó đội dài của khối dữ liệu >264, thì chỉ 64 bits thấp nhất được sử dụng nghĩa là giá trị thêm vào bằng K mod 264
+ Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là bội số của
512 Khối dữ liệu được biểu diễn
Bằng một dãy L khối 512 bit Y0, Y1,…,YL-1
Bằng một dãy N từ 32 bit M0, M1, …, MN-1
Bước 3: Khởi tạo bộ đệm MD (MD buffer)
+ Một bộ đệm 128 bit được dùng để lưu trữ các giá trị băm trung gian và kết quả Bộ đệm được biểu diễn bằng 4 thanh ghi 32 bit với các giá trị khởi thạo ở dạng little-endian (byte có trọng số nhỏ nhất trong từ nằm ở địa chỉ thấp nhất) như sau:
Trang 35D=76 54 32 10
Bước 4: Xử lý các khối dữ liệu 512 bit
+ Trọng tâm của giải thuật là hàm nén (Compression function) gòm 4 vòng
xử lý, các vòng này có cấu trúc khác nhau nhưng sử dụng các hàm logic khác nhau
Bước 5: Xuất kết quả
Sau khi xử lý hết L khối 512 bit, đầu ra của lần xử lý thứ L là giá trị băm 128 bits
Giải thuật MD5 được tóm tắt như sau
+ CV0=IV
+ CVq+1=Sum32[CVq,RFI(Yq,RFH(Yq,RFG(Yq,RFF(Yq,CVq))))]
Trong đó
IV là bộ đệm gồm 4 thanh ghi ABCD
Yq là khối dữ liệu thứ q gồm 512 bits
L là số khối 512 bit sau khi nhồi dữ liệu
CVq là đầu ra của khối thứ q sau khi áp dụng hàm nén
RFx là hàm luận lý sử dụng trong các vòng (F,G,H,I)
MD là giá trị băm (message digest)
Trang 36lại kết quả dài 224 bit), 256 ( trả lại kết quả dài 256 bit), 384 và
512 ( trả lại kết quả dài 512 bit) Bốn thuật giải sau thường được gọi chung là
SHA-2 Bảng dưới đây thể hiện các tính chất cơ bản của bốn thuật toán băm an toàn
+ Nhận xét về họ hàm băm SHA
SHA là họ hàm băm được coi là an
toàn bởi:
+ Cho một giá trị băm nhất định được tạo
nên bởi một trong những thuật giải SHA,
việc tìm lại được đoạn dữ liệu gốc là
không khả thi
+ Việc tìm được hai đoạn dữ liệu nhất
định có cùng kết quả băm tạo ra bởi
một trong những thuật giải SHA là
không khả thi Bất cứ thay đổi nào trên
đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo
nên một giá trị băm hoàn toàn khác với
xác suất rất cao.SHA - 1 được sử dụng
rộng rãi trong nhiều ứng dụngvà giao
thức an ninh khác nhau SHA - 1 được
coi là thuật giải thay thế cho MD5, một
thuật giải băm 128 bit khác
Hiện nay, SHA-1 không còn được coi
là an toàn bởi đầu năm 2005, ba nhà mật mã học người Trung Quốc đã phát triển thành công một thuật toán dùng để tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi SHA-1 Mặc dù chưa có ai làm được điều tương tự với SHA-2, nhưng
vì về thuật toán, SHA-2 không khác biệt mấy so với SHA-1 nên nhiều nhà khoa học đã bắt đầu phát triển một thuật toán khác tốt hơn SHA NIST cũng đã khởi đầu một cuộc thi phát triển thuật toán băm mới an toàn hơn SHA, giống như quy trình phát triển chuẩn mã hóa nâng cao AES
Trang 37Thuật toán mã hóa SHA-1
Giới thiệu chung:
SHA-1 là một thuật toán được sử dụng rộng rãi trong nhiều ứng dụng và giao thức an ninh khác nhau, bao gồm TLS và SSL, PGP, SSH, S/MIME và IPSec
SHA-1 được coi là giải thuật thay thế MD5 Ba thuật toán SHA có cấu trúc khác
nhau và được phân biệt là: SHA-0, SHA-1, và SHA-2 SHA-1 gần tương tự như
SHA-0, nhưng sửa chữa một lỗi trong các đặc tả kỹ thuật gốc của hàm băm SHA dẫn đến những điểm yếu quan trọng Các thuật toán SHA-0 đã không được sử dụng trong nhiều ứng dụng SHA-2 mặt khác có những điểm khác biệt quan trong so với hàm băm SHA-1 Việc phân loại các hàm băm SHA được đưa ra trong bảng sau đây:
Thuật toán
Kích thước đầu ra
Kích thước
Kích thước tin nhắn tối đa
Kích thước
từ
Xung quanh
Các va chạm tìm thấy?
DL Các SHA-1 cũng có thể sử dụng bất cứ khi nào nó là cần thiết để tạo ra 1 phiên bản đặc biệt của tin nhắn Hàm SHA-1 còn được sử dụng trên Wii của Nintendo để xác minh chữ ký thời gian khởi động
SHA-1 và SHA-2 là những thuật toán băm an toàn theo yêu cầu của pháp luật
để sử dụng trong một số ứng dụng của Chính Phủ Hoa Kỳ, bao gồm cả sử dụng trong các thuật toán mã hóa khác và các giao thức, để bảo vệ thông tin mật nhạy cảm