Ad Nihilum 0.4.3

Ad Nihilum 0.4.3 已發布——這是一個基於「讀取並銷毀」原則的極簡主義、自託管、加密訊息服務。

伺服器僅充當靜默儲存設備。加密和解密完全在客戶端瀏覽器中進行(使用 AES-GCM 演算法)。

特點

  • 本地加密和解密,伺服器永遠不會看到金鑰;
  • 支援增加一層密碼加密,該加密層(1)伺服器無法知道,(2)無法從傳輸的連結中發現;
  • 此專案包含約 2200 行 C 語言伺服器程式碼和 600 行 JS 用戶端程式碼,這簡化了審計工作;
  • Ad Nihilum 僅依賴 libmicrohttpd。它提供了一個修改版的 QRCode.js 用於產生二維碼;
  • 本文檔包含無需外部 IP 位址即可快速設定本機服務的說明;
  • Ad Nihilum 的作品 Android隨附用於在 Termux 中彙編的相應腳本;
  • 單線程同步伺服器。

變化

大規模重新設計

  • 發送和接收訊息的頁面以及對應的客戶端程式碼是分開的。
  • 總的來說,設計方案根據洛爾坎人的意願進行了大幅修改和調整。
  • “簡單”的本地客戶:
    • 新增了一位設計風格簡潔的客戶。 https://adnihilum.net/simple;
    • 客戶端頁面可以儲存到本機,並透過 file:// 使用。

瀏覽器策略

  • 已實施 CSP 來對抗 XSS;
  • 伺服器發送 HSTS。

其他變化

  • 此專案由 Epha-ots 更名而來;
  • 已購買網域 adnihilum.net;
  • TLS 使用 Let's Encrypt 提供,這一點值得注意(不涉及金錢交易);
  • 文件操作已簡化;
  • 過渡到粗指針;
  • 修復了一些小錯誤;
  • 使用 CMake 建置時,自動進行 js 檔案壓縮並建置客戶端檔案。

協議概述

產生三個隨機值:鍵 K初始化向量 N 和鹽 S. K — 256 位, N — 96 位, S — 128 位元。

IDK и S 使用基於 SHA-256 的 HKDF。

產生一串額外的已驗證數據 AAD 它只是一個類似這樣的字串:id=ID

如果用戶已設定密碼:

  • Pk 從密碼和 S 使用 PBKDF2、SHA-256、800000 次迭代;
  • 所有東西都用同一種鹽;
  • 使用金鑰透過 AES-GCM 加密數據 Pk,IV/隨機 N 並傳下去 AAD.

如果資料中包含密碼,則在已加密的資料中新增一個兩位元組的標籤;如果沒有密碼,則會在原始資料中新增一個兩位元組的標籤。

第一個位元組很重要:它指示資料是否使用密碼加密:

  • 0x73 - 資料已使用密碼加密;
  • 0x13 - 資料未使用密碼加密。

第二個位元組是常數值 0x37。

使用相同的初始化向量 (iv) = N 和相同的參數,透過 AES-GCM 再次加密結果。 AAD這樣就得到了最終的密文。 ct.

將位元組連接成字串:blob = N .. S .. ct

BLOB 到伺服器以及 ID伺服器回 BLOB 這就是原因 ID 且無法替換:客戶會先檢查 IDN и K 甚至在解密之前,然後——透過 AAD.

客戶儲存 K. K 永遠不會發送到伺服器。 Pk 密碼也不會被傳送;所有與密碼相關的資訊都會從記憶體中清除。

客戶端產生連結:origin/#ID/K

這裡 ID и K — base64url 格式的字串。

當收件者開啟連結時:

  • 瀏覽器會丟棄所有以#開頭的內容;這稱為location.hash;
  • 客戶端應用程式從伺服器下載;
  • 在我看來,這就是主要漏洞:我們本質上又一次遇到了「TLS 存在漏洞」這一事實;
  • 但是,您可以離線儲存用戶端;
  • 理想情況下,應該有一個獨立的客戶端。

客戶端 JavaScript 會檢查 location.hash 文件,並判斷它是否存在。 ID и K它從伺服器下載資料。

然後它會檢查它們,解密它們,如有必要,會要求輸入密碼並再次解密它們。

許可證

該項目以 GPLv3 協議發布。

來源: linux.org.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster