Cách verify chữ ký số có hợp lệ không

Xin chào, theo như anh @tntxtnt có để cập ở đoạn cuối trong post Giải mã dữ liệu khi cặp khóa public/private bị thu hồi/hủy?

Thì A có file M, A tính hash M, A dùng private key ký vào hash M ra X. A gửi (X,public key, M) cho mọi người. Để verify mọi người làm 2 bước:

  • step1: tính hash M
  • step2: lấy public key giải mã ra đúng bằng hash M là OK.

Nhưng trong thực tế em thấy như này:
A là end user. A download hợp đồng M.pdf về đọc, đọc xong A dùng app adobe reader ký vào M.pdf tạo ra file M1.pdf (trong M1.pdf đã được nhúng public key và chữ ký được tạo do dùng private key mã hoá hash M, thuật toán mã hoá, mode, padding, iv, …Bởi vì file sau khi kí bị tăng dung lượng.). Cuối cùng A gửi M1.pdf cho ông B. Vấn đề phát sinh ở chỗ M.pdf và M1.pdf sẽ hash ra 2 mã hash khác nhau thì làm sao ông B verify được file và chữ ký của A (có cách nào khôi phục M1.pdf về trở lại M.pdf không? Vì chỉ có cách này mới verify được như anh @tntxtnt nói bên trên )
P/S : nó có liên quan gì đến X509 verificate không?
Em cảm ơn.

1 Like

đơn giản là nó compute hash của message mà ko bao gồm signature đó thôi :V em đọc xem Acrobat nó sign pdf thế nào nè:


image

đại khái là nó sẽ tính vị trí của signature ở đâu trong file, rồi cắt file làm 2 phần, lưu địa chỉ, kích thước của 2 phần này trong /ByteRange. Vd trong hình phần 1 bắt đầu từ byte 0 và có size là 840 bytes, phần 2 bắt đầu từ byte 960 và có 240 bytes. Message digest hay là hash của file là 2 phần này. Phần signature ở giữa nó ko tính trong message digest.

X509 về thuật toán chung chung thì cũng thế thôi :V Còn chi tiết thì phải đọc doc của nó thế nào =]

8 Likes

Cảm ơn anh, nếu vậy thì file do adobe ký thì chỉ có adobe verify được thôi hay adobe ký số thì app khác vẫn verify được? Làm sao app khác biết adobe write đoạn mảng byte đã ký vào chỗ nào trong file để load nó lên? Có quy tắc chung gì không anh? Em cảm ơn!

chắc có public thông tin structure của file pdf mà adobe tạo ra như thế nào, mấy app khác code theo là đọc được thôi :V

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