-
Notifications
You must be signed in to change notification settings - Fork 1
/
compliance.tex
3774 lines (3499 loc) · 195 KB
/
compliance.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% !Tex spellcheck = en_GB
\documentclass[runningheads,10pt]{llncs}
% Config
\usepackage{amsmath}
\numberwithin{equation}{section}
% https://tex.stackexchange.com/questions/42619/x-mark-to-match-checkmark
\usepackage{pifont}% https://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\input{./config/packages.tex}
\input{./config/macros.tex}
% Add DRAFT watermark to the document
\usepackage[printwatermark]{xwatermark}
\newwatermark[allpages,color=gray!25,angle=45,scale=3.5,xpos=0,ypos=0]{DRAFT}
\title{{\textsf{Pistis}}: Privacy Preserving Compliant Transaction System}
\author{Antoine Rondelet \and Michal Zajac}
\institute{Clearmatics, UK \\
\email{[email protected]}, \email{[email protected]}}
\date{\today}
%\setcounter{tocdepth}{2}
\begin{document}
\maketitle
\begin{abstract}
Recent surge in adoption of cryptoassets, by both retail and institutional
investors, has lead to increased scrutiny from law makers and regulators.
This increasing development and use of privacy-preserving technologies on
blockchain systems raises a ``privacy vs compliance'' dilemma between
designing systems providing strong privacy guarantees -- necessary to conduct
any type of non-trivial business activity and fundamental to preserve
individuals' financial freedom -- and the need for transparency to ensure
regulatory compliance.
In this paper we introduce \emph{Privacy Preserving Compliant Transaction
System} (PPCTS) which assure that blockchain-traded assets can be traded
privately, yet, in compliance with their regulatory frameworks. To that end we
identify key actors that may take part in regulating such assets, list the key
properties of a PPCTS, define a UC-model ideal functionality of such systems,
and propose protocols that implement it.
\keywords{zero-knowledge proofs, regulatory compliance, digital cash, Ethereum,
Zeth, privacy}
\vspace*{1em}
\textbf{Disclaimer:} The content of this work does not constitute legal advise.
\end{abstract}
\section{Introduction}\label{sec:intro}
The recent global developments in payment systems and financial technologies
coupled with the emergence and increased adoption of blockchain and
decentralised protocols present a wide set of opportunities as well as numerous
challenges.
Market structures, trading technologies and financial instruments have steadily
evolved over the centuries, forcing regulators across jurisdictions to
continuously adapt existing frameworks to maintain high confidence in the
financial system, protect its stability as well as its consumers.
\michals{4.10}{Refer to that later -- regulators need to keep financial system stable and protect its customers, hence ``regulatability'' is a must and our solution allows it.}
In the United Kingdom, for instance, the introduction of the Banking Act
(1979)~\cite{1979-uk-dev} -- in response to economic turbulence (1973--1975) due
to loosely controlled credit
allocation~\cite{Chapter10RegulatoryandOtherChangesintheUKBankingMarket} -- was
quickly followed by subsequent regulations, some of which aiming to detect and
prevent procedures by which money acquired from criminal activity could be
dissimulated and appear as being lawfully acquired (i.e.~so-called ``money
laundering''~\cite{si-1993-1933,2001-c-24,si-2003-3075}\footnote{See~\cite{ML-law}
for an overview of the evolution of AML regulations in the UK.}). More
recently, and in light of the weaknesses revealed by the 2008--2009 financial
crisis, the UK regulatory framework has been reshaped, with, notably, the
dissolution of the Financial Services Authority (FSA) in
2013\footnote{Initially founded in 2001} and the creation of the Financial
Conduct Authority (FCA), Financial Policy Committee (FPC) and the Prudential
Regulation Authority (PRA). As of today, and as illustrated in~\cite[Chapter
1]{journey-to-fca}, the Bank of England (BoE) administers monetary policy,
influencing interest rates, inflation and employment, and also plays a key role
-- via its subsidiary, the PRA and the FPC -- in the regulation of financial
markets, along with the FCA -- supervised by HM Treasury.
While sound local financial regulations are key to keep domestic markets robust,
stable and trusted, criminal activities are frequently carried out on a large
scale. Local actions and systems to \emph{detect and report} suspicious activity to
law enforcement -- via Suspicious Activity Reports (SARs)\footnote{SARs are processed
by the National Crime Agency (NCA) in the UK\cite{nca-sars,intro-to-sars} and by
Financial Crimes Enforcement Network (FinCEN) in the US} -- are often criticised as
being very costly and offering few results~\cite{ML-law}. \michals{4.10}{Another
thing to refer -- in our system policy assigners define what is allowed and what's
not. This allows for some degree of automatization of fraud / criminal activity
prevention -- we allow application to have much stricter rules than they can be
defined just for a casual wire transfer. More precisely, we allow users to remain
anonymous, transfer funds quickly and privately, but on the other hand, policy
assigners assign compliance policies that are at least as strict as compliance
policies for classical non-anonymized fund transfer options.}
Moreover, the increasing development of fast cross-border communication technologies
and the patchwork of heterogeneous jurisdictions significantly increase the
difficulty to bring activities related to money laundering and financing terrorism
down. In an attempt to mitigate such issues, an intergovernmental organization, the
Financial Action Task Force (FATF), was created in 1989. This organization has
developed recommendations and standards in order to foster coordinated global
response to prevent organised crime, corruption and terrorism~\cite{fatf-about}.
\michals{4.10}{General comment -- when we provide some background on how financial
markets are regulated / oversight, we should also state how our functionalities /
PPCTS follows that regulatory approach. That is, we should not only give the reader
a general background, but a background that is directly relevant to our solution
and show how it is relevant.}
Nevertheless, despite the establishment of such organizations, along with the
signature of various ``Memorandums of Understanding''
(MoUs) e.g.~\cite{mou-fsa-sec,mou-fsa-cftc} (see also
e.g.~\cite{fca-sec-coop,fca-cftc-coop}) -- to ease
cross-jurisdiction investigations -- gathering evidence for investigating
illegal cross-border conduct remains a major challenge, particularly when
blocking or secrecy laws are involved, which may be unwelcomed by governmental
authorities in other countries~\cite{role-sec}.
\subsection{Regulating cryptoassets}
Recent surge in adoption of cryptoassets (by both retail and institutional
investors) has led to increased scrutiny from law makers and regulators.
Cryptocurrency projects like Diem--formerly known as Libra--present
``unprecedented taxation challenges''~\cite{Law2020Facebook}, and the increasing
development and use of privacy-preserving technologies on blockchain systems
(e.g.~\cite{DBLP:journals/corr/abs-1904-00905,EPRINT:BAZB19,aztec-protocol,zcash-protocol})
raises a ``privacy vs compliance'' dilemma between designing systems providing
strong privacy guarantees (necessary to conduct any type of non-trivial
business activity and fundamental to preserve individuals' financial freedom
which is at the core of democracy), and the need for transparency to ensure
regulatory compliance.
Despite the inherent transparency of various blockchains (which is leveraged by
several companies and projects e.g.~\cite{elliptic-company,chainanalysis-company,bitcoin-abuse} to understand payment flows
within the systems) reports suggest that such systems have ``offered exceptional
scalability to ransomware operations''~\cite{tails-ransoms} and are used for
illicit activities online~\cite{analysis-darknet}.
%
Interestingly, empirical evidence suggest that privacy-enabling cryptocurrencies
are only used in minority to carry out fraudulent activity on the
darknet~\cite{RR-4418-ECC}. However, it is important to bear in mind that this
landscape is evolving astoundingly fast and what holds true today may not remain
true tomorrow. In an attempt to conciliate the use of privacy enabling
cryptocurrencies with regulatory compliance, some suggested to implement
risk-based Anti-Money Laundering (AML), Countering Financing of Terrorism (CFT),
and Know-Your-Customers (KYC) processes on Virtual Asset Services Providers
(VASPs)~\cite{perkinscoie_report,fatf-vasp}. These approaches, articulated
around the thesis that VASPs (e.g.~cryptocurrency exchanges) act as necessary
gateways criminals need to go through to ``wash and convert'' unlawfully
acquired cryptocurrencies to fiat monies (like GBP, EUR or USD) may not hold true indefinitely.
The dramatic expansion of the cryptocurrencies user base\footnote{As of Q3
2020,~\cite{cryptoasset-benchmark} estimated a total of up to 101 million
unique users across 191 million accounts opened at service providers, while
two years prior, a similar study estimated the number of identity-verified
cryptoasset users at about 35 million globally.} leading to broader
acceptance of cryptocurrencies as means of payment (see
also~\cite{bloomberg-zug-crypto-tax,bbc-btc-legal-tender}) represent an
impediment for regulators who try to regulate the ever-mutating blockchain
industry without altering financial innovation\footnote{E.g.~bills like the
Stable Act~\cite{stable-act-draft} which intend to regulate stablecoin
issuers (bank charters and reserves requirements) are seen as ``innovation
killers'' by opponents.}. Even if having ``legal tender'' in almost no
jurisdictions (except El Salvador, at the time of
writing~\cite{bbc-btc-legal-tender}), cryptoassets with large user bases can
lead to a large number of (truly) peer-to-peer transfers which associated
funds may never be redeemed and converted to fiat money, hence failing to
flow through the checks implemented by centralized services such as
exchanges.
Furthermore, various KYC checks could also be bypassed by carrying out
off-chain transactions of cryptoassets via the exchange of ``hardware
sticks'' bearer instruments (e.g.~Zeth Bearer Instruments~\cite{zbi-article}) or, by using blockchain transaction
relays~\cite{zeth-relay} as a way to escape on-chain surveillance tools for
instance. Finally, the patchwork of heterogeneous cryptocurrency regulations
around the world can still be leveraged to escape strict regulations by
turning to VASPs located in advantageous jurisdictions, or by designing
instruments that may not fall strictly under a regulator's
jurisdiction\footnote{In the US for instance, the Security and Exchange
Commision's (SEC) jurisdiction is over securities, while the Commodity
Futures Trading Commission (CFTC) has jurisdiction over derivatives such as
futures and swaps (further to the Dodd-Frank Act~\cite{cftc-dodd-frank}).
Such separation of concern between the SEC and the CFTC poses a challenge
with regard to regulating cryptoassets as it may be unclear which assets
(e.g.~stablecoins, synthetic assets, blockchain-based derivatives, ``utility
tokens'', NFTs etc.) should be treated as securities or not (see ``Howey Test''~\cite{sec-howey})}.
\subsection{Parties involved in regulatory compliance on blockchain systems}
Before discussing solutions and designs for the compliance verification, it is
crucial to answer the following question: \emph{Who are the parties involved in
compliance verification process?} We list below the set of actors that may be
obliged to participate in such process. Importantly, the nature of
the transacting parties -- highly regulated entities like banks, retail traders etc. --
may require different compliance checks involving potentially different
regulators (see~\cref{sec:intro}).
\subsubsection{Regulatory bodies.}
The role of such regulatory bodies is to act as standard-setters~\cite{role-sec}, in
order to define the set of recommendations and rules that financial actors need to
follow in a given (set of) jurisdiction(s). This established set of standards is then
used as a basis for further activities, ranging from \emph{supervision} to
\emph{enforcement} to \emph{authorisation} to only name a few.\footnote{See
e.g.~\url{https://www.fca.org.uk/publications/corporate-documents/our-approach}}
\subsubsection{(Financial) Services Providers.}
\paragraph{Centralized VASPs.} Despite a lack of consensus around
cryptocurrency regulations\footnote{See
e.g.~\url{https://complyadvantage.com/blog/cryptocurrency-regulations-around-world/}
for more details}, cryptocurrency exchanges allowing consumers to buy and sell
cryptoassets tend to implement standard processes that consist in identifying
and verifying users, maintaining records, and complying with AML/CFT reporting
obligations. Such obligations can vary from one jurisdiction to another and may
include, among others, suspicious transaction or activity reporting, enhanced
procedures for high transaction amounts etc. Moreover, customized checks may
additionally be carried out depending on the risk profile of the cryptoassets
traded, as well as the VASPs' jurisdictions. Trading privacy preserving
cryptocurrencies, for instance, may require additional customer checks.
\paragraph{Smart contract (DApp) providers.} Implementers of decentralized
applications (DApps) are providing state transitions allowing network users to
transact on a blockchain system (such state transitions may be: ``stablecoins
functionalities'', ``decentralized exchanges'' etc.). Such applications are
hosted on each of the nodes of the decentalized blockchain network, and are thus
not executed within a well-defined jurisdiction. Instead, the associated code
is hosted and executed on all blockchain nodes worldwide, which poses a
challenge for regulation. Nevertheless, such applications \emph{may} be provided
by organizations registered within a specific jurisdiction, providing an avenue
for local regulators. It is important to note, however, that anonymous groups of
developers may still deploy applications to public blockchain networks.
In the next sections, we will argue that DApps deployed or operated by registered
organizations may implement privacy-preserving compliance checks at the protocol
level; providing a robust complement to regulatory compliance checks implemented
on centralized venues (e.g.~centralized exchanges). Such compliance checks may
be added to the provided state transition on the blockchain, allowing to
automate part of the process, preventing fraudulent state transitions and
lessening burdensome reconciliations\footnote{Since the state of a blockchain is
immutable, it is useful to prevent fraudulent state transitions from being
executed and added to the chain in order to keep a compliant state at any
point in time, reducing reconciliation procedures and associated costs.}.
\paragraph{Blockchain developers and operators.} Establishing the regulatory regime
of blockchain systems is a tedious task, especially due to the potential lack of
central coordinating entity. As proposed in a draft document by the
FATF~\cite{fatf-va-sixth-draft} (further amended~\cite{fatf-vasp-updated}), governance token holders or developers of blockchain
systems may be considered as VASPs, and hence subject to their regulatory
regimes. While it is not possible to foresee tomorrow's regulations, it seems that if
the early FATF recommendations were to be followed, there could be a convergence between
the so-called \emph{permissionless} and \emph{permissioned} blockchains. In other
words, if there exist a regulated VASP behind the development of every blockchain
systems, chances are that KYC and Customer Due Diligence (CDD) processes will be
implemented in order to onboard users on the systems, for example, it may be
necessary to modify the Ethereum account address creation routine to ensure that new
accounts have been created w.r.t.~KYC and CDD.
Permissionless blockchain protocols, allowing ad-hoc on/off-boarding on the system, have flourished
in the last years and observed steep increase in retail and institutional adoption
\cite{eib-bond-ethereum,occ-blockchain}. It is unclear whether the current
situation -- relying on centralized VASPs to act as safeguards or gateways to prevent
fraudulent conversions of funds between fiat and cryptocurrencies -- will persist or
mutate. In the rest of this document, we focus exclusively on permissionless
blockchains. We further consider blockchains with an expressive execution environment
allowing to deploy and execute smart contracts (e.g.~EVM
chains\footnote{i.e.~blockchains using the Ethereum Virtual Machine.
See~\cite{eth-docs-evm} for more details.}).
\paragraph{Blockchain services providers.} While blockchain protocols act as
the backbone on which DApp services are deployed, it is also important to note
that a myriad of businesses have been created beyond the strict boundaries of
blockchains, forming entire ``off-chain'' ecosystems. Such services may
either be:
\begin{itemize}
\item[\emph{custodial},] like wallet providers, securing the cryptographic
keys of their users; or
\item[\emph{non-custodial},] like transaction relays, which receive messages
from their users and relay them to the blockchain, cf.~\cite{zeth-relay}; or
blockchain bridges, which connect multiple blockchain systems,
e.g.~\cite{btcrelay,rainbow-bridge}
\end{itemize}
It seems fair to assume that custodial services providers must be subject to
stricter regulations, since they control the users' funds. On the other hand,
loose regulations around non-custodial services may constitute an open door for
fraudulent activity, e.g.~unregulated flows of liquidity from one blockchain to
another etc. For simplicity, we do not consider the regulatory regime for these
service providers in the rest of this document.
\begin{remark}
We note that, CDD checks are generally carried out by verifying legal
documents owned by the service customer (identity check using passports, proof
of fund provenance using payslips or bank statements etc.) \emph{which are
ill-suited for information disclosure minimization}. For example, the broker
probably does not need to know the city of birth of a customer, nor their
precise age. Instead it may simply know that the customer is legally
authorized to trade. On the other hand, cryptographic tools make it possible
to carry out such compliance checks with minimal information
disclosure.
\end{remark}
\subsubsection{Transacting parties.}
Beyond financial services providers and regulatory bodies, we now consider two
categories of users: those using existing services provided by regulated third
parties (e.g.~DApps, exchanges etc), and those who do not. While the former
user class -- \emph{blockchain services users} -- is subject to AML/CFT/KYC
processes implemented by the service of interest (and must then provide multiple
pieces of information), the latter user class -- \emph{native blockchain users}
-- may simply join the permissionless network on an ad-hoc basis, and are thus
exempt of such KYC checks. In fact, native blockchain users can either simply
transact native assets (e.g.~ETH) on the platform without using any DApp
services, and/or may leverage the smart-contracts capabilities of the underlying
blockchain to seal self-enforcing legally binding agreements with other users as
a substitute of legal (paper) contracts. (In such case, the cryptographic
signature attached to the blockchain transaction executing the smart-contract
acts as the digital equivalent as an ``ink signature'' on a (paper) contract.)
In the rest of the document, we will treat all smart contracts as DApps, and
focus on the relations between service providers, their users and the
regulatory bodies.
%%%%%%%
% \color{gray}
% \subsection{Cryptographic toolkit to build blockchain-based compliant systems}
% \michals{26.08}{I vote for removing this section from the paper. It brings little and slows reader down. AC and ZK proofs can be described along the way, view keys are not used, hence may be discarded.}
% \paragraph{Anonymous credentials}
% Identity verification is ubiquitous in our society. Whether it is to enter a
% pub, access an online service, or open a bank account, it is always necessary
% to show some credentials (and/or perform tasks -- like a captcha\footnote{An
% individual's ability to perform some task (i.e.~the \emph{Capability} mental
% model~\cite{rwot-models-identity}) is useful in the context of defining the
% individual's Identity. See~\cite{rwot-models-identity} for more information
% about the various dimensions and mental models of \emph{Identity}}). While the
% exchange and display of ``paper credentials'' (e.g.~passports) is common today,
% such credentials are not adequate for online processing, prone to forgeries,
% and do not provide an avenue for information disclosure minimalization. These
% obstacles are particularly concerning for the end users, as well as for
% services providers\footnote{In fact, ``data'' is often nicknamed as the
% ``digital oil'' and mostly seen as a source of income for companies (since
% large datasets can be used to ``train'' machine learning algorithms/refine
% models that generate business value, and/or can simply be sold to
% third-parties). Nevertheless, besides being an asset, ``data'' is also a
% liability. Data breaches in online services expose customers of the services
% and may greatly impact the reputation of the affected businesses.}. To that
% end, it is natural to turn to the use of cryptographic tools such as
% \emph{anonymous credentials}~\cite{C:Chaum83a} when designing scalable
% (privacy-preserving) systems. Instead of exchanging scans of paper credentials,
% PDF documents, or any other material, disclosing, in full, potentially
% sensitive information; cryptographic solutions using anonymous credentials may,
% instead, be used to prove facts (cryptographically) about pieces information in
% a privacy preserving manner. For instance, anonymous credentials constructions
% can be used in due diligence processes, for KYC/AML procedures etc.
%
% \paragraph{Zero-knowledge proof systems (see~\cref{crypto-preliminaries:zkps})}\label{val-candidates:ssec:zkcp}
% Beyond the potential use of ``general purpose'' zero-knowledge proof systems
% (i.e.~proof systems covering wide complexity classes) for the design of
% anonymous credentials (see, e.g.~\cite{DBLP:journals/corr/abs-2006-05201}), such
% cryptographic primitives may be used --- more broadly --- to generate
% Zero-Knowledge Compliance Proofs (ZKCPs), that show that a user uses a service
% in a compliant fashion (e.g.~a user's transaction follows the rules of the
% system, provided that ``the rules of the system'' are encoded in an adequate
% algebraic form).
%
% As flexibility is generally required in a system\footnote{E.g.~to account for
% multiple user classes (e.g.~retail traders vs institutional traders on an
% exchange) which may be subject to different regulatory regimes (e.g.~depending
% on their legal status and trade activity on a system) and different service
% rules, or to account for changing regulations}, different proof systems may be
% used to support different compliance policies within a single service. For
% instance, ``universal'' Succinct Non-interactive ARguments of Knowledge
% (SNARKs) (e.g.~\cite{EPRINT:GabWilCio19,CCS:MBKM19}) or ``transparent'' SNARKs,
% so-called Zero-Knowledge Scalable Transparent ARguments of Knowledge (STARKs)
% may be used here. However, QAP-based SNARKs such as~\cite{EC:Groth16} may also
% be leveraged to design systems with flexible compliance policies, by using
% \emph{universal circuits}~\cite{STOC:Valiant76} or by using recursive proof
% composition~\cite{TCC:Valiant08} for instance. These solutions offer different
% tradeoffs and must be selected, by protocol designers, in a way that optimizes
% for the necessary parameters during the design of the protocols.
%
% Finally, we note that processing ZKCPs on-chain may allow to delegate part of
% the auditing task (i.e.~ZKCP verification) to a smart contract. Although this
% model has limitations\footnote{Using a publicly verifiable NIZK on a blockchain
% system still leaks information about the validity of the proofs, which may leak
% information about the behavior of the user on the system. Furthermore, the
% storage cost of adding cryptographic proofs to the chain data needs to be
% considered.}, this setting could be used as an automated SARs filling system.
% If the contract rejects the submitted ZKCP, then it could mark the transaction
% as non-compliant and emit an event that can be consumed by a off-chain process
% running on a regulator's system, to allow regulators to react appropriately.
%
% \begin{example}[ZKCP on-chain]
% Consider a privacy-preserving transaction system where transactions which value
% exceeds $\$ 10,000$ require a special permission while other transactions are
% proceeded with no such delay\footnote{Such mechanism may be useful to regulate
% the amount on ``cash''-type transactions on-chain.}. The system may be designed
% such that a user of a DApp must provide a \emph{range proof} proving that the
% private amount transferred via the on-chain service is below an authorized
% threshold\footnote{Informally, a range proof is a (zero-knowledge) proof that a
% secret value lies in a given interval.}. If the proof verifies correctly (on
% the smart contract), then the transaction is fully executed by the
% smart-contract, and the blockchain state is modified accordingly. If the range
% proof does not verify correctly however (i.e.~the transferred amount is above
% $\$ 10,000$), the transaction execution is aborted (i.e.~no further changes are
% made to the blockchain state), and the user may contact the DApp operator to
% provide additional pieces of information about the transaction so that it may
% be signed by the service operator and re-submitted for inclusion to the chain.
% Such approach prevents non-compliant state transitions on blockchain services,
% while automating part of the compliance process via smart contracts and
% cryptographic checks.
% \end{example}
% \color{black}
%%%%%%%
\subsection{State of the art}
\michals{27.08}{For now we have here only parts moved from other sections. Need
to expand}
\michals{6.09}{Give an introduction for this section}
Below we discuss some prior approaches to compliance and privacy-preserving
transacting systems.
\paragraph{View keys}\label{val-candidates:ssec:data-reveal}
In contexts where an operator must be granted the right to monitor all activity
happening on a given service, it is possible to use so-called \emph{view keys}.
Regardless of the derivation method employed to generate the keys, this approach
aims to keep users' data (e.g.~transaction details) private to the rest of the
user set, while allowing full disclosure of user's activity to a service
operator. Such approach obviously raises issues related to users' privacy and
\emph{key custody} -- the service operator must ensure that the key material is
adequately protected to prevent unintended use of the view keys. This often
necessitates to extend the service's infrastructure with Hardware Security
Modules (HSMs), employ multi-party computation techniques (e.g.~``key
splitting''), and set strict access control policies (e.g.~to prevent ``insider
attacks'').
\paragraph{On Damgård et al \cite{EPRINT:DGKOS20}.}
Our work relies on Damgård et al \cite{EPRINT:DGKOS20} who defines
UC-functionality for privacy preserving transacting system. The system allows
users to create multiple (yet limited number of) accounts, such that it is
infeasible for an external spectator to tell which user posses which
accounts. On the other hand, if the user behaves dishonestly then a qualified
set of so-called anonymity revokers can reveal its credentials and remove it and
all its accounts from the system.
In this paper we rely on this solution. However, as explained in
\cref{sec:our-solution}, we extend it considerably. One of the most important
improvement being including compliance checks into the system.
\subsection{Our contribution}
\label{sec:our-contribution}
As initially alluded to in~\cite{DBLP:journals/corr/abs-2008-05958}, compliance
predicates can be used along with modern zero-knowledge proof system in order
to conciliate the use of privacy-preserving protocols with regulatory
compliance. In fact, arguing about predicate satisfaction in zero-knowledge can
lead to efficient design for auditable digital-cash/private transfers on
blockchain systems.
In this paper, we propose several considerations and tools for the design of
privacy-preserving blockchain-based compliance protocols\footnote{The
work~\cite{zkp-and-law}, published while writing this manuscript, further
proposes to use zero-knowledge proofs as a way to solve so-called
``Verification Dilemmas'' in multiple legal contexts. What we describe here as
a privacy/compliance paradox can be phrased as a Verification Dilemma.}. We
start by considering the various settings by which compliance can be enforced
on blockchain systems. Then, we describe a protocol that automates and
facilitates privacy-preserving compliance checks on blockchains like
Ethereum~\cite{ethyellowpaper}. We base our solution directly on the work of
Dåmgard et al.\cite{EPRINT:DGKOS20}, however we provide it with the following
improvements:
\paragraph{Private policies.}
Our most important contribution is to allow for private compliance policies
both on the accounts as well as on the transactions. More precisely,
in~\cite{EPRINT:DGKOS20} each user has a private list of attributes $\AL$ that
is signed by an identity provider (to assure that users cannot set these
attributes as they like), and each of the user's accounts has a specified
publicly-known policy $\comppolicy$, such that $\comppolicy(\AL) = \true$,
i.e.~the policy is fulfilled by the user's attributes. Unfortunately, we note
that despite the use of zero-knowledge proof systems to prove that some private
data satisfies some properties/constraints, there is always a tradeoff between
the information leaked by the system, and the statement that is being proven.
For example, consider a trading platform that should only be available to EU
citizens (i.e.~$\comppolicy$ here is of the form ``is EU citizen?'' and returns
true or false depending on the input data). The platform operator may, for
instance, hold a set of public keys from identity issuers from all 27
countries, and expect users to provide a message signed by one of the
authorized identity issuer to create an account. Nevertheless, such an approach
leaks (one of) the nationality(ies) of the user via the signature of the
identity issuer. So, even if the message signed perfectly blinds the user's
sensitive credential data, the protocol uses very restrictive predicates that
leak valuable information about the user to the platform (and more importantly,
to potential network adversaries!). Such leakages are particularly important
since they may accrue as the system is used for prolonged period, and may be
correlated with other data sources (e.g.~other leakages on the system) to carry
out de-anonymization attacks. The first step towards finding a solution to this
problem is to acknowledge that leakages still occur even when using
cryptographic tools such as zero-knowledge proof systems. Even if
$\comppolicy(\AL) = \true$ is proven in zero-knowledge, the ``verification
bit'' is disclosed to the verifier (i.e.~disclosed to the public if a scheme is
publicly verifiable). As such, the design of the statements to prove is of
particular importance. To stop leaking the citizenship in our example, it may
be more appropriate for the trading platform operator to leverage ring
signatures with the set of identity issuers. That way the signature on the user
message only proves that one EU member has issued valid credentials to this
user, without disclosing the particular issuer. That is, system designers must
design sufficiently sophisticated predicates to safely provide access to their
services to users while empowering them with privacy and minimal information
disclosure\footnote{A general good practice is to design a predicate (to prove
in zero-knowledge) as a decision tree that branches with each OR clause in the
policy (i.e.~see a policy as a logical disjunction). This allows users to use
their private data to evaluate the appropriate branch to true, redeeming the
whole policy valid, without disclosing the evaluation path in the tree.}. This
is all the more important in the context of blockchain-based services
(e.g.~DApps) as user messages (i.e.~transactions) are routed on a broadcast
network before being included to a public ledger. Poor policy design from the
DApp providers exposes their end-users to the whole network.
In this paper we propose a mechanism allowing users to \emph{hide} the
compliance policy they prove, effectively minimizing information leakages on
the system and better safeguarding users' sensitive personal and transactional
data.
\paragraph{Transaction checks.}
Contrary to \cite{EPRINT:DGKOS20}, which focuses exclusively on an identity
layer, we allow, in our ideal functionality (and protocol), users to show
predicate satisfaction on their transaction data. This makes it possible to
prove compliance on privacy-preserving state transitions such as $\zeth$, which
brings Zerocash-type~\cite{SP:BCGGMT14} privacy to Ethereum\footnote{As noted
in~\cite{DBLP:journals/corr/abs-1904-00905} the difference between
account-based and UTXO-based blockchains is of particular importance with
regard to information leakages. The privacy guarantees in $\zeth$ are weaker
than these in Zerocash due to the need to pay for gas. More on that later.}.
\paragraph{On the gas model.}
The gas model introduced in Ethereum \cite{ethyellowpaper}, and relevant to
most smart contract enabled blockchains, is a security
mechanism that protects the network against adversaries trying to execute
non-halting programs. The mechanism is quite simple and effective as it prices
every computational (and memory manipulation) step of a smart contract,
effectively requiring the network users to pay for executing state transitions
on the system. While it is easy to see how such an approach solves the attack
vector abovementioned (i.e.~attackers trying to run non-halting
programs on the network would see their account balance emptied and the
computation would stop afterwards), this mechanism comes with major
drawbacks. One such issue is that the gas model constitutes an impediment to
user privacy on smart-contract chains. Since executing a smart-contract
requires to hold funds to be able to pay for each instruction executed,
end-users must call a smart contract from a funded account
(either funded via p2p transactions with other peers or via a VASP like an
centralized exchange). Inevitably, this means that at least one other party on
the network (VASP or another peer) knows additional information about the
holder of the account and can use such information to carry out de-anonymization
attacks on the network. To mitigate the tension between the need for gas and
the need for privacy, we extend our model to introduce
a collection of parties called \emph{relays} (denoted $\relay$) which append
information on the ledger on behalf of a user~\cite{zeth-relay}.
\begin{remark}
We note that the need for an incentive structure assumed by Damgard et
al.~\cite[Section 3.4]{EPRINT:DGKOS20} to make sure that no account
holder can create more accounts than they are allowed, is not necessary if we
design a PPCTS for a specific DApp on a smart contract chain. In this
setting, no party may be required to report duplicated accounts as the
account creation logic may partially be delegated to a smart contract which
would simply automatically reject the addition of an existing account entry
by malicious account holders.
\end{remark}
Our proposed modifications on top of Dåmgard et al.'s \emph{identity-layer}
allow us to design a PPCTS, as defined in \cref{sec:capts}.
\section{PPCTS}
\michals{26.08}{Should be made a subsection of an introduction?}
\label{sec:capts}
Below, and when clear from context, we informally use the term \emph{verifier}
to denote the actor that asks pieces of information (e.g.~a service) to a
\emph{prover} (e.g.~a user or customer) and decides to either deem the received
pieces of information as admissible (or correct) or not.
\subsection{Desired properties}
\label{sec:desired_properties}
We list below the desired properties of a PPCTS:
\begin{description}
\item[{Completeness.}] An honest compliance verifier should always accept a
correct proof of compliance from an honest and compliant prover.
\item[{Soundness.}] It should be infeasible for a non-compliant prover to
convince the verifier to accept non-complying pieces of information as adequate
evidence of compliance, e.g.~an invalid transaction.
\item[{Efficiency.}] The compliance process must be efficient in order to
preserve the overall system's performances, i.e.~proving compliance and
verifying it must be efficient.
\item[{Reliability.}] If the system cannot verify the compliance it should
fail safe. That is, when a proof of compliance cannot be obtained, the system
should behave as if the compliance was not satisfied.
\item[{Robustness.}] The regulatory compliance checks must not \emph{only}
rely on trusted third parties and must not be easy to bypass.
This property is particularly important on distributed ledgers since KYC checks
implemented at specific gateways (e.g.~``exchanges/brokers'') may easily be
bypassed by using decentralized alternatives (decentralized exchanges, buying
assets on a purely peer-to-peer basis etc.)
\item[{Security.}] Implementing compliance processes must not undermine the
overall security of the system and of its users.
For instance, the PPCTS should not represent an attack vector on the system --
carrying out compliance checks must not put users' funds at risk -- and must be
designed around the same (or weaker) security assumptions as the system on which
it is built. Past events have demonstrated how (commercial) customer databases
and KYC checks carried out by hardware manufacturers and/or service providers
may translate into personal information leakages (e.g.~as consequences of cyber
attacks) about the user base, which may undermine users' personal
security/safety, e.g.~\cite{forbes-ledger-hack,ledger-hack-fear}, affecting the
breached service's reputation at the same time. \michals{18.08}{How it is
related to privacy?}\antoines{25.08}{It is not directly related. Sure a
privacy preserving system will have less data to expose in the event of a
breach on the service, but here the focus is on the security boundary of the
system, which is to make sure that a flaw in the PPCTS cannot be used to break
the whole system.}
\item[{Adaptability.}] PPCTS should be easy to extend and composable with
other systems.
In light of the quickly changing (legal and technological) environment due to
the fast-paced innovation in the blockchain ecosystem these properties are
especially imporant. In fact, regulators may adjust their guidance, or service
operators may decide to update their terms and services to collect more data
about their users (e.g.~transaction-related or personal pieces of information),
it should be possible for the parties involved in compliance verification to
provide and verify new pieces of information by relying on the infrastructure
and techniques already implemented in the PPCTS.
\item[{Privacy preservation.}] Compliance processes should not reveal any
additional information except the fact that the proven compliance policy holds.
\end{description}
\michals{26.08}{New structure here -- statement + description. Used
``paragraph'' envirionment, but not sure about it (p-graphs allow to easily
distinc statement from description)}
\michals{26.08}{Important and missing -- showing that our PPCTS follow these
rules}
\michals{26.08}{Important and missing II -- defining the above rules for our PPCTS.}
\subsection{Interactions between actors}
In light of the diversity in the set of actors, the set of messages exchanged
between a service user and a service provider may greatly vary depending on the
nature of the service, and depending on the user. While some of the pieces of
information related to regulatory compliance may be exchanged directly on the
blockchain (e.g.~cryptographic commitments, ciphertexts, etc.), other pieces of
information need to be exchanged via off-chain interactions. For instance, a
regulatory body may publish a set of recommendations and guidelines, that
service providers need to follow, on its website (off-chain). A user may want
to gain access to a blockchain-hosted service, and thus may exchange pieces of
information with the service operator (off-chain) to satisfy the KYC procedures
of the service. In response to the user's registration, a service may modify
the state the blockchain to grant the user access to the service, and/or may
simply carry out off-chain modifications to the service's state and send a
confirmation message (off-chain) to the user. While using the service, a user
may post data on the blockchain, which may be used by the service operator as
input to its monitoring processes.
It is important to remember, however, that blockchains are not ``mere
distributed databases''. In fact, a blockchain acts as ``source of truth'' to
which adding data is generally an expensive operation. Once added to the
immutable blockchain state, the cost of keeping a piece of data under consensus
(as part of the blockchain state) is paid by the whole network (see,
e.g.~\cite{zeth-state-simulation2021}). As such, not all pieces of information
are fit for inclusion on a blockchain system. For instance, adding Personally
Identifiable Information (PII) to immutable ledgers is not desired as it
violates data regulations in certain jurisdictions (e.g.~GDPR). More broadly,
appending pieces of information to a blockchain requires to send a message to a
public broadcast channel, which constitutes challenges with regard to
information leakages minimization in the context of privacy preserving
protocols (e.g.~as we saw, the mere fact of sending a zk-proof of a publicly
verifiable NIZK on a blockchain leaks the ``verification bit'' which provides
information about the instance/witness pair of the user).
\section{Protocol overview}
\subsection{The actors}
\paragraph{User $\user$.}
A user is a party using the system. That is, a party that wants to have their
transactions (i.e.~blockchain virtual machine state transtions) $\tx$ to be
processed by the system. To that end the user first obtains their application
identity from the identity module and (possibly anonymously) registers a number
of accounts which are then used to transact. Transactions provided by the user
are verified for their their validity and compliance. The latter may require
from the user additional data, like a proof that transactions follows the policy
assigned by the policy assigner, or interaction with the policy assigner
themself. Furthermore, if the user misbehaves they need to take into account
possible consequences like their identity reveal and accounts block. This is
possible since information required to reveal user's personal data or block
their accounts are given to a set of anonymity revokers, who working
collectively may disclose them.
\paragraph{Relay $\relay$.}
A relay is a party who provides other users with anonymity services. More
precisely, a relay acts as a proxy to the blockchain. It receives fees from
users in exchange for submitting transactions to the ledger on their behalf. By
submitting transactions from its ledger account, the relay pays for the gas
associated to the transactions and allows the end-users to stay anonymous
(i.e.~transact without a funded account on the ledger). Such relayed
transactions may, for instance, be used by users to fund a newly created ledger
account. Users may stay anonymous to the relay by making sure that no
information in the message sent to the relays (e.g.~transactions payloads) can
be used to de-anonymize them. To that end a number of privacy-preserving
techniques may be employed, like encryption, cryptographic commitments,
zero-knowledge proofs, and communications via anonymous communication networks. The incentivization structure of relays is outside of the scope of this
document. For now, we assume that the relays can receive fees via off-chain or on-chain mechanisms. For discussions on relay mechanisms and incentivization, see e.g.~\cite{zeth-relay}.
\paragraph{Policy assigner $\polas$.}
The policy assigner is a party which provides the users of the system with
compliance policies that have to be followed by transactions the users send.
This makes the application owner -- VASP -- a natural candidate to fulfill that
role as well.
\paragraph{Anonymity revoker $\ar$.}
Anonymity revokers make a set of parties which role is to keep encrypted users'
credentials and their accounts' details. When a user behaves dishonestly, what
has to be agreed by at least some threshold of the anonymity revokers, then
these credential and account details are revealed to prevent the misbehaving
party from a further use of the system. Alternatively, an honest user should not
worry having their credential revealed in case of a dishonest anonymity revoker,
as any set that counts less than a threshold anonymity revokers can tell nothing
about the stored user's data.
\paragraph{Identity provider $\idprov$.}
Identity providers are parties who check real-life credential of users and
provides them with anonymized credential ready to be used in the system.
\paragraph{Application owner $\owner$.}
In the real world, the application owner is a party
that sets-up the transacting smart contract, picks which identity providers and
policy assigners should be available in the contract. The application owner is a
gate-keeper who prevents users, identity providers and policy assigners with bad
reputation to join the system. Here we also assume that the application owner
sets up the parameters for cryptographic primitives used in the system, like
encryption scheme, signature scheme, non-interactive zero-knowledge proofs,
where it picks the refence strings as well. (Alternatively, one could set up a
collective that jointly sets up the parameters and reference string via an MPC.)
\subsection{The protocol briefly explained}
From a high level, a user proceeds as follows (see~\ref{appendix:unrolled}
for more information). First, a user $\user$ retrieves
anonymity revokers' public keys and use them to threshold-encrypt its PRF key $\key$
that will be later used to create user's accounts.
\paragraph{Getting new identity.}
In the next step, the user interacts with a chosen identity provider $\idprov$ to get
an identity that will be used in the transacting system. To that end, it provides the
identity provider with an attribute list $\al$ which contains all data required to
get identity on the system. The identity provider checks $\al$ by either
non-cryptographic means (e.g.~relying on user's national ID or, in case of
institutions, its company register's entry), or using cryptographic credential scheme
with credential signed by a trusted entity. Importantly, we require the identity
provider to be able to identify the user so legal actions could be imposed on it if
it misuses the system. The user also shows $\idprov$ a public key of its choice
$\pcred$ and shows knowledge of the corresponding secret key $\scred$. If all the
checks are accepted, the identity provider signs $\scred$, user's key $\key$ that
will be used to create new system accounts and attribute list $\al$. Since we want
these values (possibly except of $\al$) to remain private, the signature is
blind. That is, the identity provider does not know what it signs, however, since we
also require that the user provides $\idprov$ with a zero-knowledge proof that it
picked data to be signed honestly, the identity provider may securely do that without
doubting on the validity of the data signed. We denote the signature by
$\signature_{id}$.
\paragraph{Getting compliance policy.} Before the user starts to transact it also
needs a compliance policy. Transactions the user is going to perform will need to
fulfill that policy. To that end, the user turns to a policy assigner $\polas$ and
defines how it wants to use the transacting system. Given that information $\polas$
picks a policy for $\user$. This step can be realized in multiple ways -- the policy
may be assigned based on interaction or there may be a public information what
policies are assigned to which set of actions and which type of users. To confirm
that the user is allowed to perform the required set of actions the policy assigner
picks a predicate $\alpolicy$ which has to be fulfilled by the user's attribute list
$\al$. That is, we require $\alpolicy (\al)$ to hold. To assure that $\al$ remains
private a zero-knowledge proof is used to show that predicate. Importantly, $\polas$
also checks that $\al$ is the same list of attributes that was signed by the identity
provider. Eventually, the policy assigner picks a compliance policy $\comppolicy$ and
sends it to $\user$ along with its signature $\signature_{comp}$ which certifies
authenticity of the policy, i.e.~assures that no malicious user can pick its own
policy $\comppolicy'$ and use it instead of the assigned $\comppolicy$.
If the user wants to use the system in multiple ways \hl{...}
\michals{28.10}{We started a discussion on that. We considered two options
here. Either the user gets multiple identities and single policy per identity or we
allow only one identity per user and multiple policies. AFAIR, we were leaning
towards the latter option. However, now I think that maybe the first option is
slightly better. It allows to revoke more user's accounts if it misbehaves. That
is, by default we revoke all accounts per identity. If the user has multiple
identities then we cannot revoke all its accounts. Obviously (?) the user can set up
multiple identities with multiple identity providers. (Maybe there is a way to
prevent that, like each of the identity provider could hold a register of
credentials hashes $h$ of registered users. Then we could use MPC or PIR (private
information retrieval) methods to allow identity providers to privately query other
IPs' databases to check whether a concrete hash $h$ was registered there). Another
argument for the multiple policies per single identity is more philosophical
one. The user wants to get multiple policies, so we should allow that by changing
PA specification. Getting multiple policies by getting multiple identities seems
like unnecessarily complication. OTOH, if the user wants to perform different
activity then a different attribute list may be required -- these things are
verified by the identity provider. In that case having multiple identities per user
makes sense.}
\paragraph{Creating new accounts.} Given identity and policy, the user can create
accounts that will be used to send and receive transactions. $\user$ starts by
threshold-encrypting its public credentials $\pcred$ and computes the account
identifier by running a PRF with a key $\key$ on index $x$. Index $x$ numerates the
accounts created by the user, it takes values from $1$ to $\maxacc$, where the latter
is the upperbound for a number of accounts the user can make. Then the user computes
a policy digest $\policydig$ which assures that the compliance policy tied with the
account is the same as the compliance policy the user got from the policy
assigner without revealing the policy itself. Eventually, the user
computes zero-knowledge proof to certify that
\begin{inparaenum}[(1)]
\item the above computation has been done correctly;
\item it knows a valid $\scred$ corresponding to $\pcred$;
\item has a valid signature from the identity provider that assures validity of
attribute list $\al$;
\item it has a valid compliance policy assigned by a policy assigner.
\end{inparaenum}
Importantly, the zero-knowledge proof the user is showing assures that it in fact got
the compliance policy from the policy assigner and the identity from the identity
provider. That is, it excludes the attack where a malicious user $\user^*$ obtains an
identity from the identity provider, but then gets a compliance policy from another
user $\user$ (or vice versa) and for such policy creates a new account. Such attack
to be successful requires $\user^*$ to know $\user$'s secret key $\scred$ and the
signature it got from its identity provider. (If $\user^*$ knew $\user$'s signature
from the identity provider then it could impersonate $\user$.)
\paragraph{Sending transactions.} Eventually, the user is allowed to send
transactions. To that end, $\user$ computes zero-knowledge proofs which show validity
of the transaction (regarding the rules of the transacting system, e.g.~assuring that
funds used in the transaction were not created out-of-thin-air etc.) and transaction
compliance with the assigned compliance policy.
Proposed system allows users to send non-compliant transactions if they have been
approved by the corresponding policy assigner. Also, to protect privacy of the user,
transactions can be send via a {\pistis{}} relay who is just another system user. In
general, relays can be used whenever user is tasked to publish some information on
blockchain.
\paragraph{Revoking user's accounts.} If misbehaviour of a user $\user$ is detected, its
identity can be revealed and accounts blocked. Threshold encryption allows
large-enough set of anonymity revokers to decrypt encryptions of user credentials
$\pcred$ and key $\key$. The former allows the identity provider that provided
$\user$ with its identity to reveal information that identifies it. The latter allows
anonymity revokers to mark and block all accounts created by the user. Importantly,
threshold encryption scheme may be set such that no single anonymity revoker may be
allowed to reveal user's identity, what is a desired property since an anonymity
revoker may be corrupted. On the other hand, no particular anonymity revoker is
necessary to decrypt the credentials (that is, it is only required that a big-enough
set of anonymity revokers cooperates), what prevents failure of decryption due to
anononymity revoker unavailability (e.g.~the revoker may be off-line).
\subsection{\pistis{} is a PPCTS}
Here we briefly state how we define the properties required for a PPCTS,
cf.~\cref{sec:desired_properties}, for \pistis{} and argue that they are
fulfilled.
\begin{description}
\item[{Completeness.}] Completeness of \pistis{} holds from the completeness of
zero-knowledge proof system.
\item[{Soundness.}] Similarly to the above, soundness of \pistis{} relies on
soundness of the zero-knowledge proof system.
\item[{Efficiency.}] Efficiency of the compliance process is assured by using
efficient proof systems, in our case -- zkSNARKs, which are efficiently
provable and verifiable; moreover, the proofs compounds of a constant number
of elements despite the size of the statement.
\item[{Reliability.}] This property is assured as $\PPCTS$ functionality
$\func{\PPCTS}$ which $\pistis$ implements does not change its state if the
provided transaction is non-compliant and the policy assigner does not
approved it.
\item[{Robustness.}]
Design of $\pistis$ assures that no non-compliant transaction can be processed
unless arbitrarily accepted by the policy assigner given that zero-knowledge proof
systems that $\pistis$ uses are sound. That holds if the proof systems' structured
reference strings (SRS) were generated honestly. This can be provided by using
secure multi-party computation (MPC) of the SRS-s, i.e.~computing SRS-s be a set of
mutually distrusting parties. Depending on the MPC protocols used, it can be
guaranteed that the SRS-s are computed honestly if at least one of the parties is
honest.
\item[{Security.}]
This property is assured as $\pistis$ does not process nor utilize user's secret data
from Layer 1, like e.g.~a secret key related to a Layer 1 account.
%
Obviously, knowledge of such key may be necessary to execute $\pistis$. For
example, if $\pistis$ is a smart contract on Ethereum, the user uses its
secret key to make EVM state transitions related to executing $\pistis$'s
commands. However, no system's command takes as input users secret key, nor
requires its knowledge.
\item[{Adaptability.}]
$\pistis$ is adaptable and customizable in a number of aspects. First of all,
$\pistis$ protocol is composed of a number of idealized functionalities, like
NIZK, threshold encryption scheme, PRF, functionality of secure parameter
generation. Each of these functionalities may be implented independenly, using
various cryptographich primitives, etc. Security properties of $\pistis$
guarantees that the protocol will remain secure as long as each of the
functionalities' implementations are done securely.
Furthermore, the $\pistis$ realizes a UC-functionality of PPCTS, hence it can
be securely composed with other UC functionalities.
From the practical point of view, $\pistis$ does not rely on functionalities that
are specific to a single blockchain. Hence, although it was created with EVM-compatible blockchains in mind, it is practically blockchain-oblivious.
\michals{2.09}{Argument for that point. Pistis is a smart contract and is, to
an extend, ledger-neutral. However, I am not sure how we can compose it with
other elements. What would be that elements? Oracles? But then, wouldn't we
rely security of the system on them? I.e. wouldn't we rely security of the
system on some external components we don't control?}
\item[{Privacy preservation.}] This is assured since the only things revealed
during transactions are: transaction $\tx$, which in our case hides such
elements as transaction's sender, receiver and amount, transaction auxiliary
data $\paux$ and policy digest $\policydig$. Furthermore, the sole
fact that the transaction is processed does not mean it follows a compliance
policy assigned to the sender (as it may be approved by the policy
assigner). Also the compliance policy is not revealed at all -- the only
public information about the policy is that some transaction follows it (shown
using a zero knowledge proof) and its digest which is computed using a
pseudo-random function.
\end{description}
\section{Cryptographic preliminaries and primitives}\label{crypto-preliminaries:zkps}
\subsection{Notation}
Let $\secpar \in \NN$ be the security parameter. We assume that all algorithms
described receive as an implicit parameter the security parameter written in
unary, $1^{\secpar}$. %All algorithms are modeled as Turing machines.
An efficient algorithm is a probabilistic Turing machine running in polynomial
time, we write $\ppt$ to denote a such algorithms. We denote by $\rand{\adv}$ a
random variable describing randomness tape of algorithm $\adv$. We write
$r \sample \rand{\adv}$ to denote concrete randomness given to $\adv$. Although
we usually do not explicitly describe the randomness a $\ppt$ algorithm $\adv$
is given, we may sometimes do it, in which case we write $\adv(x; r)$, which
should be interpreted as ``algorithm $\adv$ runs on input $x$ and randomness
$r$''.
For distribution families $\family{A} = \smallset{A(\secpar)}_{\secpar \in
\NN}, \family{B} = \smallset{B(\secpar)}_{\secpar \in \NN}$ write $\family{A}
\approx_{\eps(\secpar)} \family{B}$ if the statistical distance between
$\family{A}$ and $\family{B}$ is upper-bounded by $\eps(\secpar)$. We say that
a function $f\colon \NN \to \RR$ is \emph{negligible} if it vanishes faster
than the inverse of any polynomial, i.e. for every $c \in \NN$ there exists an
integer $x'$ such that for all $x > x'$, we have $\abs{f(x)} < 1/x^c$. We write
$\negl[]$ (resp.~$\poly[]$) to denote a negligible (resp.~polynomial) function.
For a string $x$ of length $n$ we write $\length{x} = n$.
We denote by $\REL \in \smallset{0,1}^{\ast} \times \smallset{0,1}^{\ast}$ a
polynomial-time decidable binary relation, which associated NP language is
defined as $\LAN_{\REL} = \smallset{x\ |\ \exists w\ s.t.\ (x,w) \in \REL}$.
Furthermore, we sometimes abuse notation and write $\REL(\inp, \wit) = 0$ if
$(\inp, \wit) \not\in \REL$ and $\REL(\inp, \wit) = 1$ if $(\inp, \wit) \in
\REL$.
% Furthermore, we denote by $P_{\REL} \colon \smallset{0,1}^{\ast} \times
% \smallset{0,1}^{\ast} \to \smallset{0,1}$ the predicate associated to $\REL$
% which takes two binary strings $(x, w)$ as input and returns 1 (i.e.~$\true$)
% if $(x, w) \in \REL$ and 0 (i.e.~$\false$) otherwise \footnote{Informally a
% predicate $P_{\REL}$ defines the set of rules/conditions $(x,w)$ must follow
% for $x$ to be accepted in the language $\LAN_{\REL}$.}.
In what follows, we refer to a \emph{compliance policy}, as a set of
established rules, a financial transaction needs to satisfy and comply with in
order to be deemed acceptable. Formally, the compliance policy $\comppolicy$ is
a predicate which can be evaluated to eiher $0$ ($\false$) or $1$ ($\true$).
For a (finite, abelian, cyclic) group $\GRP$ we denote by $\gnone{1}$ its
generator. We use additive notation, that is,
$\gnone{a} + \gnone{b} = \gnone{a + b}$ and $a \gnone{b}= \gnone{ab}$. Denote by
$\pair: \GRP_1 \times \GRP_2 \to \GRP_T$ a bilinear pairing, that is for
$\gone{a} \in \GRP_1, \gtwo{b} \in \GRP_2, \gtar{ab} \in \GRP_T$ holds
$\pair(\gone{a}, \gtwo{b}) = \gtar{ab}$. Alternatively, we write
$\gone{a} \bullet \gtwo{b} = \gtar{ab}$. We specify algorithm $\ggen$ that given
security parameter $\secparam$ outputs public parameters $\pp$ that compounds of
description of groups $\GRP_1, \GRP_2, \GRP_T$, their generators and bilinear
pairing between them. We assume that $\ggen$ is run once and for all, that is