Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)
Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)
Chữ ký số (Digital Signature) là gì?
Nhắc đến chữ ký, chắc hẳn ai cũng sẽ nghĩ đến hình chữ nguệch ngoạc mà ta thường hay sử dụng trong văn bản. Chữ ký số liệu có phải như vậy?
Như vậy, việc "ký" nghĩa là bằng cách nào đó đặt một "dấu ấn độc nhất" xác định thuộc về riêng mình bạn, và người khác biết rằng đó là bạn. Trong lĩnh vực công nghệ thông tin, chữ ký số không thể hiện dưới dạng hình ảnh có thể thấy được như chữ ký tay thông thường (vì lý do môi trường công nghệ, các hình ảnh dễ dàng bị giả mạo). Thay vào đó, họ sẽ ký bằng cách mã hóa thông tin sử dụng cơ chế Mã hóa bất đối xứng (Asymmetric cryptography), hay còn có tên gọi khác là Mã hóa công khai (Public cryptography)
Mã hóa bất đối xứng (Asymmetric cryptography) là gì?
Như các bạn đã biết (hoặc chưa), thì trong mã hóa đối xứng, việc mã hóa và giải mã sử dụng chỉ thông qua một khóa (đối xứng nhau).
Nguyên tắc cơ bản của hai khóa này là: Dữ liệu nếu mã hóa bằng Public key, thì chỉ có thể giải mã bằng Private key, và ngược lại, dữ liệu nếu mã hóa bằng Private key, thì chỉ có thể giải mã bằng Public key.
Trong đó, tất cả mọi người đều biết Public key (vì nó public), tuy nhiên chỉ mình cá nhân có được Private key
Bạn thấy nguyên tắc quá đơn giản ư? Đúng vậy, nếu chưa xét về mặt toán học, thì nguyên tắc mã hóa giải mã này khá là đơn giản. Tuy nhiên, điều bất ngờ ở đây là việc mã hóa giải mã đơn giản này lại tạo ra được rất nhiều các ứng dụng khác nhau.
Một số trường hợp bạn có thể dùng với loại hình mã hóa này (Đặt tình huống client 1 và client 2 trao đổi thông tin với nhau):
Ứng dụng 1. Client 1 mã hóa bằng private key 1, và gửi thông tin đi.
Khi đó tất cả mọi người có thể giãi mã bằng Public key 1, và chắc chắn được rằng data này là do bạn gửi đi (vì chỉ có duy nhất bạn có Private key 1 để mã hóa dữ liệu này). Kỹ thuật này có thể được ứng dụng trong việc xác định author của dữ liệu, mà không lo có kẻ khác giả mạo.
Ứng dụng 2. Client 1 mã hóa bằng public key 2, và gửi thông tin đi.
Client 1 sử dụng Public key 2 để mã hóa, sau đó gửi dữ liệu cho Client 2, và tin rằng chỉ mình Client 2 mới có Private key 2 để giải mã và đọc được dữ liệu. Kỹ thuật này dùng ứng dụng trong việc gửi tin nhắn riêng tư.
Ứng dụng 3. Client 1 mã hóa bằng private key 1, sau đó là public key 2, và gửi thông tin đi.
Ứng dụng mã hóa bất đối xứng trong chữ ký số?
Từ nguyên lý hoạt động và ứng dụng như trên, ta có thể sử dụng Ứng dụng 1 để áp dụng trong việc ký số, trong đó private key chính là "dấu ấn độc nhất" mà mọi người có thể xác nhận thông qua việc giải mã bằng public key. Nguyên tắc hoạt động của chữ ký số như sau: Signer (Người ký) sẽ gửi đồng thời hai loại thông tin đến cho Verifier (Người xác nhận): Một document (như văn bản, hợp đồng,...), và một Signature (document đã được ký bằng cách mã hóa qua Private key). Sau đó bên Verifier sẽ giải mã Signature và so sánh với Document. Nếu kết quả bằng nhau thì đây là dữ liệu được ký số.
Đơn giản phải không nào. Tuy nhiên, nếu dữ liệu quá lớn (hàng GB), thì việc mã hóa và giải mã sẽ rất tốn thời gian. Vậy có cách nào khắc phục vấn đề này không??
Giải quyết bài toán kích thước dữ liệu lớn.
Đây cũng là một bài toán khó. Một số ý tưởng đưa ra rằng chúng ta chia nhỏ file thành nhiều task con và thực hiện ký số đồng thời, tuy nhiên không mấy hiệu quá.
Và một cách giải quyết ra đời, đó là sử dụng hàm băm Hash SHA 256. Nói ngắn gọn, hàm băm này sẽ băm dữ liệu bất kỳ kích thước độ dài nào thành một chuỗi 256 bit độc nhất.
Như thế, ở Signer, sẽ tiến hành Hash document thành chuỗi 256 bit > mã hóa chuỗi này thông qua private key. Ở vị trí Verifier, sau khi nhận được Signature, họ tiến hành giải mã Signature để có được chuỗi 256 bit, và đồng thời hash document ban đầu và so sánh với chuỗi này. Nếu hai chuỗi bằng nhau, nghĩa là dữ liệu đã được ký số. Và đó là cách giải quyết bài toán dữ liệu lớn.
Kết luận: Chữ ký số đang bắt đầu ứng dụng ngày càng rộng rãi. Việc hiểu biết hơn về chữ ký số là điều cần thiết, đặc biệt với những người trong ngành như chúng ta. Lời cuối cùng, cảm ơn các bạn đã đọc bài blog ngâm quá lâu này của mình :))
Người viết: Lê Công Diễn
Mang đi nhớ ghi nguồn
Nhận xét
Đăng nhận xét