reclaim.tex (16244B)
1 \documentclass[aspectratio=169]{beamer} 2 \usepackage{appendixnumberbeamer} 3 \usetheme{metropolis} % Use metropolis theme 4 \definecolor{fhggreen}{RGB}{23,156,125} 5 \let\oldemph\textbf 6 \renewcommand{\textbf}[1]{{\color{mLightBrown}\oldemph{#1}}} 7 8 \usepackage{blkarray} 9 \usepackage{amsmath} 10 \usepackage{multirow} 11 \title{\includegraphics[trim={6cm 7cm 6cm 7cm},clip,width=0.5\textwidth]{reclaim_small}\\\small{Datenspuren 2019}} 12 \date{21.9.2019} 13 \author{Martin Schanzenbach} 14 \institute{\includegraphics[width=.25\textwidth]{aisec_logo.pdf} \hfill \large{GNUnet} \includegraphics[trim={0cm 1.5cm 0cm 0cm},clip,width=5em]{gnunet}} 15 \begin{document} 16 \metroset{block=fill,sectionpage=progressbar,numbering=counter} 17 \maketitle 18 \section{Motivation} 19 20 \begin{frame}{Motivation} 21 Identity Provider Market: 22 \begin{center} 23 \includegraphics[width=0.9\textwidth]{idp_info} 24 \end{center} 25 \begin{tiny} 26 Source: \url{http://www.gigya.com/blog/the-landscape-of-customer-identity-q2-2015/} 27 \end{tiny} 28 \end{frame} 29 \begin{frame}{Motivation} 30 Issues: 31 \begin{enumerate} 32 \item \textbf{Privacy} concerns: 33 \begin{itemize} 34 \item Targeted advertisement, opinion shaping. 35 \item ``Public safety'': Mass surveillance and data collection. 36 \end{itemize} 37 \pause 38 \item \textbf{Liability} risks: 39 \begin{itemize} 40 \item Data loss through leaks or hacks may result in existential legal implications (GDPR). 41 \end{itemize} 42 \pause 43 \item \textbf{Oligopoly}: 44 \begin{itemize} 45 \item ``There can be only one (two)''. 46 \item IdP market tends to degenerate. 47 \item Federation not widely used. 48 \end{itemize} 49 \end{enumerate} 50 \end{frame} 51 52 \begin{frame}{Approach} 53 \textbf{Primary objective}: We must enable users to exercise their right to digital self-determination: 54 \begin{enumerate} 55 \pause 56 \item Avoid third party services for identity management and data sharing. 57 \pause 58 \item Open, free and decentralized service which is not under the control of a single organization, consortium or business. 59 \pause 60 \item Free software. 61 \end{enumerate} 62 \pause 63 $\Rightarrow$ Empower users to \textbf{reclaim} control over their digital identities. 64 \end{frame} 65 66 67 \begin{frame}{What does an IdP do?} 68 \begin{enumerate} 69 \item Identity provisioning and access control 70 \begin{itemize} 71 \item Allow management of identities and personal data. 72 \item Facilitate sharing of identity data with third parties. 73 \item Provide up-to-date information accessible even if user is offline. 74 \item Enforce authorization decisions of user. 75 \uncover<3->{\item[$\Rightarrow$] \textbf {re:claimID}} 76 \end{itemize} 77 \pause 78 {\color<3->{gray} 79 \item Identity information verification and attestation: 80 \begin{itemize} 81 {\color<3->{gray} 82 \item ``this is Alice's email address'': Email provider. 83 \item ``this person is living in Germany'': Sovereign state. 84 \uncover<3->{\item[$\Rightarrow$] \textbf {Not our department!*}} 85 } 86 \end{itemize} 87 \uncover<3->{\tiny{*We will revisit this further on.}} 88 } 89 \end{enumerate} 90 %\begin{enumerate} 91 % \item Identities and attributes must be shared over a secure, decentralized storage to allow access even of user is offline 92 % \item Access control on data without trusted entity that enforces authorization decisions by user of he is offline 93 %\end{enumerate} 94 \end{frame} 95 96 97 98 \section{Introducing \includegraphics[trim={6cm 8.2cm 6cm 7cm},clip,width=.4\textwidth]{reclaim_small}} 99 100 \begin{frame} 101 \begin{itemize} 102 \item re:claimID is a \textbf{self-sovereign} personal data sharing system. 103 \item Other self-sovereign identity systems you may have head about: 104 \begin{itemize} 105 \item Sovrin (Hyperledger)\uncover<2->{$\Leftarrow$ \textbf{Permissioned blockchain}} 106 \item uPort (Ethereum)\uncover<3->{$\Leftarrow$ \textbf{Data shared off-chain: If user is offline data not accessible}}. 107 \item NameID (Namecoin) \uncover<4->{$\Leftarrow$ \textbf{Access control through central server (wat?)}} 108 109 \end{itemize} 110 \uncover<5->{\item[!] re:claimID does \textbf{not} require a blockchain, is fully decentralized and allows asynchronuous data access.} 111 \end{itemize} 112 \end{frame} 113 114 115 116 \begin{frame}{In a nutshell} 117 \begin{minipage}[m]{0.40\textwidth} 118 \centering 119 \centering 120 \includegraphics[trim={6cm 7cm 6cm 7cm},clip,width=1\textwidth]{reclaim_small} 121 \end{minipage} 122 \begin{minipage}[m]{0.2\textwidth} 123 \centering 124 \Huge {\color{black} =} 125 \end{minipage} 126 \begin{minipage}[m]{0.25\textwidth} 127 \centering 128 {\large \textbf{Decentralized directory service}}\\ 129 \vspace{1em} 130 {\Huge \color{black} +}\\ 131 \vspace{1em} 132 {\large \textbf{Cryptographic access control}} 133 \end{minipage} 134 \end{frame} 135 136 \begin{frame}{Directory services?} 137 \begin{center} 138 \includegraphics[width=1\textwidth]{directories} 139 \end{center} 140 \end{frame} 141 142 143 \begin{frame}{In a nutshell} 144 \begin{itemize} 145 \item Decentralized directory service 146 \begin{itemize} 147 \item Secure \textbf{name system} with open name registration. 148 \item Idea ``borrowed'' from NameID. 149 \item Example: nslookup email.bob.org $\Rightarrow$ ``bob@example.com'' 150 \item Our implementation uses the \textbf{GNU Name System (GNS)} 151 \end{itemize} 152 \pause 153 \item Cryptographic access control layer 154 \begin{itemize} 155 \item Provided by GNS through encrypted and signed resource records. 156 \item Protects identity data from unwanted disclosure and allows users to enforce access control. 157 \end{itemize} 158 \end{itemize} 159 %\begin{enumerate} 160 % \item Identities and attributes must be shared over a secure, decentralized storage to allow access even of user is offline 161 % \item Access control on data without trusted entity that enforces authorization decisions by user of he is offline 162 %\end{enumerate} 163 \end{frame} 164 165 %\begin{frame}{Centralized Storage, centralized IdP} 166 % \includegraphics[width=1\textwidth]{idp_traditional} 167 %\end{frame} 168 %\begin{frame}{Decentralized Storage, centralized IdP} 169 % \includegraphics[width=1\textwidth]{idp_nameid} 170 %\end{frame} 171 %\begin{frame}{reclaimID} 172 % \includegraphics[width=1\textwidth]{idp_gnuid} 173 %\end{frame} 174 % 175 176 177 \section{How does it work} 178 179 \begin{frame}{Managing and publishing identity information} 180 \centering 181 \includegraphics[width=1\textwidth]{Reclaim-2} 182 \end{frame} 183 184 \begin{frame}{The GNU Name System} 185 \begin{itemize} 186 \item In GNS, a namespace is defined by a public/private EC key pair: 187 \begin{itemize} 188 \item $x$: Private key 189 \item $P$: Public key 190 \item $G$: Generator of the curve 191 \item $n$: Group order 192 \end{itemize} 193 \pause 194 \item Records are encrypted and signed using keys derived from $(x,P)$. 195 \pause 196 \item Encrypted records are published in a distributed hash table (under key $q$). 197 \pause 198 \item Any peer is able to verify the signature as the corresponding derived public key is also published. 199 \pause 200 \item Records can only be resolved and decrypted if the true identity and the label is known. 201 \pause 202 \item[$\Rightarrow$] Namespaces \textbf{cannot} be enumerated and queries/responses \textbf{cannot}* be observed. 203 \end{itemize} 204 \tiny{*Unless label and identity are known.} 205 \end{frame} 206 207 \begin{frame}{Identity attributes in GNS} 208 Users may create a namespace $(x,P)$ and use it as a digital identity containing personal information: 209 \begin{table}[h] 210 \begin{tabular}{|c|c|c|} 211 \hline 212 Label & Record Type & Value \\\hline\hline 213 $l_{email}$ & \texttt{ATTR} & ``email=alice@example.com''\\\hline 214 $l_{name}$ & \texttt{ATTR} & ``name=Alice Doe''\\\hline 215 $l_{dob}$ & \texttt{ATTR} & ``dob=1.3.1987'' \\\hline 216 \end{tabular} 217 \end{table} 218 where the labels are \textbf{random secret values} with high entropy. 219 \end{frame} 220 221 222 \begin{frame}{Publishing information} 223 Given a namespace $(x,P)$, we can treat labels as shared secrets in order to selectively disclose information. 224 225 %\setlength{\jot}{4.5pt} 226 \[ 227 \def\arraystretch{1.1} 228 \begin{blockarray}{r@{\;}l} 229 \begin{block}{r@{\;}l} 230 h &:= Hash(l_{attr},P) \\[\jot] 231 \end{block} 232 \pause 233 \\ 234 \begin{block}{\Left{\textbf{DHT key }}{\{}r@{\;}l} 235 q &:= H(hP) \\ 236 \end{block} 237 \pause 238 \\ 239 \begin{block}{\Left{\textbf{Encryption }}{\{}r@{\;}l} 240 k &:= HKDF(l_{attr},P) \\[\jot] 241 Record &:= Enc_k(Data) \\[\jot] 242 \end{block} 243 \pause 244 \\ 245 \begin{block}{\Left{\textbf{Signature }}{\{}r@{\;}l} 246 d &:= h\cdot x~mod~n \\[\jot] 247 Signature &= Sig_d(Record) \\[\jot] 248 \end{block} 249 \end{blockarray} 250 \] 251 \end{frame} 252 253 \begin{frame}{Authorizing access} 254 \centering 255 \includegraphics[width=1\textwidth]{Reclaim-3} 256 \end{frame} 257 258 259 \begin{frame}{Authorizing access} 260 \begin{table}[h] 261 \begin{tabular}{|c|c|c|} 262 \hline 263 Label & Record Type & Value \\\hline\hline 264 $l_{email}$ & \texttt{ATTR} & ``email=alice@doe.com''\\\hline 265 $l_{name}$ & \texttt{ATTR} & ``name=Alice Doe''\\\hline 266 $l_{dob}$ & \texttt{ATTR} & ``dob=1.3.1987'' \\\hline\pause 267 \multirow{2}{*}{\textbf{$l_{ticket}$}} & \texttt{ATTR\_REF} & $l_{email}$\\\cline{2-3} 268 & \texttt{ATTR\_REF} & $l_{dob}$\\\hline 269 \end{tabular} 270 \end{table} 271 \begin{itemize} 272 \item For each authorized party, the user publishes reference records under the secret label \textbf{$l_{ticket}$} 273 \item \textbf{$l_{ticket}$} can be shared with a third party in order to authorize access to email and dob. 274 \item Indirection enables us to revoke tickets. 275 \end{itemize} 276 \end{frame} 277 278 279 %\begin{frame}{Transfer keys} 280 % \centering 281 % \includegraphics[width=1\textwidth]{Reclaim-3} 282 %\end{frame} 283 284 285 \begin{frame}{Retrieve and decrypt attributes} 286 \centering 287 \includegraphics[width=1\textwidth]{Reclaim-4} 288 \end{frame} 289 290 \begin{frame}{Retrieving information} 291 Given an identity with public key $P$, we can retrieve references using \textbf{$l_{ticket}$} and subsequently identity info from GNS. 292 293 %\setlength{\jot}{4.5pt} 294 \[ 295 \def\arraystretch{1.1} 296 \begin{blockarray}{r@{\;}l} 297 \begin{block}{r@{\;}l} 298 h &:= Hash(l_{ticket},P) \\[\jot] 299 \end{block} 300 \pause 301 \\ 302 \begin{block}{\Left{\textbf{DHT key }}{\{}r@{\;}l} 303 q &:= H(hP) \\[\jot] 304 \end{block} 305 \pause 306 \\ 307 \begin{block}{\Left{\textbf{Record decryption }}{\{}r@{\;}l} 308 k &:= HKDF(l_{ticket},P) \\[\jot] 309 Data &:= Dec_k(Record) \\[\jot] 310 \end{block} 311 \end{blockarray} 312 \] 313 \end{frame} 314 315 \begin{frame}{Integration} 316 \begin{itemize} 317 \item re:claimID implements the OpenID Connect protocol. 318 \item For websites, it is just like integrating any other IdP (e.g. Google) 319 \item For users, the authorization flow looks just like with anny other OpenID Connect IdP. 320 \end{itemize} 321 \end{frame} 322 323 \begin{frame}{} 324 \centering 325 Demo 326 \end{frame} 327 328 329 \section{Who sais that, anyway?} 330 331 \begin{frame}{Attestations} 332 \centering 333 \begin{itemize} 334 \item Sometimes we need third party assurances to establish trust in identities. 335 \pause 336 \item Currently, IdPs such as Facebook/Google implicitly provide this assurance (i.e. vouch for the truthfulness and correctness). 337 \pause 338 \item Claim: Those parties are not actually the authorities over (most of) your personal data! Examples: 339 \begin{itemize} 340 \item Real name (State/Self-asserted/Other organization) 341 \item Phone number (Provider) 342 \item Address (State/Self-asserted) 343 \item Citizenship (State) 344 \item Age (State) 345 \item Email address (Mail provider) 346 \end{itemize} 347 \end{itemize} 348 \end{frame} 349 350 \begin{frame}{Attestations} 351 \centering 352 \begin{itemize} 353 \item What users actually need is a \textbf{collection of credentials}. 354 \pause 355 \item Those credentials are issued by a \textbf{variety of different entities}, including the user. 356 \pause 357 \item Credentials are ideally \textbf{preserving the privacy} of the individual, e.g. using zero-knowledge proofs. 358 \pause 359 \item Those ideas are already finding their way into standards: 360 \begin{itemize} 361 \item W3C: ``Verifiable Credentials'' 362 \item OpenID Connect: ``Aggregated Claims'' \uncover<5->{$\Leftarrow$ \textbf{working on it}.} 363 \end{itemize} 364 \end{itemize} 365 \end{frame} 366 367 368 %\begin{frame}{Authorization protocol and key transfer} 369 % \centering 370 % \begin{center} 371 % \begin{minipage}[m]{0.8\textwidth} 372 % \centering 373 % \includegraphics[trim={6cm 6.5cm 6cm 7cm},clip,width=0.5\textwidth]{reclaim_small} 374 % \vspace{0.5cm} 375 % \end{minipage} 376 % 377 % \begin{minipage}[m]{0.8\textwidth} 378 % \centering 379 % %{\Huge \color{fhggreen} $\heartsuit$} 380 % \includegraphics[clip,width=1.5cm]{handshake} 381 % \end{minipage} 382 % 383 % \begin{minipage}[m]{0.7\textwidth} 384 % \centering 385 % \vspace{0.5cm} 386 % %\includegraphics[width=0.2\textwidth]{openid_logo} 387 % \huge{OpenID Connect} 388 % \end{minipage} 389 % \end{center} 390 %\end{frame} 391 392 \section{Using re:claimID} 393 \begin{frame}{Installing re:claimID} 394 \begin{enumerate} 395 \item Install the webextension: \url{https://addons.mozilla.org/firefox/addon/reclaimid/} 396 \item \uncover<2->{Install \textbf{GNUnet} $>=0.11.6$} 397 \end{enumerate} 398 \pause 399 \uncover<1-2>{ 400 \begin{center} 401 \includegraphics[height=0.4\textwidth]{iu.jpg} 402 \end{center} 403 } 404 \end{frame} 405 406 \begin{frame}{Installing re:claimID} 407 Get help installing GNUnet and/or re:claimID at our workshop today! 408 \begin{itemize} 409 \item Right after this. 410 \item Time: 12:15 PM -- 15:00 PM 411 \item Location: Seminarraum 412 \end{itemize} 413 \end{frame} 414 415 416 \section{Summary} 417 418 \begin{frame}{Status} 419 \begin{itemize} 420 \item Get it at \url{https://reclaim-identity.io}. 421 \item Demo websites exist: 422 \begin{itemize} 423 \item \url{https://demo.reclaim-identity.io} 424 \item \url{https://eusec.clouditor.io} 425 \end{itemize} 426 \item Roadmap: 427 \begin{itemize} 428 \item User-friendly packaging (of GNUnet) 429 \item Ship GNUnet inside browser plugin (yes, that might even work). 430 \item ``1.0'' by end of 2019 431 \end{itemize} 432 \end{itemize} 433 \begin{center} 434 \end{center} 435 \end{frame} 436 437 438 \begin{frame} 439 \begin{center} 440 Questions?\\ 441 \vspace{2cm} 442 \url{https://reclaim-identity.io}\\ 443 \url{https://gnunet.org}\\ 444 \vspace{1em} 445 {\tiny 446 \texttt{schanzen@aisec.fraunhofer.de}\\ 447 \texttt{6665~201E~A925~7CC6~8FDE~77E8~8433~5131~EA3D~ABF0}\\ 448 -- or --\\ 449 \texttt{schanzen@gnunet.org}\\ 450 \texttt{3D11~063C~10F9~8D14~BD24~D147~0B09~98EF~86F5~9B6A}\\ 451 } 452 \end{center} 453 \end{frame} 454 455 \appendix 456 457 \begin{frame}{References} 458 \centering 459 {\small 460 \begin{enumerate} 461 \item {Matthias Wachs, Martin Schanzenbach and Christian Grothoff. {\em A Censorship-Resistant, Privacy-Enhancing and Fully Decentralized Name System}. {\bf 13th Intern 462 ational Conference on Cryptology and Network Security}, 2014.} 463 \item {Martin Schanzenbach, Georg Bramm, Julian Schütte. {\em reclaimID: Secure, Self-Sovereign Identities Using Name Systems and Attribute-Based Encryption}. {\bf 17th 464 IEEE International Conference On Trust, Security And Privacy In Computing And Communications (TrustCom)}, 2018} 465 \end{enumerate} 466 } 467 \end{frame} 468 469 470 471 %\begin{frame}{NameID} 472 % NameID: 473 % \begin{center} 474 % \includegraphics[width=1\textwidth]{nameid} 475 % \end{center} 476 %\end{frame} 477 % 478 %\begin{frame}{Performance} 479 % Impact of name system caches on successive attribute resolution. 480 % \begin{center} 481 % \includegraphics[width=0.7\textwidth]{attr_perf_plot_100} 482 % \end{center} 483 % 484 %\end{frame} 485 % 486 %\begin{frame}{Performance} 487 % Attribute resolution performance depending on network size. 488 % \begin{center} 489 % \includegraphics[width=0.8\textwidth]{perf_attrs.png} 490 % \end{center} 491 % 492 %\end{frame} 493 % 494 495 \end{document}