Here is the content of my recent stack overflow post discussing what I intend to begin working on, immediately:
Formally verified email or communication?
This question is contextualized by having an account hacked which is prompting me to move towards something I’ve long wanted to anyway.
I would like to consider the simplest possible formally verified communication protocol.
Is there a common approach for designing one?
For example: is it required to model all objects of the system, first?
For example, there are:
- people (who write the messages)
- the messages they send
- transportation avenues (like the internet)
- the concept of a message arriving, being received/saved/stored, being read, being replied to, etc
- message “states” like readable / unreadable (if you don’t want someone reading it while it travels)
- locations (addresses where the messages go)
My approach would be to use David Spivak’s Categorical Query Language because it suggests that category theory can be used as a “universal modeling language”. Perhaps I should first create an Olog, a category-theory ontology, as a first step to trying to formally prove the security of the communication protocol, for example, that there is no possible combination of states that would lead to an unexpected outcome, like a person losing the ability verify their identity to read their private messages, or send them from their identity, for example.
How should I do this?
I will attempt my approach above unless someone can guide me more.
The point is a way to send messages, formally proven to never allowed someone to hack your account or steal your identity, or spy on or intercept your messages. For example, you could have a kill-switch where even if somehow your account goes rogue, you can always shut it down - and that’s formally proven that the kill switch could never be deactivated (perhaps).
——
Would anyone like to discuss approaches with me, in the comments?
I will begin by learning type theory at last - a language to express whatever system I end up working in. Presumably Coq, since it is built on the calculus of inductive types. Or StandardML?
Thank you.