<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ivan</title>
    <description>The latest articles on DEV Community by Ivan (@system_arch_ivan).</description>
    <link>https://dev.to/system_arch_ivan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3875241%2F952df2e5-a9e3-479c-8834-418e7f6b6ad2.png</url>
      <title>DEV Community: Ivan</title>
      <link>https://dev.to/system_arch_ivan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/system_arch_ivan"/>
    <language>en</language>
    <item>
      <title>A Password Manager That Doesn’t Trust Its Own Server</title>
      <dc:creator>Ivan</dc:creator>
      <pubDate>Sun, 12 Apr 2026 17:46:24 +0000</pubDate>
      <link>https://dev.to/system_arch_ivan/a-password-manager-that-doesnt-trust-its-own-server-5fi1</link>
      <guid>https://dev.to/system_arch_ivan/a-password-manager-that-doesnt-trust-its-own-server-5fi1</guid>
      <description>&lt;p&gt;Most password managers say they are secure.&lt;/p&gt;

&lt;p&gt;But very few are built on a simple idea:&lt;/p&gt;

&lt;p&gt;The server should not be able to read your data at all.&lt;/p&gt;

&lt;p&gt;I recently started using a tool called Lockly — a password manager built with a zero-knowledge architecture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lockly.at" rel="noopener noreferrer"&gt;Lockly password manager&lt;/a&gt; focuses on doing one thing right — secure storage and synchronization of sensitive data.&lt;/p&gt;

&lt;p&gt;No big launch. No marketing noise.&lt;/p&gt;

&lt;p&gt;Just quietly released.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes it different
&lt;/h2&gt;

&lt;p&gt;The core idea is zero-knowledge architecture.&lt;/p&gt;

&lt;p&gt;All sensitive data is encrypted on the client side, before it ever leaves your device.&lt;/p&gt;

&lt;p&gt;The server only stores ciphertext.&lt;/p&gt;

&lt;p&gt;It literally has no ability to decrypt anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works (simplified)
&lt;/h2&gt;

&lt;p&gt;Encryption flow looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have a secret phrase&lt;/li&gt;
&lt;li&gt;It is processed using Argon2id (key derivation)&lt;/li&gt;
&lt;li&gt;A strong encryption key is generated&lt;/li&gt;
&lt;li&gt;Data is encrypted using AES-256-GCM&lt;/li&gt;
&lt;li&gt;Only encrypted data is sent to the server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even if someone gets full access to the database:&lt;/p&gt;

&lt;p&gt;→ they only see encrypted blobs&lt;/p&gt;

&lt;p&gt;Without your secret — it’s useless.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is actually encrypted
&lt;/h2&gt;

&lt;p&gt;Everything that matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;logins&lt;/li&gt;
&lt;li&gt;passwords&lt;/li&gt;
&lt;li&gt;URLs&lt;/li&gt;
&lt;li&gt;notes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no “partial protection” — it’s all encrypted before sync.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local-first approach
&lt;/h2&gt;

&lt;p&gt;Another interesting part — it’s offline-first.&lt;/p&gt;

&lt;p&gt;The app stores data locally in the browser (IndexedDB), encrypted as well.&lt;/p&gt;

&lt;p&gt;This gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;instant access without waiting for network&lt;/li&gt;
&lt;li&gt;full functionality offline&lt;/li&gt;
&lt;li&gt;sync happens in the background&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sync without trust
&lt;/h2&gt;

&lt;p&gt;Synchronization is handled separately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local changes are queued&lt;/li&gt;
&lt;li&gt;when online — pushed to server&lt;/li&gt;
&lt;li&gt;remote updates are pulled back&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend only coordinates this process.&lt;/p&gt;

&lt;p&gt;It does not participate in decryption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why browser-based actually matters
&lt;/h2&gt;

&lt;p&gt;There’s no heavy client installation required.&lt;/p&gt;

&lt;p&gt;You can use it directly from a browser.&lt;/p&gt;

&lt;p&gt;Even in incognito mode.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nothing persistent on the machine (if you don’t want it)&lt;/li&gt;
&lt;li&gt;no obvious installed app&lt;/li&gt;
&lt;li&gt;works across devices instantly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depending on your threat model — this can be either convenience or an extra layer of operational security.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I’m sharing this
&lt;/h2&gt;

&lt;p&gt;I’ve tried a lot of password managers.&lt;/p&gt;

&lt;p&gt;Most of them are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;overloaded&lt;/li&gt;
&lt;li&gt;too “cloud-dependent”&lt;/li&gt;
&lt;li&gt;or require trusting the backend too much&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This one is different.&lt;/p&gt;

&lt;p&gt;It’s minimal.&lt;/p&gt;

&lt;p&gt;This makes Lockly password manager a practical solution for users who care about privacy and control.&lt;/p&gt;

&lt;p&gt;But it gets the fundamentals right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;encryption before transport&lt;/li&gt;
&lt;li&gt;zero-knowledge backend&lt;/li&gt;
&lt;li&gt;simple and predictable sync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And honestly — that’s what matters most.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Security is not about features.&lt;/p&gt;

&lt;p&gt;It’s about what the system is fundamentally capable of doing.&lt;/p&gt;

&lt;p&gt;And in this case:&lt;/p&gt;

&lt;p&gt;The system is fundamentally incapable of reading your data.&lt;/p&gt;

&lt;p&gt;—&lt;/p&gt;

&lt;p&gt;If you're curious, I can share more details about the architecture or setup.&lt;/p&gt;

</description>
      <category>security</category>
      <category>encryption</category>
      <category>webdev</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
