Ask HN: Why isn't there something like Let's Encrypt for document signing?
Considering how easy it is to generate a public/private key pair it's not that easy and not cheap to get an widely trusted document signing certificate. Especially one with LTV (longtime valid for verifying)
Is this just the market monopoly? If letsencrypt broke it for SSL, couldn't it be done for PDF signing also? There are cheap s/mime CAs out there. It should be possible for LetsEncrypt to issue an s/mime cert for a domain, similar to TLS certs and verified in the same way, despite what top comments here are saying. S/MIME being made for email, you can use port 80 ownership, or dns record ownership to verify control. And documents can be signed as originating from bob@acme.com. I have implemented s/mime to sign documents automatically between companies. It is the best option that works by default. Powershell and openssl support it, as does outlook for email. My guess is they don't see enough people asking for this, because those who need what you are asking don't mind paying cheap CA fees like $15/year or so. Document signing is NOT a technical problem. It's a legal acceptance problem - and everyone KNOWS docusign and friends and understands how they're admissible. Anything else would have to compete with that and people would be suspicious of it for a long time. The best way for something like LE for docusign to start would be via a government office of some sort. > It's a legal acceptance problem We may be saying the same thing, but just to clarify / put another way: it's a legal compliance problem. DocuSign is admissible (in the US) because it adheres to the state and Federal regulations that have been passed which carefully enumerate the requirements of legally acceptable digitally signed documents, for example: https://en.wikipedia.org/wiki/Electronic_Signatures_in_Globa... It's lower risk in a corporation with a lot to lose to say, here's this implementation that we know is compliant, than to say, we made our own or used an obscure one and we think it is. Corporate politics will usually encourage decision makers to go with the former. I believe that Docusign helped to draft parts of that legislation. They are a deeply entrenched player that has made regulatory capture part of their strategy. Disrupting them will be hard to impossible for that reason alone. I have a lot of experience implementing software for a heavily regulated industry. The first challenge is, because of the legal architecture -- go study and diff the legal code for each of the 50 states to implement a tool like this, also, track all the updates to those laws. I wouldn't be surprised by DocuSign's involvement as you describe, we have the same corruption in every industry, justified always by the same excuse "They're the experts! Who else would we (congress) ask?" I don't believe the ignorance of the massive conflict of interest in this approach is a coincidence but I digress. Also remember that the way DocuSign works it is the company paying for it, not the people signing. That makes it even harder to disrupt, because the "great majority of users" are used to the DocuSign workflow and aren't paying and have no incentive to change. And while I'm sure DocuSign is a very profitable product line, I also suspect that for many companies that use it (like financial firms) its cost is somewhere around their paper clip budget. Yep. My first few mortgages involved getting all the right people in a room together at the same time and signing hundreds of documents, the last two were some websites and clicking. The amount of time not lost having people watch me perform magic with the pen must have saved way more than DocuSign cost. I was seeing a discussion the other week about automation and someone was saying that, as a consumer, not that much has really been automated. We still need a person to clean the house, do the yardwork, cook (yes you can get meal delivery but again in urban areas that's not new), etc. Even if we do have major appliances they're pretty similar to what we've had for decades. While that's true, it probably leaves out a lot of tasks that involved writing checks, running errands, going to various offices to sign things, etc. that have been, if not entirely eliminated, certainly cut back on. Yeah a lot of the "monthly" consumer tasks have slowly been eliminated, almost imperceptibly. You used to have to pay bills by check and balance a checkbook monthly; those are all gone. Even passport renewal is available online now. Well you can do it in the EU. You can apply to become a CA for document signing and then give out signed documents. https://www.zealid.com/en/ does it free of charge Presumably there's a irreducible amount of Extended Validation involved in qualifying as such a CA, though, no? Which would be the GP's point — you can't have a fleet of thousands of machines where each one individually, automatically, and anonymously registers to become its own signing CA. If the target is legal recognition then you need to store your legally-recognized name and need to do what patio11 calls a hybrid system - part-offline, part-online verification. Also, IIRC there's a free government CA in Estonia that can sign documents, but of course you need to trust that Estonia is both not malicious and not incompetent. You can hack eIDs in several EU countries to sign documents. Definitely possible in Belgium. Link, please! What link? eID certificates don't have the Signature attribute set to true, but one can still sign with these certificates, ignoring the attribute. Link to a "how to" web page. i did not see anything about beeing a CA on first scan but if that's works it would be great So much this. Adobe Sign (available with the free Adobe Reader) for example offers a self sign solution. Organisations can issue their own certificates and use Adobe Reader’s certificate signing feature if you do not want to use a paid service like Docusign. Essentially all validation/verification is some tradeoff between: 1. convenience 2. certainty that someone is who you think they are and they meant to give their approval 3. a "paper" trail 4. And the consequences if you make the wrong call on 2. For many, but not all purposes, Docusign (plus SMS in many cases to get a code) replaces a lot of fairly routine paper shuffling. It also depends on what a given, often financial, organization has deemed acceptable risk. And legal side is already solved in EU since 2014 with eIDAS regulation. Estonia was one of the first to make digital signatures legaly binding with its ID-Card system. Someone said it already: it's not a technical problem. This is a business problem, which means it's a social/psych thing. >= VP-level generally[1] don't recognize the signed doc as a signed doc. Unless they see that little A arrowhead in the top bar. W3C and Google aren't helping things here; by drip-feeding PMM into CSS, they've made it impossible to get a consistent HTML5-based print standard. Which could then be wrapped in "normal" auth0. However, I don't know the details of the whole shebang, all I know is that PMM3 was in the works in 2006 and it never quite came out of its hole. Instead you have to shovel out money to Prince or figure out how Paged.js works. But whether or not that's W3C or Google's fault, I really don't know. Maybe HN could edukamate me. [1] Particularly the older ones that think they're hip. Others just let their tech-savvy assistants sign everything. What does "PMM" stand for? Your comment seems to be one of the top results for it on Google[1], and I don't even have a guess for what it means. Damn, my bad, I thought that acroterm was standard. PMM3 == Paged Media Module Level 3 https://www.w3.org/TR/css-page-3/ It's been dripping into @media and other bits and pieces, but there's no universal browser implementation yet, unless you just draw a line and say Paged.js IS the browser implementation. Aside from what others have mentioned, the wonder is actually that there's something like Let's Encrypt itself. It was a huge lift by the LE founders/engineers/benefactors to pull it off, and they had a larger mission to make the web more secure for end-users. Document signing has no such larger mission, so any players have to do it either for money or for the lulz, which won't get to LE benefit and scale. The larger mission would be to reduce reliance on one player that has 70+ percent of the market and decentralize trust. Centralized trust is going out of style fast.. You could probably use Sigstore[1] for this: it's a free, publicly run CA and transparency log that ties signatures to OIDC identities, meaning that verifying a signature doesn't require maintaining a long-term keychain -- you can simply ask whether the input was signed with the same email identity that mailed it. The project is currently more focused on software signing, but it's generic over any input under the hood. The bigger challenge here would probably be mucking with whatever signature envelope PDFs use, and ensuring that existing PDF verification tooling can consume Sigstore signatures. FD: I'm involved in the Sigstore project. SMIME certs for email are to my knowledge the most relevant analogy for a “web pki for users”. There is no ACME-over-email for SMIME that has made it out of rfc into practice, so that is the first hurdle. Hurdle #2 is there is only relatively weak agreement (AFAIK) on a “internet trust bundle for SMIME CAs”. Hurdle #3 is likely a lack of modern amenities like CT for SMIME CAs. That's a great hint, will look into that.. You can just send a signed pdf over email. Perfectly legal. Macs even have a terrific signature attachment feature in Preview (the default pdf viewer). Docusign etc. just add version tracking and document management, but you can just back up email. Even at some scale. Docusign is like buying a picture frame for a document like a diploma, it looks a more official but doesn't change anything. It's also perfectly legal to just reply to an email "Looks good to me." That doesn't mean it's legally compliant for all use cases. Perfectly fine for others of course. Just print out and file the emails or save them in a folder. Well. I guess it depends. An X is a perfectly legal signature, or a smiley face. As long as all parties agree that it’s a signature. electronic document signing as a concept is covered by many software patents if you started your own product doing it you would get sued by DocuSign and friends, and they have lots of money for lawyers so quite hard to disrupt their monopoly Ahah but you see that’s why I have founded BlocuSign in the Bahamas - far away from the reach of those pesky lawyers. How can something so fundamentally math-based as Public-key cryptography be so heavyliy patented? Because math is useful? Using math does not disqualify someone from obtaining a patent. > they have lots of money for lawyers Don’t forget the lobbyists. They have lots of money for them, as well. patents are government granted monopolies on algorithms. "Algorithm" defined as "a set of rules that precisely defines a sequence of operations" It's just series of steps, a recipe. You do "A", then "B", then "C" as outlined in a patent then you violate a patent and the person has the right to sue you. Whether the steps are outlined involve math or not isn't really relevant. What is covered and not covered by a patent is very arbitrary and based on court precedent. Any sort of sanctions against "pure math functions" are usually easily worked around by including "as done in a computer" or similar language. Patents are a very good way for governments to retard progress while rewarding large companies for investing in large numbers of lawyers. but key-based cryptographic sigs have been around long before Docusign Could you abuse LetsEncrypt as a content signing service? Take the information you want signed, including a timestamp for good measure, and of course some form of your identity, generate a secure enough hash for it, use that as a sub-domain and get a certificate for it via LE? So my document plus meta-data like my legal name & email address hashes to b8e24cce6743bf2d86195d1781b068b6fdf1e12a413eb61c16e32e1e5f64f5cc, I get a
certificate for b8e24cce6743bf2d86195d1781b068b6fdf1e12a.413eb61c16e32e1e5f64f5cc.sha3-256.docs.mydomain.tld from LE (extra “.” due to the 63 characters per name part limit in DNS specs). By handing over the certificate LE has effectively signed to say that hash was presented to it at that time. The fact the certificate expires in three months is not relevant: that hash was signed at that time, so it must have been generated then or before then, and it is mathematically impossible (assuming a good hashing algorithm was picked) that when challenged at a later date that I managed to manufacture content that hashes to that value and looks like what I'm claiming to be legitimate & extant at the relevant time, and it is similarly implausible that I forged a certificate that looks like it was signed using one of LE's signing certificates. Of course the next challenge is convincing people that the certificate means this, and that fact is legally meaningful (assuming, for instance, the “signature certificate” is being verified to prove you created the content before someone who claims something more recent of theirs is prior art). You also need to stay within LE's limits, so if using only one domain that is at most 50 signed documents per week if you do each individually. You could batch the documents to be signed up in a single set and hash that instead of individual documents, so if you are happy with daily granularity that is only 7/week. If sticking to a regular interval with nice round numbers you can get approx 4-hour granularity (4 signing timeslots per day, so 42 per week, leaving you 8 in case there are circumstances where something time sensitive wants signing right this instant). Depending on the use case, OpenTimestamps may be relevant. They also have a long list of member organizations/companies that might provide a more relevant solution for you. Pretty neat, thanks In my company, we are building a new free product, Kentro Sign, which his a document signing based on Corda blockchain. If you want to try it, it's free (not even a free tier) and it's there : https://sign.kentro.network/ . Feel free to give back any feedback. I am a mere DevOps Engineer, but I will forward it ! Sorry you lost me on blockain. Also IF any blockchain were to be used to persist stuff like this it's the biggest, most decentralized. Corda is a special blockchain,it's based on need-to-know basis system. It means you can host your own node, and share your data only to the peers you want. What happens if your node catches on fire before you share anything? What does "company title" mean? There is no delete account option. What do you mean by "Company title" sorry ? Thanks for the feedback regarding the delete account option, I will transmit it. When I was signing up, it asked for company name and company title. And then the next screen asked for first and last name. Not sure what company title is. why do we need blockchain here again Corda is a special blockchain where you can control with which nodes you want to share your info. In this way, you can host your own nodes, with your own documents, and share the document only with your peers, instead of sending them away in a more centralized solution like Docusign. Document signing is about verification of authenticity of origin of author. LetEncrypt does not do this, not even for websites. I can get LE certs for millions of end-points I do not own due to the way many cloud providers abuse DNS and sub-domains. Some people do this day and night as a way to make a buck on the side from bug bounties. One of them I will never forget as he adds pictures of cute puppies to corporate websites. The only open source answer I know of is probably not what you want as it would require every party to participate and would require a little setup thus not making it widely adopted. Documents can be signed with GPG but this alone is useless. Every party involved would need a way to publish their public keys and prove that each party actually created said keys. This to me implies inclusion of a public notary in the process. None of this matches your requirement of widely trusted not to mention the added friction. The original method of getting EV certs proves that people will not do this. It used to require a notary Now I can just give a Dun & Bradstreet number and some money to get one. To my knowledge there is no widely trusted document signing system nor do I expect that to become a thing unless a service that people already use started implementing what I described above. I could see one or more banks offering a service like this. Many already have public notary services. There are services like Docusign and Docushare as others mentioned and they are used and abused by lawyers and realtors day and night. I honestly do not see any added value by these services beyond being lazy-friendly. If I log in using my email address and click a button that adds a cursive signature that I did not create, that is not really proof of anything. Anyone that could intercept my email could impersonate this. I expect these services to be legally challenged and dissolved in the future for lack of attestation, especially when a future high profile case involves powerful political and corporate persons having to prove they did not embezzle money. Covid made them super popular but I was very surprised to see the legal documents I could get away with clicking in signatures with no other evidence it was me that did this. I am not a lawyer but I am not sure that matters in this case. In my opinion if you have important documents that you want to prove were signed by you then my suggestion would be to see if your bank offers free public notary services and have them notarized. The page containing the signatures and the notary/bank information can be scanned as part of the document set. [Edit] I should add that some of the bigger banks will only offer free notary services if the account holder has one of their special accounts. They usually have the name Premier or Priority or some other glorified name. I had a document notarized and was amazed that the person only did the signature page. I could have easily swapped out the entire contract. I do not understand this. At least a digital signature let's you know what document was signed by a person you have no idea about. What we really need is a human notary that digitally signs a document that is scanned and printed with a QR sort of notarization on each page. Signatures are also only on the signature page. This has always struck me as a fatal flaw, and yet in practice it seems to never be a problem. I don't know what to make of this. The easily-drawn conclusions (power of law, ambient human honesty) from these conflicting ideas feel inadequate. Basically anything is a compromise. Notaries are essentially a (relatively) low-friction compromise between just trusting that the person who put some squiggles on a piece of paper is who you think they are and that person traveling to a lawyer's office (or a brokerage etc.) that may be in another state. Same way you can hopefully get a locked computer account restored without traveling to a Google office in Mountain View between 1 and 2pm on a Thursday to make your case with multiple forms of ID. The rigor depends on the transaction but usually it's chosen to be a reasonable compromise. To the specific example of a contract etc., presumably the lawyer has a copy of the original document and that's probably considered canonical in the case of a dispute. There can be edge cases obviously but there are edge cases with everything. I tried to get the guy to notarize all of the pages. He didn't want to and I gave up. So weird that this critical function is so obviously broken. the person only did the signature page I have witnessed that as well. I made them scan the documents again. It doesn't even have to be a major change in a document to change the context entirely. Sometimes just changing and to or, or our to your can drastically change the agreement. That is easy for a busy lawyer to miss. All a notary is doing is validating that the person signing a document has a government-issued photo ID that matches the name under a signature line. Nothing more than that. Agreed, though there are copies of the documents made and given to all parties. If a document is changed after being notarized it can be proven in court what the original documents contained. A real notary will be tracking the number of pages, making copies of all of them and signing off what they witnessed. Everyone gets the signed copies and everyone provides their ID in person. A full chain of custody is simply not possible using internet based services with current technology. I'm pretty sure when I've gone to a notary in Massachusetts, they've just checked ID, witnessed a signature, stamped the document, and made a notation in a log book. I'm pretty sure they've never made a copy of anything. There is something called a Medallion Signature though which perhaps involves more. https://keybase.io/ maybe? Many governments have implemented this. Brazil is a good example. You just sign-in to the online service, upload the document you want to sign and push a button. It's very easy to use. Secure communication implies three things: 1. the involved parties verify each other's identity, 2. communication is not compromised 3. the communication isn't spied on. The problem with self-signed certificates is that browsers can't establish (1), so they complain. Let's Encrypt really only solves the problem of browsers complaining, but it doesn't verify the domain owner's identity (eg. no credit card check). I think document verification should be more stringent: you want to be sure whoever signed a document is who they claim to be and have the authority to do so, not just that they owned some domain and got a free certificate. > Let's Encrypt really only solves the problem of browsers complaining That’s not true — it proves that the certificate issuee (is that a word?) has control over the domain that the certificate is issued to, and thus prevents MITM attacks, which a self-signed cert does not do. It’s not simply a workaround to make browsers happy. You are correct that it doesn’t prove legal ownership of the entity. we have it in EU, IIRC eIDAS directive. Anyone in EU can digitally sign and verify documents No free service I know of will let you generate a certificate on the fly with your name on it, which will be considered trusted by most out of the box sw You can get free digital certificates to sign PDFs with your email address, from basically any company.
But that is hardly a way to verify your identity. Anyone can create any email address they want, and use any name in the address. The eIDAS directory lists some companies that are pretty cheap. But you will still have to verify your identity, so you can't get a certificate as easily as with Let's Encrypt for websites. Edit : Docusign and similar services have a free plan, but you can only sign a few documents before you or the submitter have to pay. So it's not free per se, it just has a trial.
And they don't really check your id, most of the time. So anyone can create an account with your name too. I saw I was downvoted, with no reply to learn more about where I was wrong.
(I don't get this site, where ppl know you're wrong but are unable to post a better idea. Is this about discussing topics to learn more, or shooting ppl down ?) Did I miss something ? Can someone give me some clue ? Digital signatures are an interesting topic. I also agree with you for what it's worth. Even it is somewhat possible, it should be WAY more open and free. Like SSL it's not a luxury competitve edge, but basic modern day infrastructure there are some initiatives for that, like CACert, a non-profit certificate authority.
and ofc, there was GPG But they're not convenient for businesses : either they buy certificates for their employees, or they have them signed by the IT department, that provisions their key into any piece of corporate equipment. Few companies are into the community initiatives, especially when it comes to security. Also, CACert is not widely recognized. The root certificate is only included in a handful of Linux distros (like Arch or Mandriva, but not Debian) Is CAcert still alive? I read the project kinda died Indeed it's pretty easy to digitally sign electronic documents in my country. I do wonder though if it's also possible to digitally sign my own generated documents (pdf, docx, stuff like that). https://www.dokobit.com/ integrates with identity systems in a few European countries, and produces digitally signed documents that are legally binding. Wait, we do? Where is this? How do I use it? The EU has a website to get started :
https://ec.europa.eu/digital-building-blocks/wikis/display/D... basically : - understand the levels of digital signatures
There are some security levels about signatures, on whether a timestamp is necessary, on whether the CA should be official your country, about the HW that create the signature... That allow different properties for different usages. A 'Trust service provider' offers the highest level of certificate. It will typically be rock solid in court. But it's ultimately still up to a judge to decide if signatures are valid when you go to courts.
If you don't get a signature from the TSP in your country, it doesn't mean it will necessarily be invalid. It's just not pre-aproved, and you will have to establish it yourself.
(Is there some law person on HN to back me up here ? Do you know of any case where this had been a point ?) - find a company that provides you a digital certificate.
Some IDs in Europe already come with one (especially in Estonia) If your country does not, you can browse the EU's list of trusted services to purchase one
https://esignature.ec.europa.eu/efda/tl-browser/#/screen/hom... The price of these services can be widely different between companies. I suggest you shop around, as usual. - Then follow the procedure of the company. They will verify your identity, so don't be surprised if you have to meet them and show some ID. Here's how someone can do it. LetsEncrypt exists because identity in SSL/TLS is only about domain name ownership, which is easily checkable using automated scripts if you handwave away the question of how to securely connect to that domain without TLS - ultimately it needs DNSSEC to be theoretically sound but in practice we cross our fingers and hope for the best without it. The standard PKI is not a monopoly, it's the opposite. It's a competitive market with several players (vs SSL certs where LE just totally dominates due to being subsidized). CAs will sell you certificates usable for PDF document signing but they have to charge money because there is no automated way to verify your legal identity, so manual labor is required and that's expensive. Therefore, the problem of how to build a LetsEncrypt for data is the problem of how to verify identities at scale automatically. There are two possible approaches you can use here, all of which require new software or infrastructure (which is why it hasn't happened). 1. Sign documents with your domain name! There is no specific reason you can't use an SSL cert to sign a document, it's just that the certs have flags in them that say they're not meant to be used that way. But a key is a key. You can write software that will override those checks and then use the regular standards like CMS, Authenticode or PDF signatures. This could work as long as you domain name was the same as your business/project name, or otherwise unique to yourself somehow. But judges would have to accept it. In the USA it's possible because the law doesn't say much about the exact nature of digital signatures, in the EU it's probably not because the Commission has spelled out in excruciating detail exactly how the PKI and signing specs must work. 2. Verify identities using e-Passports. Every e-passport contains a signed certificate holding your personal data signed by government root authorities, including a JPEG2000 encoded image. To automatically issue a certificate against such an identity, you need: 2a. A mobile app that can dump the NFC chip contents. This is done already, you can find such apps on the Play store (dunno about iPhones though). The data in the chips are public, it's not locked down. 2b. Some way to verify that the person with the public key is the same as in the passport photo. This can be done with face recognition/matching AI. 2c. Some way to re-assure people that uploading their passport contents to a remote server isn't a dumb thing to do. This can be done by running the CA and verification logic inside an SGX enclave, with open source clients (e.g. the mobile apps) that verify the enclave's remote attestation before uploading anything. The data will be encrypted and protected from the owner of the CA hardware. Now you can create a PKI that auto-issues certs with people's public key, legal name, country and maybe photo in them. The enclave can also issue sub-certs that reveal less information or even certs that use a keyed hash of the passport number or something to give you an anonymous yet unique credential. Of course this new PKI won't be recognized by Windows, PDF viewers, governments or anything else that consumes signatures. That's step 2. Or for code signing