mirror of
https://github.com/cypht-org/cypht.git
synced 2026-04-25 04:56:03 +03:00
[GH-ISSUE #185] Ms Paranoia tries to ensure Cypht server trustworthiness #153
Labels
No labels
2fa
I18N
PGP
Security
Security
account
advanced_search
advanced_search
announcement
api_login
authentication
awaiting feedback
blocker
bug
bug
bug
calendar
config
contacts
core
core
devops
docker
docs
duplicate
dynamic_login
enhancement
epic
feature
feeds
framework
github
github
gmail_contacts
good first issue
help wanted
history
history
imap
imap_folders
inline_message
installation
keyboard_shortcuts
keyboard_shortcuts
ldap_contacts
mobile
need-ssh-access
new module set
nux
pop3
profiles
pull-request
question
refactor
release
research
saved_searches
smtp
strategic
tags
tests
themes
website
wordpress
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/cypht#153
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @dumblob on GitHub (Apr 7, 2017).
Original GitHub issue: https://github.com/cypht-org/cypht/issues/185
Originally assigned to: @jasonmunro on GitHub.
Currently if you deploy Cypht on anything which is not completely virtualized by you (e.g. through QEMU) or a completely open-source HW of yours, you're risking, that e.g. some cryptography stuff will be compromised (it can be in HW like CPUs, AES chips, network controllers, etc. or in SW like virtual machine, OS kernel, crypto libraries, PHP, altered Cypht code by a third party like the admin on the server, etc.). I believe, we can though improve the trustworthiness (correctness) of Cypht operations in all these cases.
I've thought about this already many times quite thoroughly, but always did come up with just half-way solutions. The following one should work though acceptably well.
IS, a Cypht ServerCS, and the client browserCB. The nodes can communicate only using the following paths:IS<->CSandCS<->CB(note,IS<->CBis not possible). We need to ensure, thatCS, acting in fact as a "better" relay, can't under any circumstances do anything else thanCBwants. We also do not trustCSat all and thus want theCBapprove each logical message (a logical message which might be a bounded set of messages realizing one operation initiated by the user) before sending it toIS. We also wantCBto check for trustworthiness/correctness of each logical message received fromCSin case its construction involved any newly acquired information fromIS(e.g. a list of emails in INBOX received every 5 minutes fromISand "relayed" byCStoCB).This requires a "completely" trustworthy piece of Javascript on
CB. This JS code shall be really minimal (few hundreds of lines at maximum), available from a different source than from the deployed Cypht and will have a very low frequency of updates (to make it viable to manually check each release of it) with each release being cryptographically signed and if possible audited.Note, in the future, once the Fully homomorphic encryption gets usable (mainly in terms of performance), we can even completely guarantee the computation performed by the Cypht server wasn't tampered.
This is still an idea and I'll think about it more and contact few persons from universities about this. I just wanted to make a public note about it. Feel free to comment.
@jasonmunro commented on GitHub (Sep 25, 2018):
While not directly related to what you are proposing here, we did recently implement sub-resource integrity for the site.js and site.css includes, which I think tangentially related :)
https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
@dumblob commented on GitHub (Sep 25, 2018):
Great news, thanks for that! I alone didn't notice subresource integrity was implemented.
@jasonmunro commented on GitHub (Sep 25, 2018):
For now I am generating the hash values during the config_gen.php process for the site.php and site.css files, but I need to build the right values for the other potential includes (theme css, HTML compose, encryption lib, etc), but those are static extra includes so I should be able to hard code those. I plan on doing so before the next release.