Seri về chữ ký số này mình sẽ viết vài bài đi từ tổng quan tới chi tiết code phải impl. Bạn nào muốn tìm hiểu có thể tìm đọc từ nhiều nguồn khác nhau. Tất cả các bài mình viết trên đây đều là kiến thức và trải nghiệm mình tích lũy được, nên không đúng được 100% nhưng hi vọng sẽ dễ hiểu cho mọi người tiếp cận
Sơ sơ về chữ ký số
Ừm. Coi nào, cỡ hồi cấp 2, mình thấy các thầy cô trong trường có cái usb bé bé, bảo a/chị ký đi... Mình bảo quái nhỉ, chữ ký dùng cái USB đấy là sao, ký cái ảnh lên à, nếu usb ai có cũng dùng ký được thì chết à. Google một vòng vẫn không hiểu gì cả. Thôi kệ, khó quá bỏ qua. Như bài viết trước của mình: Tâm sự chuyện nghề . Thì một trong các công ty mình làm là về ký số. Trước khi vào thì mình nghe nói nói ở buổi pv cũng k hiểu lắm. Sau một thời gian dài thì mình hiểu nó như này ( định nghĩa chi tiết google nhiều, vd luật có luôn, mình nói về cái nhìn cá nhân thôi nhé)
Các bạn ai cũng biết về mã hóa đúng không. Có mã hóa đối xứng và bất đối xứng. Tài file trên mạng về hay có cái mã MD5 để check xem file có bị thay đổi không, lưu chuỗi hash của password vào trong db để mất db cũng k mất pass.... Đấy là dạng ký số đơn giản nhất. Hiểu đơn giản ký số là b dùng private key để mã hóa cái gì đó( file, text...) và dùng public key để xác thực rằng cái file đó không thay đổi.
In asymmetric encryption methods, we have a pair of keys. One of these keys we call public key, while another is the private key.
Cơ bản các thuật toán mã hóa dùng hai key đó để xử lý. Các bạn có thể tham khảo thêm tại đây: https://viblo.asia/p/gioi-thieu-cac-loai-thuat-toan-ma-hoa-du-lieu-07LKXBW8lV4
Vậy Ký số có gì khác khi bản chất nó là mã hóa + kiểm tra, và làm sao nó lại đại diện thay cho chữ ký, con dấu của cá nhân và tổ chức. Bạn không thể chụp ảnh chữ ký tay của minh và dán lên file pdf bảo đấy, tôi ký rồi nhé. . Cái đấy thì ai cũng làm được cả.
ĐƯỢC CÔNG NHẬN Đây là vấn đề này. Chữ ký số xử dụng mã hóa bất đối xứng và được một tổ chức công nhận nó có hiệu lực và đại diện cho chủ của chữ ký.
Vậy tổ chức nào công nhận. Đơn giản thôi, với một công ty thì doanh nghiệp có thể công nhận chữ ký số của bạn ( nhưng chỉ có hiệu lực trong phạm vi doanh nghiệp - đương nhiên). Vậy to hơn là gì, tất nhiên là quốc gia rồi. . Nhà nước công nhận 1 chữ ký số đại diện cho bạn, thì trên bất kì văn bản nào xuất hiện chữ ký đó nghĩa là bạn đã đồng ý và ký nó.
Vậy bạn tự tạo chữ ký số và mang cho nhà nước duyệt à ta. Xin trả lời không phải ạ. Mô hình nó kiểu này:
RootCA: Nhà nước cung cấp ra chứng thư số gốc - Root certificate( bạn lên trang https://rootca.gov.vn/). Nhưng nhà nước k làm việc thẳng với bạn đâu
Sub CA: Cung cấp Intermediate Certificate - là một công ty được nhà nước chấp thuận phát hành và quản lý chữ ký số cho người dùng - trên trang rootCA có một danh sách đó.
End-Entity: Đây, chúng ta ở đây này. Chữ ký số của người dùng được SubCA cấp phát dự trên Intermediate Certificate.
Vậy chứng thư số( certificate) lưu ở đâu:
USB TOKEN
Dễ thấy nhất là USB token mình có nhắc tới ngay đầu bài
Nó là thiết bị lưu trữ như các loại USB khác thôi, Nhưng dung lượng nó siêu nhỏ. đủ lưu mấy thộng tin cá nhân, và chứng thư số ( certificate) nghĩa là nó có gồm privateKey và publicKey. Đắt phết đấy - nhiệm vụ của nó là sử dụng khi ký ( lấy privateKey ra ký) và xác thực chữ ký ( lấy publicKey ra). Và nó đảm bảo bảo mật không bị hack( đương nhiên mất pass thì không nói).
80% người dùng sẽ chỉ biết tới nó, vì nó phổ biến cho cá nhân nhất. Tuy nhiên với các hệ thống lớn phải ký hóa đơn cho doanh nghiệm, cả triệu giao dịch 1 ngày thì nó không đáp ứng được, chết ngay ấy chứ và người ta có:
HSM (Hardware Security Module)
Nghe xin xò không - đương nhiên, nó cũng đắt vãi cả đạn ra. Nhưng nó cũng chỉ là 1 cục sever hoặc là 1 cái card cắm vào máy chủ ( như card đồ họa thôi) Quan trọng là nó siêu bảo mật - đấy, dính đến mấy cái này tốn tiền lắm chứ bộ. Nó quản lý privateKey, publicKey, certificate. Nó đặt trong phòng máy chủ, khóa kín. Khi thực hiện kí hệ thống truy cập vào nó, lấy privateKey ra ký. Và nó đáp ứng online 247, tốc độ vù vù
File
Hề, đúng rồi đấy, các bạn có thể có file (pfx,p12) sử dụng - nhưng 99% nó sử dụng để test thôi - Quy định trong luật hay HSM đều không cho gen file ra phục vụ ký số nha.
Kết bài 1
Hôm nay một ngày đẹp trời, đùng cái, nhân viên của CA điện đến cho kế toán bảo. Anh/CHị ơi, usb ký số của mình hết tuần là hết hạn nhé, anh chị gia hạn tiếp đi - e cắt phế cho . oki, gia hạn cho anh/chị nhé.
Xong. Thế cấp phát và gia hạn chứng thư số là thực hiện như nào. rồi ký số cụ thể làm như nào. Mình trình bày ở bài tiếp nhé
****Thuật ngữ cơ bản mình sử dụng trong bài :
CA: certificate authority - nhà cung cấp chứng thực số
Private Key: Khóa bí mật
Public Key: Khóa Công khai
Root certificate: Chứng thư số của tổ chức nắm quyền ( thường là nhà nước)
Sub Certificate: Chứng thư số của đơn vị ban hành
Certificate: Chứng thư số