Hệ mã hóa RSA và chữ ký số

Bài gốc: https://manhhomienbienthuy.github.io/2017/02/20/he-ma-hoa-rsa-va-chu-ky-so.html (đã xin phép tác giả)

Trong bài viết trước chúng ta đã tìm hiểu về chứng chỉ HTTPS và SSL. Trong số đó, chúng tôi đã biết rằng Chứng chỉ SSL cần được chứng thực bằng chữ ký số. Trên thực tế, không chỉ trong Chứng chỉ số SSL, chữ ký số cũng là một công nghệ rất quan trọng, được ứng dụng trong nhiều lĩnh vực khác nhau. Trong bài viết này, chúng ta sẽ xem xét kỹ hơn về chữ ký điện tử cũng như cách tạo và xác minh chúng.

Mật mã bất đối xứng, còn được gọi là mật mã khóa công khai, là một hệ thống mã hóa sử dụng một cặp khóa để mã hóa và giải mã: khóa chung để mã hóa và khóa riêng dành cho khóa giải mã.

Trong hệ thống được mã hóa này, bất kỳ ai cũng có thể sử dụng khóa chung để mã hóa tin nhắn và gửi tin nhắn đó cho người nhận. Nhưng rõ ràng chủ sở hữu của khóa riêng sẽ giữ bí mật để chỉ anh ta mới có thể giải mã được.

Thông thường, cặp khóa được tạo này sẽ cố gắng đảm bảo rằng rất khó (gần như không thể) suy ra khóa riêng từ khóa chung. Vì vậy, bất kỳ kẻ tấn công nào lấy được khóa chung (dễ dàng) đều không thể lấy được khóa riêng để giải mã.

Tuy nhiên, thực tế phũ phàng hơn nhiều. Thuật toán lý tưởng trên hoàn toàn không đạt được. Các thuật toán tạo khóa hiện tại chỉ bảo vệ chống lại các kỹ thuật bẻ khóa thông thường sử dụng máy tính cá nhân. Với sự phát triển của siêu máy tính và máy tính lượng tử, hệ thống mật mã bất đối xứng cũng đang phải đối mặt với nhiều thách thức.

Chữ ký số là một dạng chữ ký điện tử cho các chữ cái. Nó là một dạng dữ liệu được sử dụng để xác thực các dữ liệu khác. Chúng ta sẽ xem cách xác thực hoạt động trong phần tiếp theo.

Chữ ký số sử dụng hệ thống mã hóa bất đối xứng. Trong hầu hết các trường hợp, nó thậm chí còn kiểm tra tính toàn vẹn của dữ liệu. Chữ ký điện tử tương tự như chữ ký viết tay theo nhiều cách, nhưng khó cài đặt và sử dụng hơn nhiều.

Trong phần tiếp theo, chúng ta sẽ tìm hiểu về chữ ký. RSA là một hệ thống mã hóa bất đối xứng được phát triển bởi Ron Rivest, Adi Shamir và Leonard Adleman (tên của nó cũng là hệ thống mã hóa bất đối xứng cổ điển RSA. Tên viết tắt của ba tác giả) và được sử dụng rộng rãi trong công nghệ mật mã và chữ ký điện tử. Trong hệ thống mật mã này, khóa công khai có thể được chia sẻ công khai bởi tất cả mọi người. Hoạt động của RSA dựa trên bốn bước chính: tạo khóa, chia sẻ khóa, mã hóa và giải mã.

Khóa cơ bản của tạo khóa trong RSA là tìm bộ ba số tự nhiên e, d và n:

Một điều không thể bỏ qua đó là cần phải bảo vệ d, vì vậy rằng ngay cả khi bạn biết e, n và thậm chí m cũng không thể tìm thấy d.

Cụ thể, khóa RSA được tạo như sau:

  • Chọn hai số nguyên tố p và q
  • Tính n = pq. Sau này n sẽ được sử dụng làm mô đun trong khóa công khai và khóa riêng.
  • Tính toán các số giả nguyên tố bằng cách sử dụng phi hàm Carmichael như sau: λ(n) = BCNN(λ(p), λ(q)) = BCNN(p − 1, q − 1). Giá trị này sẽ được giữ kín.
  • Chọn số tự nhiên e trong khoảng (1, λ(n)) sao cho ƯCLN(e, λ(n)) = 1, tức là e và λ(n) là các số nguyên tố .
  • Tính số d sao cho d ≡ 1/e (mod λ(n)) hoặc dễ dàng hơn viết de ≡ 1 (mod λ(n)). Số d được gọi là nghịch đảo modulo của e (modulo mod λ(n)).

Khóa chung sẽ là bộ (n, e) và khóa riêng sẽ là số bộ (n, d). Chúng ta cần hết sức cẩn thận với khóa bí mật và các số nguyên tố p và q vì khóa có thể được tính toán dễ dàng.

Trong thực tế, chúng ta thường chọn e tương đối nhỏ. Để mã hóa và giải mã nhanh hơn. Một giá trị thường được sử dụng là e = 65537. Ngoài ra, chúng ta có thể sử dụng phi hàm Euler φ(n) = (p − 1)(q − 1) để tính các số giả nguyên tố và sử dụng giá trị này làm λ(n) . Vì φ(n) là bội số của λ(n), nên một số d sao cho de ≡ 1 (mod φ(n)) cũng sẽ thỏa mãn d ≡ 1/e (mod λ(n)). Tuy nhiên, một tác dụng phụ của điều này là d thường trở nên lớn hơn mức cần thiết.

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

Trong phần này, chúng ta sẽ xem cách sử dụng khóa chung (n, e) và giải mã bằng khóa riêng (n, d).

Nếu có bản rõ M, ta cần chuyển nó thành số tự nhiên m trong khoảng (0, n) sao cho m, n nguyên tố cùng nhau. Điều này rất dễ thực hiện bằng cách thêm một số kỹ thuật đệm. Tiếp theo, chúng tôi mã hóa m thành c như sau:

Sau đó, giá trị c được chuyển đến người nhận.

Bên nhận, họ sẽ giải mã nó. Từ c đến m thu được như sau:

Từ m có thể lấy thông báo bằng cách đảo ngược phần đệm

Hãy lấy một ví dụ đơn giản như sau:

p = 5, q = 7 => n = pq = 35 => φ(n) = 24

Ta chọn e = 5 vì GCC(5, 24) = 1, cuối cùng chọn d = 29 vì ed – 1 = 29×5 – 1 có thể thay bằng số chia hết cho 24.

Giả sử m = 32 (dấu cách), ta mã hóa m được

c = 32^5 % 35 = 2

Giải mã c được m

m = 2 ^ 29 % 35 = 32

Đây là bản gốc m. Bạn có thể mth các giá trị khác nhau và xem thuật toán có chính xác không. Tất nhiên, nó đã được chứng minh. Chứng minh rằng RSA hoạt động chính xác là một vấn đề toán học khá phức tạp sẽ không được đề cập trong bài viết này.

Mức độ bảo mật của RSA phụ thuộc phần lớn vào khả năng của nó. Thừa số nguyên tố của số lớn. Bởi vì chúng tôi rất công khai, vi phạm quyền riêng tư là không thể tránh khỏi nếu quá trình phân tích thừa số nguyên tố diễn ra đơn giản.

Do đó, khi tạo khóa, chúng ta cần chọn ngẫu nhiên các số nguyên tố p và q. Bản thân hai số nguyên tố cũng rất lớn và để làm cho việc phân tích bao thanh toán trở nên khó khăn hơn, hai số nguyên tố sẽ không có cùng độ dài. Có lẽ sẽ không có cách hiệu quả nào để PC thực hiện việc này trong tương lai gần.

Tuy nhiên, với sự phát triển của công nghệ, ngày càng có nhiều siêu máy móc ra đời. Với chúng tôi, máy tính lượng tử cho phép tính toán ở tốc độ cao hơn nhiều, điều này có thể phá vỡ tính bảo mật của RSA.

Kể từ năm 1993, sự phát triển của thuật toán Shor đã chỉ ra rằng máy tính lượng tử có thể giải các bài toán phân tích thành thừa số trong thời gian đa thức. May mắn thay, đây chỉ là những lý thuyết, vì máy tính lượng tử hiện tại và trong nhiều năm tới vẫn chưa hoàn hảo.

Một câu hỏi thú vị là liệu có thể đảo ngược vai trò hay không. Vai trò của khóa công khai và khóa riêng là gì? Tức là chúng ta mã hóa bằng khóa riêng và giải mã bằng khóa chung? Câu trả lời là có. Tuy nhiên, không ai làm điều đó vì nó quá đơn giản: lấy khóa riêng từ khóa chung thì khó, nhưng lấy khóa chung từ khóa riêng thì dễ. Nếu chúng tôi đưa khóa riêng cho người khác (để họ mã hóa nó), kẻ tấn công trung gian có thể dễ dàng tính toán khóa chung và thay đổi hoàn toàn cuộc trò chuyện của chúng tôi. Điều đó sẽ quá nguy hiểm.

Tuy nhiên, có những trường hợp chúng tôi đảo ngược vai trò của khóa riêng và khóa chung. Đây là lúc chúng ta sử dụng chữ ký điện tử.

Sử dụng mã hóa RSA để ký và xác minh chữ ký số cũng tương tự như quy trình mã hóa và giải mã ở trên. Tuy nhiên, khóa công khai và khóa riêng phục vụ các mục đích hơi khác nhau.

Để tạo chữ ký, người gửi sẽ sử dụng khóa riêng và người nhận sẽ sử dụng khóa chung để xác minh chữ ký.

p>

Tuy nhiên, do độ dài của tin nhắn nên việc mã hóa toàn bộ tin nhắn sẽ rất tốn thời gian. Vì vậy, trong thực tế, chữ ký điện tử thường sử dụng phương pháp mã hóa giá trị băm của thông điệp. Điều này có nhiều lợi thế, ví dụ:

  • Hàm băm là hàm một chiều, vì vậy ngay cả khi bạn có hàm băm, bạn cũng không có cách nào biết thông điệp ban đầu là gì.
  • Độ dài hàm băm là cố định, thường nhỏ nên các số không chiếm nhiều dung lượng.
  • Giá trị băm cũng có thể được sử dụng để xác minh xem tin nhắn nhận được có phải là tin nhắn gốc hay không. Liêm chính hay không?

Chữ ký số có giá trị hơn chữ ký tay. Có lẽ vì điều này mà chữ ký điện tử phức tạp hơn nhiều so với chữ viết tay truyền thống.

Khả năng truy nguyên

Hệ thống mật mã bất đối xứng cho phép các chữ cái. Được ký bằng khóa riêng, chỉ chủ sở hữu mới biết. Sau khi nhận được gói, người nhận xác minh chữ ký bằng khóa công khai đã giải mã, sau đó tính toán hàm băm của thông điệp gốc và so sánh nó với hàm băm trong gói nhận được. Hai chuỗi này phải khớp với nhau. Tất cả các hệ thống mật mã RSA vẫn có những thách thức bảo mật nhất định, nhưng chúng vẫn rất an toàn.

Dữ liệu vẫn còn nguyên vẹn

Thư được gửi từ khóa cá nhân của chủ sở hữu ít có khả năng bị giả mạo. Bởi vì nếu thông báo thay đổi, hàm băm cũng phải thay đổi. Tất nhiên, một kẻ nghe trộm trên mạng có thể tìm cách đọc tin nhắn gốc và hàm băm của nó. Nhưng anh ta không thể thay đổi tin nhắn vì anh ta không có khóa riêng để sửa đổi chữ ký điện tử cho phù hợp.

Chữ ký số không thể bị từ chối

Trong một giao dịch, gói dữ liệu sử dụng chữ ký số để dễ dàng tìm thấy nguồn gốc của chữ ký. Vì khóa riêng là bí mật và chỉ chủ sở hữu của nó biết nên họ không thể phủ nhận rằng chữ ký không phải do họ cấp. Tương tự như trường hợp trên, mã hóa RSA hay bất kỳ hệ thống mã hóa nào khác đều có vấn đề về bảo mật nên không thể đảm bảo tính chính xác tuyệt đối.

Với công nghệ ngày càng nhiều, các giao dịch điện tử, đặc biệt là thương mại điện tử được thực hiện liên tục hàng ngày, hàng giờ. Chữ ký điện tử là một kỹ thuật cho phép xác định chủ sở hữu của dữ liệu nào đó và kiểm tra tính toàn vẹn của dữ liệu.

Ở nước ta chữ ký số được sử dụng nhiều trong các hoạt động ngân hàng, kế toán. Nhưng trong tương lai gần, khi chúng ta tiến tới một thế giới không có bút và giấy, chữ ký điện tử có thể sẽ trở nên phổ biến hơn.

.

Related Posts

Xét nghiệm Giải phẫu bệnh – Dẫn đường cho việc điều trị

Xét nghiệm giải phẫu bệnh được thực hiện trên những mẫu bệnh phẩm tế bào, bệnh phẩm mô từ các cơ quan trong cơ thể được sinh…

Phương pháp điều trị tủy răng tại nha khoa hiện nay

Viêm tủy răng là một trong những vấn đề về sức khỏe răng miệng nghiêm trọng. Người mắc viêm tủy răng không chỉ phải chịu đựng những…

Mỹ thuật ứng dụng là gì? (cập nhật 2023)

Khi những giá trị thẩm mỹ ngày càng được chú trọng thì các phẩm mỹ thuật ứng dụng ngày càng đi sâu vào đời sống của mọi…

Bát quái đồ là gì? Ý nghĩa và vai trò của bát quái trong phong thủy

Bát quái đồ là vật phẩm phong thủy được sử dụng khá rộng rãi và phổ biến trong văn hoá phương Đông, nhằm mang lại những niềm…

Du học ngành khoa học ứng dụng và cơ bản

>> Du học ngành khoa học đại cương >> Các trường có đào tạo ngành Khoa học ứng dụng và cơ bản Khoa học Ứng dụng và…

Trồng răng implant là gì? Những điều cần phải biết trước khi chọn trồng răng implant

Trồng răng implant là phương pháp trồng răng cấy trụ kim loại vào xương hàm để thay thế cho răng đã mất. Chính vì vậy trụ implant…