Rate this post

Chữ ký số là một kỹ thuật được sử dụng để xác nhận tính xác thực và tính toàn vẹn của thông điệp. Chúng tôi biết rằng có bốn khía cạnh của bảo mật: quyền riêng tư, xác thực, tính toàn vẹn và không từ chối. Chúng ta đã thảo luận về khía cạnh đầu tiên của bảo mật và ba khía cạnh khác có thể đạt được bằng cách sử dụng chữ ký điện tử.

Ý tưởng cơ bản đằng sau Chữ ký số là ký một tài liệu. Khi chúng tôi gửi một tài liệu dưới dạng điện tử, chúng tôi cũng có thể ký vào nó. Chúng ta có thể ký tài liệu theo hai cách: ký toàn bộ tài liệu và ký xác nhận.

Chữ ký số, về bản chất, chính là quy trình xác thực thông điệp kèm theo tính chất không thể chối cãi được của người ký. Như vậy, chữ ký số của một thông điệp sẽ cho ta kiểm soát được tính toàn vẹn của thông điệp, tính hợp lệ và không thể chối cãi được của người gửi. Chữ ký số có khả năng kiểm tra tác giả chữ ký, thời điểm ký, xác nhận nội dung thông điệp. Chữ ký số có thể được kiểm tra bởi thành phần thứ ba tin tưởng, nhằm giải quyết các tranh chấp. 

Các bài viết liên quan:

Các tính chất cơ bản của chữ ký số gồm có:

  • Chữ ký số cần phụ thuộc vào thông điệp được ký
  • Chữ ký số cần sử dụng thông tin đặc thù của người ký để tránh người khác giả mạo chữ ký lẫn người ký từ chối chữ ký của mình
  • Quy trình tạo ra chữ ký số tương đối dễ
  • Chữ ký số cần dễ được nhận diện và kiểm tra
  • Không thể làm giả mạo một thông điệp mới cho một chữ ký có sẵn hoặc giả mạo một chữ ký số mới cho một thông điệp có sẵn
  • Chữ ký số có khả năng lưu lại trong bộ nhớ
  • Chữ ký số được chia thành hai loại: trực tiếp – người nhận có thể kiểm tra tính xác thực của chữ ký số và trọng tài – người nhận có thể uỷ quyền người thứ ba tin tưởng kiểm tra chữ ký số.

Về cơ bản, chữ ký số có được các tính chất pháp lý như chữ ký thông thường. Hơn thế nữa, chữ ký số an toàn hơn, dễ kiểm tra hơn và rất khó làm giả mạo. Đặc biệt, chữ ký số phù hợp cho công việc liên quan đến phát hành, xử lý và lưu trữ các thông điệp điện tử. Trên thực tế, người ta sử dụng quy trình mật mã khoá công khai để tạo ra các chữ ký số (chữ ký số khóa công khai). Trong quy trình này, người sử dụng dùng khóa cá nhân của mình để tạo ra chữ ký cho văn bản; mọi người khác sẽ dùng khóa công khai của người ký để kiểm tra chữ ký.

Chỉ có chủ nhân của khóa cá nhân mới có thể tạo ra chữ ký, do đó, ta có thể kiểm tra được ai là người đã ký (người đã tạo ra thông điệp). Mọi người khác nếu biết khóa công khai của người ký thì đều có thể kiểm tra chữ ký. Trường hợp người kiểm tra chưa biết chắc chắn về chủ nhân khoá công khai thì phải nhờ một bên thứ ba tin tưởng xác nhận. Nói chung, người ta chỉ ký trên giá trị băm của thông điệp (để tránh làm gấp đôi thông điệp khi gửi đi chữ ký kèm theo thông điệp).

Xem thêm Khoa học mật mã(cryptographic science)

Ký toàn bộ tài liệu

  • Trong Chữ ký số, một kỹ thuật mã hóa khóa công khai được sử dụng để ký một tài liệu. Tuy nhiên, vai trò của khóa công khai và khóa cá nhân là khác nhau ở đây. Người gửi sử dụng khóa riêng để mã hóa tin nhắn trong khi người nhận sử dụng khóa công khai của người gửi để giải mã tin nhắn.
  • Trong Chữ ký số, khóa cá nhân được sử dụng để mã hóa trong khi khóa công khai được sử dụng để giải mã.
  • Không thể đạt được Chữ ký số bằng cách sử dụng mã hóa khóa bí mật.

Chữ ký số được sử dụng để đạt được ba khía cạnh sau:

  • Tính toàn vẹn: Chữ ký kỹ thuật số duy trì tính toàn vẹn của một tin nhắn bởi vì, nếu bất kỳ cuộc tấn công độc hại nào chặn một tin nhắn và thay đổi một phần hoặc toàn bộ, thì thông điệp được giải mã sẽ không thể thực hiện được.
  • Xác thực: Chúng ta có thể sử dụng lý do sau đây để cho biết thông điệp được xác thực như thế nào. Nếu kẻ xâm nhập (người dùng X) gửi tin nhắn giả vờ rằng nó đến từ người khác (người dùng A), người dùng X sẽ sử dụng khóa riêng của mình để mã hóa tin nhắn. Thư được giải mã bằng cách sử dụng khóa công khai của người dùng A. Do đó, điều này làm cho thư không thể đọc được. Mã hóa bằng khóa riêng của X và giải mã bằng khóa công khai của A dẫn đến giá trị rác.
  • Không thoái thác: Chữ ký số cũng cung cấp tính năng không thoái thác. Nếu người gửi từ chối gửi tin nhắn, thì khóa cá nhân của cô ấy tương ứng với khóa công khai của cô ấy sẽ được kiểm tra trên bản rõ. Nếu tin nhắn được giải mã giống với tin nhắn ban đầu, thì chúng ta biết rằng người gửi đã gửi tin nhắn.

Ký thông báo

  • Mã hóa khóa công khai hiệu quả nếu tin nhắn ngắn. Nếu thư dài, mã hóa khóa công khai không hiệu quả để sử dụng. Giải pháp cho vấn đề này là để người gửi ký một bản tóm tắt của tài liệu thay vì toàn bộ tài liệu.
  • Người gửi tạo một phiên bản thu nhỏ (thông báo) của tài liệu và sau đó ký tên vào nó, người nhận kiểm tra chữ ký của phiên bản thu nhỏ.
  • Hàm băm được sử dụng để tạo thông báo tóm tắt. Hàm băm tạo thông báo kích thước cố định từ thông báo có độ dài thay đổi.
  • Hai hàm băm phổ biến nhất được sử dụng: MD5 (Thông báo số 5) và SHA-1 (Thuật toán băm an toàn 1). Cái đầu tiên tạo thông báo 120 bit trong khi cái thứ hai tạo thông báo 160 bit.
  • Một hàm băm phải có hai thuộc tính để đảm bảo thành công:
    • Đầu tiên, bản tóm tắt phải là một chiều, tức là chỉ có thể tạo bản tóm tắt từ message chứ không thể ngược lại.
    • Thứ hai, băm là một hàm một đối một, tức là hai thông báo không nên tạo cùng một thông báo.

Xem thêm PGP (Pretty Good Privacy) là gì ?

Sau đây là các bước được thực hiện để đảm bảo an ninh:

  • Phiên bản thu nhỏ (thông báo) của thông báo được tạo bằng cách sử dụng hàm băm.
  • Thông báo được mã hóa bằng cách sử dụng khóa riêng của người gửi.
  • Sau khi thông báo được mã hóa, sau đó thông báo được mã hóa sẽ được đính kèm vào thông điệp gốc và được gửi đến người nhận.
  • Người nhận nhận được thông điệp gốc và thông báo được mã hóa và phân tách hai thông điệp này. Người nhận thực hiện hàm băm trên thư gốc để tạo thông báo thứ hai và nó cũng giải mã thông báo nhận được bằng cách sử dụng khóa công khai của người gửi. Nếu cả hai tiêu chuẩn giống nhau, thì tất cả các khía cạnh của an ninh được bảo toàn.

Tại trang Người gửi

Tại trang Người nhận

Chữ ký số RSA

Mật mã khoá công khai RSA có thể được sử dụng để tạo nên một quy trình chữ ký số đơn giản. Giả sử có các khoá của mật mã RSA: khoá công khai (e, N), và khoá cá nhân (d, N).

  • Để ký thông điệp M, ta sử dụng khoá cá nhân (d, N). Ta tính: S = Md mod

N. Chữ ký là S sẽ được kèm thông điệp M để gửi cho người nhận: {M, S}

  • Để kiểm tra chữ ký, ta cần kiểm tra M và Se xem có bằng nhau không?

Se mod N = M mod N ?

Trên thực tế, người ta không ký trực tiếp lên thông điệp M mà ký lên hàm băm của nó, ví dụ: SHA512(M). Lúc đó, quá trình trên sẽ là:

  • Tính H = SHA512(M); S = Hd mod N. Chữ ký là S sẽ được kèm thông điệp M để gửi cho người nhận: {M, S}
  • Để kiểm tra chữ ký ta tính: H = SHA512(M); sau đó kiểm tra H và Se

xem có bằng nhau không: Se mod N = H mod N ?

Quy trình này có thể được minh hoạ bằng sơ đồ sau (mật mã sử dụng ở đây có thể là RSA hoặc mật mã khoá công khai khác):

Hình 8.12 Mô hình chữ ký số RSA

Chữ ký số điện tử ECC-ECDSA

ECDSA có tên đúng là Elliptic Curve Digital Signature Algorithm, hay là chữ ký số sử dụng đường cong Elliptic. Đây là thuật toán quan trọng trong mật mã, được sử dụng trong các nên tảng blockchain, ví dụ trong các tiền ảo như bitcoin…

Thuật toán này được sử dụng để tạo chữ kí số (digital signature) cho dữ liệu (ví dụ 1 tệp tin) giúp ta có thể xác minh tính xác thực của dữ liệu mà không ảnh hưởng đến độ bảo mật của nó.

Trong thực tế chữ ký số và chữ ký thực tế là tương đương nhau, tuy nhiên người ta có thể dễ dàng giả mạo chữ ký nhưng với chữ ký số thì không. ECDSA signature thì không thể giả mạo

Xem thêm Tìm hiểu về mã hóa cổ điển

Thuật toán thiết lập chữ ký:

Input: Văn bản m và khóa mật x.

Output: Chữ ký (r, s) trong văn bản m.

  1.  Chọn k ngẫu nhiên từ {1, …, q-1}.
  2.  T←[k]G, r ←xT mod q.
  3.  Nếu r = 0 thì quay lại bước 1.
  4.  e ←H(m), s ←k-1(e+xr)(mod q).
  5. Nếu s = 0 thì quay lại bước 1.

Return (r, s).

Thuật toán kiểm tra chữ ký:

Input: Văn bản m, khóa công khai Y và chữ ký (r, s).

Output: “loại bỏ” hoặc “chấp nhận”.

  1. Nếu r, s ∉ {1, …, q-1} thì loại bỏ chữ ký.
  2.  e←H(m).
  3.  u1 ←e/s (mod q), u2 ← r/s (mod q).
  4.  T←[u1 ]G + [u2 ]G

 Nếu r = f(T) thì “chấp nhận” chữ ký.

Chữ ký số ElGamal

Có thể sử dụng quy trình mật mã ElGamal để tạo chữ ký số như sau: Giả sử quy trình ElGamal có khoá cá nhân và khoá công khai của A là XA và {p, α, YA}.

A tạo chữ ký với các bước sau:

  • Tính giá trị băm của thông điệp M: H = H(M)
  • Chọn số nguyên ngẫu nhiên K với 1 ≤ K ≤ p -1 và (K, p-1) = 1
  • Tính S1 = αK mod p
  • Tính K-1 mod (p-1) và S2 = K-1(H – XAS1) mod (p-1)
  • Chữ ký số chính là cặp hai giá trị: (S1, S2).

B kiểm tra chữ ký với các bước sau:

  • Tính V1 = αH mod p
  • Tính V2 = × ) mod p

Ví dụ chữ ký số ElGamal:

  • Cho trước: p = 11, α = 2
  • Chọn khóa cá nhân: XA = 8

Khóa công khai: (YA, α, p) = (3, 2,11)

Để ký thông điệp M có giá trị băm H = H(M) = 5, ta làm các bước:

  • Chọn số ngẫu nhiên K = 9; Khẳng định: gcd(K, p-1) = (9, 10) = 1
  • Tính: S1 = αK mod p = 29 mod 11 = 6

Tính: K-1 mod (p-1) = 9-1 mod 10 = 9

S2 = K-1(H – XAS1) mod (p-1) = 9 × (5 – 8 × 6) mod 10 = 3

Chữ ký số là: (S1, S2) = (6, 3)

Để kiểm tra chữ ký số ta cần khẳng định V1 = V2 với:

V1 = αH mod p = 25 mod 11 = 10

V2 = × ) mod p = 36 × 63 mod 11 = 3 × 7 mod 11 = 10

Chữ ký số hợp lệ !

Chuẩn chữ ký số

Năm 1991, NIST công bố chuẩn chữ ký số (Digital Signature Standard – DSS, FIPS 186). Chuẩn chữ ký số DSS sử dụng hàm băm SHA và một thuật toán chữ ký số DSA. Sau ba lần điều chỉnh, bản cuối cùng của DSS hiện nay là FIPS 186-3 vào năm 2009.

Mô hình DSS chuẩn trong phiên bản đầu tiên có dạng:

Các tham số của DSA gồm có:

  1. Các tham số toàn cục:
    • p là số nguyên tố, với 2L-1 < p < 2L ; 512 ≤ L ≤ 1024 và L là bội của 64
    • q là ước số nguyên tố của p – 1, với 2159 < q < 2160 (q có độ dài 160 bit)
    • g = h(p-1)/q mod p, với h thoả 1 < h < p – 1 sao cho h(p-1)/q mod p > 1
  2. Khoá cá nhân của người dùng:

x là số ngẫu nhiên trong khoảng 0 < x < q

  1. Khoá công khai của người dùng:

y = gx mod p

  1. Số bí mật của người dùng:

k là số ngẫu nhiên trong khoảng 0 < k < q

Các số p, q, và g cần được công bố công khai cho nhóm người; x và y tương ứng là khoá cá nhân và khoá công khai của người dùng, chúng không được thay đổi trong một khoảng thời gian nào đó. Các tham số x và k chỉ dùng để tạo chữ ký số và chúng cần được giữ bí mật. Tham số k cần được thay đổi mỗi khi tạo chữ ký mới.

  1. Quá trình ký:

Thông điệp được ký là M; Tính:

  • H(M) = SHA(M)
  • r = (gk mod p) mod q
  • s = (k-1 (H(M) + xr) ) mod q.

Chữ ký số là cặp (r, s)

  1. Kiểm tra chữ ký: (Giả sử nhận được các giá trị:M’, r’ và s’). Tính
    • w = (s’)-1 mod q
    • u1 = ( H(M’)w ) mod q
    • u2 = ( (r’)w ) mod q
    • v = ( (gul yu2) mod p ) mod q

Kiểm tra, nếu v = r’, thì chữ ký là hợp lệ và có thể tin tưởng chắc chắn rằng thông điệp nhận được đã được gửi từ người có cặp khoá (x, y).

Leave a Reply

Call now
%d bloggers like this: