Tư vấn project chữ ký số (digital signature)

Chào anh chị,
Em đang làm đồ án về chữ ký số, trường hợp cụ thể là áp dụng nó vào sàn giao dịch chứng khoán, lý do sử dụng sàn chứng khoán để có use case: nhà đầu tư ký số rồi mới được rút tiền về bank (phần chính là module chữ ký số)

Quy trình của em như sau:

  • Step1: người dùng tạo tài khoản và ký số để server lấy public key
    (ảnh bên dưới)

  • Step2: Server generate ra bản hợp đồng .pdf => hash file này => lưu mã hash vào database & lưu file này vào ổ đĩa.

  • Step3: gửi file này cho user đọc.
  • Step4: tại client user tự phát sinh khóa, tự hash file => gửi file + text mã hóa đoạn hash đó bằng private key => gửi (file,text cipher) cho server.
  • Step5: server verify bằng cách hash file đó thành A, và giải mã cipher text bằng public key ra B, nếu A=B là verify thành công.

Vấn đề em gặp phải là :

  • Chữ ký số mà không thông qua bên thứ 3 (CA) mà tự làm như trên có ổn không? thực tế có hệ thống nào giống vậy chưa?
  • Người dùng bình thường làm sao tự phát sinh khóa mà nhập vào hệ thống được? Có cần làm thêm app/web khác độc lập với sàn chứng khoán (mini tool) để cho người dùng vào đó tự tạo khóa rồi tự lưu private key?
  • Nhỡ user làm mất private rồi thì xử lý sao? những public key cũ sẽ như nào?
  • Làm sao để định danh cái public key đó ( gắn mỗi public với người thật có họ tên, SĐT, …)?

Em cảm ơn!

Hi there,

Thường thì họ sẽ sử dụng bên thứ 3 để issue digital signature cậu ạ.
Bên thứ 3 thường sẽ chịu trách nhiệm bảo mật cho tất cả những chữ ký lưu trữ ở bên họ. Nếu cậu có thể đảm bảo bảo mật như vậy, cậu hoàn toàn có thể tự làm chữ ký số của riêng cậu.
Tớ không có nhiều thông tin về lĩnh vực này lắm, nên tớ không thể nói là có hệ thống nào giống vậy hay không. Cơ mà, tớ hiểu rõ sự khó khăn của việc bảo mật toàn bộ private key trên, nên nếu có hệ thống tự làm chữ ký số của riêng họ, họ phải tốn rất nhiều effort cho việc này.

Nếu cậu hướng tới người dùng cuối, cậu hẳn phải cân nhắc làm sao cho họ tiện chứ? :smile:

Người dùng phải issue một key mới cậu ạ. Những public key cũ vẫn ở đó, chỉ có điều không ai dùng thôi.

Cậu có thể map public key với người dùng ở một database riêng.

Hope it helps!

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?