EpidOverview.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <!-- HTML header for doxygen 1.8.10-->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  6. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  7. <meta name="generator" content="Doxygen 1.8.11"/>
  8. <title>Intel&reg; Enhanced Privacy ID SDK: Introduction to the Intel&reg; EPID Scheme</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="resize.js"></script>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript">
  17. $(document).ready(initResizable);
  18. $(window).load(resizeHeight);
  19. </script>
  20. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  21. <link href="epidstyle.css" rel="stylesheet" type="text/css"/>
  22. </head>
  23. <body>
  24. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  25. <div id="titlearea">
  26. <table cellspacing="0" cellpadding="0">
  27. <tbody>
  28. <tr style="height: 56px;">
  29. <td id="projectalign" style="padding-left: 0.5em;">
  30. <div id="projectname"><a
  31. onclick="storeLink('index.html')"
  32. id="projectlink"
  33. class="index.html"
  34. href="index.html">Intel&reg; Enhanced Privacy ID SDK</a>
  35. &#160;<span id="projectnumber">3.0.0</span>
  36. </div>
  37. </td>
  38. </tr>
  39. </tbody>
  40. </table>
  41. </div>
  42. <!-- end header part -->
  43. <!-- Generated by Doxygen 1.8.11 -->
  44. </div><!-- top -->
  45. <div id="side-nav" class="ui-resizable side-nav-resizable">
  46. <div id="nav-tree">
  47. <div id="nav-tree-contents">
  48. <div id="nav-sync" class="sync"></div>
  49. </div>
  50. </div>
  51. <div id="splitbar" style="-moz-user-select:none;"
  52. class="ui-resizable-handle">
  53. </div>
  54. </div>
  55. <script type="text/javascript">
  56. $(document).ready(function(){initNavTree('EpidOverview.html','');});
  57. </script>
  58. <div id="doc-content">
  59. <div class="header">
  60. <div class="headertitle">
  61. <div class="title">Introduction to the Intel&reg; EPID Scheme </div> </div>
  62. </div><!--header-->
  63. <div class="contents">
  64. <div class="toc"><h3>Table of Contents</h3>
  65. <ul><li class="level1"><a href="#EpidOverview_Roles">Roles</a><ul><li class="level2"><a href="#EpidOverview_Issuers">Issuers</a></li>
  66. <li class="level2"><a href="#EpidOverview_Members">Members</a></li>
  67. <li class="level2"><a href="#EpidOverview_Verifiers">Verifiers</a></li>
  68. </ul>
  69. </li>
  70. <li class="level1"><a href="#EpidOverview_Groups">Groups</a></li>
  71. <li class="level1"><a href="#EpidOverview_Keys">Keys</a><ul><li class="level2"><a href="#EpidOverview_Group_public_key">Group Public Key</a></li>
  72. <li class="level2"><a href="#EpidOverview_Issuing_private_key">Issuing Private Key</a></li>
  73. <li class="level2"><a href="#EpidOverview_Member_private_key">Member Private Key</a></li>
  74. </ul>
  75. </li>
  76. <li class="level1"><a href="#EpidOverview_Entity_interaction">Member and Verifier Interaction</a></li>
  77. </ul>
  78. </div>
  79. <div class="textblock"><p>Intel&reg; EPID is a cryptographic protocol which enables the remote authentication of a trusted platform whilst preserving the user's privacy.</p>
  80. <h1><a class="anchor" id="EpidOverview_Roles"></a>
  81. Roles</h1>
  82. <p>In the Intel&reg; EPID scheme, there are three roles: issuers, members, and verifiers.</p>
  83. <p>The entities in these roles interact with each other in such a way that a member can prove to a verifier that it is a trusted member of a group without disclosing the identity of the member. Groups are created and managed by the issuer.</p>
  84. <div class="image">
  85. <img src="epid_diagram_high_level_use_case.png" alt="epid_diagram_high_level_use_case.png"/>
  86. </div>
  87. <h2><a class="anchor" id="EpidOverview_Issuers"></a>
  88. Issuers</h2>
  89. <p>The issuer is responsible for managing group membership. Issuer functionality is not included in the SDK.</p>
  90. <p>The issuer manages groups by doing the following:</p>
  91. <ul>
  92. <li>Creates groups by generating one issuing private key and one group certificate for each group. The group certificate contains the group public key.</li>
  93. <li>Creates group members by generating unique Intel&reg; EPID member private keys through bulk provisioning. Member private keys are created from the issuing private key for the group.</li>
  94. <li>Manages requests from prospective members to join existing groups by using the join protocol.</li>
  95. <li>Creates and maintains signature based revocation lists and private key based revocation lists. These lists of members no longer in good standing allow members to be dropped from a group.</li>
  96. <li>Creates and maintains group revocation lists.</li>
  97. <li>Makes group public keys and revocation lists available to verifiers.</li>
  98. </ul>
  99. <div class="image">
  100. <img src="epid_diagram_issuer_high_level.png" alt="epid_diagram_issuer_high_level.png"/>
  101. </div>
  102. <h2><a class="anchor" id="EpidOverview_Members"></a>
  103. Members</h2>
  104. <p>The member is the entity that attempts to anonymously prove its group membership to the verifier.</p>
  105. <ul>
  106. <li>Members are authorized by the issuer as part of a group.</li>
  107. <li>Each group member has a unique Intel&reg; EPID private key, which corresponds to the group.</li>
  108. <li>The member uses its member private key to sign a message to prove group membership to the verifier without revealing the identity of the member.</li>
  109. </ul>
  110. <div class="image">
  111. <img src="epid_diagram_member_high_level.png" alt="epid_diagram_member_high_level.png"/>
  112. </div>
  113. <h2><a class="anchor" id="EpidOverview_Verifiers"></a>
  114. Verifiers</h2>
  115. <p>The verifier checks an Intel(R) EPID signature to establish whether it was signed by an entity or device that is a member in good standing.</p>
  116. <p>The verifier acts on behalf of a party that needs to know it is communicating with a trusted device. Verifiers obtain group certificates and revocation lists from issuers and negotiate details of signature protocol with members.</p>
  117. <p>A verifier can do the following:</p>
  118. <ul>
  119. <li>Confirm a member is in fact a member of a given group in good standing.</li>
  120. <li>Obtain group certificates and revocation lists from issuers.</li>
  121. <li>Negotiate details of signature protocol with members.</li>
  122. <li>Manage a private list of revoked members, also called the verifier blacklist.</li>
  123. </ul>
  124. <div class="image">
  125. <img src="epid_diagram_verifier_high_level.png" alt="epid_diagram_verifier_high_level.png"/>
  126. </div>
  127. <h1><a class="anchor" id="EpidOverview_Groups"></a>
  128. Groups</h1>
  129. <p>An Intel&reg; EPID group represents a set of trusted entities called members. Issuers create groups and manage group membership. For each group, the issuer creates a group public key simultaneously with the corresponding issuing private key. The issuer uses the issuing private key to create unique member private keys for each group member, and makes the group public key available to verifiers.</p>
  130. <p>All groups have the following:</p>
  131. <ul>
  132. <li>Group public key, which corresponds to the issuing private key kept by the issuer</li>
  133. <li>Signature based revocation list</li>
  134. <li>Private key based revocation list</li>
  135. <li>Member private keys, generated from the issuing private key</li>
  136. </ul>
  137. <p>If a signature based revocation list or private key based revocation list does not exist, it is assumed to be empty.</p>
  138. <h1><a class="anchor" id="EpidOverview_Keys"></a>
  139. Keys</h1>
  140. <p>The Intel&reg; EPID scheme works with three types of keys: the group public key, the issuing private key, and the member private key. A group public key corresponds to the unique member private keys that are part of the group. Member private keys are generated from the issuing private key.</p>
  141. <p>Additionally, in the Intel&reg; EPID scheme, a private key can be revoked given a signature created by that key, even if the key itself is still unknown. Group membership can be revoked and entire groups can be revoked. For more information on revocation, refer to <a class="el" href="Revocation.html">In-Depth Explanation of Revocation</a>.</p>
  142. <h2><a class="anchor" id="EpidOverview_Group_public_key"></a>
  143. Group Public Key</h2>
  144. <p>The group public key is the key used by the verifier to confirm that a member belongs to a group in good standing. Each member private key in a group is associated with the group's public key.</p>
  145. <p>When a group is created, the group public key and the issuing private key are simultaneously generated by the issuer. The verifier obtains the group public key from the issuer.</p>
  146. <h2><a class="anchor" id="EpidOverview_Issuing_private_key"></a>
  147. Issuing Private Key</h2>
  148. <p>The issuing private key is the key used by the issuer to generate unique private keys for each member of a given group. For every group public key, there is a corresponding issuing private key. The issuing private key remains with the issuer and is kept private.</p>
  149. <h2><a class="anchor" id="EpidOverview_Member_private_key"></a>
  150. Member Private Key</h2>
  151. <p>The member private key is the key used by the member to digitally sign a message when attempting to prove to the verifier that the member belongs to the group and is in good standing.</p>
  152. <p>Unique member private keys are generated by the issuer for each member of a given group. The same group public key corresponds to each member private key in the group.</p>
  153. <h1><a class="anchor" id="EpidOverview_Entity_interaction"></a>
  154. Member and Verifier Interaction</h1>
  155. <p>Each Intel&reg; EPID member uses its Intel&reg; EPID private key to digitally sign a message. The resulting signature is called an Intel&reg; EPID signature.</p>
  156. <p>The Intel&reg; EPID verifier uses the group public key to verify the correctness of an Intel&reg; EPID signature, i.e., to verify that the signature was indeed created by a member with a valid Intel&reg; EPID private key.</p>
  157. <p>However, the Intel&reg; EPID signature does not convey any information about which unique private key was used to create the signature.</p>
  158. <div class="image">
  159. <img src="epid_diagram_high_level_interaction.png" alt="epid_diagram_high_level_interaction.png"/>
  160. </div>
  161. </div></div><!-- contents -->
  162. </div><!-- doc-content -->
  163. <!-- HTML footer for doxygen 1.8.10-->
  164. <!-- start footer part -->
  165. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  166. <ul>
  167. <li class="footer">
  168. &copy; 2016 Intel Corporation
  169. </li>
  170. </ul>
  171. </div>
  172. </body>
  173. </html>