CHƯƠNG 1: TỔNG QUAN 1. Lý do chọn đề tài Trong kỷ nguyên công nghệ, kỷ nguyên của tri thức với sự phát triển như vũ bão của công nghệ thông tin thì những ứng dụng của Tin học đã len lỏi vào mọi ngóc ngách. Sự xuất hiện của chữ ký số và chức năng tiền định của nó, đặc biệt là vai trò của nó như là một công cụ trong việc xác định tính nguyên gốc, xác định tác giả, bảo đảm tính toàn vẹn của tài liệu số, đã đóng một vai trò vô cùng quan trọng trong việc xác định địa vị pháp lý của tài liệu số trong giao dịch số. Việc sử dụng chữ ký số trong phần lớn trường hợp là cơ sở khẳng định giá trị pháp lý của những văn bản điện tử tương đương với tài liệu giấy.
Hiện nay, chữ ký số là phương tiện duy nhất để xác nhận giá trị pháp lý của tài liệu điện tử. Vai trò của chữ ký điện tử rất quan trọng đối với nhiều cá nhân, doanh nghiệp trong thời ký phát triển bùng nổ của công nghệ thông tin. Chữ ký số dùng cho các văn bản số, cho biết toàn bộ văn bản đã được ký bởi người ký. Và người khác có thể xác minh điều này.
Chữ ký số tương tự như chữ ký thông thường, đảm bảo nội dung tài liệu là đáng tin cậy, chính xác, không hề thay đổi trên đường truyền và cho biết người tạo ra tài liệu là ai. Tuy nhiên, chữ ký số khác chữ ký thường, vì nó tùy thuộc vào văn bản. Chữ ký số sẽ thay đổi theo văn bản còn chữ ký thường thì không hề thay đổi. Chữ ký số được sử dụng để cung cấp chứng thực chủ sở hữu, tính toàn vẹn dữ liệu và chống chối bỏ nguồn gốc trong rất nhiều các lĩnh vực.
Giải pháp dùng chữ ký số là tối ưu vì nó có hiệu lực pháp luật, do đó không cần in ấn tài liệu mà vẫn có thể xác nhận 5 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 được tài liệu, đảm bảo tính toàn vẹn và không chối bỏ. Chữ ký số được phát hành bởi bên thứ ba là cơ quan chứng thực có thẩm quyền cấp phát, thu hồi, quản lý chứng chỉ số cho các thực thể thực hiện các giao dịch an toàn (Certificate Authority hoặc CA) nên đảm bảo tính khách quan. Như vậy, quá trình tạo chữ ký số, xác nhận các yêu cầu pháp lý, bao gồm xác thực người ký, xác thực tin nhắn, là thành công và hiệu quả. Chính vì những ưu điểm của chữ ký số, nó được dùng trong nhiều ứng dụng: Đảm bảo an ninh truyền thông, ngân hàng trực tuyến, thương mại điện tử, đảm bảo an ninh cho thư điện tử, … Hình 1.
Minh họa chữ ký số Hiện nay, có nhiều thuật toán được sử dụng để tạo chữ ký số như RSA, ElGamal, … Các thuật toán này cung cấp nhiều lựa chọn để tạo chữ ký số cho dữ liệu giúp xác thực danh tính, đảm 6 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 bảo tính toàn vẹn của dữ liệu. Trong đó, thuật toán RSA là thuật toán được sử dụng phổ biến nhất để tạo chữ ký số. Bởi các ưu điểm của nó so với các thuật toán khác như: tốc độ tạo khóa, tạo chữ ký nhanh; tốc độ thẩm định dữ liệu nhanh; không yêu cầu hệ thống phần cứng mạnh; khả năng bảo mật cao phụ thuộc vào kích thước khóa tạo ra; được hỗ trợ phát triển với nhiều thư viện được cung cấp sẵn trên nhiều ngôn ngữ, nền tảng khác nhau như: C++, C#, Java, Php, JavaScript, … Vì vậy chúng em đã quyết định chọn đề tài tìm hiểu về chữ ký điện tử RSA và viết ứng dụng minh họa. Để có thể ứng dụng được các ưu điểm của thuật toán RSA trong việc mã hóa dữ liệu, tạo ra chữ ký điện tử với độ an toàn, bảo mật cao giúp ích cho các hoạt động trong đời sống của các cá nhân, doanh nghiệp.
Từ đó góp phần phát triển nền kinh tế, nâng cao đời số của người dân. Nội dung nghiên cứu - Nắm vững các khái niệm quan trọng về an toàn bảo mật thông tin, về mã hóa. - Khái niệm, vai trò của chữ ký điện tử: + Nắm được khái niệm của chữ ký điện tử: o Khóa bí mật: khóa dùng để tạo chữ ký số o Khóa công khai: khóa dùng để kiểm tra chữ ký số, nó được tạo bởi khóa bí mật tương ứng trong cặp khóa o Ký số: Khi đưa khóa bí mật vào chương trình phần mềm để tự động tạo và gắn chữ ký số vào thông điệp dữ liệu 7 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 o Người ký: Thuê bao dùng đúng khóa bí mật của mình để ký số vào một thông điệp dữ liệu dưới tên của mình. o Người nhận: các tổ chức, cá nhân nhận được thông điệp dữ liệu ký bởi người ký, sử dụng chứng thư số của người ký đó để kiểm tra chữ ký số trong thông điệp dữ liệu nhận được và tiến hành các hoạt động, giao dịch có liên quan.
+ Phân loại được các thuật toán được sử dụng để tạo chữ ký điện tử cho dữ liệu: o Thuật toán RSA: giải thuật đơn giản, tạo khóa nhanh, độ bảo mật cao. o Thuật toán ElGamal: giải thuật có độ phức tạp cao, có khả năng bảo mật mạnh mẽ. o Thuật toán DSA: giải thuật đơn giản, tạo chữ ký nhanh, kích thước chữ ký nhỏ, dễ dàng ứng dụng trong các lĩnh vực không yêu cầu cao về tính bảo mật. + Tìm hiểu vai trò của chữ ký điện tử trong đời sống xã hội - Nguyên lý hoạt động của chữ ký điện tử: + Các bước xây dựng một hệ thống chữ ký điện tử: o Tạo chữ ký (ở bên gửi) o Kiểm tra, xác thực chữ ký (ở bên nhận) + Các bước tạo chữ ký điện tử o Sinh khóa 8 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 o Băm dữ liệu o Tạo chữ ký bằng cách mã hóa dữ liệu sau khi băm o Ghép chữ ký với dữ liệu gốc + Các bước kiểm tra, xác thực chữ ký điện tử o Tách chữ ký với dữ liệu gốc o Băm dữ liệu gốc o Giải mã chữ ký o So sánh dữ liệu sau khi băm và chữ ký sau khi được giải mã o Thông báo kết quả kiểm tra - Ưu điểm và nhược điểm của chữ ký điện tử + Ưu điểm: o Tính toàn vẹn dữ liệu o Xác thực người ký o Chống thoái thác o Tiết kiệm thời gian o Chính xác và bảo mật o Có thể dùng mọi lúc mọi nơi o Tăng cường bảo mật cho phần mềm, web, … o Có thể tích hợp chung với các hệ thống + Nhược điểm: o Sự an toàn phụ thuộc vào thuật toán sử dụng 9 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 o Khó chứng minh khi có sai sót o Khó khăn trong xử lý các thủ tục - Giải thuật RSA: Hình 2.
Mô tả Giải thuật RSA + Các bước tạo khóa o B1: Chọn p, q là 2 số nguyên tố o B2: Tính n và o B3: Chọn b với và ước chung lớn nhất của b với là 1 o B4: Tính o B5: Xác định khóa: khóa công khai {b, n}; khóa bí mật {a, p, q} + Quá trình mã hóa và giải mã + Lưu ý về giải thuật RSA - Triển khai bài toán: 10 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 + Lựa chọn các ngôn ngữ để xây dựng ứng dụng demo về chữ ký điện tử + Sử dụng ngôn ngữ C# với thư viện hỗ trợ xây dựng hệ thống tạo và kiểm tra chữ ký điện tử RSA được cung cấp từ Microsoft với tốc độ và tính bảo mật cao. + Sử dụng ngôn ngữ Python với cộng đồng hỗ trợ lớn, nhiều thư viện đa dạng cung cấp nhiều sự lựa chọn với nhiều chức năng phù hợp với các mục đích sử dụng của chữ ký số RSA. + Sử dụng ngôn ngữ JavaScript với khả năng linh hoạt trong xây dựng giao diện web và số lượng thư viện RSA lớn giúp việc xây dựng ứng dụng demo nhanh chóng và dễ dàng. Các kiến thức cần nắm vững - Khái niệm an toàn và bảo mật thông tin - Chữ ký điện tử - Nguyên lý hoạt động của chữ ký điện tử - Giải thuật RSA, tạo khóa, mã hóa, giải mã - Ngôn ngữ lập trình (C#, Java, Php, Python…) - Thiết kế giao diện của từng ngôn ngữ 1.
Lĩnh vực ứng dụng 1. Ứng dụng trong bảo mật dữ liệu RSA ra đời với mục đích bảo vệ dữ liệu, do vậy chúng được ứng dụng rất nhiều trong hoạt động hiện đại. Những ứng dụng của RSA trong bảo mật dữ liệu như: 11 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 Chứng thực dữ liệu: chắc hẳn các bạn đã từng gặp tình trạng yêu cầu xác minh bằng cách đưa ra các con số gửi về email hay số điện thoại trước khi đăng nhập. Đây chính là phương pháp bảo mật thông tin, dữ liệu ứng dụng thuật toán RSA để tránh những tình trạng mạo danh, hack tài khoản gây ảnh hưởng cho người dùng và xã hội.
Việc chứng thực giúp bảo vệ được tài khoản của bản thân người sử dụng giúp an tâm hơn khi sử dụng các dịch vụ trực tuyến. Truyền tải dữ liệu an toàn: hiện nay tình trạng nghe lén, theo dõi hoạt động cũng như lấy cắp dữ liệu cá nhân trên mạng xã hội bị lên án và chỉ trích rất nhiều, bao gồm cả ông lớn Facebook. Không chỉ những trang mạng xã hội, các trang web cũng không tránh khỏi việc lưu lại các hoạt động, hành vi truy cập để phục vụ các mục đích Marketing. Do đó với thuật toán RSA giúp dữ liệu khỏi các cuộc tấn công của kẻ xấu.
Chữ ký số/ chữ ký điện tử: trên các thẻ ATM luôn có phần chữ ký điện tử đã được mã hóa từ chữ ký của khách hàng khi đăng ký tài khoản tại ngân hàng. Có thể nói, trong lĩnh vực ngân hàng, vấn đề bảo mật thông tin của khách hàng cần được đặt lên hàng đầu, chúng quyết định chất lượng của dịch vụ. RSA được ứng dụng để bảo mật dữ liệu khi người dùng thực hiện những giao dịch ngân hàng, đem lại trải nghiệm tốt và giúp khách hàng an tâm hơn 12 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 Hình 3. RSA có nhiều ứng dụng trong bảo mật dữ liệu 1.
Ứng dụng trong công nghệ thông tin Trong ngôn ngữ lập trình Java, các nhà lập trình viên thường sử dụng những đoạn code chứa RSA để tăng tính bảo mật cho trang web và ứng dụng cũng như đảm bảo an toàn cho người sử dụng.Các đoạn code RSA này có thể hoạt động dưới bất kỳ sự thay đổi nào của môi trường.