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

Chữ ký số RSA CSATTT PTIT.Pdf

16 17 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

Thông tin cơ bản

Tiêu đề Tìm hiểu về giải thuật tạo chữ ký số sử dụng RSA
Tác giả Vũ Nhật Minh Đức, Nguyễn Xuân Giang, Đặng Xuân Hải, Vũ Trung Hiếu, Nguyễn Huy Hoàng, Đỗ Ngọc Huế
Người hướng dẫn Giáo viên hướng dẫn: Hoàng Xuân Dậu
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Cơ sở an toàn thông tin
Thể loại Báo cáo thực tập
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 16
Dung lượng 1,39 MB
File đính kèm Báo cáo CSATTT - Lớp D20AT-01 - Nhóm 5.rar (1 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ậ[.]

Trang 1

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ậ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

Trang 2

Mục Lục

I GIỚI THIỆU 2

II KIẾN TRÚC 2

1 Kiến trúc chữ ký số tổng quát 2

1.1 Quá trình ký  quá trình gửi 3

2 Kiến trúc chữ ký số sử dụng RSA 3

2.1 Tạo chữ ký: 4

2.2 Kiểm tra chữ ký: 5

III GIẢI THUẬT RSA 6

1 Giải thuật RSA được dùng trong việc tạo khóa, mã hóa, giải mã 6

2 Tạo khóa: 7

3 Mã hóa và giải mã 9

4 Cài đặt giải thuật RSA trong ngôn ngữ Java 10

IV ĐIỂM YẾU CỦA CHỮ KÝ SỐ SỬ SỤNG GIẢI THUẬT RSA 11

1 Tốc độ của thuật toán RSA: 11

2 Phân phối khóa: 12

3 Chi phí: 12

4 Hiệu suất của thuật toán: 12

V CÁC DẠNG TẤN CÔNG 12

1 Phân phối khóa 12

2 Tấn công dựa trên thời gian 12

3 Tấn công bằng phương pháp lựa chọn thích nghi bản 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

Trang 3

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ố và

giải thuật kiểm tra chữ ký số

Giải thuật tạo ra chữ ký số (Digital Signature generation algorithm) là một phương pháp sinh chữ ký số

Giải thuật kiểm tra chữ ký số (Digital Signature verification algorithm) là một

phương pháp xác minh tính xác thực của chữ ký số, có nghĩa là nó thực sự được tạo

ra bởi 1 bên chỉ đị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 dữ liệu thông điệp thành dạng có thể ký được

 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 dữ liệu từ thông điệp

Hàm băm (Hash Funtion) là hàm toán học chuyển đổi thông điệp (message) có độ

dài bất kỳ (hữu hạn) thành một 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 này được gọi là 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 toán SHA-1 nhận thông điệp ở đầu vào có chiều dài k<264 bit, thực hiện xử lý và đưa ra thông điệp thu gọn (message digest) có chiều dài cố định 160 bits Quá trình tính toán cũng thực hiện theo từng khối 512bits, nhưng

bộ đệm xử lý dùng 5 thanh ghi 32-bits Thuật toán này chạy tốt với các bộ vi xử lý

có cấu trúc 32 bits

1 Kiến trúc chữ ký số tổng quát:

Trang 4

1.1 Quá trình ký quá trình gửi:

1.1.1 Các bước của quá trình ký một thông điệp (bên người gửi):

 Tính toán chuỗi đại diện (message digest/hash value) của thông điệp sử dụng một giải thuật băm (Hashing algorithm)

 Chuỗi đại diện được ký sử dụng khóa riêng (Private key) của người gửi và một giải thuật tạo chữ ký (Signature/Encryption algorithm) Kết quả là chữ ký số (Digital signature) của thông điệp hay còn gọi là chuỗi đại diện được mã hóa (Encrypted message digest)

 Thông điệp ban đầu (message) được ghép với chữ ký số (Digital signature) tạo thành thông điệp đã được ký (Signed message)

 Thông điệp đã được ký (Signed message) được gửi cho người nhận

1.1.2 Các bước của quá trình kiểm tra chữ ký (bên người nhận):

 Tách chữ ký số và thông điệp gốc khỏi thông điệp đã ký để xử lý riêng

 Tính toán chuỗi đại diện MD1 (message digest) của thông điệp gốc sử dụng giải thuật băm (là giải thuật sử dụng trong quá trình ký)

 Sử dụng khóa công khai (Public key) của người gửi để giải mã chữ ký số → chuỗi đại diện thông điệp MD2

 So sánh MD1 và MD2:

 Nếu MD1 = MD2 → chữ ký kiểm tra thành công Thông điệp đảm bảo tính toàn vẹn

và thực sự xuất phát từ người gửi (do khóa công khai được chứng thực)

 Nếu MD1 < > MD2 → chữ ký không hợp lệ Thông điệp có thể đã bị sửa đổi hoặc không thực sự xuất phát từ người gửi

2 Kiến trúc chữ ký số sử dụng RSA:

Trang 5

RSA là giải thuật cho phép thực hiện 2 tính năng:

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 của người nhận

 Người nhận giải mã thông điệp sử dụng khóa riêng của mình

 Tạo chữ ký số:

 Người gửi tạo chữ ký số sử dụng khóa bí mật của mình

 Người nhận kiểm tra chữ ký sử dụng khóa công khai của người gửi

Trang 6

 Quá trình ký (bên gửi)

 Tính toán chuỗi đại diện (message digest/ hash value) của thông điệp sử dụng một giải thuật băm (Hashing algorithm) SHA-1

 Chuỗi đại diện được ký sử dụng khóa riêng (Priavte key) của người gửi và giải thuật tạo chữ ký (Signature/ Encryption algorithm) RSA Kết quả chữ ký số (Digital signature) của thông điệp hay còn gọi là chuỗi đại diện được mã hóa bởi giải thuật RSA (Encryted message digest)

 Thông điệp ban đầu (message) được ghép với chữ ký số (Digital signature) tạo thành thông điệp đã được ký (Signed message)

 Thông điệp đã được ký (Signed message) được gửi cho người nhận

 Quá trình kiểm tra chữ ký (bên nhận):

 Tách chữ ký số RSA và thông điệp gốc khỏi thông điệp đã ký để xử lý riêng;

 Tính toán chuỗi đại diện MD1 (message digest) của thông điệp gốc sử dụng giải thuật băm (là giải thuật sử dụng trong quá trình ký là SHA-1)

 Sử dụng khóa công khai (Public key) của 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 và MD2:

 Nếu MD1 =MD2 -> chữ ký kiểm tra thành công Thông điệp đảm bảo tính toàn vẹn và thực sự xuất phát từ người gửi (do khóa công khai được chứng thực)

 Nếu MD1 <>MD2 -> chữ ký không hợp lệ Thông điệp có thể đã bị sửa đổi hoặc không thực sự xuất phát từ người gửi

Trang 7

III Giải thuật RSA

 Giới thiệu:

 Giải thuật mã hóa RSA được 3 nhà khoa học người Mỹ là R Rivest, A Shamir và

L Adleman phát minh năm 1977 và tên giải thuật RSA được đặt theo chữ cái đầu của tên 3 đồng tác giả Độ an toàn của RSA dựa trên tính khó của việc phân tích số nguyên rất lớn, với độ lớn cỡ hàng trăm chữ số thập phân RSA sử dụng một cặp khóa, trong đó khóa công khai dùng để mã hóa và 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ó thể công bố rộng rãi

 Hiện nay, các khóa RSA có kích thước nhỏ hơn 1024 bit được coi là không an toàn

do tốc độ các hệ thống máy tính tăng nhanh Để đảm bảo an toàn, khuyến nghị sử dụng khóa 20481 bit trong 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 hiện là một trong các giải thuật mã hóa khóa bất đối xứng được sử dụng rộng rãi nhất trên thực tế: RSA có thể được sử dụng để mã hóa thông điệp, và để tạo và kiểm tra chữ ký số

1 Giải thuật RSA được dùng trong việc tạo khóa, mã hóa, giải mã:

Trang 8

Thuật toán RSA có hai khóa:

Khóa công khai (Public key): được công bố rộng rãi cho mọi người và được dùng

để mã hóa

Khóa bí mật (Private key): những thông tin được mã hóa bằng khóa công khai chỉ

có thể được giải mã bằng khóa bí mật tương ứng

2 Tạo khóa:

 RSA cung cấp một thủ tục tạo cặp khóa, gồm khóa công khai và khóa riêng tương

đối đơn giản Cụ thể, thủ tục tạo khóa gồm các bước như sau:

Trang 9

 Một số yêu cầu với quá trình sinh khóa:

 Dưới đây liệt kê một số yêu cầu cơ bản đặt ra với các tham số sinh khóa và khóa để đảm bảo độ an toàn cho cặp khóa RSA Các yêu cầu cụ thể gồm:

o Yêu cầu với các tham số sinh khóa p và q:

 Các số nguyên tố p và q phải được chọn sao cho việc phân tích n (n = p × q) là không khả thi về mặt tính toán

 p và q nên có cùng độ lớn (tính bằng bit) và phải là các số đủ lớn.Nếu n có kích thước

1024 bit thì p và q nên có kích thước khoảng 512 bit Nếu n có kích thước 2048 bit thì p và q nên có kích thước khoảng 1024 bit

 Hiệu số p – q không nên quá nhỏ, do nếu p – q quá nhỏ, tức p  q và p  √n Như vậy, có thể chọn các số nguyên tố ở gần √n và thử lần lượt Khi có được p, có thể tính q và tìm ra d là khóa bí mật từ khóa công khai e và (n) = (p - 1)(q - 1)

 Nếu p và q được chọn ngẫu nhiên và p – q đủ lớn, khả năng hai số này bị phân tích

từ n giảm đi

 Các số nguyên tố p và q nên là số nguyên tố mạnh (Strong prime) Số nguyên tố p được xem là số nguyên tố mạnh nếu nó thỏa mãn 3 điều kiện: (i) p – 1 có một thừa

số nguyên tố lớn, giả thiết là r; (ii) p+1 có một thừa số nguyên tố lớn và (iii) r – 1 có một 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 = 3 có thể tăng tốc độ mã hóa

 Kẻ tấn công có thể nghe lén và lấy được bản mã, từ đó phân tích bản mã để khôi phục bản rõ Do số mũ mã hóa nhỏ nên chi phí cho phân tích, hoặc vét cạn không quá lớn

 Do vậy, nên sử dụng số mũ mã hóa e đủ lớn và thêm chuỗi ngẫu nhiên vào khối rõ trước khi mã hóa để giảm khả năng bị vét cạn hoặc phân tích bản 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ỏ, có thể tăng tốc độ giải mã

 Nếu d nhỏ và gcd(p-1, q-1) cũng nhỏ thì d có thể tính được 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

Trang 10

3 Mã hóa và giải mã:

 Ví dụ về giải thuật RSA:

Trang 11

4 Cài đặt giải thuật RSA trong ngôn ngữ JAVA:

 Sử dụng BigInteger trong gói java.math.* cung cấp hầu hết các hàm dựng và các 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 2 số nguyên lớn

 Hàm BigInteger subtract(BigInteger val): trừ 2 số nguyên lớn

 Hàm BigInteger multiply(BigInteger val): nhân 2 số nguyên lớn

 Hàm gcd(BigInteger val): tìm USCLN của 2 số lớn

 Hàm mod(BigInteger m): tính modulo (phần dư) của 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)

Trang 12

 Cụ thể code RSA:

 Tạo khóa:

 Mã hóa và giải mã:

1 Tốc độ của thuật toán RSA:

 Tốc độ của RSA là một trong những điểm yếu của RSA so với các hệ mã đối xứng, so với hệ mã DSA thì RSA chậm hơn từ 100 đến 1000 lần, vì vậy RSA không được

dùng để mã hóa khối lượng dữ liệu lớn mà thường dùng để mã hóa dữ liệu nhỏ

Trang 13

2 Phân phối khóa:

 Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là một trong những yếu tố quyết định đối với độ an toàn của RSA Quá trình phân phối

khóa cần chống lại được tấn công đứng giữa (man-in-the-middle attack)

3 Chi phí:

 Để thực hiện thuật toán RSA phần lớn tốn chi phí thực hiện các phép tính cơ bản như : Tạo khóa, mã hóa, giải mã

 Quá trình ký và xác thực chữ ký tương đương với chi phí thực hiện các phép tính lũy thừa modulo n

 Để đảm bảo cho khóa bí mật được an toàn thì thường chọn mũ công khai e nhỏ hơn nhiều so với số mũ bí mật d

4 Hiệu suất của thuật toán:

 Do tốc độ của RSA không nhanh nên RSA không được dùng để ký khối lượng dữ liệu lớn mà thường dùng với giải thuật băm để tăng tính linh hoạt trong việc ký và xác thực chữ ký

V Các dạng tấn công

1 Phân phối khóa:

 Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là một trong những yếu tố quyết định đối với độ an toàn của RSA Quá trình phân phối

khóa cần chống lại được tấn công đứng giữa (man-in-the-middle attack) Giả sử kẻ

xấu(C) có thể gửi cho Người gửi thông tin(A) một khóa bất kỳ và khiến (A) tin rằng

đó là khóa (công khai) của Đối tác(B) Đồng thời (C) có khả năng đọc được thông tin trao đổi giữa (A) và (B) Khi đó, (C) sẽ gửi cho (A) khóa công khai của chính mình (mà (A) nghĩ rằng đó là khóa của (B)) Sau đó, (C) đọc tất cả văn bản mã hóa

do (A) gửi, giải mã với khóa bí mật của mình, giữ 1 bản copy đồng thời mã hóa bằng khóa công khai của (B) và gửi cho (B) Về nguyên tắc, cả (A) và (B) đều không phát hiện ra sự can thiệp của người thứ ba Các phương pháp chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai (digital certificate) hoặc các thành

phần của hạ tầng khóa công khai (public key infrastructure - PKI)

2 Tấn công dựa trên thời gian:

 Vào năm 1995, Paul Kocher mô tả một dạng tấn công mới lên RSA: nếu kẻ tấn công nắm đủ thông tin về phần cứng thực hiện mã hóa và xác định được thời gian giải mã

đối với một số bản mã lựa chọn thì có thể nhanh chóng tìm ra khóa d Dạng tấn công

này có thể áp dụng đối với hệ thống chữ ký điện tử sử dụng RSA Năm 2003, Dan Boneh và David Brumley chứng minh một dạng tấn 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ỉ của việc tối ưu hóa định lý số dư Trung quốc mà nhiều ứng dụng đã thực hiện

Trang 14

 Để chống lại tấn công dựa trên thời gian là đảm bảo quá trình giải mã luôn diễn ra trong thời gian không đổi bất kể văn bản mã Tuy nhiên, cách này có thể làm giảm hiệu suất tính toán Thay vào đó, hầu hết các ứng dụng RSA sử dụng một kỹ thuật

gọi là che mắt Kỹ thuật này dựa trên tính nhân của RSA: thay vì tính c d

mod n,

Alice đầu tiên chọn một số ngẫu nhiên r và tính (r e

c) d mod n Kết quả của phép tính

này là rm mod n và tác động của r sẽ được loại bỏ bằng cách nhân kết quả với nghịch

đảo của r Đỗi với mỗi văn bản mã, người ta chọn một giá trị của r Vì vậy, thời gian giải mã sẽ không còn phụ thuộc vào giá trị của văn bản mã

3 Tấn công bằng phương pháp lựa chọn thích nghi bản mã:

 Năm 1981, Daniel Bleichenbacher mô tả dạng tấn công lựa chọn thích nghi bản mã (adaptive chosen ciphertext attack) đầu tiên có thể thực hiện trên thực tế đối với một văn bản mã hóa bằng RSA Văn bản này được mã hóa dựa trên tiêu chuẩn PKCS

#1v1, một tiêu chuẩn chuyển đổi bản rõ có khả năng kiểm tra tính hợp lệ của văn bản sau khi giải mã Do những khiếm khuyết của PKCS #1, Bleichenbacher có thể thực hiện một tấn công lên bản RSA dùng cho giao thức SSL (tìm được khóa phiên)

Do phát hiện này, các mô hình chuyển đổi an toàn hơn như chuyển đổi mã hóa bất đối xứng tối ưu (Optimal Asymmetric Encryption Padding) được khuyến cáo sử dụng Đồng thời phòng nghiên cứu của RSA cũng đưa ra phiên bản mới của PKCS

#1 có khả năng chống lại dạng tấn công nói trên

VI Ứng dụng của hệ thống mã hóa RSA

 RSA thỏa mãn 5 yêu cầu của 1 hệ mã hóa hiện đại:

 Độ bảo mật cao ( nghĩ là để giải mã được mà không biết khóa thì phải tốn hàng triệu năm)

 Thao tác nhanh (thao tác mã hóa và giải mã tốn ít thời gian)

 Dùng chung được

 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ì vậy mà thuật toán RSA được sử dụng rộng rãi trong công tác mã hóa và 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 mãi đ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 về quyền riêng tư và giả mạo Ta có thể mã hóa thư bằng khóa công khai của người nhận và ký nó ở bên cạnh Bằng cách này, người gửi biết chắc chắn rằng không có sự giả mạo và tin nhắn đến từ đúng người gửi Nó chỉ có thể xảy ra rằng nhà cung cấp không cung cấp thông điệp ở tất cả

Ngày đăng: 22/04/2023, 10:40

w