726 lines
41 KiB
HTML
726 lines
41 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" dir="auto">
|
||
|
||
<head><meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
<meta name="robots" content="noindex, nofollow">
|
||
<title>Sending End‑to‑End Encrypted Email (E2EE) without losing friends | AlipourIm journeys</title>
|
||
<meta name="keywords" content="privacy, email, e2ee, proton, tuta, pgp, s/mime, gmail cse">
|
||
<meta name="description" content="A practical, mildly opinionated guide to sending encrypted email that normal people can actually read.">
|
||
<meta name="author" content="Iman Alipour">
|
||
<link rel="canonical" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/e2ee/">
|
||
<link crossorigin="anonymous" href="/assets/css/stylesheet.31b150d909186c48d6dbbf653acc2489945fa9ac2c8f8cd3fe8448e89e40fccf.css" integrity="sha256-MbFQ2QkYbEjW279lOswkiZRfqawsj4zT/oRI6J5A/M8=" rel="preload stylesheet" as="style">
|
||
<link rel="icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon.ico">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon-16x16.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon-32x32.png">
|
||
<link rel="apple-touch-icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/apple-touch-icon.png">
|
||
<link rel="mask-icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/safari-pinned-tab.svg">
|
||
<meta name="theme-color" content="#2e2e33">
|
||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||
<link rel="alternate" hreflang="en" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/e2ee/">
|
||
<noscript>
|
||
<style>
|
||
#theme-toggle,
|
||
.top-link {
|
||
display: none;
|
||
}
|
||
|
||
</style>
|
||
<style>
|
||
@media (prefers-color-scheme: dark) {
|
||
:root {
|
||
--theme: rgb(29, 30, 32);
|
||
--entry: rgb(46, 46, 51);
|
||
--primary: rgb(218, 218, 219);
|
||
--secondary: rgb(155, 156, 157);
|
||
--tertiary: rgb(65, 66, 68);
|
||
--content: rgb(196, 196, 197);
|
||
--code-block-bg: rgb(46, 46, 51);
|
||
--code-bg: rgb(55, 56, 62);
|
||
--border: rgb(51, 51, 51);
|
||
}
|
||
|
||
.list {
|
||
background: var(--theme);
|
||
}
|
||
|
||
.list:not(.dark)::-webkit-scrollbar-track {
|
||
background: 0 0;
|
||
}
|
||
|
||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||
border-color: var(--theme);
|
||
}
|
||
}
|
||
|
||
</style>
|
||
</noscript><script>
|
||
(function () {
|
||
|
||
|
||
window.goatcounter = { endpoint: "/count" };
|
||
|
||
const s = document.createElement("script");
|
||
s.async = true;
|
||
s.src = "/js/count.js";
|
||
document.head.appendChild(s);
|
||
})();
|
||
</script>
|
||
|
||
<script>
|
||
(function () {
|
||
|
||
const GC = "";
|
||
const nf = new Intl.NumberFormat();
|
||
const SING = "visit";
|
||
const PLUR = "visits";
|
||
|
||
function ready(fn) {
|
||
if (document.readyState === "complete" || document.readyState === "interactive") setTimeout(fn, 0);
|
||
else document.addEventListener("DOMContentLoaded", fn);
|
||
}
|
||
|
||
function gcPath() {
|
||
try {
|
||
return window.goatcounter && window.goatcounter.get_data
|
||
? window.goatcounter.get_data().p
|
||
: location.pathname;
|
||
} catch (_) {
|
||
return location.pathname;
|
||
}
|
||
}
|
||
|
||
async function fetchCount(path, period) {
|
||
try {
|
||
const q = new URLSearchParams({ t: String(Date.now()) });
|
||
if (period) q.set("start", period);
|
||
const url = `${GC}/counter/${encodeURIComponent(path)}.json?${q}`;
|
||
const r = await fetch(url, { credentials: "omit" });
|
||
if (r.status === 404) return 0;
|
||
if (!r.ok) throw 0;
|
||
const j = await r.json();
|
||
|
||
const n = Number(String(j.count).replace(/,/g, ""));
|
||
return Number.isFinite(n) ? n : 0;
|
||
} catch {
|
||
return null;
|
||
}
|
||
}
|
||
|
||
const labelVisits = (n) =>
|
||
n === null ? "—" : `${nf.format(n)} ${n === 1 ? SING : PLUR}`;
|
||
|
||
ready(async function () {
|
||
const post = document.querySelector(".post-single");
|
||
if (post) {
|
||
const meta = post.querySelector(
|
||
".post-header .post-meta, .post-header .entry-meta, .post-meta"
|
||
);
|
||
const visits = await fetchCount(gcPath());
|
||
if (meta) {
|
||
let span = meta.querySelector(".post-views");
|
||
if (!span) {
|
||
span = document.createElement("span");
|
||
span.className = "post-views";
|
||
meta.appendChild(span);
|
||
}
|
||
span.textContent = labelVisits(visits ?? 0);
|
||
}
|
||
}
|
||
|
||
const cards = document.querySelectorAll("article.post-entry");
|
||
await Promise.all(
|
||
Array.from(cards).map(async (card) => {
|
||
const meta = card.querySelector(".entry-footer, .post-meta");
|
||
const link = card.querySelector("a.entry-link, h2 a, .entry-title a");
|
||
if (!meta || !link) return;
|
||
try {
|
||
const u = new URL(link.getAttribute("href"), location.origin);
|
||
if (u.origin !== location.origin) return;
|
||
let span = meta.querySelector(".post-views");
|
||
if (!span) {
|
||
span = document.createElement("span");
|
||
span.className = "post-views";
|
||
meta.appendChild(span);
|
||
}
|
||
span.textContent = labelVisits((await fetchCount(u.pathname)) ?? 0);
|
||
} catch {}
|
||
})
|
||
);
|
||
|
||
const uvEl = document.getElementById("gc_site_visitors_week");
|
||
if (uvEl) {
|
||
const n = await fetchCount("TOTAL", "week");
|
||
uvEl.textContent = n === null ? "—" : nf.format(n);
|
||
}
|
||
});
|
||
})();
|
||
</script>
|
||
|
||
</head>
|
||
|
||
<body class="" id="top">
|
||
<script>
|
||
if (localStorage.getItem("pref-theme") === "dark") {
|
||
document.body.classList.add('dark');
|
||
} else if (localStorage.getItem("pref-theme") === "light") {
|
||
document.body.classList.remove('dark')
|
||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||
document.body.classList.add('dark');
|
||
}
|
||
|
||
</script>
|
||
|
||
<header class="header">
|
||
<nav class="nav">
|
||
<div class="logo">
|
||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/" accesskey="h" title="AlipourIm journeys (Alt + H)">AlipourIm journeys</a>
|
||
<div class="logo-switches">
|
||
<button id="theme-toggle" accesskey="t" title="(Alt + T)" aria-label="Toggle theme">
|
||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round">
|
||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||
</svg>
|
||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round">
|
||
<circle cx="12" cy="12" r="5"></circle>
|
||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<ul id="menu">
|
||
<li>
|
||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/" title="Posts">
|
||
<span>Posts</span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/phd_journey/" title="PhD_journey">
|
||
<span>PhD_journey</span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/about/" title="About">
|
||
<span>About</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</header>
|
||
<main class="main">
|
||
|
||
<article class="post-single">
|
||
<header class="post-header">
|
||
<div class="breadcrumbs"><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/">Home</a> » <a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/">Posts</a></div>
|
||
<h1 class="post-title entry-hint-parent">
|
||
Sending End‑to‑End Encrypted Email (E2EE) without losing friends
|
||
</h1>
|
||
<div class="post-meta"><span title='2025-10-30 00:00:00 +0000 UTC'>October 30, 2025</span> · 10 min · Iman Alipour
|
||
|
||
<span class="post-meta-item">
|
||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/e2ee/#isso-thread" class="isso-comments-link">Comments</a>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</header> <div class="toc">
|
||
<details open>
|
||
<summary accesskey="c" title="(Alt + C)">
|
||
<span class="details">Table of Contents</span>
|
||
</summary>
|
||
|
||
<div class="inner"><ul>
|
||
<li>
|
||
<a href="#why-people-dont-use-e2ee-email-and-why-you-still-should" aria-label="Why people don’t use E2EE email (and why you still should)">Why people don’t use E2EE email (and why you still should)</a></li>
|
||
<li>
|
||
<a href="#the-contenders-and-how-they-feel-to-use" aria-label="The contenders (and how they feel to use)">The contenders (and how they feel to use)</a><ul>
|
||
|
||
<li>
|
||
<a href="#proton-mail-consumerfriendly-great-crossprovider-story" aria-label="Proton Mail (consumer‑friendly, great cross‑provider story)">Proton Mail (consumer‑friendly, great cross‑provider story)</a></li>
|
||
<li>
|
||
<a href="#tuta-formerly-tutanota-privacy-maximalist-subjectline-encryption" aria-label="Tuta (formerly Tutanota) (privacy maximalist, subject‑line encryption)">Tuta (formerly Tutanota) (privacy maximalist, subject‑line encryption)</a></li>
|
||
<li>
|
||
<a href="#gmail-with-clientside-encryption-cse-for-organizations-on-google-workspace" aria-label="Gmail with Client‑Side Encryption (CSE) (for organizations on Google Workspace)">Gmail with Client‑Side Encryption (CSE) (for organizations on Google Workspace)</a></li>
|
||
<li>
|
||
<a href="#outlook--apple-mail-with-smime-classic-enterprise-path" aria-label="Outlook / Apple Mail with S/MIME (classic enterprise path)">Outlook / Apple Mail with S/MIME (classic enterprise path)</a></li>
|
||
<li>
|
||
<a href="#thunderbird--openpgp-free-powerful-nerdapprovednow-usable" aria-label="Thunderbird + OpenPGP (free, powerful, nerd‑approved—now usable)">Thunderbird + OpenPGP (free, powerful, nerd‑approved—now usable)</a></li>
|
||
<li>
|
||
<a href="#browser-addons-mailvelope--flowcrypt-bring-e2ee-to-webmail" aria-label="Browser add‑ons: Mailvelope & FlowCrypt (bring E2EE to webmail)">Browser add‑ons: Mailvelope & FlowCrypt (bring E2EE to webmail)</a></li></ul>
|
||
</li>
|
||
<li>
|
||
<a href="#so-which-should-you-use" aria-label="So… which should you use?">So… which should you use?</a></li>
|
||
<li>
|
||
<a href="#a-note-on-what-e2ee-hides-and-what-it-doesnt" aria-label="A note on what E2EE hides (and what it doesn’t)">A note on what E2EE hides (and what it doesn’t)</a></li>
|
||
<li>
|
||
<a href="#quick-price--fit-at-a-glance" aria-label="Quick price & fit-at-a-glance">Quick price & fit-at-a-glance</a></li>
|
||
<li>
|
||
<a href="#the-60second-starter-packs" aria-label="The 60‑second starter packs">The 60‑second starter packs</a></li>
|
||
<li>
|
||
<a href="#shower-thoughts" aria-label="Shower thoughts">Shower thoughts</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</div>
|
||
|
||
<div class="post-content"><p>If you’ve ever thought “I should really send this <strong>securely</strong>” and then immediately remembered key servers, certificate stores, and that one time you bricked your GPG setup, this post is for you. Below is a <strong>usable</strong> path to end‑to‑end encrypted email, roughly how each option works, and when to use which—sprinkled with a little fun so your eyes don’t glaze over.</p>
|
||
<blockquote>
|
||
<p>Honestly, I don’t know why one would settle down for a paid option, but if you want to, then be my guest.</p></blockquote>
|
||
<h2 id="why-people-dont-use-e2ee-email-and-why-you-still-should">Why people <em>don’t</em> use E2EE email (and why you still should)<a hidden class="anchor" aria-hidden="true" href="#why-people-dont-use-e2ee-email-and-why-you-still-should">#</a></h2>
|
||
<p>Email wasn’t designed for secrecy. It leaks metadata (who emailed whom and when), search and spam engines expect to read your messages, and traditional E2EE requires exchanging and trusting keys or certificates—things most people never think about. That creates friction, breaks “just works” expectations, and makes onboarding your accountant, landlord, and cousin Maddie… exciting.</p>
|
||
<p>But the <strong>upsides</strong> are huge: true confidentiality of message content and attachments, stronger <strong>authenticity</strong> (signatures!), compliance wins for sensitive data, and fewer “oops, wrong inbox” disasters haunting you forever. In short: if it matters enough to <strong>hesitate</strong> before sending, it probably matters enough to encrypt.</p>
|
||
<p>I mean, generally speaking one can use e2ee for anything, and not just email, but doesn’t it feel cool if you sign your mail with your key, and if the receiver also has pgp keys, to send e2ee mail? No one knows what the two of you talk about, well unless there is a back door in your machine, buuuuuuuut assuming not, you’re good to go!</p>
|
||
<h2 id="the-contenders-and-how-they-feel-to-use">The contenders (and how they feel to use)<a hidden class="anchor" aria-hidden="true" href="#the-contenders-and-how-they-feel-to-use">#</a></h2>
|
||
<h3 id="proton-mail-consumerfriendly-great-crossprovider-story">Proton Mail (consumer‑friendly, great cross‑provider story)<a hidden class="anchor" aria-hidden="true" href="#proton-mail-consumerfriendly-great-crossprovider-story">#</a></h3>
|
||
<p>Proton gives you automatic E2EE between Proton users. When you email someone on Gmail or Outlook, you can send a <strong>password‑protected message</strong> that opens in a secure web page; you share the password out‑of‑band (SMS, Signal, etc.). If your recipient already uses PGP, Proton can speak that too. Day‑to‑day, it’s just email—with an extra “lock” option when you need it.</p>
|
||
<p><strong>Prices (personal):</strong> Free tier exists; paid tiers like <strong>Mail Plus</strong> and <strong>Proton Unlimited</strong> add storage, custom domains, and Proton Bridge for desktop clients. Expect <strong>single‑digit € per month</strong> for personal use; business plans are per‑user.<br>
|
||
<strong>How to use:</strong> Sign up → compose → choose password‑protected email for non‑Proton recipients or send normally to Proton addresses. Recipients can <strong>reply securely</strong> in the web portal—even without an account.<br>
|
||
<strong>Ups:</strong> Lowest friction to message non‑tech people; slick apps; plays well with PGP if you’re a power user.<br>
|
||
<strong>Downs:</strong> Metadata like recipients stays visible across the wider email network; full power (Bridge, larger storage) lives behind paid tiers.</p>
|
||
<p>Honestly though, although I love proton and want to work for them, idk why you would want to pay for such services. If you use their other options, like custom mail domains, etc., then be my guest, otherwise just use Thunderbird! It’s easy to use, and fun to show off.</p>
|
||
<h3 id="tuta-formerly-tutanota-privacy-maximalist-subjectline-encryption">Tuta (formerly Tutanota) (privacy maximalist, subject‑line encryption)<a hidden class="anchor" aria-hidden="true" href="#tuta-formerly-tutanota-privacy-maximalist-subjectline-encryption">#</a></h3>
|
||
<p>Tuta offers automatic E2EE between Tuta users and <strong>password‑protected emails</strong> to anyone else. Its special sauce: it encrypts more by default in its ecosystem—including <strong>subject lines</strong>—and the whole suite is open‑source and auditable.</p>
|
||
<p><strong>Prices (personal & business):</strong> Free plan plus personal tiers (e.g., <strong>Revolutionary</strong>, <strong>Legend</strong>) and business tiers (<strong>Essential/Advanced/Unlimited</strong>). Personal is typically <strong>low single‑digit €/month</strong>; business is <strong>per‑user, per‑month</strong>.<br>
|
||
<strong>How to use:</strong> Create an account → compose → set a password for non‑Tuta recipients; they read and reply in a secure web page.<br>
|
||
<strong>Ups:</strong> Max privacy posture; encrypted subjects between Tuta users; clean apps.<br>
|
||
<strong>Downs:</strong> Some advanced mail protocols/features are intentionally limited; cross‑ecosystem mail still exposes standard email metadata.</p>
|
||
<p>I was introduced to this one literally for writing this post, I had no idea it existed before.</p>
|
||
<h3 id="gmail-with-clientside-encryption-cse-for-organizations-on-google-workspace">Gmail with <strong>Client‑Side Encryption</strong> (CSE) (for organizations on Google Workspace)<a hidden class="anchor" aria-hidden="true" href="#gmail-with-clientside-encryption-cse-for-organizations-on-google-workspace">#</a></h3>
|
||
<p>If you live in Google Workspace, CSE brings real end‑to‑end encryption to Gmail—<strong>keys stay with your organization</strong>. After admins set it up, users toggle encryption right in the compose window. It’s the least disruptive path for big teams that already run on Gmail.</p>
|
||
<p><strong>Prices:</strong> CSE is available on certain Workspace editions (e.g., <strong>Enterprise Plus</strong>, <strong>Education Standard/Plus</strong>, <strong>Frontline Plus</strong>). No extra per‑message fee, but you’ll need a compliant key service and the right subscription tier.<br>
|
||
<strong>How to use:</strong> Ask IT to enable CSE and your key service → compose in Gmail → turn on encryption for messages that need it.<br>
|
||
<strong>Ups:</strong> Seamless for employees; centralized key control; good audit/compliance story.<br>
|
||
<strong>Downs:</strong> Only for supported Workspace tiers; external recipients may need compatible tooling or a secure portal experience; not for personal @gmail.com accounts.</p>
|
||
<p>I mean… how much can you trust google and their non-open source client? I know some of my collegues here do use it, I won’t. Not with the emails that matter to me.</p>
|
||
<h3 id="outlook--apple-mail-with-smime-classic-enterprise-path">Outlook / Apple Mail with <strong>S/MIME</strong> (classic enterprise path)<a hidden class="anchor" aria-hidden="true" href="#outlook--apple-mail-with-smime-classic-enterprise-path">#</a></h3>
|
||
<p>S/MIME uses <strong>X.509 certificates</strong> instead of PGP keys and is deeply integrated into Outlook and Apple Mail. Inside one company (or between partners who exchange certs), it’s smooth sailing. Your IT can deploy certificates automatically so users never touch crypto knobs.</p>
|
||
<p><strong>Prices:</strong> The tech is built in; costs come from <strong>certificates</strong>. Orgs often issue them internally; public CA prices vary.<br>
|
||
<strong>How to use:</strong> Install/auto‑deploy your certificate → recipients share theirs → click encrypt/sign in Outlook or Mail.<br>
|
||
<strong>Ups:</strong> Great inside enterprises; MDM‑friendly; widely supported.<br>
|
||
<strong>Downs:</strong> Exchanging certs across companies is clunky; personal certs can be confusing; mixed ecosystems require coordination.</p>
|
||
<p>Ok. Is there that big of a difference between these and Gmail? Idk. I ain’t trusting non of it. But maybe the apple client I do partially trust. They seem to care about user privacy, or maybe they have brain washed me to believe so.</p>
|
||
<h3 id="thunderbird--openpgp-free-powerful-nerdapprovednow-usable">Thunderbird + OpenPGP (free, powerful, nerd‑approved—now usable)<a hidden class="anchor" aria-hidden="true" href="#thunderbird--openpgp-free-powerful-nerdapprovednow-usable">#</a></h3>
|
||
<p>Thunderbird bakes in <strong>OpenPGP</strong> and S/MIME. You generate or import a key once, and Thunderbird remembers which contacts can be encrypted. It even supports <strong>protected headers/subject encryption</strong> so the visible subject can be replaced with a stub while the real subject lives inside the encrypted part. For many privacy‑minded folks, this is the sweet spot of control and usability.</p>
|
||
<p><strong>Prices:</strong> Free.<br>
|
||
<strong>How to use:</strong> Install Thunderbird → create/import a PGP key → hit the little lock when writing to someone whose key you have. Done.<br>
|
||
<strong>Ups:</strong> Full control, open source, works with any provider via IMAP/SMTP; subject protection available.<br>
|
||
<strong>Downs:</strong> Initial key exchange still scares people; you may need to hand‑hold contacts through setup the first time.</p>
|
||
<p>This is just the best. You can also have your calendars at one place. Also your contacts and everything else. They don’t have iOS app which sucks, idk about Android.</p>
|
||
<h3 id="browser-addons-mailvelope--flowcrypt-bring-e2ee-to-webmail">Browser add‑ons: Mailvelope & FlowCrypt (bring E2EE to webmail)<a hidden class="anchor" aria-hidden="true" href="#browser-addons-mailvelope--flowcrypt-bring-e2ee-to-webmail">#</a></h3>
|
||
<p>If you’re welded to webmail, add‑ons can meet you where you live. <strong>Mailvelope</strong> brings OpenPGP to Gmail/Outlook/Yahoo and more, right in the browser. <strong>FlowCrypt</strong> focuses on a polished PGP experience for Gmail and Google Workspace, with business features and key management options.</p>
|
||
<p><strong>Prices:</strong> Mailvelope is free/open‑source. FlowCrypt has a generous free tier with <strong>paid enterprise features</strong> for teams.<br>
|
||
<strong>How to use:</strong> Install the extension → create/import keys → compose in a secure editor injected into your webmail.<br>
|
||
<strong>Ups:</strong> Zero provider switch; good for gradually introducing encryption to a contact list that lives in Gmail.<br>
|
||
<strong>Downs:</strong> Browser crypto UX still has edges; enterprise key policy needs the paid tiers; fewer bells & whistles than a full desktop client.</p>
|
||
<p>Just no. Don’t trust add-ons. Please.</p>
|
||
<h2 id="so-which-should-you-use">So… which should <em>you</em> use?<a hidden class="anchor" aria-hidden="true" href="#so-which-should-you-use">#</a></h2>
|
||
<p>If you need to send a one‑off encrypted message to a <strong>non‑technical person</strong>, Proton or Tuta’s <strong>password‑protected email</strong> is the friendliest: they click a link, enter the password you shared elsewhere, and can <strong>reply securely</strong> even without an account. For a <strong>company already on Google Workspace</strong>, turn on <strong>Gmail CSE</strong> so people don’t juggle keys. If you’re a <strong>power user</strong> or want provider‑agnostic control, go with <strong>Thunderbird OpenPGP</strong>—it’s free, modern, and interoperable. And if you won’t leave the web, try <strong>Mailvelope</strong> or <strong>FlowCrypt</strong> to bolt E2EE onto the inbox you already use.</p>
|
||
<p>Honestly though, I would suggest thunderbird all day everyday, twice on Sunday. But that is just my view. If you fancy something else, well go ahead.</p>
|
||
<h2 id="a-note-on-what-e2ee-hides-and-what-it-doesnt">A note on what E2EE hides (and what it doesn’t)<a hidden class="anchor" aria-hidden="true" href="#a-note-on-what-e2ee-hides-and-what-it-doesnt">#</a></h2>
|
||
<p>End‑to‑end encryption protects the <strong>body</strong> and <strong>attachments</strong>. Across the wider email network, <strong>metadata like From/To and delivery timestamps</strong> remain visible by design. Subjects may also be visible unless your tools use <strong>protected headers</strong> (Thunderbird can; Tuta encrypts subjects inside its ecosystem). If you truly need to hide <em>everything</em>, email might not be the right tool—reach for Signal or Matrix instead.</p>
|
||
<h2 id="quick-price--fit-at-a-glance">Quick price & fit-at-a-glance<a hidden class="anchor" aria-hidden="true" href="#quick-price--fit-at-a-glance">#</a></h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Option</th>
|
||
<th>Best fit</th>
|
||
<th>Personal price vibe</th>
|
||
<th>Notes</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Proton Mail</td>
|
||
<td>Everyday private email + easy messages to anyone</td>
|
||
<td>Free; personal paid tiers in <strong>single‑digit €/mo</strong>; business per‑user</td>
|
||
<td>Password‑protected emails to non‑Proton; PGP support</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Tuta</td>
|
||
<td>Privacy‑max email; encrypted subjects in‑ecosystem</td>
|
||
<td>Free; personal low <strong>€/mo</strong>; business per‑user</td>
|
||
<td>Password‑protected emails to non‑Tuta; open source</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Gmail CSE</td>
|
||
<td>Orgs on Google Workspace</td>
|
||
<td>Included with <strong>Enterprise Plus/Education/Frontline</strong> editions</td>
|
||
<td>Admin setup + external‑recipient flow</td>
|
||
</tr>
|
||
<tr>
|
||
<td>S/MIME (Outlook/Apple Mail)</td>
|
||
<td>Enterprises with IT/MDM</td>
|
||
<td>Software built‑in; <strong>cert costs vary</strong></td>
|
||
<td>Smooth inside one org; cert exchange needed across orgs</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Thunderbird OpenPGP</td>
|
||
<td>Provider‑agnostic power users</td>
|
||
<td>Free</td>
|
||
<td>Can encrypt subjects via protected headers</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Mailvelope / FlowCrypt</td>
|
||
<td>Must stay on webmail</td>
|
||
<td>Free / <strong>paid enterprise</strong> options</td>
|
||
<td>PGP in the browser; good stepping stone</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h2 id="the-60second-starter-packs">The 60‑second starter packs<a hidden class="anchor" aria-hidden="true" href="#the-60second-starter-packs">#</a></h2>
|
||
<p><strong>Proton/Tuta for one‑offs:</strong> create an account, write your message, set a password, send; share the password over Signal or SMS. Recipient opens the secure link and can reply—no account needed.</p>
|
||
<p><strong>Thunderbird for everything else:</strong> install, make a key, send your first signed message; when your contact replies with their key, hit the lock and enjoy encrypted bliss.</p>
|
||
<hr>
|
||
<h2 id="shower-thoughts"><strong>Shower thoughts</strong><a hidden class="anchor" aria-hidden="true" href="#shower-thoughts">#</a></h2>
|
||
<p>So, why did I mention any of this?
|
||
Aside from the fact that I do believe e2ee email should become defacto, and I don’t know why it isn’t already, I do think we are not taking any steps toward protecting ourselves, and rely on third parties to do so for us.</p>
|
||
<p>A while ago when the 12 day war happened in Iran, they eventually allowed domestic platforms to be used by Iranians living abroad to talk to their loved ones back home.
|
||
The thing is, people might not use them because they don’t trust them.</p>
|
||
<p>The question I had was different.
|
||
Assuming that the service is reliable, why can’t we use it and protect ourselves while doing so?</p>
|
||
<p>In hindsight this seems stupid.
|
||
But listen to me.
|
||
If you have a wrapper that uses your gpg key to encrypt your messages, then you send them via those seemingly “untrusted” medium, why wouldn’t you be able to use it?
|
||
The only, and oh well, biggest problem is key exchange.
|
||
Now to be honest, there exist key repositories that one can use, but also you can publish your public key over github, or any open verifiable medium. It is not foolproof, but it’s a way.
|
||
And as long as there is a minimum reliable channel between the two parties, they can verify the authenticity of the key.
|
||
Like via a quick short call.
|
||
They can also be faked, but let’s not go that extreme.
|
||
Also if many do it, it’s hard to screw over all of them, maybe a subset with spending much resources, but no way you can screw everyone.</p>
|
||
<p>Idk how stupid the thing I’m suggesting is, but I wonder if it can be done or not. I don’t know if I’m willing to spend my free time on it or not, but I though I should share the idea to at least know if it’s stupid and wrong or not.</p>
|
||
<hr>
|
||
<div class="signature-block" style="margin-top:1rem">
|
||
<p><strong>Downloads:</strong>
|
||
<a href="/sources/posts/e2ee.md">Markdown</a> ·
|
||
<a href="/sources/posts/e2ee.md.asc">Signature (.asc)</a>
|
||
</p><details class="signature">
|
||
<summary>View OpenPGP signature</summary>
|
||
<pre style="font-size:0.85em; overflow-x:auto; padding:0.75rem;">-----BEGIN PGP SIGNATURE-----
|
||
|
||
iQIzBAABCgAdFiEEVaKl3oR5K6zGyu4/tYgoUOBMjSoFAmpkbuoACgkQtYgoUOBM
|
||
jSoPBBAAlYPOVuLE4EKBrV/xOlyslxRhMoJbXxdp4HGPlrBBmsbsko9V7nMvSkXN
|
||
z+xZGP+orZYA3hUJtJFwKY3f6Lc+H0+rmPq/qwhdlyooASpap3G9n6Lh09vrimSl
|
||
teMPcOiYIeFEN2NeewReyp+0kGTuS6Z0IOZZ4yIi5wG3Ect7VtesTUrLuvdsuUZ2
|
||
nh+i/2N/8HPKb3HnkZUcWJL3oSjQ8aULH4mn4gtHUEvJZO+hH2G87yPvf0B6cM6w
|
||
qIEc9ScuBzyX6wo2Cu0V22LFJLEoD1rLsluzsE54iv/ZD6YxFbIwOi1KMX0mBOGo
|
||
S93kkSYz5LRrR/f7xtTGpfeZXnYB4YIij/9MBQBoM55oHcjTdpOV5Pe00MCF1kXJ
|
||
bfSn+ylCvyPoVUbFlKTiBFdHHiV29/ILUbMekJ4kRmBazNqu4Q486CLKqCn2yguA
|
||
mLN7Fslis+dsOnm9G/aR5MadIMgXwU8hwVM9DKDoxia4UALOSnHA2eAnJQeEYXDa
|
||
BF9sq2b6gVE6OJC2eeF0pt3AY5HL4Pe3HowrGeLt8a8QsRHy5TnTE1cdF7A+A4J6
|
||
iX2qbkUJY1eFbG/kTdFEAH/pcSp4oEyK51/E1ADsjGIG/lu5glDJdIvfw/i6xgzR
|
||
ic2kF0bGJCaI/0Sen+lvC1dkn9/wxmjRYHHF7pXH0ZxKDUe6i/Y=
|
||
=R0VX
|
||
-----END PGP SIGNATURE-----
|
||
</pre>
|
||
</details><p><em>Verify locally:</em></p>
|
||
<pre style="font-size:0.85em; overflow-x:auto; padding:0.75rem;">torsocks curl -fSLO http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/sources/posts/e2ee.md
|
||
torsocks curl -fSLO http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/sources/posts/e2ee.md.asc
|
||
gpg --verify e2ee.md.asc e2ee.md
|
||
</pre>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
<footer class="post-footer">
|
||
<ul class="post-tags">
|
||
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/privacy/">Privacy</a></li>
|
||
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/email/">Email</a></li>
|
||
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/e2ee/">E2ee</a></li>
|
||
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/proton/">Proton</a></li>
|
||
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/tuta/">Tuta</a></li>
|
||
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/pgp/">Pgp</a></li>
|
||
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/s/mime/">S/Mime</a></li>
|
||
<li><a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/tags/gmail-cse/">Gmail Cse</a></li>
|
||
</ul>
|
||
<nav class="paginav">
|
||
<a class="prev" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/phd_journey/october_2025/">
|
||
<span class="title">« Prev</span>
|
||
<br>
|
||
<span>October '25</span>
|
||
</a>
|
||
<a class="next" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/murder_mystery_night/">
|
||
<span class="title">Next »</span>
|
||
<br>
|
||
<span>La Plaza: The Falcones & the Morettis</span>
|
||
</a>
|
||
</nav>
|
||
|
||
</footer><div class="comments-switch" style="display:flex;gap:.5rem;margin:.5rem 0 1rem;">
|
||
<button id="btn-isso" type="button" aria-pressed="true">Anonymous (Isso)</button>
|
||
<button id="btn-giscus" type="button" aria-pressed="false">GitHub (Giscus)</button>
|
||
<a href="https://github.com/AlipourIm/blog-comments/discussions/categories/comments" target="_blank" rel="noopener">Open on GitHub ↗</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<div id="panel-giscus" style="display:none">
|
||
<section id="giscus-thread"></section>
|
||
</div>
|
||
|
||
|
||
<div id="panel-isso">
|
||
<section id="isso-thread"
|
||
data-isso-id="/posts/e2ee/"
|
||
data-title="Sending End‑to‑End Encrypted Email (E2EE) without losing friends">
|
||
<noscript>Javascript needs to be activated to view comments.</noscript>
|
||
</section>
|
||
<script
|
||
src="/isso/js/embed.min.js"
|
||
data-isso="/isso/"
|
||
data-isso-css="false"
|
||
data-isso-lang="en"
|
||
data-isso-max-comments-nested="5"
|
||
data-isso-sorting="newest"
|
||
async>
|
||
</script>
|
||
<small class="isso-powered" style="display:block;margin:.5rem 0;color:var(--secondary,#888)">
|
||
Comments powered by <a href="https://isso-comments.de" target="_blank" rel="noopener">Isso</a>
|
||
</small>
|
||
</div>
|
||
|
||
<script>
|
||
(function () {
|
||
var panelIsso = document.getElementById('panel-isso');
|
||
var panelGisc = document.getElementById('panel-giscus');
|
||
var issoBtn = document.getElementById('btn-isso');
|
||
var giscBtn = document.getElementById('btn-giscus');
|
||
var gLoaded = false;
|
||
|
||
function isDark() {
|
||
var pref = localStorage.getItem('pref-theme');
|
||
if (pref === 'dark') return true;
|
||
if (pref === 'light') return false;
|
||
|
||
var html = document.documentElement, body = document.body;
|
||
if (
|
||
(html.classList && html.classList.contains('dark')) ||
|
||
(body.classList && body.classList.contains('dark')) ||
|
||
html.getAttribute('data-theme') === 'dark' ||
|
||
body.getAttribute('data-theme') === 'dark' ||
|
||
(html.classList && html.classList.contains('theme-dark')) ||
|
||
(body.classList && body.classList.contains('theme-dark'))
|
||
) return true;
|
||
|
||
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||
}
|
||
function gTheme(){ return isDark() ? 'dark_dimmed' : 'noborder_light'; }
|
||
|
||
function loadGiscus() {
|
||
if (gLoaded) return;
|
||
var s = document.createElement('script');
|
||
s.src = 'https://giscus.app/client.js';
|
||
s.async = true;
|
||
s.crossOrigin = 'anonymous';
|
||
s.setAttribute('data-repo','AlipourIm/blog-comments');
|
||
s.setAttribute('data-repo-id','R_kgDOQGARyA');
|
||
s.setAttribute('data-category','Comments');
|
||
s.setAttribute('data-category-id','DIC_kwDOQGARyM4Cw3x-');
|
||
s.setAttribute('data-mapping','pathname');
|
||
s.setAttribute('data-strict','0');
|
||
s.setAttribute('data-reactions-enabled','1');
|
||
s.setAttribute('data-emit-metadata','0');
|
||
s.setAttribute('data-input-position','bottom');
|
||
s.setAttribute('data-lang','en');
|
||
s.setAttribute('data-theme', gTheme());
|
||
document.getElementById('giscus-thread').appendChild(s);
|
||
|
||
function reTheme(){
|
||
var iframe = document.querySelector('iframe.giscus-frame');
|
||
if (iframe && iframe.contentWindow) {
|
||
iframe.contentWindow.postMessage(
|
||
{ giscus: { setConfig: { theme: gTheme() } } },
|
||
'https://giscus.app'
|
||
);
|
||
}
|
||
}
|
||
|
||
var tbtn = document.getElementById('theme-toggle');
|
||
if (tbtn) tbtn.addEventListener('click', function(){ setTimeout(reTheme, 0); });
|
||
|
||
var mo = new MutationObserver(function(){ reTheme(); });
|
||
mo.observe(document.documentElement, { attributes:true, attributeFilter:['class','data-theme'] });
|
||
mo.observe(document.body, { attributes:true, attributeFilter:['class','data-theme'] });
|
||
|
||
gLoaded = true;
|
||
}
|
||
|
||
function show(which) {
|
||
var showIsso = which === 'isso';
|
||
panelIsso.style.display = showIsso ? 'block' : 'none';
|
||
panelGisc.style.display = showIsso ? 'none' : 'block';
|
||
if (issoBtn) issoBtn.setAttribute('aria-pressed', showIsso ? 'true' : 'false');
|
||
if (giscBtn) giscBtn.setAttribute('aria-pressed', showIsso ? 'false' : 'true');
|
||
if (!showIsso) loadGiscus();
|
||
}
|
||
|
||
if (issoBtn) issoBtn.addEventListener('click', function(e){ e.preventDefault(); show('isso'); });
|
||
if (giscBtn) giscBtn.addEventListener('click', function(e){ e.preventDefault(); show('giscus'); });
|
||
|
||
|
||
show('isso');
|
||
})();
|
||
</script>
|
||
|
||
|
||
</article>
|
||
</main>
|
||
|
||
<footer class="footer">
|
||
<span>© 2026 <a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/">AlipourIm journeys</a></span> ·
|
||
|
||
<span>
|
||
Powered by
|
||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||
</span>
|
||
</footer>
|
||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||
<path d="M12 6H0l6-6z" />
|
||
</svg>
|
||
</a>
|
||
|
||
|
||
|
||
<div class="site-meta-row" style="display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;">
|
||
<a href="/index.xml" rel="alternate" type="application/rss+xml" title="RSS"
|
||
class="rss-link" style="display:inline-flex;align-items:center;gap:.35rem;">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||
stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M4 11a9 9 0 0 1 9 9" />
|
||
<path d="M4 4a16 16 0 0 1 16 16" />
|
||
<circle cx="5" cy="19" r="1" />
|
||
</svg>
|
||
<span>RSS</span>
|
||
</a>
|
||
|
||
<span aria-hidden="true">·</span>
|
||
|
||
<span>Visitors this week: <span id="gc_site_visitors_week">—</span></span>
|
||
</div>
|
||
|
||
|
||
<script>
|
||
let menu = document.getElementById('menu')
|
||
if (menu) {
|
||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||
menu.onscroll = function () {
|
||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||
}
|
||
}
|
||
|
||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||
anchor.addEventListener("click", function (e) {
|
||
e.preventDefault();
|
||
var id = this.getAttribute("href").substr(1);
|
||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||
behavior: "smooth"
|
||
});
|
||
} else {
|
||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||
}
|
||
if (id === "top") {
|
||
history.replaceState(null, null, " ");
|
||
} else {
|
||
history.pushState(null, null, `#${id}`);
|
||
}
|
||
});
|
||
});
|
||
|
||
</script>
|
||
<script>
|
||
var mybutton = document.getElementById("top-link");
|
||
window.onscroll = function () {
|
||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||
mybutton.style.visibility = "visible";
|
||
mybutton.style.opacity = "1";
|
||
} else {
|
||
mybutton.style.visibility = "hidden";
|
||
mybutton.style.opacity = "0";
|
||
}
|
||
};
|
||
|
||
</script>
|
||
<script>
|
||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||
if (document.body.className.includes("dark")) {
|
||
document.body.classList.remove('dark');
|
||
localStorage.setItem("pref-theme", 'light');
|
||
} else {
|
||
document.body.classList.add('dark');
|
||
localStorage.setItem("pref-theme", 'dark');
|
||
}
|
||
})
|
||
|
||
</script>
|
||
<script>
|
||
document.querySelectorAll('pre > code').forEach((codeblock) => {
|
||
const container = codeblock.parentNode.parentNode;
|
||
|
||
const copybutton = document.createElement('button');
|
||
copybutton.classList.add('copy-code');
|
||
copybutton.innerHTML = 'copy';
|
||
|
||
function copyingDone() {
|
||
copybutton.innerHTML = 'copied!';
|
||
setTimeout(() => {
|
||
copybutton.innerHTML = 'copy';
|
||
}, 2000);
|
||
}
|
||
|
||
copybutton.addEventListener('click', (cb) => {
|
||
if ('clipboard' in navigator) {
|
||
navigator.clipboard.writeText(codeblock.textContent);
|
||
copyingDone();
|
||
return;
|
||
}
|
||
|
||
const range = document.createRange();
|
||
range.selectNodeContents(codeblock);
|
||
const selection = window.getSelection();
|
||
selection.removeAllRanges();
|
||
selection.addRange(range);
|
||
try {
|
||
document.execCommand('copy');
|
||
copyingDone();
|
||
} catch (e) { };
|
||
selection.removeRange(range);
|
||
});
|
||
|
||
if (container.classList.contains("highlight")) {
|
||
container.appendChild(copybutton);
|
||
} else if (container.parentNode.firstChild == container) {
|
||
|
||
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
|
||
|
||
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
|
||
} else {
|
||
|
||
codeblock.parentNode.appendChild(copybutton);
|
||
}
|
||
});
|
||
</script>
|
||
</body>
|
||
|
||
</html>
|