HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO TIỂU LUẬN MÔN HỌC CƠ SỞ AN TOÀN THÔNG TIN Đề tài Tìm hiểu về giải thuật tạo chữ ký số sử dụng RSA Lớp CSATTT01 – NHÓM 05 Vũ Nhậ[.]
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN BÁO CÁO TIỂU LUẬN MÔN HỌC: CƠ SỞ AN TỒN THƠNG TIN Đề tài: Tìm hiểu giải thuật tạo chữ ký số sử dụng RSA Lớp: CSATTT01 – NHÓM 05: Vũ Nhật Minh Đức – B20DCAT050 Nguyễn Xuân Giang – B20DCAT051 Đặng Xuân Hải – B20DCAT052 Vũ Trung Hiếu – B20DCAT064 Nguyễn Huy Hoàng – B20DCAT070 Đỗ Ngọc Huế – B20DCAT073 Giảng viên hướng dẫn: Hoàng Xuân Dậu Hà Nội – 2022 Mục Lục I GIỚI THIỆU II KIẾN TRÚC Kiến trúc chữ ký số tổng quát 1.1 Quá trình ký trình gửi Kiến trúc chữ ký số sử dụng RSA .3 2.1 Tạo chữ ký: 2.2 Kiểm tra chữ ký: III GIẢI THUẬT RSA .6 Giải thuật RSA dùng việc tạo khóa, mã hóa, giải mã Tạo khóa: .7 Mã hóa giải mã .9 Cài đặt giải thuật RSA ngôn ngữ Java 10 IV ĐIỂM YẾU CỦA CHỮ KÝ SỐ SỬ SỤNG GIẢI THUẬT RSA 11 Tốc độ thuật toán RSA: 11 Phân phối khóa: 12 Chi phí: 12 Hiệu suất thuật toán: 12 V CÁC DẠNG TẤN CÔNG 12 Phân phối khóa 12 Tấn công dựa thời gian .12 Tấn cơng phương pháp lựa chọn thích nghi mã 13 VI ỨNG DỤNG CỦA HỆ THỐNG MÃ HÓA RSA .13 VII CÀI ĐẶT VÀ THỬ NGHIỆM 14 VIII KẾT LUẬN 14 Tài liệu tham khảo: .15 I GIỚI THIỆU Một số khái niệm: Một hệ chữ ký số (Digital Signature Scheme) bao gồm giải thuật tạo chữ ký số giải thuật kiểm tra chữ ký số Giải thuật tạo chữ ký số (Digital Signature generation algorithm) phương pháp sinh chữ ký số Giải thuật kiểm tra chữ ký số (Digital Signature verification algorithm) phương pháp xác minh tính xác thực chữ ký số, có nghĩa thực tạo bên định Quá trình tạo chữ ký số (Digital signature signing process) bao gồm: Giải thuật tạo chữ ký số Phương pháp chuyển liệu thơng điệp thành dạng ký Quá trình kiểm tra chữ ký số (Digital signature verification process) bao gồm: Giải thuật kiểm tra chữ ký số Phương pháp khôi phục liệu từ thông điệp Hàm băm (Hash Funtion) hàm tốn học chuyển đổi thơng điệp (message) có độ dài (hữu hạn) thành dãy bít có độ dài cố định (tùy thuộc vào thuật toán băm) Dãy bít gọi thơng điệp rút gọn (message disgest) hay giá trị băm (hash value), đại diện cho thơng điệp ban đầu Trong đó, Hàm băm SHA-1: Thuật tốn SHA-1 nhận thơng điệp đầu vào có chiều dài k MD2 → chữ ký khơng hợp lệ Thơng điệp bị sửa đổi không thực xuất phát từ người gửi Kiến trúc chữ ký số sử dụng RSA: RSA giải thuật cho phép thực tính năng: 2.1 Mã hóa thơng điệp: Người gửi mã hóa thơng điệp sử dụng khóa cơng khai người nhận Người nhận giải mã thơng điệp sử dụng khóa riêng Tạo chữ ký số: Người gửi tạo chữ ký số sử dụng khóa bí mật Người nhận kiểm tra chữ ký sử dụng khóa cơng khai người gửi Tạo chữ ký: Quá trình ký (bên gửi) Tính tốn chuỗi đại diện (message digest/ hash value) thông điệp sử dụng giải thuật băm (Hashing algorithm) SHA-1 Chuỗi đại diện ký sử dụng khóa riêng (Priavte key) người gửi giải thuật tạo chữ ký (Signature/ Encryption algorithm) RSA Kết chữ ký số (Digital signature) thơng điệp hay cịn gọi chuỗi đại diện mã hóa giải thuật RSA (Encryted message digest) Thông điệp ban đầu (message) ghép với chữ ký số (Digital signature) tạo thành thông điệp ký (Signed message) Thông điệp ký (Signed message) gửi cho người nhận 2.2 Kiểm tra chữ ký: Quá trình kiểm tra chữ ký (bên nhận): Tách chữ ký số RSA thông điệp gốc khỏi thông điệp ký để xử lý riêng; Tính tốn chuỗi đại diện MD1 (message digest) thông điệp gốc sử dụng giải thuật băm (là giải thuật sử dụng trình ký SHA-1) Sử dụng khóa cơng khai (Public key) người gửi để giải mã chữ ký số RSA> chuỗi đại diện thông điệp MD2 So sánh MD1 MD2: Nếu MD1 =MD2 -> chữ ký kiểm tra thành cơng Thơng điệp đảm bảo tính tồn vẹn thực xuất phát từ người gửi (do khóa công khai chứng thực) Nếu MD1 MD2 -> chữ ký khơng hợp lệ Thơng điệp bị sửa đổi không thực xuất phát từ người gửi III Giải thuật RSA Giới thiệu: Giải thuật mã hóa RSA nhà khoa học ngƣời Mỹ R Rivest, A Shamir L Adleman phát minh năm 1977 tên giải thuật RSA đặt theo chữ đầu tên đồng tác giả Độ an tồn RSA dựa tính khó việc phân tích số ngun lớn, với độ lớn cỡ hàng trăm chữ số thập phân RSA sử dụng cặp khóa, khóa cơng khai dùng để mã hóa khóa riêng dùng để giải mã Chỉ khóa riêng RSA cần giữ bí mật, cịn khóa cơng khai cơng bố rộng rãi Hiện nay, khóa RSA có kích thƣớc nhỏ 1024 bit coi khơng an tồn tốc độ hệ thống máy tính tăng nhanh Để đảm bảo an tồn, khuyến nghị sử dụng khóa 20481 bit giai đoạn 2010-2020 Trong tương lai, cần sử dụng khóa RSA có kích thước lớn hơn, chẳng hạn 3072 bit RSA giải thuật mã hóa khóa bất đối xứng sử dụng rộng rãi thực tế: RSA sử dụng để mã hóa thơng điệp, để tạo kiểm tra chữ ký số Giải thuật RSA dùng việc tạo khóa, mã hóa, giải mã: Sơ đồ giải thuật: Thuật tốn RSA có hai khóa: Khóa cơng khai (Public key): cơng bố rộng rãi cho người dùng để mã hóa Khóa bí mật (Private key): thơng tin mã hóa khóa cơng khai giải mã khóa bí mật tương ứng Tạo khóa: RSA cung cấp thủ tục tạo cặp khóa, gồm khóa cơng khai khóa riêng tương đối đơn giản Cụ thể, thủ tục tạo khóa gồm bước sau: Một số yêu cầu với q trình sinh khóa: Dưới liệt kê số yêu cầu đặt với tham số sinh khóa khóa để đảm bảo độ an tồn cho cặp khóa RSA Các u cầu cụ thể gồm: o Yêu cầu với tham số sinh khóa p q: Các số nguyên tố p q phải chọn cho việc phân tích n (n = p × q) khơng khả thi mặt tính tốn p q nên có độ lớn (tính bit) phải số đủ lớn.Nếu n có kích thước 1024 bit p q nên có kích thước khoảng 512 bit Nếu n có kích thước 2048 bit p q nên có kích thước khoảng 1024 bit Hiệu số p – q không nên nhỏ, p – q nhỏ, tức p q p √n Như vậy, chọn số nguyên tố gần √n thử Khi có p, tính q tìm d khóa bí mật từ khóa cơng khai e (n) = (p - 1)(q - 1) Nếu p q chọn ngẫu nhiên p – q đủ lớn, khả hai số bị phân tích từ n giảm Các số nguyên tố p q nên số nguyên tố mạnh (Strong prime) Số nguyên tố p xem số nguyên tố mạnh thỏa mãn điều kiện: (i) p – có thừa số nguyên tố lớn, giả thiết r; (ii) p+1 có thừa số nguyên tố lớn (iii) r – có thừa số nguyên tố lớn o Vấn đề sử dụng số mũ mã hóa (e) nhỏ: Khi sử dụng số mũ mã hóa (e) nhỏ, chẳng hạn e = tăng tốc độ mã hóa Kẻ cơng nghe lấy mã, từ phân tích mã để khơi phục rõ Do số mũ mã hóa nhỏ phí cho phân tích, vét cạn khơng lớn Do vậy, nên sử dụng số mũ mã hóa e đủ lớn thêm chuỗi ngẫu nhiên vào khối rõ trước mã hóa để giảm khả bị vét cạn phân tích mã o Vấn đề sử dụng số mũ giải mã (d) nhỏ: Khi sử dụng số mũ giải mã (d) nhỏ, tăng tốc độ giải mã Nếu d nhỏ gcd(p-1, q-1) nhỏ d tính tương đối dễ dàng từ khóa cơng khai(n, e) Do vậy, để đảm bảo an toàn, nên sử dụng số mũ giải mã d đủ lớn Mã hóa giải mã: Ví dụ giải thuật RSA: Cài đặt giải thuật RSA ngơn ngữ JAVA: Sử dụng BigInteger gói java.math.* cung cấp hầu hết hàm dựng hàm số học cho phép thao tác thuận lợi với số nguyên lớn Một số hàm: Hàm dựng BigInteger (int bitLength, int certainty, Random rnd): sinh số nguyên tố ngẫu nhiên với số bit cho trước Hàm BigInteger add(BigInteger val): cộng số nguyên lớn Hàm BigInteger subtract(BigInteger val): trừ số nguyên lớn Hàm BigInteger multiply(BigInteger val): nhân số nguyên lớn Hàm gcd(BigInteger val): tìm USCLN số lớn Hàm mod(BigInteger m): tính modulo (phần dư) phép chia nguyên Hàm BigInteger modInverse(BigInteger m): tính modulo nghịch đảo (this-1mod m) Hàm BigInteger modPow(BigInteger exponent, BigInteger m): tính (thisexponent mod m) 10 Cụ thể code RSA: Tạo khóa: Mã hóa giải mã: IV ĐIỂM YẾU CỦA CHỮ KÝ SỐ SỬ SỤNG GIẢI THUẬT RSA Tốc độ thuật toán RSA: Tốc độ RSA điểm yếu RSA so với hệ mã đối xứng, so với hệ mã DSA RSA chậm từ 100 đến 1000 lần, RSA khơng dùng để mã hóa khối lượng liệu lớn mà thường dùng để mã hóa liệu nhỏ 11 Phân phối khóa: Cũng giống thuật tốn mã hóa khác, cách thức phân phối khóa cơng khai yếu tố định độ an toàn RSA Q trình phân phối khóa cần chống lại cơng đứng (man-in-the-middle attack) Chi phí: Để thực thuật tốn RSA phần lớn tốn chi phí thực phép tính : Tạo khóa, mã hóa, giải mã Q trình ký xác thực chữ ký tương đương với chi phí thực phép tính lũy thừa modulo n Để đảm bảo cho khóa bí mật an tồn thường chọn mũ công khai e nhỏ nhiều so với số mũ bí mật d Hiệu suất thuật tốn: Do tốc độ RSA khơng nhanh nên RSA không dùng để ký khối lượng liệu lớn mà thường dùng với giải thuật băm để tăng tính linh hoạt việc ký xác thực chữ ký V Các dạng công Phân phối khóa: Cũng giống thuật tốn mã hóa khác, cách thức phân phối khóa cơng khai yếu tố định độ an tồn RSA Q trình phân phối khóa cần chống lại công đứng (man-in-the-middle attack) Giả sử kẻ xấu(C) gửi cho Người gửi thơng tin(A) khóa khiến (A) tin khóa (cơng khai) Đối tác(B) Đồng thời (C) có khả đọc thơng tin trao đổi (A) (B) Khi đó, (C) gửi cho (A) khóa cơng khai (mà (A) nghĩ khóa (B)) Sau đó, (C) đọc tất văn mã hóa (A) gửi, giải mã với khóa bí mật mình, giữ copy đồng thời mã hóa khóa cơng khai (B) gửi cho (B) Về nguyên tắc, (A) (B) không phát can thiệp người thứ ba Các phương pháp chống lại dạng cơng thường dựa chứng thực khóa cơng khai (digital certificate) thành phần hạ tầng khóa cơng khai (public key infrastructure - PKI) Tấn công dựa thời gian: Vào năm 1995, Paul Kocher mô tả dạng công lên RSA: kẻ công nắm đủ thông tin phần cứng thực mã hóa xác định thời gian giải mã số mã lựa chọn nhanh chóng tìm khóa d Dạng cơng áp dụng hệ thống chữ ký điện tử sử dụng RSA Năm 2003, Dan Boneh David Brumley chứng minh dạng cơng thực tế hơn: phân tích thừa số RSA dùng mạng máy tính (Máy chủ web dùng SSL) Tấn cơng khai thác thơng tin rị rỉ việc tối ưu hóa định lý số dư Trung quốc mà nhiều ứng dụng thực 12 Để chống lại công dựa thời gian đảm bảo q trình giải mã ln diễn thời gian không đổi văn mã Tuy nhiên, cách làm giảm hiệu suất tính tốn Thay vào đó, hầu hết ứng dụng RSA sử dụng kỹ thuật gọi che mắt Kỹ thuật dựa tính nhân RSA: thay tính cd mod n, Alice chọn số ngẫu nhiên r tính (rec)d mod n Kết phép tính rm mod n tác động r loại bỏ cách nhân kết với nghịch đảo r Đỗi với văn mã, người ta chọn giá trị r Vì vậy, thời gian giải mã khơng cịn phụ thuộc vào giá trị văn mã Tấn công phương pháp lựa chọn thích nghi mã: Năm 1981, Daniel Bleichenbacher mô tả dạng công lựa chọn thích nghi mã (adaptive chosen ciphertext attack) thực thực tế văn mã hóa RSA Văn mã hóa dựa tiêu chuẩn PKCS #1v1, tiêu chuẩn chuyển đổi rõ có khả kiểm tra tính hợp lệ văn sau giải mã Do khiếm khuyết PKCS #1, Bleichenbacher thực công lên RSA dùng cho giao thức SSL (tìm khóa phiên) Do phát này, mơ hình chuyển đổi an tồn chuyển đổi mã hóa bất đối xứng tối ưu (Optimal Asymmetric Encryption Padding) khuyến cáo sử dụng Đồng thời phòng nghiên cứu RSA đưa phiên PKCS #1 có khả chống lại dạng cơng nói VI Ứng dụng hệ thống mã hóa RSA RSA thỏa mãn yêu cầu hệ mã hóa đại: Độ bảo mật cao ( nghĩ để giải mã mà khơng biết khóa phải tốn hàng triệu năm) Thao tác nhanh (thao tác mã hóa giải mã tốn thời gian) Dùng chung Có ứng dung rộng rãi Có thể dùng để xác định chủ nhân (dùng làm chữ ký điện tử) Vì mà thuật tốn RSA sử dụng rộng rãi cơng tác mã hóa cơng nghệ chữ ký điện tử: truyền dẫn quỹ điện tử chuyển đổi thư điện tử, giao dịch tiền điện tử, thương điện tử, tài chính-ngân hàng Cụ thể như: Trong giao tiếp (E-Mail, SMS): Khi viết e-mail, ta không cần phải tin tưởng nhà cung cấp email quyền riêng tư giả mạo Ta mã hóa thư khóa cơng khai người nhận ký bên cạnh Bằng cách này, người gửi biết chắn khơng có giả mạo tin nhắn đến từ người gửi Nó xảy nhà cung cấp không cung cấp thông điệp tất 13 Tiền điện tử: Để chứng minh người người nắm giữ Bitcoin, hệ thống sử dụng mật mã bất đối xứng Ngay từ đầu, đảm bảo chủ sở hữu hợp lệ đồng xu Sau đó, chủ sở hữu hợp lệ xác định chủ sở hữu khóa riêng, phù hợp với khóa cơng khai định Xin lưu ý chữ ký số chứng minh quyền sở hữu thời điểm cụ thể Họ không giải vấn đề mà chủ sở hữu chi tiêu đồng xu hai lần - vấn đề chi tiêu gấp đôi VII Cài đặt thử nghiệm Qua trình kiểm tra cho thấy liệu khơng bị thay đổi qua đảm bảo tính tồn vẹn liệu VIII Kết luận Báo cáo thực việc tìm hiểu kiến trúc, giải thuật, điểm yếu, dạng công ứng dụng chữ ký số sử dụng giải thuật RSA Tạo kiểm tra chữ ký số Cài đặt thử nghiệm kiểm tra chữ ký số để đảm bảo tính tồn vẹn liệu 14 Tài liệu tham khảo: http://infosecptit.com/cs-attt/CSATTT-Chuong%204%20%20Dam%20bao%20ATTT%20dua%20tren%20ma%20hoa.pdf https://vi.wikipedia.org/wiki/Ch%E1%BB%AF_k%C3%BD_s%E1%BB%91 http://infosecptit.com/cs-attt/Giaotrinh-cs-attt-2018-int1472-new.pdf https://doc.edu.vn/tai-lieu/de-tai-ung-dung-he-mat-ma-rsa-va-chu-ki-dien-tu-vao-viecma-hoa-thong-tin-trong-the-atm-7244/ https://vi.wikipedia.org/wiki/RSA_(m%C3%A3_h%C3%B3a) https://tailieumienphi.vn/doc/luan-van-thac-si-cong-nghe-thong-tin-cac-phuong-phaptan-cong-chu-ky-so-rsa-elga-w3aduq.html https://www.slideshare.net/diepnv/thut-ton-m-ha-rsa https://vi.wikipedia.org/wiki/Ch%E1%BB%AF_k%C3%BD_s%E1%BB%91 15