{"id":19867,"date":"2021-10-07T09:00:00","date_gmt":"2021-10-07T15:00:00","guid":{"rendered":"https:\/\/www.fullcontact.com\/?p=19867"},"modified":"2022-04-05T06:42:04","modified_gmt":"2022-04-05T12:42:04","slug":"introducing-fullcontact-cipherftp","status":"publish","type":"post","link":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/","title":{"rendered":"Introducing FullContact CipherFTP\u00a0"},"content":{"rendered":"<h2>CFTP: a new and easier way to secure file transfers.<\/h2>\n<h3>Introduction<\/h3>\n<p><span style=\"font-weight: 400;\">The File Transfer Protocol (FTP) is something that businesses rely on even to this day. While transferring your company&#8217;s sensitive data it is important to keep in mind how you are keeping that data secure. While using SFTP accomplishes many important security objectives, The FullContact-built CipherFTP (CFTP) accomplishes even more. CFTP is easy to use, provides in transit and at rest encryption by default, and provides out of the box internal logging and auditing.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Let&#8217;s start by examining what FTP is and when it was introduced. The File Transfer Protocol (FTP) allows an organization to host file storage and enables users to log in with usernames and passwords to download and upload files to the server. FTP is widely used in the identity and data provider industry to transfer large files between identity providers, brands, and publishers. While FTP is a solution relied upon in day-to-day business, FTP is not a new solution&#8211;it&#8217;s been around quite a while!<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The problem of transferring files between computers predates the modern internet and the World Wide Web. Shortly after the first early computers were connected through ARPANET, the first FTP protocol was created in 1971 (<\/span><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc114\"><span style=\"font-weight: 400;\">RFC 114<\/span><\/a><span style=\"font-weight: 400;\">) to enable the transfer of files from one computer to another. Over the past 50 years, this protocol has evolved, transformed, and changed into today&#8217;s two widely used protocols. They are most commonly known as the File Transfer Protocol (<\/span><a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc989.txt\"><span style=\"font-weight: 400;\">FTP RFC 989<\/span><\/a><span style=\"font-weight: 400;\">) and the SSH File Transfer Protocol (<\/span><a href=\"https:\/\/www.openssh.com\/txt\/draft-ietf-secsh-filexfer-02.txt\"><span style=\"font-weight: 400;\">SFTP Internet Draft Standard<\/span><\/a><span style=\"font-weight: 400;\">).\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While SFTP addresses many more security concerns than the original FTP, we knew we could offer our customers even more protection by default. By building on top of existing standards and open source libraries (SFTP and the <\/span><a href=\"https:\/\/github.com\/pkg\/sftp\"><span style=\"font-weight: 400;\">golang sftp library<\/span><\/a><span style=\"font-weight: 400;\">), FullContact introduced a new server called CipherFTP (CFTP). CFTP provides all of the protection of SFTP while introducing new secure-by-design features that usually need to be manually implemented or bolted onto SFTP. To examine the differences between FTP, SFTP, and CFTP, we will explore the security challenges that need to be addressed when transferring sensitive data over insecure networks:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Authentication\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Server identity and trust<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Confidentiality in transit\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Confidentiality at rest<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Auditing\u00a0<\/span><\/li>\n<\/ul>\n<h3>Authentication<\/h3>\n<p><span style=\"font-weight: 400;\">Authentication is how a user proves they are who they claim to be. Once a server has established a user&#8217;s verified identity, it can grant them appropriate access to systems and data.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The most common way to establish identity is through a username and password. While passwords have several shortcomings, one of the most underlying issues is that they rely on shared knowledge.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To illustrate the problem of shared knowledge and FTP passwords specifically consider the following examples:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Bob and Sally work at AcmeInc, and both need to send data to a company called DataInc. DataInc proceeds to create a username called<\/span> <span style=\"font-weight: 400;\">acme<\/span><span style=\"font-weight: 400;\"> with password <\/span><span style=\"font-weight: 400;\">foo.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">As more and more people need to access the FTP server, the credentials are shared further within the company.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Bob leaves AcmeInc. Since he still has shared knowledge of the password, he still has access to the data.<\/span><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19868\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png\" alt=\"\" width=\"1999\" height=\"743\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png 1999w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1-300x112.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1-1024x381.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1-768x285.png 768w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1-1536x571.png 1536w\" sizes=\"auto, (max-width: 1999px) 100vw, 1999px\" \/><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Let&#8217;s further imagine that <\/span><span style=\"font-weight: 400;\">foo<\/span> <span style=\"font-weight: 400;\">is Sally&#8217;s favorite password that she uses everywhere else. Using a brute force dictionary attack or data breach containing common passwords for Sally, it is not hard for Evil Bill (who has nothing to do with AcmeInc) to log into their FTP account hosted at DataInc. Evil Bill can then start reading all their<\/span><span style=\"font-weight: 400;\"> data.<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19869\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image9.png\" alt=\"\" width=\"998\" height=\"729\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image9.png 998w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image9-300x219.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image9-768x561.png 768w\" sizes=\"auto, (max-width: 998px) 100vw, 998px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Another common way of verifying a user&#8217;s identity is through public\/private key cryptography. Suppose a user is assigned a public\/private keypair. In that case, any user or system can encrypt data using the public key, which can only be decrypted using the corresponding private key. While public keys can be distributed (hence the name &#8220;public&#8221;), private keys are considered secret and strictly guarded by the user.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19870\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image10.png\" alt=\"\" width=\"940\" height=\"960\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image10.png 940w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image10-294x300.png 294w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image10-768x784.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The original FTP server supported only simple usernames and passwords, whereas SFTP supports both usernames and passwords and public\/private key authentication.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">CFTP also supports both username\/password and public\/private key authentication. While FTP and SFTP require user accounts to be created and managed by an administrator (using LDAP or other means), CFTP allows users to create and manage their own accounts. CFTP additionally provides a secure way for users from a shared organization to access shared data while using distinct identities.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19871\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image5.png\" alt=\"\" width=\"1144\" height=\"952\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image5.png 1144w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image5-300x250.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image5-1024x852.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image5-768x639.png 768w\" sizes=\"auto, (max-width: 1144px) 100vw, 1144px\" \/><\/p>\n<h3>Server Identity and Trust<\/h3>\n<p><span style=\"font-weight: 400;\">Whenever you are connecting to a server on the public internet, whether that is a web server or a FTP server, there is the chance you might not be connecting to who you think you are connecting to. Imagine the scenario below where Sally thinks she is connecting to <\/span><span style=\"font-weight: 400;\">ftp.data.inc<\/span><span style=\"font-weight: 400;\">. In reality, Evil Bill has set up a new server that intercepts the original commands, logs them, and forwards them to the real <\/span><span style=\"font-weight: 400;\">ftp.data.inc<\/span><span style=\"font-weight: 400;\">. At this point, Evil Bill has all of the data and any user data and passwords sent.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19872\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image8.png\" alt=\"\" width=\"1152\" height=\"422\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image8.png 1152w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image8-300x110.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image8-1024x375.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image8-768x281.png 768w\" sizes=\"auto, (max-width: 1152px) 100vw, 1152px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">While this was (and still is) a real problem with the original FTP, SFTP solves this issue the same way SSH does. When a client connects to a SSH or SFTP server, the server will respond with that key&#8217;s public key and fingerprint. The client will inspect that fingerprint to see if it matches up precisely with the fingerprint received the last time it connected to that host. If there is a mismatch, there is a chance of a man-in-the-middle attack. So how does the client know if they are connected to the legitimate host the first time? Unlike TLS (the protocol used with https:\/\/ when you see the little padlock), there is no trusted certificate chain that can be inspected to see if the host can be trusted.* (While there are SSH implementations that support X.509 certificates, they are not commonly used). If you want to verify that you are connecting to the real CFTP when following the directions below, make sure the key fingerprint returned when connecting to cftp.fullcontact.com matches one of the hashes below:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">MD5 : 14:b8:56:4f:f4:2b:3c:fe:d7:4c:8c:b1:85:05:cc:1e<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">SHA256 : v1oW8uKDdtol9vXlGyTMdcjxRnKH9t9ofjxTNWCaHj<\/span><\/p>\n<h3>Confidentiality in Transit<\/h3>\n<p><span style=\"font-weight: 400;\">Confidentiality in transit refers to how the information transmitted between Sally and <\/span><span style=\"font-weight: 400;\">ftp.acme.inc<\/span><span style=\"font-weight: 400;\"> can remain secret even if Evil Bill has access to the network.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The original FTP does not provide confidentiality in transit and allows Evil Bill to see the username\/password and all of the data transmitted between Sally and <\/span><span style=\"font-weight: 400;\">ftp.acme.inc<\/span><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19873\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image2.png\" alt=\"\" width=\"1384\" height=\"508\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image2.png 1384w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image2-300x110.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image2-1024x376.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image2-768x282.png 768w\" sizes=\"auto, (max-width: 1384px) 100vw, 1384px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">After server identity is confirmed in SFTP, a secure channel is negotiated and established between the client\/server using a symmetric key to encrypt all future communications. This allows all of the data sent between Sally and <\/span><span style=\"font-weight: 400;\">ftp.data.inc<\/span><span style=\"font-weight: 400;\"> to remain secret even if there is a lurking Evil Bill.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition to secrecy, the secure channel also provides integrity by using a standard hashing algorithm. This lets both parties know that the data they are receiving has not been modified somewhere in transit.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Since CFTP is an implementation of SFTP and uses the same secure channels, CFTP has the same secrecy and integrity guarantees as SFTP.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19874\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image3.png\" alt=\"\" width=\"1152\" height=\"484\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image3.png 1152w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image3-300x126.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image3-1024x430.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image3-768x323.png 768w\" sizes=\"auto, (max-width: 1152px) 100vw, 1152px\" \/><\/p>\n<h3>Confidentiality at Rest<\/h3>\n<p><span style=\"font-weight: 400;\">While keeping Evil Bill from reading your data during transmission is important, keeping your data secret after it is stored on disk is also important. By default, both FTP and SFTP store their files to disk exactly as they received them. While it is possible to encrypt the files using a tool like PGP before sending it to an SFTP server, clients often send their data as is (in unencrypted plain text). Even when files are encrypted using PGP, it is very possible that when an individual decrypts the files to process them, the raw decrypted versions may remain on disk much longer than intended. That is unless an organization has strict controls and policies around handling files.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">CFTP approaches this differently and provides confidentiality at rest by default without forcing the client to encrypt their data beforehand using a tool like PGP.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As a preview, here is what encrypting files on the command line using both openssl and pgp look like. Commands in bold below are typed by the user where non bold lines represent output on the terminal.<\/span><\/p>\n<pre><b><i>OpenSSL Symmetric Encryption Example<\/i><\/b>\r\n<b>echo \"hi there\" &gt; file.txt<\/b>\r\n<b>openssl aes-256-cbc -e -in file.txt -out file.txt.enc<\/b>\r\n<span style=\"font-weight: 400;\">enter aes-256-cbc encryption password:<\/span>\r\n<b>openssl aes-256-cbc -d -in file.txt.enc<\/b>\r\n<span style=\"font-weight: 400;\">enter aes-256-cbc decryption password:<\/span>\r\n<span style=\"font-weight: 400;\">hi there<\/span>\r\n\r\n<b><i>OpenSSL Asymmetric Encryption Example (using public\/private keys)<\/i><\/b>\r\n<span style=\"font-weight: 400;\"># generate private and public key<\/span>\r\n<b>openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048<\/b>\r\n<b>openssl rsa -pubout -in private_key.pem -out public_key.pem<\/b>\r\n<span style=\"font-weight: 400;\"># encrypt file using public key<\/span>\r\n<b>openssl rsautl -encrypt -inkey public_key.pem -pubin -in file.txt file.txt.asym.enc<\/b>\r\n<span style=\"font-weight: 400;\"># decrypt file using private key<\/span>\r\n<b>openssl rsautl -decrypt -inkey private_key.pem -in file.txt.asym.enc -out file.txt.dec<\/b>\r\n\r\n<b><i>PGP Asymmetric Encryption Example (using public\/private keys)<\/i><\/b>\r\n\r\n<b>gpg --full-generate-key<\/b>\r\n<span style=\"font-weight: 400;\">gpg (GnuPG) 2.2.23; Copyright (C) 2020 Free Software Foundation, Inc.<\/span>\r\n<span style=\"font-weight: 400;\">This is free software: you are free to change and redistribute it.<\/span>\r\n<span style=\"font-weight: 400;\">There is NO WARRANTY, to the extent permitted by law.<\/span>\r\n<span style=\"font-weight: 400;\">Please select what kind of key you want:<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0(1) RSA and RSA (default)<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0(2) DSA and Elgamal<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0(3) DSA (sign only)<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0(4) RSA (sign only)<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0(14) Existing key from card<\/span>\r\n<span style=\"font-weight: 400;\">Your selection? <\/span><b>1<\/b>\r\n<span style=\"font-weight: 400;\">RSA keys may be between 1024 and 4096 bits long.<\/span>\r\n<span style=\"font-weight: 400;\">What keysize do you want? (3072) <\/span><b>4096<\/b>\r\n<span style=\"font-weight: 400;\">Requested keysize is 4096 bits<\/span>\r\n<span style=\"font-weight: 400;\">Please specify how long the key should be valid.<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00 = key does not expire<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;n&gt;\u00a0 = key expires in n days<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;n&gt;w = key expires in n weeks<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;n&gt;m = key expires in n months<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;n&gt;y = key expires in n years<\/span>\r\n<span style=\"font-weight: 400;\">Key is valid for? (0) <\/span><b>5y<\/b>\r\n<span style=\"font-weight: 400;\">Key expires at Sun Sep 27 11:51:02 2026 MDT<\/span>\r\n<span style=\"font-weight: 400;\">Is this correct? (y\/N) <\/span><b>y<\/b>\r\n\r\n<span style=\"font-weight: 400;\">GnuPG needs to construct a user ID to identify your key.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">Real name: <\/span><b>cftpblogexample<\/b>\r\n<span style=\"font-weight: 400;\">Email address: <\/span><b>cftpblogexample@fullcontact.com<\/b>\r\n<span style=\"font-weight: 400;\">Comment: <\/span><b>this is an example for a blog<\/b>\r\n<span style=\"font-weight: 400;\">You selected this USER-ID:<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\"cftpblogexample (this is an example for a blog) &lt;cftpblogexample@fullcontact.com&gt;\"<\/span>\r\n<span style=\"font-weight: 400;\">Change (N)ame, (C)omment, (E)mail or (O)kay\/(Q)uit? <\/span><b>O<\/b>\r\n<span style=\"font-weight: 400;\">We need to generate a lot of random bytes. It is a good idea to perform<\/span>\r\n<span style=\"font-weight: 400;\">some other action (type on the keyboard, move the mouse, utilize the<\/span>\r\n<span style=\"font-weight: 400;\">disks) during the prime generation; this gives the random number<\/span>\r\n<span style=\"font-weight: 400;\">generator a better chance to gain enough entropy.<\/span>\r\n<span style=\"font-weight: 400;\">We need to generate a lot of random bytes. It is a good idea to perform<\/span>\r\n<span style=\"font-weight: 400;\">some other action (type on the keyboard, move the mouse, utilize the<\/span>\r\n<span style=\"font-weight: 400;\">disks) during the prime generation; this gives the random number<\/span>\r\n<span style=\"font-weight: 400;\">generator a better chance to gain enough entropy.<\/span>\r\n<span style=\"font-weight: 400;\">gpg: key 37F3D947A60BC20C marked as ultimately trusted<\/span>\r\n<span style=\"font-weight: 400;\">gpg: revocation certificate stored as '\/Users\/user\/.gnupg\/openpgp-revocs.d\/ED3E9BCD84C8720C8653D42737F3D947A60BC20C.rev'<\/span>\r\n<span style=\"font-weight: 400;\">public and secret key created and signed.<\/span>\r\n\r\n<span style=\"font-weight: 400;\">pub \u00a0 rsa4096 2021-09-28 [SC] [expires: 2026-09-27]<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ED3E9BCD84C8720C8653D42737F3D947A60BC20C<\/span>\r\n<span style=\"font-weight: 400;\">uid\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cftpblogexample (this is an example for a blog) &lt;cftpblogexample@fullcontact.com&gt;<\/span>\r\n<span style=\"font-weight: 400;\">sub \u00a0 rsa4096 2021-09-28 [E] [expires: 2026-09-27]<\/span>\r\n\r\n<span style=\"font-weight: 400;\">user@FullContact-user-MBP 20210927 % gpg --list-keys<\/span>\r\n<span style=\"font-weight: 400;\">gpg: checking the trustdb<\/span>\r\n<span style=\"font-weight: 400;\">gpg: marginals needed: 3\u00a0 completes needed: 1\u00a0 trust model: pgp<\/span>\r\n<span style=\"font-weight: 400;\">gpg: depth: 0\u00a0 valid: \u00a0 2\u00a0 signed: \u00a0 0\u00a0 trust: 0-, 0q, 0n, 0m, 0f, 2u<\/span>\r\n<span style=\"font-weight: 400;\">gpg: next trustdb check due at 2022-01-26<\/span>\r\n<span style=\"font-weight: 400;\">\/Users\/user\/.gnupg\/pubring.kbx<\/span>\r\n<span style=\"font-weight: 400;\">----------------------------------------<\/span>\r\n\r\n<b>gpg --export --armor cftpblogexample &gt; cftpblogexample_public.asc<\/b>\r\n<b>gpg --import cftpblogexample_public.asc<\/b>\r\n<b>gpg --encrypt --recipient cftpblogexample file.txt<\/b>\r\n<b>gpg --decrypt file.txt.gpg<\/b>\r\n<span style=\"font-weight: 400;\">gpg: encrypted with 4096-bit RSA key, ID 464A25175D1FC7F2, created 2021-09-28<\/span>\r\n<span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cftpblogexample (this is an example for a blog) &lt;cftpblogexample@fullcontact.com&gt;\"<\/span>\r\n<span style=\"font-weight: 400;\">hi there<\/span><\/pre>\n<p><span style=\"font-weight: 400;\">As the raw bytes are received by CFTP, they are buffered in memory and sent in chunks to an internal service called Ciphervisor. Ciphervisor is designed to look up the client specific symmetric key for the account, perform symmetric encryption (AES-128-CTR) using that key and store the encrypted data to an AWS S3 bucket (which also has bucket encryption applied). Keeping the raw data in memory as you encrypt it reduces the risk to that data if an attacker was able to gain access to the server. When paired with the fact that different encryption keys are used for each account the risk that the attacker gains access to your raw unencrypted data is greatly reduced.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this way, even if an internal actor is able to gain access to an encrypted file or object in S3, they are unable to read it without sending the data through Ciphervisor and requesting that it be decrypted for them.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19875\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image4.png\" alt=\"\" width=\"1824\" height=\"600\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image4.png 1824w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image4-300x99.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image4-1024x337.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image4-768x253.png 768w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image4-1536x505.png 1536w\" sizes=\"auto, (max-width: 1824px) 100vw, 1824px\" \/><\/p>\n<h3>Auditing<\/h3>\n<p><span style=\"font-weight: 400;\">In systems like FTP and SFTP, auditing typically refers to the process of logging and recording which users have logged in and which actions have taken place. While FTP and SFTP do not provide comprehensive logging out of the box, they can be configured to log file-specific actions taken by each user. With FTP and SFTP, once files are accessed directly on the server by internal users, this log trail is usually lost. And even worse, if Evil Bill ever got into the machine, he could change the logs or even delete them!<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With CFTP, any time the data needs to be read, the user must first request it be decrypted through Ciphervisor. This decrypt action is logged and audited. Unlike SFTP, access to files continues to be logged by default even after they are uploaded to the server.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19876\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image13.png\" alt=\"\" width=\"1939\" height=\"600\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image13.png 1939w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image13-300x93.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image13-1024x317.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image13-768x238.png 768w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image13-1536x475.png 1536w\" sizes=\"auto, (max-width: 1939px) 100vw, 1939px\" \/><\/p>\n<h3>Getting started with CFTP<\/h3>\n<p><span style=\"font-weight: 400;\">Follow these steps to start using CFTP to send and receive data to\/from FullContact.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 300;\" aria-level=\"1\"><a href=\"https:\/\/platform.fullcontact.com\/register\"><span style=\"font-weight: 300;\">Create<\/span><\/a><span style=\"font-weight: 300;\"> or <\/span><a href=\"https:\/\/platform.fullcontact.com\/login\"><span style=\"font-weight: 300;\">log in<\/span><\/a><span style=\"font-weight: 300;\"> to your FullContact Dashboard account.<\/span>\n<ol>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">Set up a username and password. You will need these when logging in using a client like CyberDuck. Do not use the \u201cSign in with Google\u201d option.<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19877\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image12.png\" alt=\"\" width=\"1920\" height=\"1276\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image12.png 1920w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image12-300x199.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image12-1024x681.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image12-768x510.png 768w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image12-1536x1021.png 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/span><\/li>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">If you already have a login but don\u2019t know your password the easiest thing to do is to <\/span><a href=\"https:\/\/platform.fullcontact.com\/forgot\"><span style=\"font-weight: 300;\">request a password reset<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19878\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image11.png\" alt=\"\" width=\"1060\" height=\"974\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image11.png 1060w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image11-300x276.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image11-1024x941.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image11-768x706.png 768w\" sizes=\"auto, (max-width: 1060px) 100vw, 1060px\" \/><\/span><\/a><\/li>\n<\/ol>\n<\/li>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">Let your account manager or sales representative know the email you are using to upload data. This will allow your data to be processed by authorized users and systems on the back end.<\/span><\/li>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">Using command line SFTP or common SFTP clients like FileZilla or CyberDuck, upload your files.<\/span>\n<ol>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">This service uses the SFTP protocol<\/span><\/li>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">Server: <\/span><b>cftp.fullcontact.com <\/b><span style=\"font-weight: 300;\">(notice it is a \u2018c\u2019, not an \u2018s\u2019); and if asked for, use port <\/span><b>22<\/b><span style=\"font-weight: 300;\">\u00a0<\/span><\/li>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">For your username and password, use the same email you signed up with on the dashboard<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 300;\">Note:<\/span><i><span style=\"font-weight: 300;\"> Use your full email address for username e.g. <\/span><\/i><i><span style=\"font-weight: 300;\">john.doe@fullcontact.com<\/span><\/i><\/p>\n<ol>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">Upload and download files as you would on an SFTP account.<\/span><\/li>\n<li style=\"font-weight: 300;\" aria-level=\"2\"><span style=\"font-weight: 300;\">For additional verification of the server\u2019s identity, use the following fingerprints:<\/span><span style=\"font-weight: 300;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">MD5 : 14:b8:56:4f:f4:2b:3c:fe:d7:4c:8c:b1:85:05:cc:1e<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">SHA256 : v1oW8uKDdtol9vXlGyTMdcjxRnKH9t9ofjxTNWCaHj<\/span><\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19880\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image7.png\" alt=\"\" width=\"1582\" height=\"1060\" srcset=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image7.png 1582w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image7-300x201.png 300w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image7-1024x686.png 1024w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image7-768x515.png 768w, https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image7-1536x1029.png 1536w\" sizes=\"auto, (max-width: 1582px) 100vw, 1582px\" \/><\/p>\n<p><span style=\"font-weight: 300;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19886\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/cyberduck.gif\" alt=\"\" width=\"2748\" height=\"982\" \/>If you are unable to use the command line SFTP or user interface like Cyberduck you can send a request to your sales or account representative to enable the web CFTP interface built into <\/span><a href=\"https:\/\/platform.fullcontact.com\/\"><span style=\"font-weight: 300;\">Platform<\/span><\/a><span style=\"font-weight: 300;\"> (this is a new beta feature). Once this feature is enabled on your account you will be able to browse and upload small files (&lt;= 1GB) by dragging and dropping them to your browser.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19887\" src=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/cftpplatform.gif\" alt=\"\" width=\"2750\" height=\"1942\" \/><\/p>\n<h3>Summary<\/h3>\n<p><span style=\"font-weight: 400;\">When transferring your business&#8217;s most sensitive and valuable data, you want to know it&#8217;s being done securely and handled with care by those processing it. The primary security objectives you need to consider during any data transfer are:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Authentication<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Server identity and trust<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Confidentiality in transit and at rest<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Auditing<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">While it&#8217;s possible to achieve all of the above with SFTP and a few manual solutions, using CipherFTP (CFTP) is easy to accomplish all of them by default. More technical users can upload files to CFTP using a command line or GUI interfaces like CyberDuck or Filezilla. In contrast, users who just want a quick way to securely upload smaller files can take advantage of the new Files interface built into the FullContact <\/span><a href=\"https:\/\/platform.fullcontact.com\/\"><span style=\"font-weight: 400;\">Platform<\/span><\/a><span style=\"font-weight: 400;\">. However you choose to transfer your data to FullContact, you can rest assured that the security objectives described in this article are being addressed and that your data is in good hands.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you have questions about FullContact or CFTP please contact <\/span><span style=\"font-weight: 400;\">support@fullcontact.com<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>CFTP: a new and easier way to secure file transfers. Introduction The File Transfer Protocol (FTP) is something that businesses rely on even to this day. While transferring your company&#8217;s sensitive data it is important to keep in mind how you are keeping that data secure. While using SFTP accomplishes many important security objectives, The [&hellip;]<\/p>\n","protected":false},"author":91,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_improvement_type_select":"improve_an_existing","_thumb_yes_seoaic":false,"_frame_yes_seoaic":false,"seoaic_generate_description":"","seoaic_improve_instructions_prompt":"","seoaic_rollback_content_improvement":"","seoaic_idea_thumbnail_generator":"","thumbnail_generated":false,"thumbnail_generate_prompt":"","seoaic_article_description":"","seoaic_article_subtitles":[],"footnotes":""},"categories":[656],"tags":[],"class_list":["post-19867","post","type-post","status-publish","format-standard","hentry","category-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.1 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Introducing FullContact CipherFTP\u00a0 | FullContact<\/title>\n<meta name=\"description\" content=\"CFTP: a new and easier way to secure file transfers. Introduction The File Transfer Protocol (FTP) is something that businesses rely on even to this day.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing FullContact CipherFTP\u00a0\" \/>\n<meta property=\"og:description\" content=\"CFTP: a new and easier way to secure file transfers. Introduction The File Transfer Protocol (FTP) is something that businesses rely on even to this day.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/\" \/>\n<meta property=\"og:site_name\" content=\"FullContact\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-07T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-05T12:42:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png\" \/>\n<meta name=\"author\" content=\"Jeremy Plichta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fullcontact\" \/>\n<meta name=\"twitter:site\" content=\"@fullcontact\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Plichta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/\"},\"author\":{\"name\":\"Jeremy Plichta\",\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/person\/72c64648c1d628849506fa594a520e11\"},\"headline\":\"Introducing FullContact CipherFTP\u00a0\",\"datePublished\":\"2021-10-07T15:00:00+00:00\",\"dateModified\":\"2022-04-05T12:42:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/\"},\"wordCount\":2144,\"publisher\":{\"@id\":\"https:\/\/www.fullcontact.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png\",\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/\",\"url\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/\",\"name\":\"Introducing FullContact CipherFTP\u00a0 | FullContact\",\"isPartOf\":{\"@id\":\"https:\/\/www.fullcontact.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png\",\"datePublished\":\"2021-10-07T15:00:00+00:00\",\"dateModified\":\"2022-04-05T12:42:04+00:00\",\"description\":\"CFTP: a new and easier way to secure file transfers. Introduction The File Transfer Protocol (FTP) is something that businesses rely on even to this day.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#primaryimage\",\"url\":\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png\",\"contentUrl\":\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png\",\"width\":1999,\"height\":743},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.fullcontact.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing FullContact CipherFTP\u00a0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.fullcontact.com\/#website\",\"url\":\"https:\/\/www.fullcontact.com\/\",\"name\":\"FullContact\",\"description\":\"Relationships, reimagined.\",\"publisher\":{\"@id\":\"https:\/\/www.fullcontact.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.fullcontact.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.fullcontact.com\/#organization\",\"name\":\"FullContact\",\"url\":\"https:\/\/www.fullcontact.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2019\/11\/fc-logo@2x.png\",\"contentUrl\":\"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2019\/11\/fc-logo@2x.png\",\"width\":200,\"height\":38,\"caption\":\"FullContact\"},\"image\":{\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/fullcontact\",\"https:\/\/www.linkedin.com\/company\/fullcontact-inc-\",\"https:\/\/www.youtube.com\/user\/FullContactAPI\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/person\/72c64648c1d628849506fa594a520e11\",\"name\":\"Jeremy Plichta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.fullcontact.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/da25040c6b6f787c42fda93950ff50ef24ce1de3063a3943928f7e6b67db954a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/da25040c6b6f787c42fda93950ff50ef24ce1de3063a3943928f7e6b67db954a?s=96&d=mm&r=g\",\"caption\":\"Jeremy Plichta\"},\"url\":\"https:\/\/www.fullcontact.com\/blog\/author\/jeremyplichta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introducing FullContact CipherFTP\u00a0 | FullContact","description":"CFTP: a new and easier way to secure file transfers. Introduction The File Transfer Protocol (FTP) is something that businesses rely on even to this day.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/","og_locale":"en_US","og_type":"article","og_title":"Introducing FullContact CipherFTP\u00a0","og_description":"CFTP: a new and easier way to secure file transfers. Introduction The File Transfer Protocol (FTP) is something that businesses rely on even to this day.","og_url":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/","og_site_name":"FullContact","article_published_time":"2021-10-07T15:00:00+00:00","article_modified_time":"2022-04-05T12:42:04+00:00","og_image":[{"url":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png","type":"","width":"","height":""}],"author":"Jeremy Plichta","twitter_card":"summary_large_image","twitter_creator":"@fullcontact","twitter_site":"@fullcontact","twitter_misc":{"Written by":"Jeremy Plichta","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#article","isPartOf":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/"},"author":{"name":"Jeremy Plichta","@id":"https:\/\/www.fullcontact.com\/#\/schema\/person\/72c64648c1d628849506fa594a520e11"},"headline":"Introducing FullContact CipherFTP\u00a0","datePublished":"2021-10-07T15:00:00+00:00","dateModified":"2022-04-05T12:42:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/"},"wordCount":2144,"publisher":{"@id":"https:\/\/www.fullcontact.com\/#organization"},"image":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png","articleSection":["Engineering"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/","url":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/","name":"Introducing FullContact CipherFTP\u00a0 | FullContact","isPartOf":{"@id":"https:\/\/www.fullcontact.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#primaryimage"},"image":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png","datePublished":"2021-10-07T15:00:00+00:00","dateModified":"2022-04-05T12:42:04+00:00","description":"CFTP: a new and easier way to secure file transfers. Introduction The File Transfer Protocol (FTP) is something that businesses rely on even to this day.","breadcrumb":{"@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#primaryimage","url":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png","contentUrl":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2021\/10\/image1.png","width":1999,"height":743},{"@type":"BreadcrumbList","@id":"https:\/\/www.fullcontact.com\/blog\/engineering\/introducing-fullcontact-cipherftp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fullcontact.com\/"},{"@type":"ListItem","position":2,"name":"Introducing FullContact CipherFTP\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/www.fullcontact.com\/#website","url":"https:\/\/www.fullcontact.com\/","name":"FullContact","description":"Relationships, reimagined.","publisher":{"@id":"https:\/\/www.fullcontact.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fullcontact.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.fullcontact.com\/#organization","name":"FullContact","url":"https:\/\/www.fullcontact.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fullcontact.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2019\/11\/fc-logo@2x.png","contentUrl":"https:\/\/www.fullcontact.com\/wp-content\/uploads\/2019\/11\/fc-logo@2x.png","width":200,"height":38,"caption":"FullContact"},"image":{"@id":"https:\/\/www.fullcontact.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/fullcontact","https:\/\/www.linkedin.com\/company\/fullcontact-inc-","https:\/\/www.youtube.com\/user\/FullContactAPI"]},{"@type":"Person","@id":"https:\/\/www.fullcontact.com\/#\/schema\/person\/72c64648c1d628849506fa594a520e11","name":"Jeremy Plichta","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fullcontact.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/da25040c6b6f787c42fda93950ff50ef24ce1de3063a3943928f7e6b67db954a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/da25040c6b6f787c42fda93950ff50ef24ce1de3063a3943928f7e6b67db954a?s=96&d=mm&r=g","caption":"Jeremy Plichta"},"url":"https:\/\/www.fullcontact.com\/blog\/author\/jeremyplichta\/"}]}},"_links":{"self":[{"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/posts\/19867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/users\/91"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/comments?post=19867"}],"version-history":[{"count":0,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/posts\/19867\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/media?parent=19867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/categories?post=19867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fullcontact.com\/wp-json\/wp\/v2\/tags?post=19867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}