Linen-dev / linen.dev

Lightweight Google-searchable Slack alternative for Communities
https://Linen.dev
GNU Affero General Public License v3.0
2.75k stars 107 forks source link

End to End encryption: Why and how #1598

Open RealJosephKnapp opened 10 months ago

RealJosephKnapp commented 10 months ago

I think that this is pretty much the perfect chat app, all it needs is end to end encryption.

What should the e2ee protocol do?

  1. It should provide a standardized identity protocol
  2. It should consist of a post quantum key encapsulation algorithm, and a set of keypairs.
  3. It must not place complete trust in one algorithm, but many.
  4. It must be generic so that any plaintext can be encrypted over any protocol. (Email, Text Messaging, Telegram, Signal, Activitypub etc)
  5. It must be futureproof.

Let us start with the identity key. We will start with crystals-kyber-1024 as a key encapsulation algorithm. To get to 4096 bits, four seperate Crystals-Kyber-1024 keys will be used one after another. As a check each key will be verified with Crystals-Dilithium-5, FalconSign-1024 and SPINCS+-Shake256 to verify its legitimacy. Each key server the key complete public key and signature is uploaded to will verify each of the signatures and then attach its own signature so that the propagation of the identity through the global keyserver network can be verified. Now let us cover the assymetric keys protected by the Key Encapsulation Mechanism. We will use 4 separate keys, four in a row. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple NIST-B571(plaintext))))) Each certificate shall list no less than 16 but all implementations must be able to parse up to 42 public keys generated using this method. Each Public key will be triple signed using NTRUsign-32768, RSAsign-32768, ECDSA-32768 and then hashed with SHA3-512, Keyed Blake3-512, Keyed Skein-512 with an internal state size of 1024 and Keyed MD6-512 for message integrity. What about symmetric keys? When symmetric keys need to be exchanged, they are sent over the same protocol that messages are sent over. The required symmetric Ciphers are AES-256, Anubis-320, Kalyna-512, Threefish-1024 and verified with SHA3-512, Keyed Blake3-512, Keyed MD6-512 and Keyed Skein-512 an internal state size of 1024. No symmetric key may be used more than once and must be depreciated once the session, whether audio, video call, file transfer or secure drop is over. How do we look up keys? For this purpose we use a keyserver. Each keyserver is part of the fediverse and must support Activitypub, Ostatus, Zot and Diaspora, of which the specifications are listed at https://www.w3.org/TR/activitypub/, https://github.com/OStatus, https://zotlabs.org/help/en/developer/zot_protocol and https://github.com/diaspora/diaspora_federation. Support for Matrix, Zsync, CURL, GNU Wget, Authenticated Transfer Protocol, GNUNET and Freenet/Locutus smart contract are recommended but not required. I recommend that all of these be considered, but due to the emerging nature of GNUNET, Authenticated Transfer Protocol and Freenet/Locutus we ought to wait until these networks are stable and audited. Various implementations should implement Matrix, Zsync, CURL and GNU Wget as needed. How do we revoke keys? In order to revoke a key, either the identity's expiration date passes and the keyservers mark it as expired, use with extreme caution or the private key is derived. If the private key is compromised for either the Quadruple Crystals-Kyber-1024 identity, the Digital Signatures, The 16 secondary keys or any other part of the identity is compromised. Once the identity is compromised, anyone with a valid identity can challenge the key. If the private key they submitted to challenge the public key, then the entire identity is revoked and the owner is notified effective immediately. The private key is propagated across the network and every keyserver that receives it must display it as proof that the key is compromised and the key must be treated as compromised and unusable whenever it is requested. How do I prove I own the key? Simple, the keyserver will send you a message encrypted using your key encapsulation key, each of your secondary keys and a direct message using each of the required symmetric encryption algorithms. You will decript the message, verify it, and then send the message back using the identity key of the keyserver for each email address, phone number, RCS, MMS, SMS, Signal, iMessage, Matrix, Activitypub, Ostatus, Zot, Diaspora, Telegram, Nextcloud, Google Drive, Onedrive, ProtonDrive, Mega Cloud Storage, iCloud, S3 Bucket, FTP server, Contact form or any protocol not listed in the other section of your keypair by completing the round robin. What does this identity key look like? """ Begin Universal Dark Internet Identity Information File: RealName:[First_Middle1_Middle2_Middle3_Middle4_Last] Handle:[Handle1, Handle2, Handle3, Handle4, Handle5] Nickname:[Nickname1, Nickname2, Nickname3, Nickname4, Nickname5] House Phone:[+X-XXX-XXX-XXXX--callerID] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Work Phone:Phone:[+X-XXX-XXX-XXXX--callerID] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Smartphone:[+X-XXX-XXX-XXXX--callerID] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] VOIP Phone:[+X-XXX-XXX-XXXX--callerID] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Feature Phone:[+X-XXX-XXX-XXXX--callerID] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Proxy Phone:[+X-XXX-XXX-XXXX--callerID] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Home Email:[emailaddress@emailserver.tld--sendername] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Work Email:[emailaddress@emailserver.tld--sendername] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Personal Email:[emailaddress@emailserver.tld--sendername] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Formal Personal Email:[emailaddress@emailserver.tld--sendername] Protocol[True/False--username--homeserver] Account[True/False--username--homeserver] Activitypub[True/False--handle--homeserver] Ostatus:[True/False--handle--homeserver] Zot:[True/False--handle--homeserver] Diaspora:[True/False--handle--homeserver] Matrix:[True/False--handle--homeserver] Authenticated Transfer Protocol:[True/False--handle--homeserver]Email:[True/False--emailaddress--emailserver] iMessage:[True/False--username--imessageserver] RCS:[True/False--username--rcsserver] MMS[True/False--username--mmsserver] SMS:[True/False--username--homeserver] Signal:[True/False--username--signalserver] Telegram:[True/False--username-telegramserver] Begin Dark Internet Identity Key Encapsulation Mechanism Four Rounds of Crystals-Kyber-1024

  1. Crystals-Kyber-1024
  2. Crystals-Kyber-1024
  3. Crystals-Kyber-1024
  4. Crystals-Kyber-1024 Three Digital Signatures
  5. Crystals-Dilithium5
  6. FalconSign-1024
  7. SPINCS+-Shake256 Three Cryptographic Hash Functions
  8. Unkeyed SHA3-512
  9. Keyed Blake3-512
  10. Keyed MD6-512
  11. Keyed Skein-512 using an internal state size of 1024 Begin Secondary Assymetric Complete Public Keysets
  12. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  13. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  14. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  15. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  16. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  17. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  18. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  19. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  20. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  21. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  22. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  23. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  24. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  25. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  26. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  27. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  28. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  29. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  30. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  31. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  32. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  33. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  34. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  35. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  36. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  37. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  38. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  39. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  40. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  41. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  42. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  43. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  44. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  45. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  46. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  47. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  48. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  49. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  50. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  51. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  52. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message)))))
  53. NTRU-32768(RSA-32768(Quadruple-NIST-P521(Quadruple-NIST-B571(message))))) End Complete Assymetric Public Keysets Begin Keyset Digital Signature Sets
  54. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  55. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  56. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  57. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  58. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  59. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  60. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  61. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  62. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  63. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  64. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  65. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  66. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  67. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  68. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  69. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  70. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  71. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  72. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  73. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  74. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  75. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  76. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  77. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  78. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  79. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  80. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  81. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  82. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  83. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  84. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  85. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  86. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  87. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  88. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  89. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  90. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  91. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  92. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  93. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  94. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024
  95. NTRUsign-32768--RSAsign-32768-ECDSA-32768---Unkeyed SHA3-512--Keyed Blake3-512--Keyed MD6-512--Keyed Skien-512 with an internal state size of 1024 End Digital Signature sets Begin Accepted Symmetric Ciphers AES-256=True, Anubis-320=True, Kalyna-512=True, Threefish-1024=True, Camellia-256=True/False, CAST6=True/False, RC6-256=True/False, Kuznyechik-256=True/False, Twofish-256=True/False End Accepted Symmetric Ciphers Begin Keyserver Attestation:
  96. KeyserverURL--TLS1.3/EncryptedClientHelloCertificate--DNSSEC key--DANE key--DKIM key--Certificate Authority Autheorization Certificate--3rd Party Keyserver endorsements--webmaster URL-Corporate Entity Identifier--Crystals-Dilithium5 Digital Signature--FalconSign-1024 Digital Signature--SPINCS+-Shake256 Digital Signature--SecureDrop Quadruple-Kyber-1024 Public key--SecureDrop Quadruple Dilithium5 Digital Signature--SecureDrop Identity File URL--SecureDrop URL
  97. KeyserverURL--TLS1.3/EncryptedClientHelloCertificate--DNSSEC key--DANE key--DKIM key--Certificate Authority Autheorization Certificate--3rd Party Keyserver endorsements--webmaster URL-Corporate Entity Identifier--Crystals-Dilithium5 Digital Signature--FalconSign-1024 Digital Signature--SPINCS+-Shake256 Digital Signature--SecureDrop Quadruple-Kyber-1024 Public key--SecureDrop Quadruple Dilithium5 Digital Signature--SecureDrop Identity File URL--SecureDrop URL
  98. Repeat for each keyserver this Dark Internet Identity File passes though once each and every keyserver attestation is computed to be legitimate. No more 32768 keyserver attestations unless the identity file specifices a smaller number End keyserver Attestation End Universal Dark Internet Identity Information File """ Notes The identity headers assocated with the phone numbers and email are both to confirm and to deny these identities. If the identity is not included than it shall be treated as the right to remain silent. Additional Phone numbers and emails are allowed, but the phone numbers and emails listed in the template must be parsable in order for the implementation to be compliant A complaint implementation shall be referred to as compliant. Implementations available as free software under the open source definition shall be referred to as gold compliant and stable releases accompanied by a sworn affadavit that there are no known backdoors, intentional vurnrability, no deliberate zero days and that the programmers are not under a gag order, investigation or otherwise forced to implement a backdoor from the time of the previous release announcement to the current stable release announcement shall be referred to as silver compliant. This end to end encryption negotiation protocol is not meant to bave any protocol of its own, rather it is meant as a generic and universal protocol for privacy, security and anonmity over any other protocol where these features are required. When encrypting email, the plaintext is encrypted in the MIME format used by the email service and the subject header and any attachments is encrypted using a symmetric key contained somewhere in the ciphertext with the plaintext of email with the format [symmetriccipher-subject header/attachment-filename.extension] depending on where what is being encrypted. Only the sender's and recipiants supported keys may be used. When sending over instant messengers, the same protocol is used except that the subject-header may be replaced with groupchat-header when neccessary. ** Compression may be used with Dark Internet Identity Information e2ee encryption. LZMA2, Zlib, and ZSTD with LZ4 support are required on any of their standard presets. Roshal Archives compliant with the latest stable release of winrar are allowed so long as a GNU Affero GPL v3 or later implementation exists which supports all of the standard Winrar Roshal Archive Presets. The source available proprietary UnRar must not be required for extracting the compressed message, nor may Rar or Winrar be required to pack compressed messages. Google Brotli, Deflate, LZ77, LZ78, Apple LZFSE and LZHAM are optional but recommended.
cheeseblubber commented 10 months ago

Hi @RealJosephKnapp Thanks for the detailed ticket. We've considered end to end encryption in the past. The main reason we haven't built it yet is because a core part of our value proposition is the SEO friendliness. Moving the end to end encryption didn't seem to make sense since it felt like targeting a different audience

We'd be happy to prioritize this if there are enough users interested in this use case. Can you help us understand how you would like to use Linen and how it would be different than tools like Signal?

Also I'd love to learn about what you enjoy about Linen over other chat applications. It would help us when conveying our core value proposition.