Định nghĩa Chữ ký điện tử là dữ liệu dưới dạng điện tử từ, chữ, số, kí hiệu, âm thanh hoặc các hình thức khác, gắn liền hoặc kết hợp một cách logic với thông điệp dữ liệu, có khả năng xá
Trang 1Môn học : An toàn và bảo mật hệ thống thông tin
Đề tài : Tìm hiểu chữ ký số và công
Lưu Thanh Hải K094061135
Hoàng Anh Giang K094061118
Ngô Thị Hải Linh K094061148
Trang 2A)Chữ ký số 3
1.Định nghĩa 3
2.Cách tạo chữ ký số 3
3.Chứng thực chữ ký số 4
4.Đặc tính của chữ ký số 4
5.Ứng dụng chữ ký số 5
-Chứng thư số 6
-Ứng dụng chứng thư số 6
Chứng thư số cho cá nhân 7
Chứng thư số cho tổ chức – doanh nghiệp 8
Chứng thư số SSL cho Web Server 8
Chứng thư số Code Signing 9
B)Mã hóa RSA 12
1.Giới thiệu tổng quan về mã hóa RSA 12
2.Thuật toán RSA 12
3.Ứng dụng RSA vào chữ ký số 21
4.Các cách Hacker tấm công và giải pháp 22
-Tấn công quá trình tạo khóa 23
-Tấn công quá trình phân phối khóa 23
-Tấn công dựa trên thời gian 23
-Tấn công lựa chọn thích nghi bản mã 24
C)Tài liệu tham khảo 26
Trang 3A) Chữ ký số
1 Định nghĩa
Chữ ký điện tử là dữ liệu dưới dạng điện tử (từ, chữ, số, kí hiệu, âm thanh hoặc các hình thức khác), gắn liền hoặc kết hợp một cách logic với thông điệp dữ liệu, có khả năng xác nhận người ký thông điệp và xác nhận sự chấp thuận của người đó đối với nội dung thông điệp dữ liệu được ký (Slide TTDT)
Một số định nghĩa khác có liên quan sưu tầm trên Internet:
“Chữ ký điện tử” là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video ) nhằm mục
đích xác định người chủ của dữ liệu đó
Chữ ký điện tử được sử dụng trong các giao dịch điện tử Xuất phát từ thực tế, chữ ký điện
tử cũng cần đảm bảo các chức năng: xác định được người chủ của một dữ liệu nào đó: vănbản, ảnh, video, dữ liệu đó có bị thay đổi hay không
Khái niệm chữ ký điện tử - mặc dù thường được sử dụng cùng nghĩa với chữ ký số nhưng thực sự có nghĩa rộng hơn Chữ ký điện tử chỉ đến bất kỳ phương pháp nào (không nhất thiết
là mật mã) để xác định người chủ của văn bản điện tử Chữ ký điện tử bao gồm cả địachỉ telex và chữ ký trên giấy được truyền bằng fax
"
Chữ ký số" là một dạng chữ ký điện tử được tạo ra bằng sự biến đổi một thông điệp dữ liệu
sử dụng hệ thống mật mã không đối xứng theo đó người có được thông điệp dữ liệu ban đầu
và khoá công khai của người ký có thể xác định được chính xác:
a) Việc biến đổi nêu trên được tạo ra bằng đúng khoá bí mật tương ứng với khoá công khaitrong cùng một cặp khóa;
b) Sự toàn vẹn nội dung của thông điệp dữ liệu kể từ khi thực hiện việc biến đổi nêu trên.(Nghị định số 26/2007/NĐ-CP)
Trang 4Xét ví dụ sau: Bob muốn gửi thông tin cho Alice và muốn Alice biết thông tin đó thực sự dochính Bob gửi Bob gửi cho Alice bản tin kèm với chữ ký số Chữ ký này được tạo ra với khóa bí mật của Bob Khi nhận được bản tin, Alice kiểm tra sự thống nhất giữa bản tin và chữ ký bằng thuật toán kiểm tra sử dụng khóa công cộng của Bob Bản chất của thuật toán tạo chữ ký đảm bảo nếu chỉ cho trước bản tin, rất khó (gần như không thể) tạo ra được chữ
ký của Bob nếu không biết khóa bí mật của Bob Nếu phép thử cho kết quả đúng thì Alice
có thể tin tưởng rằng bản tin thực sự do Bob gửi
Thông thường, Bob không mật mã hóa toàn bộ bản tin với khóa bí mật mà chỉ thực hiện với giá trị băm của bản tin đó Điều này khiến việc ký trở nên đơn giản hơn và chữ ký ngắn hơn.Tuy nhiên nó cũng làm nảy sinh vấn đề khi 2 bản tin khác nhau lại cho ra cùng một giá trị băm Đây là điều có thể xảy ra mặc dù xác suất rất thấp
• Tạo cặp khóa - thuật toán RSA
• Tạo bảng tóm tắt thông điệp từ thông điệp gốc – hàm băm
• Tạo chữ ký số (qua khóa công khai hoặc bí mật) - thuật toán RSA
3)Chứng thực chữ ký số
•Giải mã chữ ký số - thuật toán RSA
•Tạo thông điệp tóm tắt từ thông điệp gốc – hàm băm
•So sánh kết quả giải mã với thông điệp tóm tắt
Trang 54) Đặc tính của chữ ký số
a) Khả năng xác định nguồn gốc
Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với khóa bí mật màchỉ có người chủ của khóa biết Để sử dụng chữ ký số thì văn bản cần phải được mã hóabằng hàm băm (văn bản được "băm" ra thành chuỗi, thường có độ dài cố định và ngắn hơnvăn bản) sau đó dùng khóa bí mật của người chủ khóa để mã hóa, khi đó ta được chữ ký số.Khi cần kiểm tra, bên nhận giải mã (với khóa công khai) để lấy lại chuỗi gốc (được sinh raqua hàm băm ban đầu) và kiểm tra với hàm băm của văn bản nhận được Nếu 2 giá trị(chuỗi) này khớp nhau thì bên nhận có thể tin tưởng rằng văn bản xuất phát từ người sở hữukhóa bí mật
b) Tính toàn vẹn
Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng là văn bản không bị sửa đổitrong khi truyền vì nếu văn bản bị thay đổi thì hàm băm cũng sẽ thay đổi và lập tức bị pháthiện Quá trình mã hóa sẽ ẩn nội dung của gói tin đối với bên thứ 3 nhưng không ngăn cảnđược việc thay đổi nội dung của nó
c) Tính không thể phủ nhận
Trong giao dịch, một bên có thể từ chối nhận một văn bản nào đó là do mình gửi Để ngănngừa khả năng này, bên nhận có thể yêu cầu bên gửi phải gửi kèm chữ ký số với văn bản.Khi có tranh chấp, bên nhận sẽ dùng chữ ký này như một chứng cứ để bên thứ ba giải quyết
Trang 6Tuy nhiên, khóa bí mật vẫn có thể bị lộ và tính không thể phủ nhận cũng không thể đạt đượchoàn toàn
Đà Nẵng, Thái Nguyên, Hà Nội, Tp Hồ Chí Minh, Cần Thơ
Trong lĩnh vực Thương mại điện tử, ứng dụng chữ ký số cũng rất tiềm năng Điển hình trong giao dịch Thương mại điện tử là lĩnh vực ngân hàng điện tử (Internet Banking), mua sắm trực tuyến (Online Shopping), kinh doanh chứng khoán trực tuyến (Online Stock
Trading) Tuy nhiên, trong số gần 50 ngân hàng, hơn 100 công ty chứng khoán cũng như hàng nghìn website bán hàng trực tuyến ở Việt Nam, hầu hết chưa sử dụng chữ ký số trong các hoạt động giao dịch điện tử với khách hàng Tại sao một lĩnh vực “màu mỡ” như vậy màchưa thể áp dụng triệt để chữ ký số vào? Nguyên nhân chính dẫn tới thực trạng chưa tương xứng với thực tế tiềm năng này một phần do việc các tổ chức cung cấp CA ở Việt Nam hìnhthành muộn so với các nước khác Tới năm 2005, chúng ta mới ban hành “Luật giao dịch điện tử” và mãi 2 năm sau đó mới có quy định cụ thể về việc thành lập các nhà cung cấp dịch vụ CA (trong đó có FPT-CA được MIC cấp phép tháng 7/2010)
Chứng thư số là gì?
Để thực hiện được các giao dịch an toàn qua mạng, các bên tham gia cần phải có “chứng thưsố” Chứng thư số là một cấu trúc dữ liệu chứa các thông tin cần thiết để thực hiện các giaodịch an toàn qua mạng Chứng thư số được lưu giữ trên máy tính dưới dạng một tập tin(file)
Nội dung chứng thư số bao gồm:
· Tên chủ thể chứng thư số
· Khoá công khai
Trang 7· Một số thông tin khác như, tên của CA cấp chứng chỉ số đó, hạn dùng, thuậttoán ký
Ứng dụng chứng thư số để làm gì?
Với chứng thư số người dùng có thể:
· Xác định danh tính người dùng khi đăng nhập vào một hệ thống (xác thực)
· Ký số các tài liệu Word, PDF hay một tệp liệu
· Mã hóa thông tin để đảm bảo bí mật khi gửi và nhận trên mạng
· Thực hiện các kênh liên lạc trao đổi thông tin bí mật với các thực thể trên mạng nhưthực hiện kênh liên lạc mật giữa người dùng với webserver
• Chứng thư số cho cá nhân
Gói chứng thư cá nhân cơ bản cho phép thuê bao sử dụng chứng thư để ký số và mã hóa nội dung gửi đi khi sử dụng địa chỉ Email đã đăng ký với nhà cung cấp dịch vụ
Khi sử dụng dịch vụ này, người nhận email của thuê bao sẽ nhận biết rằng, nội dung thư họ
Trang 8vừa nhận từ đúng địa chỉ email của thuê bao và duy trì được tính bảo mật đường truyền Ngoài ra, thuê bao có thể sử dụng chứng thư cho các hoạt động giao dịch điện tử khác như xác thực (client authentication), mã hóa giao dịch.Gói chứng thư cá nhân cơ bản cho phép thuê bao sử dụng chứng thư để ký số và mã hóa nội dung gửi đi khi sử dụng địa chỉ Email
đã đăng ký với nhà cung cấp dịch vụ
Khi sử dụng dịch vụ này, người nhận email của thuê bao sẽ nhận biết rằng, nội dung thư họ vừa nhận từ đúng địa chỉ email của thuê bao và duy trì được tính bảo mật đường truyền Ngoài ra, thuê bao có thể sử dụng chứng thư cho các hoạt động giao dịch điện tử khác như xác thực (client authentication), mã hóa giao dịch
• Chứng thư số cho tổ chức - doanh nghiệp
Tổ chức, doanh nghiệp sử dụng để ký số trên các văn bản điện tử thay thế cho chữ ký tay của giám đốc và con dấu của tổ chức, doanh nghiệp trong các nghiệp vụ văn bản nội bộ hoặcvới bên ngoài và với cơ quan nhà nước
-Sử dụng cho các dịch vụ hành chính công điện tử như: khai báo thuế trực tuyến, kê khai hảiquan,…
-Sử dụng bảo vệ giao dịch email, ký và mã hóa thư điện tử
-Xác thực tổ chức, doanh nghiệp đăng nhập các hệ thống giao dịch trực tuyến trong ứng dụng thương mại điện tử, chính phủ điện tử, thanh toán trực tuyến, giao dịch chứng khoán
và internet banking
Chứng thư số SSL cho Web Server
Chứng thư SSL nhằm đảm bảo bảo mật đường truyền đối với các dữ liệu mật, nhạy cảm trên các trang web, mạng internet và các mạng Intranet
Giao thức bảo mật - SSL (Secure Sockets Layers) là một giao thức an ninh được sử dụng để bảo mật thông tin trong quá trình truyền dữ liệu trên mạng Internet Khi thực hiện kết nối
bảo mật bởi SSL, người dùng sẽ thấy các trình duyệt chuyển đổi http thành https, xuất hiện
ổ khóa vàng và thanh địa chỉ chuyển màu xanh (trong trường hợp chứng thư EV SSL) Dữ liệu được truyền qua SSL mang lại cho website cung cấp dịch vụ và người dùng Internet:
· Bảo mật dữ liệu: dữ liệu được mã hóa và chỉ người nhận đích thực mới có thể giải mã;
Trang 9· Toàn vẹn dữ liệu: dữ liệu không bị thay đổi bởi tin tặc;
· Chống chối bỏ: đối tượng thực hiện gửi dữ liệu không thể phủ nhận dữ liệu của mình;
Chứng thư số Code Signing
Code Signing cho phép nhà phát triển phần mềm có thể ký số lên các sản phẩm và giải phápcủa họ Người dùng khi tải các phần mềm trên mạng từ các nhà cung cấp sẽ không phải lo lắng về xuất xứ cũng như tính toàn vẹn của phần mềm đó
Code Signing Certificate sẽ tạo ra một "vỏ bọc số" giúp nhà sản xuất đảm bảo được tínhnguyên vẹn của phần mềm được phân phối bởi họ, và xác nhận tính nguyên vẹn đó khingười dùng nhận được phần mềm (thông qua thiết bị lưu trữ hoặc tải về Internet)
Đảm bảo nội dung mà bạn cung cấp là đáng tin cậy
Các nhà sản xuất sẽ "ký tên" vào nội dung của phần mềm bằng một private-key và chuyểnthành một hash Hệ thống phân phối phần mềm sẽ dùng một public-key để giải mã "chữ ký"
Trang 10trong phần mềm nhận được thành một hash khác Sau đó các hash này sẽ được so sánh vớinhau Nếu trùng khớp, hệ thống sẽ tự động chấp nhận phần mềm Nếu không đúng, hệ thống
sẽ cảnh báo người dùng
Do đó, một khi không nhận được cảnh báo, người dùng sẽ luôn được đảm bảo rằng họ đãnhận được một sản phẩm đáng tin cậy, và nguyên vẹn từ nhà sản xuất
Giảm thiểu các cảnh báo lỗi bảo mật
Thông thường, khi người dùng chạy một phần mềm được tải về từ Internet mà không đượcnhà sản xuất xác nhận bằng một Code Signing Certificate hoặc bằng một Code SigningCertificate tự cấp thì hệ thống sẽ hiển thị một bảng cảnh báo lỗi như sau:
Thông báo lỗi khi phần mềm không được "ký tên"
Việc "đóng dấu" vào phần mềm của mình bằng một Code Signing Certificate được xác thựcbởi một CA có uy tín (như VeriSign, Thawte, Comodo, ) sẽ gia tăng độ tin cậy của ngườidùng đối với phần mềm của bạn lên nhiều lần Khi đó, các cảnh báo lỗi bảo mật cũng sẽkhông còn xuất hiện nữa
Trang 11Thông báo lỗi khi phần mềm được "ký tên" bằng một Code Signing Certificate tự cấp
Chúng tôi hiện cung cấp sản phầm Code Signing Certificate cho các môi trường phát triểnphần mềm sau đây:
Trang 12B) Mã hóa RSA
1) Giới thiệu tổng quan về mã hóa RSA
Thuật toán RSA có hai khóa: khóa công khai(hay khóa công cộng) và khóa bí mật (hay khóa cá nhân) Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa 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 Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được
Ví dụ minh chứng : Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau : Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được
Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn(Khóa công khai) và giữ lại chìa khóa Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường
và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa) Sau
đó Bob gửi chiếc hộp lại cho Alice Alice mở hộp với chìa khóa của mình và đọc thông tin
Trang 13trong thư Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật.
2) Thuật toán mã hóa RSA
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
1. Chọn 2 số nguyên tố lớn và với , lựa chọn ngẫu nhiên và độc lập
Các số nguyên tố thường được chọn bằng phương pháp thử xác suất
Các bước 4 và 5 có thể được thực hiện bằng giải thuật Euclid mở rộng (xem thêm: sốhọc môđun)
Bước 5 có thể viết cách khác: Tìm số tự nhiên sao cho
cũng là số tự nhiên Khi đó sử dụng giá trị
Trang 14Một dạng khác của khóa bí mật bao gồm:
p and q, hai số nguyên tố chọn ban đầu,
d mod (p-1) và d mod (q-1) (thường được gọi là dmp1 và dmq1),
(1/q) mod p (thường được gọi là iqmp)
Ví dụ
Sau đây là một ví dụ với những số cụ thể Ở đây chúng ta sử dụng những số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn
Lấy:
p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
encrypt(m) = m e mod n = m17 mod 3233
với m là văn bản rõ Hàm giải mã là:
decrypt(c) = c d mod n = c2753 mod 3233
Lý giải chi tiết :
p= 61 <- số nguyên tố đầu tiên
q = 53 <- số nguyêntố thứ hai
p và q phải được giữ bí mật
m=p*q = 3233
e = 17
e và m được thông báo công khai
ta tìm được nghịch đảo của 17 modulo Φ(3233) là
Trang 15d = 2753
d phải được giữ bí mật
Chìa khóa công cộng là (e ,m)
Chìa khóa riêng là (e,m)
Như thế “123” được mã hóa thành “855”
Để giải mã “855”, làm như sau :
giảimã(855) ≡ (855^2753) ( mod 3233 )
≡ 123
Viết kết quả ngay ra đây, thì các bạn thấy qúa dễ dàng
Vấn đề ở chỗ là tìm ra trị số của 855 khi được nâng lên luỹ thừa 2753
Đây là chỗ mà ta áp dụng phương pháp bình phương liên tiếp :
ta có 2753 = 1010110000012
2753 = 1 + 2^6 + 2^7 + 2^9 + 2^11
Trang 17Ưu điểm của nó là không bao giờ phải làm việc với nhũng số lớn hơn ( m – 1 )^2 Nếu các bạn có một chương trình điện toán như “bc” có sẵn trong Linux ,
bạn có thể tính 855^2753 mod 3233 trực tiếp như sau:
Trang 25(hash value) của văn bản cần ký và tính giá trị mũ d mod n của nó (giống như khi Alice
thực hiện giải mã) Giá trị cuối cùng chính là chữ ký điện tử của văn bản đang xét Khi
Bob nhận được văn bản cùng với chữ ký điện tử, anh ta tính giá trị mũ e mod n của chữ
ký đồng thời với việc tính giá trị băm của văn bản Nếu 2 giá trị này như nhau thì Bob biết rằng người tạo ra chữ ký biết khóa bí mật của Alice và văn bản đã không bị thay đổi sau khi ký
4) Các cách hacker tấn công và giải pháp
Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố có độ dài
663 bít với phương pháp phân tán trong khi khóa của RSA có độ dài từ 1024 tới 2048 bít