From 19cb7be37846d310948f99722c2961fc7df84146 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 16 Feb 2021 14:20:20 -0800 Subject: [PATCH] Documentation updates --- ANONYMITY.md | 18 ++++++++++++++++-- FuzzyTags_Logo.png | Bin 0 -> 10288 bytes README.md | 2 ++ src/lib.rs | 1 + 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 FuzzyTags_Logo.png diff --git a/ANONYMITY.md b/ANONYMITY.md index f458fef..16f61df 100644 --- a/ANONYMITY.md +++ b/ANONYMITY.md @@ -37,11 +37,25 @@ download everything, the more the system can safely tolerate parties with small To what extent you can actually account for this in your application is an open question. +### Statistical Attacks + +Using some basic binomial probability we can use the false positive rate of reach receiver tag to calculate +the probability of matching on at least X tags given the false positive rate. Using this we can find statistically +unlikely matches e.g. a low-false positive key matching many tags in a given period. + +This can be used to find receivers who likely received messages in a given period. + +If it is possible to group tags by sender then we can perform a slightly better attack and ultimately learn the +underlying social graph with fairly low false positive rates (in simulations we can learn 5-10% of the underlying +connections with between 5-12% false positive rates.) + +For more information on statistical attacks please check out our [fuzzytags simulator](https://git.openprivacy.ca/openprivacy/fuzzytags-sim). + ### Should Senders use an anonymous communication network? -If differential attacks are likely e.g. few parties download everything and +If statistical & differential attacks are likely e.g. few parties download everything and multiple messages are expected to originate from a sender to a receiver or there -is other information that might otherwise link a set of messages to a receiver then you may want to consider how +is other information that might otherwise link a set of messages to a sender or receiver then you may want to consider how to remove that context. One potential way of removing context is by having senders send their message to the server through some kind of anonymous diff --git a/FuzzyTags_Logo.png b/FuzzyTags_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..562e0c1f80154bea0ba13be664ca6597ac75e572 GIT binary patch literal 10288 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⋙qBLutxSqIOx%$p@ zcRyOBesNLqxv_dMl!ptgqjIGo`(fl;;GXZKm4HTiNlVq=q) z37poSNGZw=bjQWTea3sgy@Fv(zXtz|f7yK4U#|a8ikj<`o&MYKQf3|>QR!3QAw`fs zV#AJFF5Uolq*=(sezPcTdfvT`#w(2m88XV3HD=YkA3M%P;@_j==Dnhl$=8{&`>pB4 zZ9NYgiuK6FJoZt#PIN$u`HKtHnD|Mmm$5(90aUP^{kmw!#kA&5-;pf{V(Sx^ujafx zC@p&DueGD7b2*Ho?lDgT}O=(6=bryShzprf%3tQG)l7Q>ZI%Bc-6MVodjq zs8mgTAh^&)FFv<|UaCyn+$Ui0DiU=iQ}KDsrFB%4DR{T(18)(={;8LXuik#;sA;G_ zuhXMhw*`E}aOa)XoD7O4F8HPm`}-w|G#i{;wZ`sn#Znh5j>k&wn(OCdk$>12Pnq&% zZRQzd7qON)%bz?veobK7MsMoRx-7X->v@)RO+wDa+ukKhho2S((M$PZl(yK%#SfKw zd<|gyuuzJzPecGG7r24~ujx*u#O`wP#JQd=8S$yKq!vx>Ly=ixh?M@I(QCt;<~c*G zAmEm0U3Kc{~QL5MZn>& zKgJtOIk&=4nSAo?ZaGdvdHvHD$0;taujU{nyJ0=OO6qW>T0 zODqv0K9+hxh};dY*3_f(r^@3=^X2a}LS~=Wf0B`;`9r#@gTi@Ho(YaC~A4`AfcyLf66? z_bxDK=g{QSyrd*5bz}Az5C(uhrWwop`4nbD2Wx*-@E~1^4Bcces_~(HbNun&vw$(K zV|)OoS6f{U27dQ9tUDtE+z(%-a(;B0-!o-VH(%m~%+pQ;STpi@^KRn3-g6Pq#Q^)v zwsLTyha^4c=Mc&?-e3qds2SQPswswHTp%!A@L@e_O-zwF%f!JESV_`hv5qsE+T24Z z#?W6@Fw7i8BPMk#0<6%*^7!}b|;WY#4l^&itnVU`5k+;S1H=A(vfaxpdGEfHY_1!t2M9gA-@DJTV0)s-C? zoA~Rj;0H;>=2Vl#JQwif5r!e&5=i_H5<;hp z4*ROq$bq(^nZZ3D2A^V&(Mh!rszdbjXD`@+VjVsHfI{G~tKmu8=#M5QVdwB2xN~aq zlc`&?tw|v*h?x0`E#L*P*u0Dy_EhP4)Ki?LPsl|U5FePSM;|npZ()EzpkKO~1dQZY zV33Ib3v@))kTl&5H8s!2uQ~LXjDX6Kt{!c6jUu-QjbojRc9V81f1A@oS3z0!z0E|3 z3DzxrgghK_hU48exKtnM|L*Pqn16t+h_f2ovVx~8ByQn9ZD3NiSnXRD`m9-Ct4XZ% zUT7$j?rBY^#N@Yb=4NRT;1UVFj&1U@n-eFco^b%e+1q%&5VsgK+8|1k2G`pHbQt)J~4 z#`(J*Z%8veq*gxhDBbkO4mhk6HZ>-DZ34bkTWF$C+n=z&*gT#fCzC+-_CGPHSWUY& zURge=>ru1)low?&WEY2&hYT;u533#mCsJBzaDo~Z4YaGu9nKEQS?Su#sJ>Po=*4`L ziGKqGUHF{@e)hQ?h!qoh(t7K8_4`N+BEaza>3heU?b}B>(@P1f3+mYOs<~|dfV}PS z#KW2Ui!PDf_(?9DCF`#lwR zUHxWjwQS+BgOhfG+@}!re~+ymTJHDQFmbvn_E70_zf0zRt{-^wA22yS=^j@0eG`r* zx}%p<7dNVxy2VAu-%Q7iNK62k^{Eqa3~*Zx45yaCe;i${i`9W)?wfmK(pW=skoKuHcETP|Z7@_zsvvU4v0 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 075c414..93664da 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # FuzzyTags +![](https://git.openprivacy.ca/openprivacy/fuzzytags/media/branch/trunk/FuzzyTags_Logo.png) + Anonymous messaging systems (and other privacy-preserving applications) often require a mechanism for one party to learn that another party has messaged them ("notifications"). diff --git a/src/lib.rs b/src/lib.rs index 426917e..dcdd3e1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ #![feature(const_generics)] #![doc(include = "../README.md")] #![doc(include = "../ANONYMITY.md")] +#![doc(html_logo_url = "https://git.openprivacy.ca/openprivacy/fuzzytags/media/branch/trunk/FuzzyTags_Logo.png")] use bit_vec::BitVec; use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT; use curve25519_dalek::digest::Digest;