Với tính năng của chữ ký số: “Bảo mật”; “Xác thực người dùng”, chúng tôi dự kiến sẽ nghiên cứu phát triển các ứng dụng sử dụng chữ ký số để nó đáp ứng các tính năng nhằm bước đầu tạo ra
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
VŨ VĂN LUẬT
NGHIÊN CỨU VÀ PHÁT TRIỂN ỨNG DỤNG CHỮ KÝ SỐ TRÊN THIẾT BỊ CẦM TAY
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS TRỊNH NHẬT TIẾN
HÀ NỘI – Năm 2014
Trang 3LỜI CẢM ƠN
Việc quay trở lại trường học, được học tại Trường Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội là đã là một lựa chọn đúng đắn và rất tốt cho cá nhân tôi để được tiếp thu nền tảng khoa hoặc căn bản áp dụng triển khai vào trong các dự án và sản phẩm thực tế mà cá nhânđề ra để phát triển, tham gia phát triển và điều hành phát triển
Khi học tại môi trường nơi đây, cá nhân tôi vẫn thấy nơi đây còn giữ được nét trong sáng của môi trường học đường, một môi trường đào tạo có thể nói là tương đối nghiêm túc về học thuật Ở đây cá nhân thực sự vẫn thấy cái tình sâu nặng trong cách đào tạo của các thầy cô, không phải dùng tiền mà mua điểm, nhiều thầy cô thậm chí không nhận một chút quà cảm ơn của các lớp sau mỗi môn học mặc dù đó là tình cảm bình thường các thế hệ học viên chúng tôi hầu hết đã đi làm
Là học viên tại Trường tôi thấy thật sự biết ơn, tri ơn các thầy cô và gửi lời cảm
ơn sâu sắc đến các thế hệ thầy cô tại Trường đã xây dựng lên ngôi trường, đã đào tạo
chúng tôi Đặc biệt cảm ơn đến thầy giáo PGS.TS Trịnh Nhật Tiến đã tận tình hướng
dẫn, chỉ dậy và cung cấp các tài liệu khoa học, đóng góp cho tôi những nhận xét, những đề xuất quý giá trong thời gian thực hiện luận văn
Tôi xin chân thành cảm ơn bạn bè, đồng nghiệp của tôi đặc biệt mọi người
trongTrung tâm Dịch vụ Chứng thực Điện tử VDC-CA Cảm ơn vợ yêu Đặng Thị Thanh Huyền và hai đứa con dấu yêu Vũ Việt Đích và Vũ Minh Khuê là là điểm tựa,
là nguồn động viên tình thần lớn lao, không ngại vất vả để điều kiện cho tôi đi học, làm việc vào các buổi tối để hoàn quá trình học tập cao học và hoàn thành luận văn này
Hà nội, ngày 30 tháng 10 năm 2014
VŨ VĂN LUẬT
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình do tôi khởi xướng, nghiên cứu,và phát triển Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công
bố trong bất kỳ công trình nào khác
Hà Nội, ngày 30 tháng 10 năm 2014
VŨ VĂN LUẬT
Trang 5MỤC LỤC
MỞ ĐẦU 1
1 LÝ DO LỰA CHỌN ĐỀ TÀI 1
2 MỤC TIÊU VÀ MỤC ĐÍCH CỦA NGHIÊN CỨU 1
3 NHIỆM VỤ NGHIÊN CỨU 2
4 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
Chương 1.TỔNG QUAN VỀ CHỮ KÝ SỐ 3
1.1 TÌNH HÌNH TRIỂN KHAI CHỮ KÝ SỐ TRÊN THẾ GIỚI VÀ TẠI VIỆT NAM 3
1.2 CÁC KHÁI NIỆM VỀ CHỮ KÝ SỐ 4
1.3 NGHIÊN CỨU TỔNG QUAN VỀ CHỮ KÝ SỐ TRÊN THIẾT BỊ DI ĐỘNG 6
1.3.1 Nhu cầu thực tiễn 6
1.3.2 Tình hình triển khai trên thế giới 8
1.3.3 Các vấn đề về kỹ thuật công nghệ 8
Chương 2 NGHIÊN CỨU CƠ SỞ LÝ THUYẾT VÀ MỘT SỐTIÊU CHUẨN VỀ CHỮ KÝ SỐ 10
2.1 CƠ SỞ LÝ THUYẾT 10
2.1.1 Khái niệm“Chữ ký số” 10
2.1.1.1 Giới thiệu 10
2.1.1.2 Sơ đồ chữ ký số 11
2.1.2 Phân loại “Chữ ký số” 12
2 2 Chữ ký RSA 13
2.2.1 Sơ đồ chữ ký 13
2.2.2 Độ an toàn của chữ ký RSA 14
2.3 CHUẨN PKCS#1 v2.2 15
2.3.1 Giới thiệu 15
2.3.2 Các biểu tượng 15
2.3.3 Các loại khóa 17
2.3.4 Các nguyên hàm mật mã 19
2.3.4.1 Các nguyên hàm mã hóa và giải mã 19
2.3.4.2 Các nguyên hàm ký số và kiểm tra chữ ký 21
2.3.5 Tổng quan về các lược đồ 23
2.3.6 Các lược đồ mã hóa 23
2.3.6.1 Toán tử mã hóa 23
2.3.6.2 Toán tử giải mã 26
2.3.7 Các lược đồ chữ ký 28
2.2.7.1 Toán tử sinh chữ ký 28
2.3.7.2 Toán tử kiểm tra chữ ký 29
2.4 CHUẨN PKCS#11 31
Trang 62.4.1 Giới thiệu 31
2.4.2 Mục tiêu thiết kế 31
2.4.3 Mô hình chung 32
2.4.4 Khung nhìn logic của một token 33
2.4.5 Người dùng 35
2.4.6 Các ứng dụng sử dụng Cryptoki 35
2.4.6 Một số vấn đề an ninh cần xem xét 36
Chương 3 PHÂN TÍCH THIẾT KẾ CÁC ỨNG DỤNG TRIỂN KHAI CHỮ KÝ SỐ TRÊN MOBILE 38
3.1 THÀNH PHẦN KIẾN TRÚCỨNG DỤNG 38
3.2 THIẾT KẾ CÁC MÔ HÌNH MẬT MÃ VÀ CHỮ KÝ SỐ 40
3.2.1 Mật mã bất đối xứng và đối xứng kế hợp 40
3.2.2 Mô hình sử dụng hạ tầng mã khóa công khai để đăng nhập hệ thống 41
3.2.3 Ký dữ liệu 42
3.2.4 Mô hình xác thực chữ ký số 42
3.3 THIẾT KẾ CHỨC NĂNG 43
3.3 THIẾT KẾ KIẾN TRÚC 45
3.3.1 Kiến trúc Mobile PKI Soft Token App 45
3.3.2 Kiến trúc Secured SMS App 46
3.3.3 Kiến trúc Secured Email Client App 48
3.3.4 Kiến trúc Signing Apps 51
3.3 Các mô hình thiết kế UseCase 52
3.4 Một số thiết kế màn hình 59
3.4.1 Một số màn hình thiết kế Soft Token 59
3.4.2 Một số màn hình thiết kế SMS 61
3.4.3 Thiết kế một số màn hình Secured Email Client 63
3.4.4 Thiết kế Signing Apps 65
KẾT LUẬN 68
1 NHỮNG CÔNG VIỆC MÀ LUẬN VĂN ĐÃ ĐẠT ĐƯỢC 68
2 KHẢ NĂNG PHÁT TRIỂN CỦA LUẬN VĂN 68
TÀI LIỆU THAM KHẢO 69
PHỤ LỤC 70
Phụ lục 1: CÀI ĐẶT CÁC HÀM CƠ SỞ 70
Phụ lục 2: CÀI ĐẶT HÀM MÃ HÓA VÀ GIẢI MÃ 74
Phụ lục 3: CÀI ĐẶT HÀM KÝ SỐ VÀ KIỂM TRA CHỮ KÝ SỐ 75
Trang 7DANH MỤC HÌNH ẢNH
Hình 1:Toán tử mật mã EME-OAEP 26
Hình 2: Mô hình Cryptoki chung 32
Hình 3: Phân cấp đối tƣợng 34
Hình 4: Kiến trúc thành phần 39
Hình 5: Mô hình mật kết hợp để thực hiện bảo mật dữ liệu 40
Hình 6: Mô hình đăng nhập hệ thống dùng chữ ký số 41
Hình 7: Mô hình ký, kiểm tra trạng thái chứng thƣ số trong thực tế 42
Hình 8: Mô hình kiểm tra chữ ký số tổng thể 43
Hình 9: Chức năng Soft Token 44
Hình 10: Chức năng Email Client 45
Hình 11: Kiến trúc của Soft Token 46
Hình 12: Kiến trúc tổng quan của Secured SMS 47
Hình 13: Quy trình mã hóa 47
Hình 14: Quy trình giải mã 48
Hình 15: Kiến trúc của Secured Email Client 49
Hình 16: Quy trình tạo Email 49
Hình 17: Quy trình mã hóa Email 50
Hình 18: Mô hình kiến trúc Signing Apps 51
Hình 19: Giao diện đăng nhập Soft Token 59
Hình 20: Giao diện danh sách chứng thƣ số 60
Hình 21: Giao diện tạo chứng thƣ số 60
Hình 22: Giao diện thông tin chứng thƣ số 61
Hình 23: Giao diện đăng nhập Secured SMS 62
Hình 24: Giao diện duyệt tin nhắn 63
Hình 25: Giao diện gửi tin nhắn 63
Hình 26: Giao diện tạo tài khoản Email 64
Hình 27: Giao diện danh sách Email 64
Hình 28: Giao diện mã hóa và ký email 65
Hình 29: Giao diện lựa chọn loại File để ký 65
Hình 30: Giao diện ký file 66
Hình 31: Giao diện lựa chọn chữ ký số 66
Hình 32: Giao diện đăng nhập nhập truy xuất chữ ký số 67
Hình 33: Giao kết quả ký 67
Trang 8DANH MỤC CÁC TỪ VIẾT TẮT
hồi, danh sách này đƣợc các nhà cung cấp dịch
vụ chữ ký số cung cấp
công khai và mã hóa đối xứng để áp dụng bảo
mật kênh truyền tin
số
Trang 9MỞ ĐẦU
1 LÝ DO LỰA CHỌN ĐỀ TÀI
Việc giao dịch điện từ càng ngày trở nên càng mặc nhiên, trước đây mọi thông tin trao đổi qua giấy tờ, giờ đây hầu hết qua các cuộc gọi, tin nhắn, mạng xã hội và Email.Các vấn đề thương mại điện tử đã và đang phát triển mạnh mẽ, giờ rất nhiều giao dịch đã thực hiện hoàn toàn qua mạng, thanh toán qua mạng tuy nhiên có thể nói chưa triệt để Một xu hướng mọi giao dịch thông qua kênh điện tử ngày càng cao, xu hướng tất yếu
sẽ triển khai và có lẽ cả thế giới của bạn nằm trong một chiếu smartphone.Có thể nói một xu hướng phát triển như thế nhưng càng ngày chúng ta càng thấy các vấn đề xác thực và bảo mật chưa được thực sự quan tâm một cách chính đáng cho các sản phẩm dịch vụ
Trên thế giới việc phát triển các ứng dụng chữ ký số cho nền tảng thiết bị Mobile chưa thực sự được triển khai rộng rãi về mặt ứng dụng tương tự như máy tính Với tính năng của chữ ký số: “Bảo mật”; “Xác thực người dùng”, chúng tôi dự kiến sẽ nghiên cứu phát triển các ứng dụng sử dụng chữ ký số để nó đáp ứng các tính năng nhằm bước đầu tạo ra nền tảng “Bảo mật” và “Xác thực” cho người dùng sử dụng smartphone trong các giao dịch điển tử để nhằm mở toang cánh cửa giao dịch điện tử
ra để mọi người hoàn toàn tự tin giao dịch các giao dịch điện tử như giao dịch trực tiếp
Chính vậy chúng tôi quyết định lựa chọn đề tài “Nghiên cứu và phát triển ứng dụng chữ ký số trên thiết bị cầm tay”
2 MỤC TIÊU VÀ MỤC ĐÍCH CỦA NGHIÊN CỨU
Mục đích
- Nghiên cứu tình hình bảo mật, xác thực cá nhân để trên nền điện thoại di động trong nước và quốc tế
- Nghiên cứu các tiêu chuẩn về kỹ thuật và công nghệ liên quan đến chữ ký số để
áp dụng và các giải pháp bảo mật, xác thực cá nhân
- Nghiên cứu phát triển các ứng dụng để quản lý, bảo mật và xác thực người dùng cá nhân trong các giao dịch
Mục tiêu tạo ra các sản phẩm
- Soft Token: Ứng dụng tạo, quản lý, lưu trữ các khóa số chứng thư số, một cách bảo mật tuân theo các chuẩn chuẩn công nghiệp toàn cầu
Trang 10- Ứng dụng ký các file PDF, Office trên nền Mobile
- Ký số và bảo mật Email
- Bảo mật SMS
- Ứng dụng tích hợp phục vụ cho xác thực, bảo mật các giao dịch thương mại điện tử, ngân hàng, chứng khoán, thanh toán trực tuyến
3 NHIỆM VỤ NGHIÊN CỨU
- Nghiên cứu, hệ thống hóa cơ sở lý thuyết, các chuẩn công nghiệp, về chữ ký số
để áp dụng vào phát triển các ứng dụng chữ ký số trên nền Mobile
- Mô tả, đánh giá thực trạng, nhu cầu triển khai triển khai áp dụng chữ ký số, các lĩnh vực áp dụng chữ ký số và khả năng mở của nó
- Đề xuất và phát triển các ứng dụng, giải pháp đáp ứng các yêu cầu
4 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Dối tượng nghiên cứu
- Các vấn đề bảo mật và xác thực thông tin cá nhân
- Các ứng dụng và giải pháp đáp ứng nhu cầu bảo mật và xác thực của cá nhân
Phạm vi nghiên cứu
- Nghiên cứu tình hình chung trên thế giới và Việt Nam
- Thời gian trong khoảng từ 2012-2014
Trang 11Chương 1.TỔNG QUAN VỀ CHỮ KÝ SỐ 1.1 TÌNH HÌNH TRIỂN KHAI CHỮ KÝ SỐ TRÊN THẾ GIỚI VÀ TẠI VIỆT NAM
1.1.1 Tình hình triển khai chữ ký số trên thế giới
Chữ ký số đang được ứng dụng vào trong các giao dịch điện tử ngày càng phổ biến ở các nước trên thế giới Đặc biệt là ở các nước có nền công nghệ tiên tiến như
Mỹ, Canada, Anh, Nhật Bản, Hàn Quốc, Malaysia, Singapore, Trung Quốc,…Các giải pháp chính phủ điện tử và Thương mại điện tử đều được ứng dụng kỹ thuật chữ ký số
Tại các cường quốc công nghệ thông tin, việc ứng dụng chữ ký số đang được phát triển mạnh mẽ trong các dịch vụ hành chính công Trong đó, các nước châu Âu rất tích cực trong triển khai áp dụng chữ ký số trong Chính phủ điện tử Một số nước như Estonia, việc sử dụng chứng minh thư điện tử đã bắt đầu được cấp cho người dân năm 2002, năm 2005, tiến hành bầu cử điện tử Tại Ý, việc triển khai chứng minh điện
tử cho người dân cũng được thực hiện từ 2009 Một số nước sử dụng chữ ký số trong hầu hết các giao dịch điện tử và tiến đến một thị trường hoàn toàn không tiền mặt trong tương lại như Thụy Điển
Các nước có nền công nghệ thông tin phát triển ở châu Á cũng đã bắt đầu triển khai áp dụng chữ ký số vào Chính Phủ Điện tử Thậm chí Hàn Quốc vượt lên đứng đầu thế giới trong Chính phủ điện tử, hầu hết các giao dịch điện tử của Hàn Quốc đều
sử dụng chữ ký số Đối với Trung Quốc, lượng chữ ký số được cấp ra hàng năm cho người dùng đến hàng trăm triệu chữ ký số phục vụ các giao dịch hành chính công và giao dịch điện tử
1.1.2 Tình hình triển khai chữ ký số tại Việt Nam
Các portal, website của các ngân hàng, doanh nghiệp thương mại điện tử, các
bộ ban ngành phần lớn đã sử dụng chứng thư số SSL để áp dụng bảo mật kênh truyền
dữ liệu giữa người dùng và khách hàng
Tại Việt Nam, việc tổ chức triển khai và áp dụng chữ ký số được phân tách ra làm hai lĩnh vực, thứ nhất là chữ ký số công cộng, thứ hai là chữ ký số chuyên dùng Theo luật quy định chữ ký số công cộng sẽ được áp dụng cho giao dịch giữa các tổ chức, cá nhân dân sự với nhau và với cơ quan nhà nước Chữ ký số chuyên dùng được
Trang 12cấp phát và sử dụng cho khối cơ quan chính phủ sẽ được cấp riêng cho cơ quan ban ngành trong hệ thống của chính phủ Chữ ký số chuyên dùng trong các tổ chức doanh nghiệp thì sẽ dùng riêng nội bộ trong các doanh nghiệp mà không dùng với giao tiếp bên ngoài
Hiện tại ở Việt Nam có 9 nhà cung cấp dịch vụ chứng thực chữ ký số công cộng được Bộ Thông Tin và Truyền Thông cấp phép dưới hệ thống RootCA quốc gia Với khoảng 450 nghìn doanh nghiệp sử dụng chữ ký số vào trong các giao dịch như khai thuế, hải quan và chứng khoán Với khoảng 50 nghìn chữ ký số được cấp cho cá nhân phục vụ các giao dịch ngân hàng và chứng khoán với lĩnh vực chữ ký số công cộng
Hệ thống cung cấp dịch vụ chữ ký số chuyên dùng phục vụ các cơ quan thuộc
hệ thống chính trị của Ban Cơ yếu Chính phủ đã triển khai cung cấp chứng thư
số cho các Bộ, ngành, địa phương Tính đến tháng 7/2013, Ban Cơ yếu Chính phủ đã
cung cấp khoảng 15.000 chứng thư số cho 11 Bộ, cơ quan ngang Bộ và 15 địa phương Việc cung cấp, quản lý, sử dụng chứng thư số đã đáp ứng kịp thời nhu cầu cấp thiết của cơ quan nhà nước các cấp trong việc đảm bảo xác thực và bảo mật thông tin phục
vụ lãnh đạo, điều hành Tuy nhiên, việc triển khai chữ ký số còn chưa được rộng khắp,
nhiều cơ quan, đơn vị chưa ứng dụng chữ ký số trong hoạt động tác nghiệp Trong khi
đó, để phát huy hiệu quả các hoạt động giao dịch qua mạng và điện tử hóa quy trình làm việc của cơ quan nhà nước thì chữ ký số phải được triển khai rộng rãi theo hướng
mở rộng đối tượng và quy mô sử dụng
Một số lĩnh vực cũng được áp dụng chữ ký số một cách mạnh mẽ tại thị trường Việt Nam là dùng trong các giao dịch liên ngân hàng giữa các ngân hàng thương mại
và Ngân hàng nhà nước, trong việc xử lý các giao dịch nội bộ của các nhân viên trong các hệ thống ngân hàng và một số khách hàng lớn của ngân hàng cũng được ưu tiên sử dụng dịch vụ chữ ký số để ký các giao dịch
1.2 CÁC KHÁI NIỆM VỀ CHỮ KÝ SỐ
- Mật mã đối xứng: Mật mã đối xứng là mật mã dùng một khóa để mã hóa và
dùng chính khóa đó để giải mã hoặc khóa dễ dàng tìm thấy từ khóa đó để giải
mã Một số thuật toán của mật mã đối xứng như DES, RC2, RC4,RC5, RC6, DES, IDEA, AES, CAST−128…
Trang 133 Mật mã bất đối xứng:Mật mã bất đối xứng là mật mã dùng một khóa để mã hóa và dùng một khóa để giải mã Việc biết được khóa này để tìm được khóa
kia thì vô cùng khó khăn Một số thuật toán mật mã bất đối xứng như RSA,
ECC, DSA
- Hàm băm: Hàm băm là hàm dùng thuật toán băm để biến biến một khối lượng
dữ liệu lớn thành một khối dữ liệu nhỏ và duy nhất đại diện cho khối dữ liệu lớn trước khi băm qua hàm băm, dữ liệu băm là kết quả của hàm băm cũng
không thể nào tính ngược lại được dữ liệu trước khi băm
- Khóa riêng key):Khóa riêng hay được gọi là khóa bí mật
(Private-key), được tạo ra tại chính thiết bị lưu trữ khóa (USB token, HSM vv ) do nhà cung cấp dịch vụ CA cấp Khóa này sẽ được người dùng mã hóa dữ liệu đã băm của dữ liệu gốc để tạo ra chữ ký số, khóa bí mật chỉ có duy nhất người dùng để
tạo chữ ký số biết Khóa riêng là một khóa trong mật mã bất đối xứng
- Khóa công khai (public-key): Khóa công khai (public-key) được tạo tại chính
thiết bị lưu trữ khóa (USB token, HSM vv ) do nhà cung cấp dịch vụ CA cấp Khóa này sẽ được người ký số tạo rà và công khai cho người nhận, người nhận dùng khóa này để giải mã chữ ký số và kiểm tra chữ ký số xem có đúng người
cần gửi gửi cho mình không (xác thực chữ ký số)
- Chữ ký số: Chữ ký số là việc sử dụng khóa Bí mật của cá nhân hoặc tổ chức để
thực hiện mã hóa chuỗi dữ liệu đại diện, dữ liệu này là kết quả của một hàm băm của dữ liệu nào đó như các file hoặc khối dữ liệu Sau đó dữ liệu mã hóa
đó được đóng gói thành chuẩn Chữ ký số cùng với Chứng thư sốđính kèm các file hoặc khối dữ liệu để tạo thành Chữ ký số của một ai đó trên file hoặc khối
dữ liệu
- USB Token: USB token là thiết bị phần cứng dùng để tạo cặp khóa bí mật,
công khai và Chứng thư số, được nhà cung cấp dịch vụ chữ ký số giao cho khách hàng để khách hàng có thể tạo cặp khóa và ký lên dữ liệu cần ký
- Dịch vụ chứng thực chữ ký số:Là một loại hình dịch vụ chứng thực chữ ký
điện tử do tổ chức cung cấp dịch vụ chứng thực chữ ký số cấp Tổ chức dịch vụ chứng thực chữ ký số là đơn vị phải được phép của nhà nước, tuân theo hệ thống và quy trình pháp lý để cung cấp dịch vụ chứng thực chữ ký số Nhiệm
vụ của nhà cung cấp dịch vụ chứng thực chữ ký số:
Trang 14o Thẩm tra hồ sơ hợp pháp theo đúng quy định của pháp lý để cung cấp chữ ký số cho người dùng
o Tạo cặp khóa công khai và khóa bí mật cho người dùng, tạo chứng thư
số để chứng nhận cho khóa bí mật của người dùng
o Cung cấp dịch vụ gia hạn, tạm dừng, thu hồi chứng thư số cho khách hàng
o Duy trì dịch vụ xác thực chứngthư số trực tuyến để những người tham gia giao dịch đảm bảo tin cậy đúng các đối tượng được chứng nhận tham gia các giao dịch điện tử
- Danh sách chứng thư số bị thu hồi CRL: Danh sách chứng thư số do một lý
do nào đó như mất khóa bí mật, bị lộ khóa bí mật, hoặc bị hỏng, hoặc người sử dụng rời khỏi một vị trí chức danh nào đấy…khi đó chứng thư số sẽ được thông báo cho nhà cung cấp thu hồi Thông tin chứng thư số bị thu hồi sẽ được đưa vào danh sách CRL để cung cấp rộng rãi cho môi trường mạng, như thế một ai
đó có lợi dụng chữ ký số và chứng thư số tham gia một giao dịch nào đó thì cũng không thể thực hiện được CRL thông thường sẽ được cập nhật một ngày
một lần
- Giao thức xác thực chữ ký số trực tuyến OCSP: Giao này cho phép người
dùng kiểm tra được trạng thái chữ ký số còn được phép sử dụng trong thời điểm thực hiện giao dịch hay không Như trường hợp CRL, thì việc cập nhật sẽ được thực hiện trong 24 giờ, vì thế sẽ có độ trễ về thời gian, trong trường hợp dùng
dịch vụ OCSP thì không có độ trễ về thời gian
1.3 NGHIÊN CỨU TỔNG QUAN VỀ CHỮ KÝ SỐ TRÊN THIẾT BỊ DI ĐỘNG
1.3.1 Nhu cầu thực tiễn
Ứng dụng xử lý chữ ký số như trên máy tính
Với nền máy tính chúng ta dễ dàng thấy rằng các ứng dụng và thiết bị lưu trữ và
xử lý chữ ký số trên máy tính rất dễ dàng như thiết bị Token cứng và các ứng dụng Soft Token.Tuy nhiên với nền thiết bị di động như Smarphone và Tablet, muốn triển khai được ứng dụng chữ ký số trên đó thì chúng ta cần phải tìm kiếm hoặc đặt hàng các nhà sản xuất thiết bị chữ ký số chuyên biệt cung cấp
Trang 15thiết bị để lưu trữ chữ ký số trên thiết bị di động và giao tiếp và làm việc được với thiết bị di động Một mặt chúng ta cũng có thể xây dựng ứng dụng và coi thiết bị di động chính là Token luôn để lưu trữ chữ ký số trên đó để đảm bảo hoàn toàn bảo mật Chính vì vậy trong phạm vi của đề tài này chúng tôi cũng nghiên cứu và phát triển ứng dụng để lưu trữ, xử lý, giao tiếp với ứng dụng lưu trữ chữ ký số hoặc thiết bị lưu trữ chữ ký số để làm cơ sở phát triển các ứng dụng chữ ký số khác
Secured Email
Hiện tại một số ứng dụng sử dụng để duyệt Email trên các máy tính phần lớn đã
hỗ trợ các tính năng ký số và mã hóa nội dung Mục tiêu của chúng là để tránh giả mạo email và bảo mật các nội dung email dùng chữ ký số và chứng thư số Tuy nhiên có thể nói một cách chính thống trên thế giới chưa cho một ứng dụng nào chính thức cung cấp các ứng dụng ký và mã hóa Email trên các thiết bị cầm tay phổ biến hiện tại Chính vì thế trong phạm vi của đề tài này, chúng tôi cũng
sẽ tiến hành nghiên cứu phát triển ứng dụng để tiến hành ký số và mã hóa được với một ứng dụng email và nhằm cung cấp dịch vụ ra thị trường
Secured SMS
Trong một môi trường làm ăn kinh doanh phức tạp, trong một môi trường do thám các thông tin của nhau, nghe nén các thông tin của nhau, rất cần thiết một kênh phải đảm bảo bảo mật Việc đảm bảo bảo mật không đơn thuần bảo mật cho cá nhân, bảo mật cho doanh nghiệp và thậm chí bảo mật cho quốc gia Chính vì vậy việc trao đổi SMS trong làm ăn kinh doanh, thông tin mang tính chất riêng tư cá nhân, các trao đổi nội dung chính trị nên được đảm bảo bảo mật tính riêng tư cho các cá nhân, doanh nghiệp và nhà nước Hiện nay đã có một số ứng dụng dùng, nhưng dùng chủ yếu kênh mã hóa đối xứng Vậy đảm bảo ứng dụng bảo mật tính riêng tư hoàn toàn chúng tôi phát triển kênh mã hóa SMS dùng chữ ký số để cung cấp đến người dùng một ứng dụng chữ ký số thật sự tiện lợi và bảo mật
Signing Apps
Trên nền ứng dụng mobile, hiện tại chưa có chính thức một sản phẩm nào ký số trên Mobile, các giao dịch điện tử đang ngày trở nên phổ biến, các giao dịch không đơn thuần trên máy tính, mà có lẽ các giao dịch điện tử sẽ giảm dần trên
Trang 16máy tính mà được thực hiện chủ yếu trên nền Mobile Chính vì vậy cần thiết phải phát triển ứng dụng chữ ký số trên nền Mobile
1.3.2 Tình hình triển khai trên thế giới
Hiện tại các quốc gia trên thế giới đã và đang triển khai các ứng dụng chữ ký số trên thiết bị di động Tuy nhiên việc triển khai chưa thực sự rộng rãi, việc triển khai trên nền tảng di động trên thế giới có thể nói dựa chính trên các giải pháp của Valimo phục vụ chính để giao dịch với ngân hàng và tích hợp vào các sim điện thoại, nhưng giải pháp này là giải pháp phụ thuộc hoàn toàn vào các nhà mạng viễn thông, đồng thời giải pháp này tập trung vào ký các dạng dữ liệu còn ở mức nguyên thủy là mức binary, và mức dữ liệu này sẽ không tiếp cận được với người dùng cuối
Như vậy cần phải ký số các văn bản giấy tờ để đưa ra các xác nhận và quyết định điện tử triển khai trên Mobile trên toàn cầu dường như chưa hoặc rất hiếm và không được công bố rộng rãi Đồng thời các Email trao đổi với nhau của các sản phẩm Email trên nền mobile của toàn cấu hầu như chưa có chức năng ký và mã hóa dữ liệu Như vậy có thể nói trên nền tảng di động, một thiết bị thiết yêu của hầu hết mọi người dân trên toàn cầu còn thiếu khả năng xác thực và bảo mật Email, văn bản, giao dịch nếu thực hiện trên mobile có thể nói là còn rất yếu
Hiện tại một số quốc gia cũng đang đẩy rất mạnh việc phát triển chữ ký số trên nền tảng Mobile, nhưng việc đẩy hẳn thành một trào lưu mang tính toàn cầu thì chắc chắn cũng sẽ được diễn ra trong vài năm tới Và trong quá trình nghiên cứu và phát triển này, chúng tôi cũng đặt đặt vấn đề của rất nhiều đơn vị trên thế giới là phát triển một thành phần nào đó trong bộ ứng dụng của chúng tôi
Trang 17- Một số nền tảng sử dụng thuần thiết bị chính là Token, và ứng dụng phần mềm lưu trữ và quản lý chữ ký số được cài đạt trên các thiết bị
Về chuẩn, hiện tại các chuẩn đối với các thiết bị công nghệ là thiết bị phần cứng có thể
nó nó tuân theo các chuẩn công nghiệp sẵn có của các thiết bị phần cứng và phần mềm chuẩn chữ ký số p như PKCS#11, PKCS#1, PKCS#15 Với thiết bị mobile khi giao tiếp một số chuẩn cũng cần phải kiểm soát được tuân theo như chuẩn giao tiếp của thiết bị tương ứng như chuẩn Audio, chuẩn Blutooth
Về cơ bản các chuẩn cũng được hiệp hội các nhà viễn thông toàn cầu họp và chấp nhận để tạo thành một chuẩn chung để phục vụ trong mọi giao tiếp viễn thông trên toàn cầu
Trang 18Chương 2 NGHIÊN CỨU CƠ SỞ LÝ THUYẾT VÀ MỘT SỐTIÊU
Ngày nay các tài liệu được số hóa, người ta cũng có nhu cầu chứng thực nguồn gốc hay hiệu lực của các tài liệu này Rõ ràng không thể “ký tay“ vào tài liệu, vì chúng không được in ấn trên giấy Tài liệu “số” ( hay tài liệu “điện tử”) là một xâu các bit (0 hay 1), xâu bít có thể rất dài (nếu in trên giấy có thể hàng nghìn trang)
“Chữ ký” để chứng thực một xâu bít tài liệu cũng không thể là một xâu bit nhỏ đặt phía dưới xâu bit tài liệu Một “chữ ký” như vậy chắc chắn sẽ bị kẻ gian sao chép để đặt dưới một tài liệu khác bất hợp pháp
Những năm 80 của thế kỷ 20, các nhà khoa học đã phát minh ra “chữ ký số”
để chứng thực một “tài liệu số” Đó chính là “bản mã” của xâu bít tài liệu
Người ta tạo ra “chữ ký số” (chữ ký điện tử) trên “tài liệu số” giống như tạo
Như vậy “ký số” trên “tài liệu số” là “ký” trên từng bit tài liệu Kẻ gian khó thể giả mạo “chữ ký số” nếu nó không biết “khóa lập mã”
Để kiểm tra một “chữ ký số” thuộc về một “tài liệu số”, người ta giải mã
“chữ ký số” bằng “khóa giải mã”, và so sánh với tài liệu gốc
Ngoài ý nghĩa để chứng thực nguồn gốc hay hiệu lực của các tài liệu số hóa,
“chữ ký số” còn dùng để kiểm tra tính toàn vẹn của tài liệu gốc
Mặt mạnh của “chữ ký số” hơn “chữ ký tay” còn là ở chỗ người ta có thể “ký” vào tài liệu từ rất xa (trên mạng công khai) Hơn thế nữa, có thể “ký” bằng các thiết bị cầm tay (VD điện thoại di động) tại khắp mọi nơi (Ubikytous) và di động (Mobile), miễn là kết nối được vào mạng Đỡ tốn bao thời gian, sức lực, chi phí
Trang 19“Ký số” thực hiện trên từng bit tài liệu, nên độ dài của “chữ ký số” ít nhất cũng bằng độ dài của tài liệu Do đó thay vì ký trên tài liệu dài, người ta thường dùng “hàm
băm” để tạo “đại diện” cho tài liệu, sau đó mới “Ký số” lên “đại diện” này
V là tập các thuật toán kiểm thử
Với mỗi khóa k K, có thuật toán ký Sig k S, Sig k : P A,
có thuật toán kiểm tra chữ ký Ver k V, Ver k : PAđúng, sai,
thoả mãn điều kiện sau với mọi x P, yA:
Đúng, nếu y = Sig k(x)
Ver k (x , y) =
Sai, nếu ySig k(x)
Chú ý
Người ta thường dùng hệ mã hóa khóa công khai để lập “Sơ đồ chữ ký số”.
Ở đây khóa bí mật a dùng làm khóa “ký”, khóa công khai b dùng làm khóa kiểm
Trang 202.1.2 Phân loại “Chữ ký số”
Có nhiều loại chữ ký tùy theo cách phân loại, sau đây xin giới thiệu một số cách Cách 1: Phân loại chữ ký theo khả năng khôi phục thông điệp gốc
1) Chữ ký có thể khôi phục thông điệp gốc:
Là loại chữ ký, trong đó người nhận có thể khôi phục lại được thông điệp gốc,
đã được “ký” bởi “chữ ký” này
Ví dụ: Chữ ký RSA là chữ ký khôi phục thông điệp, sẽ trình bày trong mục sau
2) Chữ ký không thể khôi phục thông điệp gốc:
Là loại chữ ký, trong đó người nhận không thể khôi phục lại được thông điệp gốc, đã được “ký” bởi “chữ ký” này
Ví dụ: Chữ ký Elgamal là chữ ký không thể khôi phục, sẽ trình bày trong mục sau
Cách 2: Phân loại chữ ký theo mức an toàn.
1) Chữ ký “không thể phủ nhận”:
Để tránh việc chối bỏ chữ ký hay nhân bản chữ ký để sử dụng nhiều lần, người gửi chữ ký cũng tham gia trực tiếp vào việc kiểm thử chữ ký Điều đó được thực hiện bằng một giao thức kiểm thử, dưới dạng một giao thức mời hỏi và trả lời
Ví dụ: Chữ ký không phủ định (Chaum - van Antverpen), trình bày trong mục sau
2) Chữ ký “một lần”:
Để bảo đảm an toàn, “Khóa ký” chỉ dùng 1 lần (one- time) trên 1 tài liệu
Ví dụ: Chữ ký một lần Lamport Chữ ký Fail - Stop (Van Heyst & Pedersen)
Cách 3: Phân loại chữ ký theo ứng dụng đặc trưng.
Chữ ký “mù” (Blind Signature)
Chữ ký “nhóm” (Group Signature)
Chữ ký “bội” (Multy Signature)
Chữ ký “mù nhóm” (Blind Group Signature)
Chữ ký “mù bội” (Blind Multy Signature)
Trang 212 2 Chữ ký RSA
2.2.1 Sơ đồ chữ ký
Sơ đồ (Đề xuất năm 1978)
1/ Tạo cặp khóa (bí mật, công khai) (a, b):
Chọn bí mật số nguyên tố lớn p, q , tính n = p * q , công khai n, đặt P = A = Z n
Tính bí mật (n) = (p-1).(q-1)
Chọn khóa công khai b <(n),nguyên tố cung nhau với (n)
Khóa bí mật a là phần tử nghịch đảo của b theo mod (n): a*b 1 (mod (n)
Tập cặp khóa (bí mật, công khai) K = ( a, b)/ a, b Zn , a*b 1 (mod (n))
2/.Ký số: Chữ ký trên x P là y = Sig k (x) = x a (mod n), y A.(R1)
3/.Kiểm tra chữ ký: Verk(x, ) = đúng xy b (mod n) (R2)
Chú ý
- So sánh giữa sơ đồ chữ ký RSA và sơ đồ mã hóa RSA ta thấy có sự tương ứng
- Việc ký chẳng qua là mã hoá, việc kiểm thử lại chính là việc giải mã:
Việc “ký số” vào x tương ứng với việc “mã hoá” tài liệu x
Kiểm thử chữ ký chính là việc giải mã “chữ ký”, để kiểm tra xem tài liệu đã giải mã có đúng là tài liệu trước khi ký không Thuật toán và khóa kiểm thử “chữ ký” là công khai, ai cũng có thể kiểm thử chữ ký được
Ví dụChữ ký trên x = 2
*Tạo cặp khóa (bí mật, công khai) (a b):
Chọn bí mật số nguyên tố p=3, q =5, tính n = p * q = 3*5 = 15, công khai n Đặt P = A = Z n = Z n Tính bí mật (n) = (p-1).(q-1) = 2 * 4 = 8
Chọn khóa công khai b = 3 <(n),nguyên tố với (n) = 8
Khóa bí mật a = 3, là phần tử nghịch đảo của b theo mod (n): a*b 1 (mod (n)
* Ký số: Chữ ký trên x = 2 P là
Trang 22y = Sig k (x) = x a (mod n)= 2 3 (mod 15) = 8, y A
* Kiểm tra chữ ký: Verk(x, y) = đúng xy b (mod n)
28 3 (mod 15)
2.2.2 Độ an toàn của chữ ký RSA
* Bài toán căn bản bảo đảm độ an toàn của Sơ đồ chữ ký RSA:
Bài toán tách số nguyên n thành tích của 2 số nguyên tố: n = p*q
Vì nếu giải được bài toán này thì có thể tính được khóa mật a từ khóa công khai b
và phần tử công khai n
1) Người gửi G gửi tài liệu x cùng chữ ký y đến người nhận N, có 2 cách xử lý:
a) Ký trước, Mã hóa sau :
G ký trước vào x bằng chữ ký y = Sig G (x), sau đó mã hoá x và y nhận được
z = e G (x, y) G gửi z cho N
Nhận được z, N giải mã z để được x, y
Tiếp theo kiểm tra chữ ký Ver N (x, y) = true ?
b) Mã hóa trước, Ký sau :
G mã hoá trướcx bằng u = e G (x), sau đó ký vào u bằng chữ ký v = Sig G(u)
G gửi (u, v) cho N
Nhận được (u, v), N giải mã u được x
Tiếp theo kiểm tra chữ ký Ver N(u, v) = true ?
2) Giả sử H lấy trộm được thông tin trên đường truyền từ G đến N
+ Trong trường hợp a, H lấy được z Trong trường hợp b, H lấy được ( u, v)
+ Để tấn công x, trong cả hai trường hợp, H đều phải giải mã thông tin lấy được
+ Để tấn công vào chữ ký, thay bằng chữ ký (giả mạo), thì xảy ra điều gì ?
- Trường hợp a, để tấn công chữ ký y, H phải giải mã z, mới nhận được y
- Trường hợp b, để tấn công chữ ký v, H đã sẵn có v, H chỉ việc thay vbằng v ’
Trang 23H thay chữ ký v trên u, bằng chữ ký của H là v ’ = SigH(u), gửi (u, v ’) đến N
Khi nhận được v ’, N kiểm thử thấy sai, gửi phản hồi lại G
G có thể chứng minh chữ ký đó là giả mạo
G gửi chữ ký đúng v cho N, nhưng quá trình truyền tin sẽ bị chậm lại
+ Như vậy trong trường hợp b, H có thể giả mạo chữ ký mà không cần giải mã
Vì thế có lời khuyên: Hãy ký trước, sau đó mã hoá cả chữ ký
c–Đại diện dữ liệu mã hóa, một số giữa 0 và n-1
C – Dữ liệu mã hóa, một chuỗi số hệ 8
d – Số mũ khóa riêng RSA
di– Số mũ hàm CRT của thừa số cộng ri, một số nguyên dương
e*di≡ 1 (mod(ri-1)), i=3, …, u
dP– Số mũ hàm CRT của p, môt số nguyên dương
Trang 24EM – Thông điệp được mã hóa, một xâu hệ 8
emBits– Chiều dai theo bits của thông điệp được mã hóa EM
emLen– Chiều dài theo hệ 8 của thông điệp được mã hóa EM
GCD ( , ) – Hàm ước số chung lớn nhất của hai số không âm
Hash – Hàm băm
hLen– Chiều dài dữ liệu đầu ra theo hệ 8 của hàm băm Hash
k – Chiều dài theo hệ 8 của số modulus RSA n
K – Khóa riêng RSA
L – Nhãn RSAÉ-OAEP tùy chọn, một chuỗi hệ 8
LCM – Hàm bội số chung nhỏ nhất của một danh sách số nguyên không âm
m – Đại diện thông điệp, một số nguyên dương giữa 0 và n-1
M – Thông điệp, một chuỗi hệ 8
mask– Dữ liệu ra hàm MGF, một xâu hệ 8
maskLen– Chiều dài của xâu hệ 8 mask
MGF – Hàm sinh mask
mgfSeed– Nhân, từ đó mask được sinh, một xâu hệ 8
mLen– Chiền dài theo hệ 8 của một thông điệp M
n – Số modulus RSA, n= r1*r2*…*ru, u>2
(n, e) – Khóa công khai RSA
p, q – Hai thừa số nguyên tố của số modulus n RSA
qInv– Hệ số CRT, một số nguyên dương nhỏ hơn p
Trang 25sLen– Chiều dài hệ 8 của khóa biến thiên (salt) EMSA-PSS
ti – Hệ số CRT của thừa số nguyên tố cộng ri, một số nguyên dương nhỏ hơn ri
r1*r2*….*ri-1*ti≡1(mod ri), i=3, …, u
u – Số của các Thừa số nguyên tố của hàm modulus RSA, u>2
x – Một số nguyên không âm
X– Một chuỗi hệ 8 phù hợp với x
xLen– chiều dài của chuỗi hệ 8 X
0x – Dấu chỉ đại diện hệ hexa của một số hệ 8 hoặc một chuỗi hệ 8; “0x48” biểu thị một số hệ 8 với giá trị hexa 48; “(0x)48 09 0e” biểu thị một chuỗi ba số hệ 8 liên tiếp với giá trị hexa theo trình tự 48, 09 và 0e
bí mật RSA tạo nên cặp khóa RSA
Đặc tả này hỗ trợ RSA đa nguyên tố ở đó số modulus có thể có nhiều hơn hai thừa số nguyên tố.Lợi ích của RSA đa nguyên tố là chi phí tính toán thấp hơn cho giải mã và kiểm tra chữ ký số, được cung cấp mà thuật toán CRT được sử dụng Hiệu năng có thể đạt được trên các nền tảng bộ xử lý đơn tốt hơn, nhưng mở tộng rất lớn trên các nền tảng đa bộ xử lý, ở đó các số mũ modulus bao gồm có thể dược xử lý song song
2.2.3.1 Khóa công khai RSA
Khóa công khai RSA gồm 2 thành phần:
- n – Số modulus RSA, một số nguyên dương
- e – Số mũ công khai RSA, một số nguyên dương
Trang 26Một khóa công khai hợp lệ khi số Modulus n RSA là kết quả của ri các số nguyên tố riêng biệt u, i=1, 2, …, u ở đó u>=2, và số mũ công khai e RSA là một số nguyên giữa
3 và n-1 thỏa mãn GCD(e, λ(n))≡1, ở đó λ(n)≡LCM(r1-1, …, ru-1) Theo quy ước, hai
số nguyên tố đầu tiên r1 và r2 cũng có thể ám chỉ p và q theo trình tự
2.3.3.2Khóa riêng RSA
Khóa riêng RSA có thể có một trong hai đại diện
- Đại diện đầu tiên bao gồm một cặp (n, d), ở đó các thành phần có nghĩa sau đây:
o n – số modulus RSA, một số nguyên dương
o d – số mũ riêng RSA, một số nguyên dương
- Đại diện thứ 2 bao gồm bộ năm (p, q, dP, dQ, qInv) và một chuỗi ba số (ri, di, ti), i= 3, …, u, một cho mỗi số nguyên tố không trong bộ năm, các thành phần có ý nghĩa sau đây:
o p – Thừa số đầu tiên, một số nguyên dương
o q – Thừa số thứ hai, một số nguyên dương
o dP– Số mũ CRT của thừa số đầu tiên, một số nguyên dương
o dQ– Số mũ CRT của thừa số thứ 2, một số nguyên dương
o qInv– Hệ số CRT đầu tiên, một số nguyên dương
o ri– thừa số thứ i, một số nguyên dương
o di– Số mũ CRT của thừa số thứi, một số nguyên dương
o ti– hệ số CRT của thừa số thứ i, một số nguyên dương
Trong một khóa riêng RSA hợp lệ với biểu diễn thứ nhất khi số modulus n RSA là giống như trong khóa công khai RSA tương ứng và là kết quả của ri các số nguyên tố u, i=1, 2, …, u, ở đó u>2 Số mũ khóa riêng d RSA là một số nguyên dương nhỏ hơn n thỏa mãn
e*d ≡ 1 (mod , λ(n))
Ở đó e phù hợp với số mũ công khai RSA và λ(n) được định nghĩa như trên
Trong một khóa riêng RSA hợp lệ với biểu diễn thứ 2 khi hai thừa số p và q là hai thừa
số đầu tiên của số Modulus n RSA (tức là, r1 và r2), số mũ dP và dQ CRT là hai số nguyên dương nhỏ hơn p và q thỏa mãn theo trình tự:
e*dP ≡ 1 (mod (p-1))
Trang 27e*dQ ≡ 1 (mod (q-1))
và hệ số qInv hàm CRT là một số nguyên dương nhỏ hơn p thỏa mãn:
q*qInv ≡ 1 (mod p) Nếu u>2, biếu diễn này sẽ bao gồm một hoặc nhiều bộ ba (ri, di, ti), i=3, …, u Hệ số ri
là các thừa số nguyên tố bổ xung của số Modulus n RSA Mỗi số mũ di CRT (i=3, …, u) thỏa mãn:
e*di≡ 1 (mod(ri-1)) Mỗi hệ số CRT ti (i=3, …, u) là một số nguyên dương nhỏ hơn ri thỏa mãn
Ri*ti≡ 1(mod ri) trong đó Ri=r1*r2*…ri-1
2.3.4 Các nguyên hàm mật mã
Các nguyên hàm mật mã là các toán tử toán học cơ bản ở đó các lược đồ mật mã có thể được xây dựng Chúng được sử dụng triển khai trong phần cứng cũng như các module phần mềm
Bốn loại nguyên hàm được chỉ ra trong tài liệu này, được tổ chức theo cặp: Mã hóa và giải mã; ký và kiểm tra chữ ký
Đặc tả về các nguyên hàm thừa nhận rằng các điều kiện cụ thể nào có thể đạt bằng các đầu vào, trong trường hợp này là các khóa riêng và khóa công khai hợp lệ
2.3.4.1 Các nguyên hàm mã hóa và giải mã
Một nguyên hàm mã hóa tạo ra một đại diện mã hóa từ một đại diện thông điệp qua một khóa công khai, và một nguyên hàm giải mã phục hồi lại thông điệp đại diện từ đại diện mã hóa qua khóa riêng phù hợp
Một cặp nguyên hàm mã hóa và giải mã được sử dụng trong các lược đồ mã hóa được định nghĩa trong tài liệu này: RSAEP/RSADP RSAEP và RSADP có toán tử giống hệt nhau, với các khóa khác nhau đầu vào
2.3.4.1.1 RSAEP
RSAEP((n, e), m)
Đầu vào: (n e) – Khóa công khai RSA
Trang 28m – Đại diện thông điệm, một số nguyên giữa 0 và n-1
Đầu ra: c – Đại diện mã hóa, một số nguyên giữa 0 và n-1
Lỗi: “Đại diện thông điệp ngoài phạm vi”
Giả định: Khóa công khai RSA (n, e) hợp lệ
Các bước:
1 Nếu đại diện thông điệp m không nằm giữa 0 và n-1, kết quả
“đại diện thông điệp ngoài phạm vị” và dừng lại
c – Đại diện bản mã, một số nguyên giữa 0 và n-1
Đầu ra: m – Đại diện bản thông điệp, một số giữa 0 và n-1
Lỗi: “Đại diện thông điệp ngoài phạm vi”
Giả định: Khóa riêng RSA K hợp lệ
Các bước:
1 Nếu đại diện bản mã c không nằm giữa 0 và n-1, kết quả “Đại diện bản mã ngoài phạm vi” và dừng thuật toán
2 Đại diện thông điệp được tính toán như sau:
a Nếu bộ đầu tiên (n, d) của K được sử dụng, m≡cd modn
b Nếu bộ thứ 2 (d, p, dP, dQ, qInv) và (ri, di, ti) của K được
sử dụng, xử lý như sau:
i Để m1≡ cdP mod p và m2≡ cdQ mod q
ii Nếu u>2, cho mi≡ cdi mod ri, i=3, …, u
Trang 29iii Cho h = m1-m2*qInv mod p
2.3.4.2 Các nguyên hàm ký số và kiểm tra chữ ký
Một nguyên hàm ký tạo ra một đại diện ký từ một thông điệp qua khóa riêng, và một nguyên hàm kiểm tra ký số phục hồi thông điệp từ một đại diện ký số qua khóa công khai tương ứng Một cặp nguyên hàm ký và kiểm tra chữ ký được sử dụng trong lược
đồ ký số được định nghĩa trong tài liệu này và được đặc tả ở đây: RSASP1/RSAVP1 Các toán tử toán học chính trong mỗi nguyên hàm là hàm mũ hóa như trong các nguyên hàm mã hóa và giải mã ở các phần trên RSASP1 và RSAVP1 giống như RSADP và RSAEP ngoại trừ tên của các đối số đầu vào đầu ra, chúng được phân biệt
do chúng được sử dụng trong các mục tiêu khác nhau
m – Đại diện thông điệp, một số nguyên giữa 0 và n-1
Đầu ra: s – Đại diện chữ ký, một số giữa 0 và n-1
Lỗi: “Đại diện thông điệp ngoài phạm vi”
Giả định: Khóa riêng RSA K hợp lệ
Các bước:
Trang 301 Nếu đại diện bản thông điệp m không nằm giữa 0 và n-1, kết quả “Đại diện thông điệp ngoài phạm vi” và dừng thuật toán
2 Đại diện chữ ký s đƣợc tính toán nhƣ sau:
c Nếu bộ đầu tiên (n, d) của K đƣợc sử dụng, để s≡md mod n
d Nếu bộ thứ 2 (d, p, dP, dQ, qInv) và (ri, di, ti) của K đƣợc
sử dụng, xử lý nhƣ sau:
i Để s1≡ mdP mod p và s2≡ mdQ mod q
ii Nếu u>2, cho si≡ mdi mod ri, i=3, …, u
iii Cho h = (s1-s2)*qInv mod p
Đầu vào: (n e) – Khóa công khai RSA
s – Đại diện chữ ký, một số nguyên giữa 0 và n-1
Đầu ra: m – Đại diện thông điệp, một số nguyên giữa 0 và n-1
Giả định: Khóa công khai RSA (n, e) hợp lệ
Trang 31cụ thể và các chi tiết của nó ngoài phạm vi của tài liệu này
Các đặc tả và toán tử lược đồ thừa nhận các điều kiện chắc chắn đạt được bởi các đầu vào, cụ thể là cặp khóa công khai và riêng là hợp lệ Do đó cách xử lý một khóa không hợp lệ không được chỉ ra ở đây Ảnh hưởng trên các xử lý không được chỉ ra ở đây phụ thuộc vào ứng dụng Các khả năng có thể kiểm tra hợp lệ khóa bao gồm kiểm tra khóa cụ thể bằng ứng dụng; kiểm tra khóa trong hạ tầng mã khóa công khai; và giao trách nhiệm cho các toán tử được thực hiện với một khóa không hợp lệ cho một đơn vị chịu trách nhiệm sinh khóa
Một thực tiễn, mật mã tốt nói chung là sử dụng một cặp khóa RSA cụ thể chỉ trong một lược dồ Điều này tránh rủi ro rằng điểm yếu trong một lược đồ có thể làm hại đến
an ninh của lược đồ khác, và có thể là căn bản duy trì an ninh có thể chứng minh
2.3.6 Các lược đồ mã hóa
Một lược đồ mã hóa bao gồm một toán tử mã hóa và một toán tử giải mã, ở đó toán tử
mã hóa tạo ra một bản mã từ thông điệp với khóa công khai RSA của người nhận, và toán tử giải mã phục hồi thông điệp từ bản mã với khóa riêng RSA của người nhận Một lược đồ mã hóa có thể được sử dụng trong các ứng dụng đa dạng khác nhau.Một ứng dụng điển hình là giao thức thiết lập khóa, ở đó thông điệp chứa tài liệu khóa được phân phối bí mật từ một người đến người khác
2.3.6.1 Toán tử mã hóa
RSAES-OAEP-ENCRYPT((n,e), M, L)
Trang 32Các túy chọn: Hash – hàm băm (hLen biểu thị chiều dài hệ 8 kết quả của hàm
băm) MGF – Hàm sinh mặt nạ Đầu vào: (n, e)– Khóa công khai RSA của người nhận (k, biểu thị chiều dài
hệ 8 của số modulus RSA n)
M – Thông điệp cần được mã hóa, một chuỗi hệ 8 có chiều dài mLen, ở đó mLen<=k-2hLen-2
L – Nhãn tùy chọn được gắn với thông điệp; giá trị mặc định cho
L, nếu L không được cung cấp, là một chuỗi rỗng
Đầu ra: C – bản mã, một chuỗi hệ 8 có chiều dài k
Thừa nhận: Khóa công khai RSA (n, e) là hợp lệ
Các bước:
1 Kiểm tra chiều dài
a Nếu chiều dài của L lớn hơn giới hạn đầu vào cho hàm băm (261- 1 hệ 8 cho SHA-1), đầu ra “Nhãn quá dài” và dừng lại
b Nếu mLen>k-2hLen-2, kết quả “Thông điệp quá dài”
và dừng lại
2 EME-OAEP mã hóa
a Nếu nhãn L không được cung cấp, cho L là một chuỗi rỗng cho lHash=Hash(L), một chuỗi hệ 8 có chiều dài hLen
b Sinh ra một chuỗi hệ 8 PS gồm k-mLen-2hLen-2 số 0
hệ 8 Chiều dài của PS có thể là 0
c Cắt lHash, PS, một chuỗi hệ 8 với giá trị hexa 0x01, và thông điệp M để cấu thành khối dữ liệu DB chiều dài k-hLen-1 hệ tam như sau:
DB=lHash ‖PS‖ 0x01‖ M
d Sinh một nhân chuỗi hệ 8 ngẫu nhiên chiều dài hLen
Trang 33e Cho dbMask = MGF(seed, k-hLen-1)
f Cho maskedDB = DB dbMask
g Cho seedMask = MGF (maskedDB, hLen)
h Cho maskedSeed=seed seedMask
i Cắt một số hệ 8 đơn với giá trị hexa 0x00, maskedSeed, maskedDB để tạo một thông điệp EM đƣợc mã hóa với chiều dài k hệ 8 nhƣ sau
EM=0x00 ‖ maskedSeed ‖ maskedDB
Trang 34của số modulus RSA n)
C – Bản mã đƣợc giải mã, một chuỗi hệ 8 có chiều dài k, ở đó k>2hLen+2
L – Nhãn tùy chọn, mối liên kết với thông điệp đƣợc kiểm tra; Giá trị mặc định cho L, nếu L không đƣợc cung cấp là xâu rỗng
Trang 35Đầu ra: M – Thông điệp, một xâu hệ 8 chiều dài mLen, ở đó
mLen<=k-2hLen-2
Các bước:
1 Kiểm tra chiều dài
a Nếu chiều dài L lớn hơn giới hạn đầu vào cho hàm băm (261-1 hệ 8 cho hàm SHA-1), kết quả “Lỗi giải mã” và dừng lại
b Nếu chiều dài bản mã C không phải là k hệ 8, kết quả
“Lỗi giải mã” và dừng lại
c Nếu k<2hLen+2, kết quả “Lỗi giải mã” và dừng lại
b Phân tách bản thông điệp được mã hóa EM thành Y hệ
8 đơn, một chuỗi hệ 8 maskedSeed chiều dài hLen, và một xâu hệ 8 maskedDB có chiều dài k-hLen-1 như sau EM=Y ‖ maskedSeed ‖ maskedDB
c Cho seedMask=MGF (maskedDB, hLen)
d Cho seed=maskedSeed seedMask
Trang 36e Cho dbMask=MGF(seed, k – hLen - 1)
f Vho DB=maskedDB dbMask
g Phân tách DB thành chuỗi lHash’ hệ 8 có chiều dài hLen Một xâu đệm PS bao gồm hệ 8 với giá trị Hexa,
và một thông điệp M như sau DB=lHash’‖ PS ‖ 0x01 ‖ M Nếu không ở hệ 8 với giá trị hexa 0x01 để phân tách PS
từ M, nếu lHash không bằng lHash’, hoặc nếu Y không bằng không, kết quả “Lỗi giải mã” và dừng
4 Kết quả thông điệp M
2.3.7 Các lược đồ chữ ký
Một lược đồ chữ ký bao gồm toán tử sinh chữ ký và toán tử kiểm tra chữ ký số, ở đó toán tử sinh chữ ký tạo ra một chữ ký từ một thông điệp với một khóa riêng RSA của người ký, và toán tử kiểm tra chữ ký kiểm tra chữ ký trên thông điệp với khóa công khai RSA của người ký phù hợp Để kiểm tra chữ ký được xây dựng với lược đồ này cần thiết phải có thông điệp
RSASSA-PSS kết hợp các nguyên hàm RSASP1 và RSSAVP1 với phưuơng thức mã hóa EMSA-PSS Chiều dài các thông điệp ở đó RSASSA-PSS có thể thao tác có thể
là hoặc không giới hạn hoặc có ràng buộc bởi số rất lớn, phụ thuộc vào hàm băm dưới
cơ sở phương thức mã hóa EMSSA-PSS
2.2.7.1 Toán tử sinh chữ ký
RSASSA-PSS-SIGN (K, M)
Đầu vào: K – Khóa riêng RSA của người ký
M – Thông điệp được ký, một chuỗi hệ 8
Đầu ra: S – Chữ ký, một chuỗi hệ 8 chiều dài k, ở đó k là chiều dài hệ 8
của số modulus RSA n
Các lỗi: “Thông điệp quá dài”; “Lỗi mã hóa”
Các bước:
Trang 371 Mã hóa EMSA-PSS: Áp dụng toán tử EMSA-PSS với thông điệp M để tạo ra EM thông điệp được mã hóa chiều dài làm tròn lên ((modBits-1)/8) hệ 8 như chiều dài bít của số nguyên OS2IP(EM) là ở modBits-1, ở đó modBits là chiều dài theo bit của số modulus RSA n
EM=EMSA-PSS-ENCODE(M, modBits-1) Chú ý rằng chiều dài hệ 8 của EM sẽ nhỏ hơn 1 so với k nếu modBits – 1 có thể chia hết cho 8 bằng k Nếu toán tử mã hóa cho kết quả “Thông điệp quá dài” thông báo “Thông điệp quá dài” và kết thúc Nếu toán tử mã hóa cho kết quả đầu ra “Lỗi
mã hóa” thông báo “Lỗi mã hóa” và kết thúc
2 Ký RSA
a Biến đổi thông điệp được mã hóa EM thành một đại diện thông điệp số nguyên m:
M=OS2IP(EM)
b Áp dụng nguyên hàm RSASP1 với khóa riêng RSA K
và đại diện thống điệp m để tạo ra một đại diện ký số nguyên s:
Đầu vào: (n, e) – Khóa công khai RSA của người ký
M - Thông điệp mà chữ ký của nó cần được kiểm tra, một chuỗi
hệ 8
S – Chư ký cần được kiểm tra, một chuỗi hệ 8 chiều dài k, ở đó k
là chiều dài hệ 8 của số modulus RSA hệ 8
Trang 38Đầu ra: “Chữ ký hợp lệ” hoặc “Chữ ký không hợp lệ”
Các bước:
1 Kiểm tra chiều dài: Nếu chiều dài chữ ký S không phải là k hệ
8, thông báo “Chữ ký không hợp lệ” và kết thúc
2 Kiểm tra RSA
a Biến đổi chữ ký S thành đại diện ký số nguyên s
S=OS2IP(S)
b Áp dụng nguyên hàm kiểm tra RSAVP1 với khóa công khai RSA (n, e) và đại diện ký s để tạo ra một đại diện thông điệp nguyên m:
M=RSAVP1((n, e), s) Nếu RSAVP1 cho kết quả “Đại diện chữ ký ngoài phạm vi” thông báo “chữ ký không hợp lệ” và dừng lại
c Biến đổi đại diện thông điệp m thành thông điệp được
mã hóa EM chiều dài emLen=Tròn trên(modBits-1)/8
hệ 8, ở đó modBits là chiều dài bit của số modulus RSA n:
EM=I2OSP(m, emLen) Chú ý rằng emLen sẽ nhỏ hơn k một nếu modBits-1 có thể chia cho 8 và bằng k Nếu I2OSP cho kết quả “Số nguyên quá lớn” thông báo “Chữ ký khônghợp lệ” và dừng lại
3 Kiểm tra EMSA-PSS: Áp dụng toán tử kiểm tra EMSA-PSS với thông điệp M và thông điệp được mã hóa EM để quyết định liệu chung có nhất quán:
Result=EMSA-PSS-VERIFY (M, EM, modBits-1)
4 Nếu Result=”Nhất quán” thông báo “Chữ ký hợp lệ” khác thì thông báo “chữ ký không hợp lệ”
Trang 392.4 CHUẨN PKCS#11
2.4.1 Giới thiệu
Các thiết bị tính toán di động như các Token, Thẻ thông minh (Smart Card), thẻ OCMCIA, các đĩa mềm thông minh, máy tính bảng, điện thoại thôn minh là những công cụ hoàn hảo cho triển khai mật mã khóa công khai Những dòng thiết bị này mang đến cho ta cách để lưu trữ phần khóa bí mật của cặp khóa Công khai/Bí mật một cách bảo mật, dưới sự kiểm soát của một người dùng duy nhất Với một thiết bị như vậy, một ứng dụng thay vì tự thực hiện các toán tử mật mã, sử dụng thiết bị để thực hiện các toán tử, với các thông tin nhậy cảm như khóa bí mật sẽ không bao giờ bị lộ Càng nhiều ứng dụng được phát triên cho mật mã khóa công khai, một giao diện lập trình chuẩn cho các thiết bị càng trả lên có giá trị.Chuẩn này tập trung vào nhu cầu này Chuẩn PKCS#11 là chuẩn đặc tả giao diện lập trình ứng dụng được gọi là Cryptoki cho các thiết bị lưu trữ thông tin mật mã và thực hiện các hàm mật mã Cryptoki tuân theo phương pháp hướng đối tượng đơn giản, tập trung vào các mục tiêu độc lập công nghệ và chia sẻ tài nguyền, phô ra cho các ứng dụng khung nhìn logic và chung của thiết bị được được gọi là một Cryptographic Token
Chuẩn này đặc tả các kiểu dữ liệu và các hàm sẵn có cho một ứng dụng đòi hỏi các dịch vụ mật mã sử dụng ngôn ngữ lập trình C theo chuẩn ANSI Các kiểu dữ liệu và hàm sẽ được cung cấp phổ biết qua các các file tiêu đề hàm H của ngôn ngữ lập trình
C bởi các nhà cung cấp thư viên Cryptoki Các file tiêu đề hàm H cho Cryptoki ở trên web chuẩn mã mã khóa công khai (PKCS)
2.4.2 Mục tiêu thiết kế
Theo dự kiến từ đầu Cryptoki là một giao diện giữa các ứn dụng và tất cả các thiết bị mật mã di động như các thiết bị Token, Thẻ thông minh, Thẻ PCMCIA, các đĩa mềm thông minh, điện thoại thông minh, máy tính bảng Mục tiêu chính của Cryptoki là giao diện lập trình mức thấp hơn, nó trừu trượng hóa các chi tiết của thiết bị, và biểu diễn trước ứng dụng một mô hình chung của thiết bị mật mã, được gọi là Token mật
mã
Trang 40Mục tiêu thứ hai là chia sẻ tài nguyên, khi các hệ điều hành đa nhiệm cho máy tính bàn trở lên phổ biến hơn, một thiết bị đơn sẽ được chia cho nhiều ứng dụng.Hơn nữa, một ứng dụng có thể giao tiếp với nhiều thiết bị tại cùng một thời điểm cụ thể
2.4.3 Mô hình chung
Mô hình chung của Cryptoki được minh họa ở hình sau, mô hình bắt đầu với một hoặc nhiều ứng dung cần thực hiện các toán tử mật mã cụ thể, và kết thúc với một hoặc nhiều thiết bị Ở đó một vài hoặc tất cả các toán tử thực sự được thực hiện.Một người dùng có thể hoặc không liên quan tới một ứng dụng
Hình 2: Mô hình Cryptoki chung
Cryptoki cung cấp một giao diện cho một hoặc nhiều thiết bị mà chúng hoạt động trong hệ thống qua một số khe “Slot”.Mỗi khe sẽ trả lời cho một đầu đọc vật lý hoặc giao diện thiết bị khác có thể chứa hoặc không chứa Token.Một token đặc thù trong một khe cắm, khi một thiết bị mật mã có mặt trong một đầu đọc Tất nhiên, do Cryptoki cung cấp một khung nhìn vật lý cho các khe và Token, có thể có các cách thông dịch vật lý khác Có thể là nhiều slot cùng chia sẻ cùng đầu đọc vật lý Thực tế
là một hệ thống có một số slot, và các ứng dụng có thể kết nối đến các token trong bất
kỳ hoặc tất cả các slot đó
Thiết bị mật mã có thể thực hiện các toán tử mật mã, tuân theo một bộ lệnh cụ thể; nhưng lệnh này điển hình được chuyển qua các trình điều khiển thiết bị chuẩn ví dụ dịch vụ thẻ PCMCIA hoặc các dịch vụ socket Cryptoki biến mỗi thiết bị mật mã trông