1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phần mềm sinh và kiểm tra chữ ký số q 7a, một hệ chữ ký số có sử dụng rsa

47 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Ch ơng trình KC-01: Nghiên cứu khoa học phát triển công nghệ thông tin truyền thông Đề tài KC-01-01: Nghiên cứu số vấn đề bảo mật an toàn thông tin cho mạng dùng giao thức liên mạng máy tính IP Phần mềm sinh kiểm tra ch÷ ký sè Qun 7A: “Mét hƯ ch÷ ký sè có sử dụng RSA Hà NộI-2004 Phần mềm sinh kiĨm tra ch÷ ký sè Qun 7A: “Mét hƯ ch÷ ký sè cã sư dơng RSA” Chđ tr× nhãm thùc hiện: TS Trần Duy Lai Mục lục Ch ơng I Chữ ký số dựa mật mà đại 1-Giới thiƯu 2- Ch÷ ký sè tõ hƯ m· cã thĨ đảo ng ợc - Các định nghĩa phân loại 4- L ợc đồ chữ ký số phụ lục 5- L ợc đồ chữ ký khôi phục thông báo 6- Các kiểu công l ợc đồ ký 7- Hàm băm Ch ơng II L ợc đồ chữ ký số RSA 1- L ợc đồ chữ ký RSA 2- Các công chữ ký RSA 3- Chữ ký RSA thực tế 4- Định dạng chuẩn ISO/IEC 9796 5- Định dạng chuẩn PKCS #1 1 12 13 15 15 16 17 20 24 Ch ¬ng III Module thùc hiƯn ký kiểm tra chữ ký số sử dụng chứng số 27 1-Một số chuẩn mật mà khoá công khai 1.1-Giíi thiƯu vỊ PKCS#1: Chn m· ho¸ RSA 1.1.1- Sinh khoá 1.1.2- Cú pháp khoá 1.1.3- Tiến trình mà hoá 1.1.4- Tiến trình giải mà 1.1.5- Các thuật toán chữ ký số 1.2-Giới thiệu định dạng PKCS#7 1.2.1- Data content type 1.2.2- Signed-data content type 1.2.3- Enveloped-data content type 1.2.4- Signed-and-enveloped-data content type 1.2.5- Digested-data content type 1.2.6- Encrypted-data content type 1.3- PKCS#8: Private-Key information Syntax Standard 1.3.1- Private-key information syntax 1.3.2- Encrypted private-key information syntax 2-Module thùc hiÖn viƯc ký/kiĨm tra ch÷ ký 2.1-Module thùc hiƯn ký mét tệp liệu sử dụng chứng số 2.1.1-Các th viện cung cấp hàm thực việc ký 2.1.2-Ch ¬ng tr×nh vÝ dơ thùc hiƯn viƯc ký mét tƯp d÷ liƯu 27 27 27 27 28 28 28 29 30 30 32 33 34 35 35 35 36 36 36 36 38 i 2.2-Module thùc hiƯn viƯc kiĨm tra chữ ký số 2.2.1-Các th viện cung cấp hàm thực việc kiểm tra chữ ký 2.2.2-Module ch ơng trình ví dụ việc kiểm tra chữ ký 40 40 40 ii Ch ơng I Chữ ký số dựa mật mà đại 1-Giới thiệu Một yếu tố gốc mật mà (cryptographic primitive) tảng xác thực, chứng thực, chống chối bỏ chữ ký số Mục đích chữ ký số ®Ĩ cung cÊp ph ¬ng tiƯn cho mét thùc thĨ để gắn kết định danh với thông tin Quá trình ký gây biến đổi thông điệp số thông tin bí mật đ ợc giữ thực thể thành đ ợc gọi chữ ký Mô tả chung nh sau Thuật ngữ ký hiệu ã M tập thông điệp mà đ ợc ký ã S tập phần tử gọi chữ ký, chuỗi nhị phân với độ dài xác định ã SA phép ánh xạ từ tập thông điệp M tới tập chữ ký S, đ ợc gọi phép ánh xạ ký (signing transformation) cho thực thể A (Alice) Phép ánh xạ SA đ ợc giữ bí mật A, đ ợc sử dụng để tạo chữ ký số cho thông điệp từ tập M ã VA phép ánh xạ từ tập M x S tới tập {true, false} VA đ ợc gọi phép ánh xạ kiểm tra (verification transformation) chữ ký A, đà đ ợc công bố công khai, đ ợc sử dụng thực thể khác để kiểm tra chữ ký đà tạo A Định nghĩa Các phép ánh xạ SA VA cung cấp l ợc đồ chữ ký số (digital signature scheme) cho thực thể A Đôi thuật ngữ kỹ thuật chữ ký số (digital signature mechanism) đ ợc sử dụng Ví dụ (digital signature scheme) M = {m1, m2, m3} vµ S = {s1, s2, s3} Hình bên trái d ới biểu diễn hàm ký SA từ tập M hình bên phải biểu diễn hàm kiểm tra VA t ¬ng øng m1 m2 m3 Ο Ο Ο Ο Ο Ο SA s3 s2 s1 (m1, s1) o (m1, s2) o (m1, s3) o (m2, s1) o (m2, s2) o (m2, s3) o (m3, s1) o (m3, s2) o (m3, s3) o o True o False VA Hµm ký kiểm tra l ợc đồ chữ ký sè Thđ tơc ký Thùc thĨ A (signer) t¹o chữ ký cho thông điệp m M b»ng c¸ch thùc hiƯn nh sau: TÝnh s = SA(m) Chuyển giao cặp (m, s) s đ ợc gọi chữ ký thông điệp m Thủ tục kiểm tra Để kiểm tra chữ ký s thông điệp m đà đ ợc tạo A, mét thùc thĨ B (verifier) thùc hiƯn c¸c b íc sau: LÊy hµm kiĨm tra ký VA cđa A TÝnh u = VA(m, s) ChÊp ch÷ ký đà đ ợc tạo A u = true, bác bỏ chữ ký u = false Nhận xét (concise representation) Các phép ánh xạ SA VA th ờng đ ợc đặc tr ng cách gọn khoá; tức là, có lớp thuật toán ký kiểm tra ký đ ợc công bố công khai, thuật toán đ ợc định danh khoá Do vậy, thuật toán ký SA A đ ợc xác định khoá kA yêu cầu A phải giữ bí mật khoá kA T ơng tự, thuật kiểm tra ký VA A đ ợc xác định khoá lA đ ợc đ a công khai Nhận xét (handwritten signatures, chữ ký viết tay) Các chữ ký viết tay đ ợc coi nh lớp đặc biệt chữ ký số Tr ờng hợp này, tập chữ ký S bao gồm phần tử chữ ký viết tay A, gọi sA Hàm kiểm tra chữ ký đơn giản kiểm tra xem chữ ký thông điệp đ ợc ký cách có chủ ý A sA Một đặc tr ng không mong muốn, chữ ký viết tay không phụ thuộc vào thông điệp (message-dependent) Do đó, cần có bắt buộc thêm đ ợc áp đặt lên kỹ thuật chữ ký số nh thảo luận d ới Các tính chất yêu cầu hµm ký vµ kiĨm tra ký Cã mét vµi tÝnh chất mà ánh xạ ký kiểm tra ký phải thoả mÃn (a) s chữ A thông điệp m VA(m, s) = true (b) Nó tính toán đ ợc thực thể khác A để tìm mét s ∈ S mµ VA(m, s) = true, víi m M Hình thể tính chất (a) Có đ ờng mũi tên biểu đồ cho VA từ (mj, sj) đến true t ơng ứng với đ ờng mũi tên từ mj tới sj biểu đồ SA Tính chất (b) đảm bảo tính an toàn cho ph ơng pháp - chữ ký ràng buộc A với thông điệp đà đ ợc ký Ch a có ph ơng pháp thức chứng minh đ ợc l ợc đồ chữ ký số thoả mÃn tồn tính chất (b) (mặc dù tồn đ ợc tin đúng); nhiên, có vài ứng cử viên tốt Mục sau giới thiệu lớp đặc biệt gồm chữ ký số nảy sinh từ kỹ thuật mà hoá khoá công khai Sự mô tả chữ ký số mục tổng quát, đ ợc mở rộng chi tiết nữa, nh giíi thiƯu ë phÝa sau 2- Ch÷ ký sè từ hệ mà đảo ng ợc Trong mục quan tâm đến lớp l ợc đồ chữ ký số mà đ ợc dựa hệ thống mà hoá khoá công khai có dạng đặc biệt Giả sử Ee ánh xạ mà hoá khoá công khai với không gian thông điệp M không gian mà C Hơn nữa, giả sử M = C Nếu Dd ánh xạ giải mà t ơng ứng với Ee Ee Dd phép hoán vị: Dd(Ee(m)) = Ee(Dd(m)) = m, với m M Một l ợc đồ mà hoá khoá công khai theo kiểu đ ợc gọi reversible (có lớp rộng chữ ký số mà đ ợc coi phát triển từ thuật toán mật mà không thuận nghịch, nh mục 3.2.4 3.2.5) Chú ý điều kiện M=C cần thiết đẳng thức với m M; mặt khác, Dd(m) sÏ kh«ng cã nghÜa víi m ∉ C CÊu trúc cho l ợc đồ chữ ký số Giả sử M không gian rõ l ợc đồ chữ ký Giả sử C = M, không gian chữ ký S Giả sử (e, d) cặp khoá l ợc đồ mà hoá khoá công khai Định nghĩa hàm ký SA Dd Điều có nghĩa chữ ký rõ m M s = Dd(m) Định nghÜa hµm kiĨm tra ký VA bëi  true, V A (m, s ) =   false, nÕu E e ( s ) = m, lại L ợc đồ chữ ký đ ợc đơn giản A ký rõ có cấu trúc đặc biệt, cấu trúc đ ợc biết công khai Cho M tập M với phần tử M có cấu trúc đặc biệt đà định nghĩa, đó, M chứa phần không đáng kể rõ Ví du, giả sử M bao gồm tất chuỗi nhị phân với độ dài 2t, với t số nguyên d ơng Cho M tập M bao gồm tất chuỗi mà t bits đ ợc lặp lại t bits lại (ví dụ, 101101 lµ thc tËp M’ víi t=3) NÕu A chØ ký rõ nằm tập M, điều đ ợc dễ dàng nhận biết ng ời kiểm tra ký Định nghĩa lại hàm kiểm tra ký VA lµ  true, V A (m, s ) =   false, nÕu E e ( s ) M ' , lại Với giả thiết này, A cần chuyển giao chữ ký s rõ m = Ee(s) đ ợc khôi phục lại cách áp dụng hàm kiểm tra ký Một l ợc đồ nh đ ợc gọi digital signature scheme with message recovery Hình sau minh hoạ cách sử dụng hàm chữ ký Đặc điểm lựa chọn rõ với cấu trúc đặc biệt đ ợc tham khảo nh việc chọn rõ có phần d (redundancy) Ee(s) m e s nguån kho¸ d ChÊp nhËn nÕu m’ ∈ M’ Dd(m) = s Verifier B nguån b¶n râ M’ m Signer A L ợc đồ chữ ký số khôi phục rõ Sự sửa đổi đ ợc trình bày (đ a độ d vào) nhiều phép thu gọn không gian đ îc ký; nã lµ hoµn toµn cèt yÕu nÕu mét hy vọng thoả mÃn yêu cầu tính chất (b) hàm ký kiểm tra ký đà nêu HÃy xem l¹i nh vËy, chó ý r»ng mét thùc thĨ B chọn ngẫu nhiên phần tử s S nh chữ ký áp dụng Ee để lấy u = Ee(s), S = M Ee công khai B lấy rõ m = u chữ ký m s, sau chuyển giao (m, s) Dễ dàng kiểm tra s đ ợc chấp nhận nh chữ ký đà đ ợc tạo A cho m, nh ng A không đóng vai trò Trong tr ờng hợp nói B đà giả mạo chữ ký A Đây ví dụ đ ợc gọi existential forgery (B đà tạo chữ ký A rõ mà rõ không theo lựa chọn B) Nếu M chứa phần nhỏ tin từ M, xác suất để giả mạo đ ợc chữ ký A theo cách nhỏ Nhận xét (chữ ký số so với tin cậy) Mặc dù l ợc đồ chữ ký số dựa mà hoá khoá công khai thuận nghịch hấp dẫn, chúng yêu cầu ph ơng pháp mà hoá nh gốc mật mà Có tình mà kỹ thuật chữ ký số đ ợc yêu cầu nh ng mà hoá bị ngăn cấm Trong tr ờng hợp nh l ợc đồ chữ ký số không thích hợp Chữ ký số thực tế Với chữ ký số thực tác dụng thực tế, ph ơng án cụ thể khái niệm tr ớc chắn phải có thêm tính chất khác Một chữ ký số phải dễ dàng tính toán ng ời ký (hàm ký dễ dàng áp dụng); dễ dàng kiểm tra ng ời khác (hàm kiểm tra ký dễ dàng áp dụng); có khoảng thời gian phù hợp, ví dụ, an toàn ph ơng diện tính toán tránh đ ợc giả mạo chữ ký không cần thiết cho mục đích Giải tranh chấp Mục đích chữ ký số (hoặc ph ơng pháp ký bất kỳ) phép giải trạnh chấp Ví dụ, thực thể A phủ nhận đà ký lên rõ thực thể B khẳng định sai chữ ký rõ đ ợc tạo A Để khắc phục vấn đề nh mét Tæ chøc tin cËy thø ba (Trusted Third Party, TTP) quan (judge) đ ợc yêu cầu TTT cần phải thực thể mà tất bên tham gia đồng ý công nhận từ tr ớc Nếu A phủ nhận rõ m l u giữ B đà đ ợc ký A, B đ a chữ ký sA m tới TTP với m Các ®Þnh cđa TTP sÏ đng B nÕu VA(m, sA)=true ủng hộ A ng ợc lại B chấp nhận định B tin cậy TTP có phép ánh xạ kiểm tra ký VA nh A đà có A chấp nhận định ®ã nÕu A tin cËy r»ng TTP ®· sư dơng VA tin SA không bị phá Do vậy, việc giải hợp lý tranh chấp yêu cầu tiêu chuẩn sau phải đ ợc thoả mÃn Những yêu cầu để giải chữ ký bị tranh chấp SA VA có tính chất (a) (b) đà nói TTP có VA Phép ánh xạ ký SA phải đ ợc giữ bí mật an toàn Các tính chất cần thiết nh ng thực tế không đảm bảo đ ợc chúng Ví dụ, giả thiết cho SA VA có đặc điểm nh yêu cầu tính chất không cho l ợc đồ chữ ký đặc biệt Một khả khác A khẳng định sai SA đà bị phá Để v ợt qua vấn đề yêu cầu ph ơng pháp thoả thuận để phê chuẩn chu kỳ thời gian mà A chấp nhận trách nhiệm ánh xạ kiểm tra Một hoàn cảnh t ơng tự xảy việc huỷ bỏ thẻ tín dụng Ng ời sử dụng card chịu trách nhiệm đến tận thông báo với công ty phát hành card card đà bị đà bị đánh cắp - Các định nghĩa phân loại Các định nghĩa Chữ ký số (digital signature) chuỗi liệu làm nhiệm vụ liên kết 5 thông điệp (ở dạng số) với thực thể tạo Thuật toán sinh chữ ký sè (digital signature generation algorithm hc signature generation algorithm) ph ơng pháp tạo chữ ký số Thuật toán kiểm tra chữ ký số (digital signature verification algorithm verification algorithm) ph ơng pháp để kiểm tra chữ ký số đáng tin (tức thực đà đ ợc tạo thực thể đà đ ợc ra) L ợc đồ chữ ký sè (digital signature scheme hc mechanism) bao gåm tht toán sinh chữ ký thuật toán kiểm tra chữ ký kèm Quy trình sinh chữ ký số (digital signature signing process procedure) bao gồm thuật toán sinh chữ ký số (toán học), với ph ơng pháp định khuôn dạng liệu cho thông điệp để ký đ ợc Tiến trình kiểm tra chữ ký số (digital signature verification process procedure) bao gồm thuật toán kiểm tra ký, với ph ơng pháp khôi phục liệu từ thông điệp Trong ch ơng này, hầu hết mục (nh chữ ký ElGamal, chữ ký Rabin) liên quan đơn đến l ợc đồ chữ ký số Nh ng để sử dụng đ ợc l ợc đồ chữ ký số thực tế cần nhiều (chỉ có l ợc đồ chữ ký ch a đủ), có nghĩa cần đến quy trình sinh chữ ký số (thêm vào cách padding chẳng hạn) Có nhiều quy trình liên quan đến nhiều l ợc đồ khác đà lên nh chuẩn th ơng mại thực sự; quy trình nh vậy, ISO 9796 PKCS #1, đ ợc trình bày riêng cho hệ chữ ký số RSA Ký hiệu sử dụng cho phần lại ch ơng đ ợc cung cấp bảng sau Các tập hàm đà liệt kê bảng đ ợc công bố công khai Ký hiÖu M MS S R MR R-1 R h Mh ý nghĩa tập phần tử đ ợc gọi không gian rõ tập phần tử đ ợc gọi không gian ký tập phần tử đ ợc gọi không gian chữ ký ánh xạ 1-1 từ M tới MS gọi hàm phần d ảnh R (tức là, MR=Im(R)) nghịch ảnh R (tức là, R-1: MR->M) tập phần tử gọi tập số chữ ký (indexing set for signing) hàm chiều miền M ảnh h (tức là, h: M->Mh); MhMS đ ợc gọi không gian giá trị băm Ký hiệu cho kỹ thuật chữ ký số Chú ý (giải thích bảng trên) (i) (không gian rõ) M tập phần tử mà từ ng ời ký thêm vào chữ ký số ã Với PKCS#1 v2.0 phần RSA encryption/decryption đ ợc hỗ trợ thêm kiểu RSAES-OAEP (RSA Encryption Scheme - Optimal Asymmetric Encryption Scheme) L ợc đồ mà hoá đ ợc xem nh an toàn chứng minh đ ợc ã Với PKCS#1 v2.1 phần RSA signature/verification đ ợc hỗ trợ thêm kiểu RSASSA-PSS (RSA Signature Scheme with Appendix - Probabilistic Signature Scheme) L ợc đồ chữ ký đ ợc xem an toàn chứng minh đ ợc, độ khó giả mạo chữ ký t ơng đ ơng với việc tính hàm ng ợc thuật toán RSA L ợc đồ đ a thêm hàm sinh hash mask đ ợc xem nh black boxes random oracles Nh ng lý thuyết kẻ công thay hàm hash khác hàm hash mà signer đà chọn, nên gợi ý hàm sinh mask EMSA-PSS (hàm encoding thuật toán RSASSA-PSS) giống hàm hash Nh vậy, theo kiểu tất encoded message phụ thuộc vào hàm hash khó khăn cho đối ph ơng thực việc thay hàm hash khác Để kết thúc phần giới thiệu PKCS#1 đ a số thông tin RSA encryption/decryption RSA signature/verification để bạn tiện tham khảo ã Version 1.5: RSA encryption/decryption theo kiểu RSAES-PKCS1-V1_5, RSA signature/verification theo kiểu RSASSA-PCKS1-V1_5 ã Version 2.0: RSA encryption/decryption đ ợc hỗ trợ thêm kiểu RSAESOAEP (RSA Encryption Scheme - Optimal Asymmetric Encryption Scheme) Version 2.1: RSA signature/verification đ ợc hỗ trợ thêm kiểu RSASSA-PSS (RSA Signature Scheme with Appendix - Probabilistic Signature Scheme) 1.2-Giới thiệu định dạng PKCS#7 Chuẩn PKCS#7 mô tả định dạng tổng quát cho liệu mà có phần mật mà áp dụng vào đó, cụ thể là: chữ ký số bọc số (digital envelope, tr ớc tiên nội dung đ ợc mà hoá khoá content-encryption key với thuật toán contentencryption algorithm, content-encryption key đ ợc mà ho¸ bëi RSA public key cđa ng êi nhËn, sau kết hợp nội dung đà mà hoá khoá đà mà hoá theo chuẩn PKCS#7) Định dạng cho phép đệ quy, ví dụ, ký lên liệu số đà bị bọc tr ớc Chuẩn cho phép có thuộc tính tuỳ ý nh thời gian ký, đ ợc xác thực cïng víi néi dung cđa mét message Trong tr êng hợp đơn giản định dạng việc phát hành certificates CRLs Chuẩn hỗ trợ nhiều kiến trúc quản lý khoá dựa certificate (ví dụ, dạng PEM RFC 1422) Sự định kiến trúc nh là: ng ời phát hành certificate đ ợc xem nh top-level, thực thể certificate đ ợc uỷ quyền chứng thực, distinguished name đ ợc chấp nhận, ng ời phát hành certificate dựa vào policy 29 Trong chuẩn ® a có ph¸p tỉng qu¸t cho kiĨu néi dung sau: data, signed data, enveloped data, signed-and-enveloped data, digested data, encrypted data Tr ớc mô tả kiểu nội dung đ a cú pháp tổng quát (nó thay đổi phụ thuộc vào kiểu nội dung liệu) chuẩn PKCS#7 nh sau: ContentInfo ::= SEQUENCE { contentType ContenType, content [0] EXPLICIT ANY DEFINED BY contenType OPTIONAL } ContentType ::= OBJECT IDENTIFIER Giải thích: contentType xác định kiểu nội dung liệu (6 kiểu) Nó định danh object, tức chuỗi số nguyên để biĨu diƠn kiĨu néi dung d÷ liƯu content néi dung liệu D ới mô tả chi tiết kiểu nội dung liệu 1.2.1- Data content type Data content type lµ mét octet string, định nghĩa theo ASN.1 kiểu Data đơn giản nh sau: Data ::= OCTET STRING 1.2.2- Signed-data content type Signed-data conten type bao gồm nội dung kiểu t ơng ứng message digest đà đ ợc mà hoá không cho cho nhiều ng ời ký Chúng ta hiểu message digest đ ợc mà hoá cho signer chữ ký nội dung signer ®ã KiĨu cđa néi dung cã thĨ ® ỵc ký nhiều ng ời lên (parallel) Hơn nữa, tr ờng hợp đơn giản tức signer ký nội dung đó, nghĩa phát hành certificates CRLs Điều nói lên r»ng víi øng dơng riªng biƯt sư dơng signed-data content type với chữ ký số signer lên néi dung cđa kiĨu néi dung d÷ liƯu Víi øng dụng riêng biệt khác sử dụng tr ờng hợp suy biến để phát hành certificates CRLs Quá trình ký liệu đ ợc xây dựng theo b ớc sau: ã Tạo message digest Với signer message digest đ ợc thực nội dung với thuật toán băm xác định Nếu signer cần xác thực số thông tin khác thông tin đ ợc băm thuật toán ã Message digest đ ợc mà private key signer 30 ã Encrypted message digest đ ợc đặt vào giá trị SignerInfo Certificates CRLs cho signer, không thuộc signer đ ợc đ a vào SignerInfo ã Đ a tất thuật toán message-digest algorithm signer giá trị SignerInfo t ¬ng øng vµo SigneData Ng êi nhËn sÏ kiĨm tra chữ ký cách giải mà encrypted message digest tõng signer víi public key cđa signer t ¬ng øng, sau so sánh với message digest tìm đ ợc víi message digest ®· tÝnh ®éc lËp KiĨu néi dung liệu đ ợc ký đ ợc định nghĩa ASN.1 lµ SignedData nh sau: SignedData ::= SEQUENCE { version Version, digestAlgorithms DigestAlgorithmIdentifiers, contentInfo ContenInfo, certificates [0] IMPLICIT ExtendedCertifictesAndCertificates OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL, signerInfos SignerInfos } DigestAlgorithmIdentifiers ::= SER OF DigestAlgorithmIdentifier SignerInfos ::= SET OF SignerInfo KiĨu th«ng tin signer đ ợc định nghĩa ASN.1 SignerInfo nh sau: SignerInfo ::= SEQUENCE { version Version, issuerAndSerialNumber IssuerAndSerialNumber, digestAlgorithm DigestAlgorithmIdentifier, authenticateAttributes [0] IMPLICIT Attributes OPTIONAL, digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier, encryptedDigest EncryptedDigest, unauthenticateAttributes [1] IMPLICIT Attributes OPTIONAL } EncryptedDigest ::= OCTET STRING Quá trình tạo message digest mà hoá message digest đ ợc chi tiết mục 9.3 9.4 tài liệu PKCS#7 D ới ® a mét sè chó ý cđa c¸c qu¸ trình ã Sự khác trình ký chuẩn PKCS#7 PKCS#1 chữ ký chuẩn PKCS#1 đ ợc biểu diễn dạng bit string (có thể sử dụng X.509 macro SIGNED) 31 ã Định danh thuật toán băm DigestInfo thay thoả thuận thuật toán băm giảm đ ợc mối nguy hiểm Ví dụ, kẻ công tìm đ ợc message với message digest nhận đ ợc Hắn giả mạo chữ ký cách lấy message với thuật toán băm mà đà đ ợc ký tr ớc đó, biểu diễn chữ ký tr ớc lªn message míi 1.2.3- Enveloped-data content type Envelope-data content type bao gồm nội dung đà đ ợc mà (một số kiểu) khoá mà nội dung đ ợc mà (encrypted content-encryption keys) cho mét hc nhiỊu ng êi nhËn Sự kết hợp nội dung đà đ ợc mà khoá mà nội dung đà đ ợc mà cho ng ời nhận đ ợc gọi digital envelope cho ng ời Envelope-data content type đ ợc áp dụng ®Ĩ biĨu diƠn digital envelope cđa mét hc nhiỊu ng ời nội dung liệu, digested-data, signed-data content type Quá trình liệu đ ợc bọc theo b ớc sau: ã Sinh ngẫu nhiên khoá content-encryption key (với thuật toán contentencryption algorithm) ã Với ng ời nhận, conten-encryption key đ ợc mà hoá public key t ơng ứng (kết encrypted conten-encryption key) • Víi tõng ng êi nhËn, encrypted conten-encryption key số thông tin khác đ ợc đ a vào giá trị RecipientInfo ã Nội dung đ ợc mà hoá sử dụng conten-encryption key, thu đ ợc encrypted content ã Tập hợp giá trị RecipientInfo với encrypted content vào giá trị EnvelopedData Ng ời nhận mở vỏ bọc số cách giải mà encrypted contentencryption keys với private key mình, kết nhận đ ợc conten-encryption key giải mà encrypted content với conten-encryption key đà tìm đ ợc Private key ng ời nhận đ ợc tham chiếu tên phát hành số serial định danh certificate cho public key t ơng ứng Envelope-data content type định nghĩa ASN.1 cã kiÓu EnvelopedData nh sau: EnvelopedData ::= SEQUENCE { version Version, recipientInfos RecipientInfos, encryptedContentInfo EncryptedContentInfo } RecipientInfos ::= SET OF RecipientInfo EncryptedContentInfo ::= SEQUENCE { contentType ContentType, contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, encryptedContent [0] IMPLICIT Encrypted Content OPTIONAL 32 } EncryptedContent ::= OCTET STRING RecipientInfo type đ ợc định nghĩa ASN.1 lµ kiĨu RecipientInfo nh sau: RecipientInfo ::= SEQUENCE { version Version, issuerAndSerialNumber IssuerAndSerialNumber, keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, encryptedKey EncryptedKey } EncryptedKey ::= OCTET STRING Quá trình mà hoá khoá mà hoá nội dung đà đ ợc chi tiết mục 10.3 chuẩn PKCS#7 Chúng đ a ý sau: Một số thuật toán contentencryption algorithm làm việc với độ dài đầu vào bội k octets, với k > 1, ứng dụng đ a ph ơng pháp đơn giản điều khiển độ dài đầu vào mà độ dài không bội k Với ph ơng thực pad thêm vào đầu vào kéo dài phần cuối với k - (l mod k) octets với tất giá trị k - (l mod k), với l độ dài đầu vào Nh vậy, ph ơng pháp tốt k < 256 (< 2048 bits), với k lớn toán mở (PKCS#7 v1.5) Trên windows sử dụng tools để update giúp cho việc import certificate với khoá có độ dài lớn 2048, phải đà giải đ ợc vấn đề 1.2.4- Signed-and-enveloped-data content type Signed-and-enveloped-data content type bao gåm encrypted content, encrypted content-encryption key cho mét hc nhiều ng ời cặp encrypted message digests (một đ ợc mà private key signer mà contentencryption key) cho nhiều signers Nh vậy, định dạng kết hợp phần: Signed-data content type enveloped-data content type Quá trình xây dựng liệu signed-and-enveloped-data content type theo b ớc sau: ã Khoá content-encryption key (cho thuật toán content-encryption algorithm) đ ợc sinh ngẫu nhiên ã Với ng ời nhận, content-encryption key đ ợc mà hoá với public key t ơng ứng ã Với ng ời nhận, encrypted content-encryption key số thông tin ng ời nhận đ ợc đ a vào giá trị RecipientInfo ã Với signer, message digest đ ợc thực nội dung với thuật toán băm đà chØ bëi signer • Víi tõng signer, message digest số thông tin khác đ ợc mà hoá với private key signer, kết thu đ ợc encrypted content-encryption key ã Với signer, cặp encrypted message digest số thông tin khác đ ợc đ a vào giá trị SignerInfo 33 ã Nội dung đ ợc mà với content-encryption key, nhận đ ợc encrypted content ã Hợp tất thuật toán băm, giá trị SignerInfo, giá trị RecipientInfo với encrypted content vào giá trị SignedAndEnvelopedData Khi ng ời nhận muốn mở vỏ bọc số kiểm tra chữ ký thực lần l ợt nh mục 3.4 3.3, không nhắc lại ý rằng: ph ơng pháp thuộc tính xác thực nên đ ợc ứng dụng để bọc thông tin ng ời ký việc thực ký Signed-and-enveloped-data content type định nghĩa ASN.1 kiểu SignedAndEnvelopedData nh sau: SignedAndEnvelopedData ::= { version Version, recipientInfos RecipientInfos, digestAlgoritms DigestAlgorithmIdenfifiers, encryptedContentInfo EncryptedContentInfo, certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL, signerInfos SignerInfos } Quá trình digest-encryption đ ợc thực nh mục 3.2 nh ng có điểm khác là: trình thực b ớc B ớc thø nhÊt thùc hiƯn nh mơc 3.2 B íc thø lÊy kÕt qu¶ cđa b íc nh ng không mà dạng DER Mục đích việc chống việc kẻ công khôi phục đ ợc message digest cđa néi dung NÕu viƯc nµy thùc hiƯn đ ợc kẻ xác định đ ợc danh sách ứng viên nội dung sau xác định đ ợc nội dung thực so s¸nh c¸c message digest cđa hä víi message digest ®óng 1.2.5- Digested-data content type Digested-data content type bao gåm nội dung message digest nội dung Công việc đ ợc yêu cầu để đảm bảo tính toàn vẹn nội dung liệu Quá trình thực băm liệu theo b ớc sau: ã Một message digest đ ợc thực nội dung với thuật toán message digest algorithm ã Message digest algorithm message digest đ ợc đ a vào giá trị DigestedData Nh đà đề cập trên, ng êi nhËn kiĨm tra message digest b»ng c¸ch so sánh message digest với message digest đ ợc tính độc lập nội dung 34 Digested-data content type đ ợc định nghĩa ASN.1 kiểu DigestedData nh sau: DigestedData ::= SEQUENCE { version Version, digestAlgorithm DigestAlgorithmIdentifier, contentInfo ContentInfo, digest Digest } Digest ::= OCTET STRING 1.2.6- Encrypted-data content type Encrypted-data content type gåm cã néi dung ®· đ ợc mà hoá encrypted content Kiểu đ ợc định nghĩa ASN.1 kiểu EncryptedData nh sau: EncryptedData ::= SEQUENCE { version Version, encryptedContentInfo EncryptedContentInfo } 1.3- PKCS#8: Private-Key information Syntax Standard Chuẩn PKCS#8 mô tả cú pháp thông tin private-key Thông tin bao gồm private key cho thuật toán khoá công khai tập hợp thuộc tính Đồng thời chuẩn mô tả cú pháp private key đà đ ợc mà hoá Thuật toán mà hoá dựa vào password (đà đ ợc mô tả PKCS#5) đ ợc sử dụng để mà hoá thông tin private key Chuẩn đ a tập hợp thuộc tính nhằm mục đích cung cấp cách đơn giản cho user thiết lập tin cậy thông tin: distinguished nam public key top-level CA Trong tin cậy đ ợc thiết lập với chữ ký số, mà hoá với secret key (user đà biết) Trong chuẩn trình bày mục: private-key information syntax (PrivateKeyInfo) vµ encrypted private-key information syntax (EncryptedPrivateKeyInfo) 1.3.1- Private-key information syntax Cú pháp thông tin private key có kiểu PrivateKeyInfo (ASN.1) nh sau: PrivateKeyInfo ::= SEQUENCE { version Version, privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, privateKey PrivateKey, attributes [0] IMPLICIT Attributes OPTIONAL } Version ::= INTEGER 35 PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier PrivateKey ::= OCTET STRING Attributes ::= SET OF Attribute Gi¶i thÝch: version sè phiên cú pháp (để t ơng thích với lần sửa tiếp theo), chuẩn số version privateKeyAlgorithm xác định thuật toán sinh private key (vÝ dơ, rsaEncryption) privateKey mét octet string mµ néi dung giá trị private key attributes tập thuộc tính, chúng thông tin mở rộng đà đ ợc mà hoá với thông tin private key 1.3.2- Encrypted private-key information syntax Có ph¸p vỊ th«ng tin private key cã kiĨu EncryptedPrivateKeyInfo (ASN.1) nh sau: EncryptedPrivateKeyInfo ::= SEQUENCE { encryptionAlgorithm EncryptionAlgorithmIdentifier, encryptedData EncryptedData } EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier EncryptedData ::= OCTET STRING Gi¶i thÝch: encryptionAlgorithm xác định thuật toán mà thông tin private key đ ợc mà hoá (ví dụ, pbeWithMD5AndDES-CBC) encryptedData liệu private key đà đ ợc mà hoá Quá trình mà hoá theo b ớc: ã Thông tin private key đ ợc mà (encode) dạng BER, sau b ớc thu đ ợc octet string ã Octet string (thu đ ợc b ớc 1) đ ợc mà hoá với secret key, sau b ớc thu đ ợc octet string kết trình mà hoá 2-Module thực việc ký/kiểm tra chữ ký 2.1-Module thùc hiƯn ký mét tƯp d÷ liƯu sư dơng chøng số 2.1.1-Các th viện cung cấp hàm thực việc ký Để xây dựng module thực ký tệp liệu cần sử dụng hai th viƯn libcrypto.a, sign.o vµ mét tƯp C header sign.h Trong th viện libcrypto.a cung cấp hàm tác vụ cho việc thực xây dựng hàm thùc hiƯn ký mét tƯp d÷ liƯu th viƯn sign.o D ới số cấu trúc liệu hàm đ ợc cung cấp hai th viƯn trªn: 36 Th viƯn libcrypto.a: -CÊu tróc l u chøng chØ sè X509 *x509; -CÊu tróc l u kho¸ bÝ mËt EVP_PKEY *pkey; -CÊu tróc l u đối t ợng liệu PKCS#7 EVP_PKEY *pkey; -Cấu trúc l u thông tin liên quan đến chữ ký số (thời gian, đối t ợng ký, ) EVP_PKEY *pkey; -Hàm đọc chứng số từ file dạng PEM if ((x509=PEM_read_bio_X509(incert,NULL,NULL,NULL)) == NULL) goto err; -Hàm đọc khoá bí mËt sè tõ mét file d¹ng PEM if ((pkey=PEM_read_bio_PrivateKey(inkey,NULL,NULL,NULL)) == NULL) goto err; -Hàm khởi tạo đối t ợng PKCS7 míi p7=PKCS7_new(); -Hµm bỉ sung chøng chØ sè cho đối t ợng PKCS7 PKCS7_add_certificate(p7,x509); -Hàm bổ sung liệu cần ký cho đối t ợng PKCS7 PKCS7_content_new(p7,NID_pkcs7_data); -Hàm thực ký đối t ợng PKCS7 if (!PKCS7_dataFinal(p7,p7bio)) goto err; -Hµm thùc hiƯn ghi kÕt qu¶ mét tƯp PEM_write_PKCS7(fb,p7); Th viƯn sign.o: Th viƯn nµy chØ cung cÊp mét hµm nhÊt tõ viƯc sử dụng hàm th viện libcrypto.a: int signdata(char *infile,char *outfile, char *certfile, char *keyfile) Trong ®ã infile: ® ờng dẫn tên tệp cần ký outfile: đ ờng dẫn tên tệp l u kết chữ ký số certfile: đ ờng dẫn tên tệp chứng số d ới dạng PEM keyfile: đ ờng dẫn tên tệp khoá bí mật d ới đinh dạng PEM Giá trị trả về: trình ký thành công trình ký gặp lỗi Tệp sign.h Khai báo hàm signdata() nh sau: #include #include int signdata(char *infile,char *outfile, char *certfile, char *keyfile); C¸c th viện libcrrypto.a, sign.o sign.h đ ợc l u th mục Lib\libsign CD-ROM 37 2.1.2-Ch ơng trình ví dụ thực việc ký tệp liệu Để mô tả cụ thể việc xây dựng ch ơng trình thực gọi hàm ký liệu sử dụng chứng số khóa bí mật, xây dựng module ch ơng trình ví dụ thực ký tệp liệu Module ch ơng trình ví dụ đ ợc l u th mục Example\sign, nội dung th mục gồm tệp d ới đây: ã Tệp \Lib\libcrypto.a: th viện cung cấp dịch vụ mật mà khóa công khai ã Tệp \Lib\sign.o: th viện cung cấp hàm ký tệp liệu ã Tệp \sign.h: • TƯp \data.txt: vÝ dơ vỊ tƯp d÷ liƯu sÏ đ ợc ký ã Tệp \signdata.c: tệp ch ơng trình thực tác vụ ký ã Tệp \user1.crt: tệp chứng số đ ợc sử dụng ký ã Tệp \user1.key: tƯp khãa bÝ mËt t ¬ng øng víi tƯp chứng số user1.crt ã Tệp \chuky.p7: tệp kết d ới định dạng PKCS#7 ã Tệp \Makefile: sử dụng để biên dịch ch ơng trình ví dụ ã Tệp \Readme: h ớng dẫn biên dịch sử dụng ch ơng trình D ới toàn nội dung tệp ch ơng trình nguồn signdata.c /*S d ng cỏc t p header*/ #include #include #include "sign.h" int main(int argc, char **argv) { /*Khai báo bi n nh n tham s int i; char *infile=NULL; char *outfile=NULL; char *certfile=NULL; char *keyfile=NULL; đ u vào*/ /*Nh n tham s đ u vào*/ argv++; argc ; for (;;) { if (argc

Ngày đăng: 05/06/2021, 20:41

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w