I'm working on a LAMP environment (Linux-Apache-MySQL-PHP) and I need to sign documents (PDF, but maybe in a future, I'll use other formats so I'm interested in a general answer).
These documents are uploaded by the admin users, signed (internal process, transparent to admin) and the client users could download the files anywhere, anytime using any web browser.
We need to sign these documents so neither the admin users or the clients may claim the files were modified. The idea is to ensure that the document the admin uploaded in a given date is the document that the client downloaded in a later date without any tamper.
How do I enforce non-repudiation given these constraints?