Mikael Sand
2018-04-17 16:31:32 UTC
Had sent this only personally by mistake, sending to the list as
intended, before sending the reply to the reply that follows in another
mail.
//M
-------- Forwarded Message --------
Subject: Re: [MG] Democratizing Blockchain Governance in Versioning
Date: Sun, 15 Apr 2018 21:09:44 +0300
need to trust the government, software, hardware and network at all. I
certainly don't trust the cpu fabs nor the instruction sets (public and
otherwise) available in most modern cpus, likewise for almost all
compilers and operating system kernels, seL4 is getting there, but until
we can fabricate our own hardware, or validate hardware produced by
others, there is very little reason to expect anything but several
serious security faults in almost all networked electronics. I'm not
even sure I trust set theory and first-order/predicate logic, it might
contain a contradiction still. I certainly prefer homotopy type theory
and intuitionistic/constructive logic or some other framework without
the law of excluded middle, I very much prefer my functions computable
and sound.
You can even leak information over the powerlines by controlling the
frequencies and loads of otherwise inactive processors, and have
hardware level backdoors by doping the silicon slightly differently, on
an otherwise perfectly fine looking circuit unless you very carefully
look at it with a scanning tunneling microscope.
On top of this, we have our old friend entropy making our probabilistic
computers degrade over time, noisy communication channels, cosmic rays
causing bit flips, distributed denial of service attacks, governments
shutting down telecommunications infrastructure etc. If we're trying
make systems which are to work in catastrophe ridden situations and
dictatorships as well, then our systems cannot have single points of
failure, and need some degree of
https://en.wikipedia.org/wiki/Byzantine_fault_tolerance
And, if you think further about the problem of how to verify if even
just your own vote has been distributed, stored and counted correctly,
you'll eventually end up in the space of consensus algorithms and
byzantine failures.
MongoDB on AWS, which is what proxyfor.me is built on). That gets you
the redundancy to deal with outages, DOS attacks, hacks, etc., which
IMHO is 99% of what you need distributed systems for. Note that
"because I don't trust anyone" is not on that list...
Well, having a centralized service being capable of scaling out and
handling DDOS is one thing. Having it truly p2p and decentralized
without any single points of failure is another, further, having it work
when any kind of network is available is yet another (dat/beakerbrowser
might be one of the easiest ways to share files cross-platform on a lan
to this day).
Not trusting anyone seems like a fools game, but at least I don't trust
everyone, almost always someone can perceive incentives to exploit for
economic reasons or otherwise. And I certainly do not trust any
self-policing system or government where the citizens cannot audit both
the people who audit the executive branch and the ones who authorize
secret government decisions, wiretaps, dragnets, and other violations of
privacy; without public oversight whether the decisions are in any way
just or called for, self-censoring and classifying any proof of their
own incompetence as secret. Any deletions of evidence from the public
record needs to leave an immutable trail. Or preferably not be possible
at all, neither intentionally nor otherwise.
The threat model for something running inside a single commercial entity
or under the control of an opaque self-policing system, is quite
different from an open source p2p consensus algorithm. The Internet was
built to be decentralized and manage nuclear war, although currently,
centralized commercial entities have taken significant legal ownership
of users data and managed to achieve global network effects by
convenience, addiction, and a few other tricks, but at least I certainly
hope the p2p web will keep growing in traction and remove single points
of control/failure/censorship and am willing to work and code for it.
It's not really good enough yet, in terms of user experience for the
masses, but certainly getting closer by the day.
not to change/delete the data, but you *also* don't trust your fellow
citizen to detect and report this if it happens to them?
Well, anyone running a working consensus algorithm will notice
misbehaving nodes and other byzantine failures, so, I do expect people
to detect if it happens, the system very much depends on it. Are you
suggesting people do it manually by hand when they for whatever reason
feel the urge to check if their data has been manipulated? And using
what process? Opening the website and checking their profile? How does
this say anything about how that data has been counted or how it relates
to other peoples data?
indeed the entire banking system with all it's checks and balances) I
submit that no amount of fancy technology is going to cure what ails
you. And if you do, then the technology we use can be vastly
simplified, improving service levels, reliability, and the ability to
detect and deal with attacks on the system. Indeed one of the biggest
problems with cryptocurrencies is their very opacity: When someone
develops a way to game the system it probably won't be discovered
until the damage is so great that the entire economy might collapse as
a result.
At least, each electronic voting system that has been built by/for the
finnish government has been bug ridden and full of insane security
problems, while costing hundreds of millions of euros. I'm not sure what
technological simplifications you're suggesting to achieve reliable and
secure software engineering by/for governments. Unless it's based on
some correct-by-construction software design or otherwise proof-based on
some sound type theory, I'm not sure it'll be sufficient, and that is
certainly not a simplification, it easily makes development time 10x or
more (I have a fair share of experience from trying myself, while I was
studying for my computer science masters degree).
I don't see why we should build systems on principles with a proven
track record of serious security flaws. Why require trusting the
executive branch? As long as the necessary evidence exists in the audit
logs I don't see how trust even comes into the picture (except for the
gathering of evidence and its integrity), essentially the laws and
courts will decide if the executive branch has worked within the current
legal limits or not, the evidence and verdicts would be open to public
analysis and questioning. Anyway, byzantine failures include attacks by
malicious actors and general software/hardware/network issues, much more
than trusting the executive branch (for which I currently see no
relevance) behind the software. Besides, e.g. Duniter fundamentally
requires a web-of-trust, and essentially makes the whole network into
the executive/banking branch, in this case there is no need to limit it.
Perhaps I misunderstand what you mean with me not trusting the executive
branch, what exactly is it that it should be trusted with?
I presume you didn't look deeper into RMT, or I might not understand
what you mean with trusting the entire banking system. I sure trust it
to mostly behave according to the current laws governing money and
accounting, as in the sources and sinks of debt, interest rates and
fractional reserve currency; and the mathematical consequences of those.
Perhaps you mean if I consider it to have a good set of rules acting as
checks and balances, which I do not, the currently allowed state
changes, checks and balances guarantee several pathologies and
artificially induce unnecessary boom and bust cycles, with the central
banks essentially acting like black-holes in the economy. (for some
context, I've worked with making interactive visualizations of various
risk models and debt of banks, national banks, central banks, nations,
insurance and large corporations; for the finnish national bank,
european central bank, and some insurance companies...)
The central banks together with the closest financial institutes in the
economic network/debt graph receive an unfair advantage, by taxing the
added value from the rest of the economy, in the form of fractional
reserve interest, merely in exchange for doing the accounting of the
fiat debt money (adding no real value to the economy, only an ever
increasing cost, and, replaceable by certain p2p consensus algorithms).
But, this is completely besides the point that storing the data of an
e-democracy platform is completely possible to do efficiently with p2p
distributed append only directed acyclic graphs and consensus
algorithms. Solving any potential trust issues (reducing it to
public-private key cryptography and the factorization/discrete log
problem for now), scaling, latency, validity, integrity issues, single
points of failure etc.
Do you have any technical objections to this? Or does this boil down to
you wanting the executive branch to be trusted to run a software in a
centralized fashion? For what reasons/benefits? To be "vastly
simplified, improving service levels, reliability, and the ability to
detect and deal with attacks on the system"? What becomes simpler for
who? What service level/reliability increases? How do external users
detect a virus or backdoor in the actual running system? How does anyone
verify what source code is used? That the compiler and virtual machines
are working correctly? OS? Spectre variant 2 patches applied? What else
is running on the same hardware and network or has physical access to
it? Other side-channel attacks? How would the centralized admins
themselves even do these things? It seems to me it opens up several
classes of vulnerabilities. I'm not sure what your threat model and
security analysis method is here. But I don't see anything of substance
to back up these claimed benefits.
intended, before sending the reply to the reply that follows in another
mail.
//M
-------- Forwarded Message --------
Subject: Re: [MG] Democratizing Blockchain Governance in Versioning
Date: Sun, 15 Apr 2018 21:09:44 +0300
Apologies for the delay in getting back to you: I only had very
limited Internet access for the past couple of weeks (camping).
to be externally monitored and verified in a both centralized and
decentralized systems.
Again, if you don't trust the government not to do this, how can you
trust them to do anything else?
And as a practical matter this also isn't a concern anyway IMHO as
long as you use an open voting system where anyone can go in and
verify their votes (surely someone will notice if their vote gets
deleted/changed).
Well, it's not really about trusting them or not, but about removing thelimited Internet access for the past couple of weeks (camping).
1) Since you have to trust the executive branch to actually
*implement* any of the decisions made using the system, why is it so
much to ask to trust it to run the decisionmaking system itself?
One problem I can think of is the deletion / censoring of data, this needs*implement* any of the decisions made using the system, why is it so
much to ask to trust it to run the decisionmaking system itself?
to be externally monitored and verified in a both centralized and
decentralized systems.
trust them to do anything else?
And as a practical matter this also isn't a concern anyway IMHO as
long as you use an open voting system where anyone can go in and
verify their votes (surely someone will notice if their vote gets
deleted/changed).
need to trust the government, software, hardware and network at all. I
certainly don't trust the cpu fabs nor the instruction sets (public and
otherwise) available in most modern cpus, likewise for almost all
compilers and operating system kernels, seL4 is getting there, but until
we can fabricate our own hardware, or validate hardware produced by
others, there is very little reason to expect anything but several
serious security faults in almost all networked electronics. I'm not
even sure I trust set theory and first-order/predicate logic, it might
contain a contradiction still. I certainly prefer homotopy type theory
and intuitionistic/constructive logic or some other framework without
the law of excluded middle, I very much prefer my functions computable
and sound.
You can even leak information over the powerlines by controlling the
frequencies and loads of otherwise inactive processors, and have
hardware level backdoors by doping the silicon slightly differently, on
an otherwise perfectly fine looking circuit unless you very carefully
look at it with a scanning tunneling microscope.
On top of this, we have our old friend entropy making our probabilistic
computers degrade over time, noisy communication channels, cosmic rays
causing bit flips, distributed denial of service attacks, governments
shutting down telecommunications infrastructure etc. If we're trying
make systems which are to work in catastrophe ridden situations and
dictatorships as well, then our systems cannot have single points of
failure, and need some degree of
https://en.wikipedia.org/wiki/Byzantine_fault_tolerance
And, if you think further about the problem of how to verify if even
just your own vote has been distributed, stored and counted correctly,
you'll eventually end up in the space of consensus algorithms and
byzantine failures.
Alternatively, if simply distributed databases and a decentralized web is
wanted, one can use https://datproject.org/ and https://www.scuttlebutt.nz/
as a gossip protocol. No blockchain needed. Can try it today with the
https://beakerbrowser.com/
Or use any database that supports sharding on cloud systems (e.g.,wanted, one can use https://datproject.org/ and https://www.scuttlebutt.nz/
as a gossip protocol. No blockchain needed. Can try it today with the
https://beakerbrowser.com/
MongoDB on AWS, which is what proxyfor.me is built on). That gets you
the redundancy to deal with outages, DOS attacks, hacks, etc., which
IMHO is 99% of what you need distributed systems for. Note that
"because I don't trust anyone" is not on that list...
handling DDOS is one thing. Having it truly p2p and decentralized
without any single points of failure is another, further, having it work
when any kind of network is available is yet another (dat/beakerbrowser
might be one of the easiest ways to share files cross-platform on a lan
to this day).
Not trusting anyone seems like a fools game, but at least I don't trust
everyone, almost always someone can perceive incentives to exploit for
economic reasons or otherwise. And I certainly do not trust any
self-policing system or government where the citizens cannot audit both
the people who audit the executive branch and the ones who authorize
secret government decisions, wiretaps, dragnets, and other violations of
privacy; without public oversight whether the decisions are in any way
just or called for, self-censoring and classifying any proof of their
own incompetence as secret. Any deletions of evidence from the public
record needs to leave an immutable trail. Or preferably not be possible
at all, neither intentionally nor otherwise.
The threat model for something running inside a single commercial entity
or under the control of an opaque self-policing system, is quite
different from an open source p2p consensus algorithm. The Internet was
built to be decentralized and manage nuclear war, although currently,
centralized commercial entities have taken significant legal ownership
of users data and managed to achieve global network effects by
convenience, addiction, and a few other tricks, but at least I certainly
hope the p2p web will keep growing in traction and remove single points
of control/failure/censorship and am willing to work and code for it.
It's not really good enough yet, in terms of user experience for the
masses, but certainly getting closer by the day.
I hope the previous paragraph makes it clear that we need to monitor that
all data remains immutable, not only our own.
Sorry, I don't follow: Not only do you not trust the executive branchall data remains immutable, not only our own.
not to change/delete the data, but you *also* don't trust your fellow
citizen to detect and report this if it happens to them?
misbehaving nodes and other byzantine failures, so, I do expect people
to detect if it happens, the system very much depends on it. Are you
suggesting people do it manually by hand when they for whatever reason
feel the urge to check if their data has been manipulated? And using
what process? Opening the website and checking their profile? How does
this say anything about how that data has been counted or how it relates
to other peoples data?
Fiat currency or quite similar systems can for sure be built on distributed
immutable log like systems as long as the participants agree on the rules.
You can do it without any proof-of-work/stake/space/elapsed-time, if a web
of trust exists among the actors taking part of the economy.
E.g. https://duniter.org/en/ implements the Universal Dividend, as specified
by the theory called Relative Money Theory.
https://duniter.org/en/theoretical/
http://vit.free.fr/TRM/en_US/
Again, I submit that if you don't trust the executive branch (andimmutable log like systems as long as the participants agree on the rules.
You can do it without any proof-of-work/stake/space/elapsed-time, if a web
of trust exists among the actors taking part of the economy.
E.g. https://duniter.org/en/ implements the Universal Dividend, as specified
by the theory called Relative Money Theory.
https://duniter.org/en/theoretical/
http://vit.free.fr/TRM/en_US/
indeed the entire banking system with all it's checks and balances) I
submit that no amount of fancy technology is going to cure what ails
you. And if you do, then the technology we use can be vastly
simplified, improving service levels, reliability, and the ability to
detect and deal with attacks on the system. Indeed one of the biggest
problems with cryptocurrencies is their very opacity: When someone
develops a way to game the system it probably won't be discovered
until the damage is so great that the entire economy might collapse as
a result.
finnish government has been bug ridden and full of insane security
problems, while costing hundreds of millions of euros. I'm not sure what
technological simplifications you're suggesting to achieve reliable and
secure software engineering by/for governments. Unless it's based on
some correct-by-construction software design or otherwise proof-based on
some sound type theory, I'm not sure it'll be sufficient, and that is
certainly not a simplification, it easily makes development time 10x or
more (I have a fair share of experience from trying myself, while I was
studying for my computer science masters degree).
I don't see why we should build systems on principles with a proven
track record of serious security flaws. Why require trusting the
executive branch? As long as the necessary evidence exists in the audit
logs I don't see how trust even comes into the picture (except for the
gathering of evidence and its integrity), essentially the laws and
courts will decide if the executive branch has worked within the current
legal limits or not, the evidence and verdicts would be open to public
analysis and questioning. Anyway, byzantine failures include attacks by
malicious actors and general software/hardware/network issues, much more
than trusting the executive branch (for which I currently see no
relevance) behind the software. Besides, e.g. Duniter fundamentally
requires a web-of-trust, and essentially makes the whole network into
the executive/banking branch, in this case there is no need to limit it.
Perhaps I misunderstand what you mean with me not trusting the executive
branch, what exactly is it that it should be trusted with?
I presume you didn't look deeper into RMT, or I might not understand
what you mean with trusting the entire banking system. I sure trust it
to mostly behave according to the current laws governing money and
accounting, as in the sources and sinks of debt, interest rates and
fractional reserve currency; and the mathematical consequences of those.
Perhaps you mean if I consider it to have a good set of rules acting as
checks and balances, which I do not, the currently allowed state
changes, checks and balances guarantee several pathologies and
artificially induce unnecessary boom and bust cycles, with the central
banks essentially acting like black-holes in the economy. (for some
context, I've worked with making interactive visualizations of various
risk models and debt of banks, national banks, central banks, nations,
insurance and large corporations; for the finnish national bank,
european central bank, and some insurance companies...)
The central banks together with the closest financial institutes in the
economic network/debt graph receive an unfair advantage, by taxing the
added value from the rest of the economy, in the form of fractional
reserve interest, merely in exchange for doing the accounting of the
fiat debt money (adding no real value to the economy, only an ever
increasing cost, and, replaceable by certain p2p consensus algorithms).
But, this is completely besides the point that storing the data of an
e-democracy platform is completely possible to do efficiently with p2p
distributed append only directed acyclic graphs and consensus
algorithms. Solving any potential trust issues (reducing it to
public-private key cryptography and the factorization/discrete log
problem for now), scaling, latency, validity, integrity issues, single
points of failure etc.
Do you have any technical objections to this? Or does this boil down to
you wanting the executive branch to be trusted to run a software in a
centralized fashion? For what reasons/benefits? To be "vastly
simplified, improving service levels, reliability, and the ability to
detect and deal with attacks on the system"? What becomes simpler for
who? What service level/reliability increases? How do external users
detect a virus or backdoor in the actual running system? How does anyone
verify what source code is used? That the compiler and virtual machines
are working correctly? OS? Spectre variant 2 patches applied? What else
is running on the same hardware and network or has physical access to
it? Other side-channel attacks? How would the centralized admins
themselves even do these things? It seems to me it opens up several
classes of vulnerabilities. I'm not sure what your threat model and
security analysis method is here. But I don't see anything of substance
to back up these claimed benefits.
Regards,
Scott
_______________________________________________
Start : a mailing list of the Metagovernment project
http://www.metagovernment.org/
Manage subscription: http://metagovernment.org/mailman/listinfo/start_metagovernment.org
Scott
_______________________________________________
Start : a mailing list of the Metagovernment project
http://www.metagovernment.org/
Manage subscription: http://metagovernment.org/mailman/listinfo/start_metagovernment.org