JotForm is a free online form builder which helps you create online forms without writing a single line of code. No sign-up required.
We believe that if one user has a question, there could be more users who may have the same question. This is why many of our support forum threads are public and available to be searched and viewed. If you’d like help immediately, feel free to search for a similar question, or submit your question or concern.
Forms and EncryptionAsked by dkerns on February 01, 2016 at 07:43 PM
I would appreciate some advice on form encryption. The current process implemented by Jotform seems severely flawed.
I want to use Jotform to collect client information, some potentially sensitive. If I turn on encryption Jotform encrypts my content (excluding the file upload) with my public key which Jotform alone has access to. If I send notifications or auto response I am unable to use any of the fields in the responses. While I am able to view them online via a secured session but this is not built for volume. You would go crazy navigating through mails to find what you want.
If I don't encrypt I expose my client data but if I do I lose the ability to really manage the content effectively. I have a Box.com account that I forward the emails to. Again that isn't of much use because the form is still encrypted.
I thought maybe I could integrate with Box and decrypt it myself outside of your servers. Unfortunately I am not completely clear at what Jotform did to encrypt my content.
When my data is received via form submission, decrypted from the session and inside your firewalls do you then parse the field content and encrypt it with my public key?
Since I've also integrated with Box.com I receive the content in a PDF format. Not very useful since I want to be able to parse the content and decrypt it safely in my environment. After all I own the private key I should have this ability. Why PDF and not a fieldname->value pair the user can actually use. Obviously Jotform has access to the form submission data at the point it has been decrypted in order to extract the field values and encrypt them.
I have attempted to decrypt the individual fields elements after it was received. I extracted the name field, decoded it from Base-64 and then used OpenSSL RSAUTL with my private key to attempt to decrypt it. I had no success.
Please give me some lead. It seems to make no sense that you would encrypt content for a client that the client would have no control over decrypting themselves. Yes you can decrypt my data using my private key in the browser but I want to do it myself.
I hope you can help me move forward, but I can say that not encrypting isn't an option. If I have to work within a Jotform form to extract any information it isn't going to work at all. As an option I could provide my own public keys to Jotform but still need to know the specifics on how you are encrypting the content in order to decrypt it.
When a form is submitted, the submission data is encrypted on the browser of the person filling out the form. Then once you receive the email notification of the encrypted submission, you can upload your key to decrypt it and you will be able to see the notification emails.
It is not possible for users to decrypt the form submission themselves because if they are capable of decrypting it, that also means other people would be able to decrypt it as well. That is why only the key provided can decrypt the form.
Here's a guide for more information regarding encryption in jotform: What are Encrypted Forms and how to use them as expert
Thank you for the response but the document doesn't answer all my concerns.
I want jotform to encrypt my data and I want jotform to pass the form data on to Box.com. The only way anyone can see the email content right now is have the recipient login to jotform, which in this design can only be one person. Unfortunately Jotform is not built as a collaborative or very efficient method of managing the emails.
I understand that the data has been encrypted with my public key and that only my private key can be used to access it. That's perfect. I can use the Jotform API to receive submissions and decrypt content for the end users in a secure way. Then I will be able to send notifications and forwards depending on field content.
My only choice right now is to private keys with everyone that might need to read an email in Jotform. This assumes that everyone has the same rights to review the emails, which is not the case and sharing keys is a bad practice.
Since form encryption completely breaks so many of the form handling features in jotform I need to look into a way to handle these features in another way, while keep the form encrypted.
Since I am the owner of the submitted content my question is (not answered in your document) what tool can a developer/account owner use to decrypt the content, with the private key, that is received from your API?
Unfortunately the integration to Box.com is completely useless with form encryption enabled since you send the content encrypted in a PDF format which makes it a major effort to decrypt into anything meaningful.
The decryption can only be made inside our system. Integrating the form to box.com is useless since the data in the file is also encrypted. There is no way you can decrypt it inside your box.com dashboard. You have to go through your form submissions page and decrypt the whole data from there. I'm sorry, but this is how the encryption works for now, but we are always open to suggestions.
With regards to the form emails, you can add 10 recipients per settings. Here's how you can do that: http://www.jotform.com/help/25-Setting-Up-Email-Notifications. However, the other recipients should have your key to decrypt the data through the submissions view link. But as you've said, sharing the key is not a good option.
What tool can a developer/account owner use to decrypt the content, with the private key, that is received from your API?
-I will have to ask and confirm this to our API Team. I'll let you know as soon as I get a reply from them. You can also reach them at firstname.lastname@example.org.
Again, for now, you will have to access your form submissions page and decrypt the submissions in the page. You will be prompted to upload your key to decrypt.
All major programming languages have libraries for encryption. For example, if you are using PHP you can use openssl_decrypt or mcrypt_decrypt:
Thanks. I tried to use OpenSSL RSAUTL on my local machine to decrypt the content. First I took an encrypted form field and base-64 decoded the content (looked to be base-64 encoded) and then used my private key in an attempt to decrypt the result via RSAUTL -decrypt. It didn't work. Not sure what I am missing.
All I know is that if Jotform is able to decrypt the content and present it to me via an authenticated secure browser session with Jotform that I should be able to do this myself when I receive the data via the API .
Rather than trying to hack my own data, trying different options, I am hoping that support can give me the specific details that I need to decrypt the content received from the API using my private key.
Are you suggesting I can use the openssl_decrypt or mcrypt_decrypt to do this? mcrypt_decrypt seems most appropriate since it allows a key (assuming my private key) to be provided. Even so I have no idea what to provide for the cipher and mode. This would need to be provided to me before I could attempt to use.
Ever get an answer to this?
@jgregoire: I'm sorry, but I'm not sure if the last questions have been answered. I would suggest creating your own thread if you have questions about the encryption feature. Create here: https://www.jotform.com/contact.