<!DOCTYPE html>
<html lang="en">
<head>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/bootstrap-theme.min.css" rel="stylesheet">
<link href="/css/dataTables.bootstrap.css" rel="stylesheet">
<link href="/css/pirk.css" rel="stylesheet" type="text/css">
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">

<title>Apache Pirk (incubating)</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/jquery.dataTables.min.js"></script>
<script src="/js/dataTables.bootstrap.js"></script>
<script>
  // show location of canonical site if not currently on the canonical site
  $(function() {
    var host = window.location.host;
    if (typeof host !== 'undefined' && host !== 'pirk.incubator.apache.org') {
      $('#non-canonical').show();
    }
  });

  
  // decorate menu with currently navigated page
  $(function() {
    $("#nav_index").addClass("active");
  });
  

  $(function() {
    // decorate section headers with anchors
    return $("h2, h3, h4, h5, h6").each(function(i, el) {
      var $el, icon, id;
      $el = $(el);
      id = $el.attr('id');
      icon = '<i class="fa fa-link"></i>';
      if (id) {
        return $el.append($("<a />").addClass("header-link").attr("href", "#" + id).html(icon));
      }
    });
  });

  // configure Google Analytics
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-81114308-1', 'auto');
  ga('send', 'pageview');
  
</script>
</head>
<body style="padding-top: 100px">

  <nav class="navbar navbar-default navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a href="/"><img id="nav-logo" alt="Apache Pirk" class="img-responsive" src="/images/pirkImage.png" width="150"/></a>
    </div>
    <div class="collapse navbar-collapse" id="navbar-items">
      <ul class="nav navbar-nav">
        <li class="nav-link"><a href="/downloads">Download</a></li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_users"><a href="/for_users">For Users</a></li>
          <li id="nav_developers"><a href="/for_developers">For Developers</a></li>
          <li id="nav_developers"><a href="/cloud_instructions">Cloud instructions</a></li>
          <li id="nav_papers"><a href="/papers">Papers &amp Presentations</a></li>
          <li class="nav_faq"><a href="/faq">FAQ</a></li>
          <li class="divider"></li>
           <li><a href="/javadocs">Javadocs</a></li>     
        </ul>
        </li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_getinvolvedpirk"><a href="/get_involved_pirk">Get Involved</a></li>
          <li id="nav_listspirk"><a href="/mailing_list_pirk">Mailing Lists</a></li>
          <li id="nav_peoplepirk"><a href="/people_pirk">People</a></li>
       	</ul>
        </li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Development<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_releasing"><a href="/how_to_contribute">How to Contribute</a></li>
          <li id="nav_releasing"><a href="/releasing">Making Releases</a></li>
          <li id="nav_nav_verify_release"><a href="/verifying_releases">Verifying Releases</a></li>
          <li id="nav_update_website"><a href="/website_updates">Website Updates</a></li>
          <hr>
          <li><a href="https://issues.apache.org/jira/browse/PIRK ">Issue Tracker/JIRA <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://builds.apache.org/job/pirk/">Jenkins Builds <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://travis-ci.org/apache/incubator-pirk">Travis CI Builds <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://github.com/apache/incubator-pirk"> Pirk Github Mirror <i class="fa fa-external-link"></i></a></li>
        </ul>
        </li>
        <li class="nav-link"><a href="/roadmap">Roadmap</a></li>
       <ul class="nav navbar-nav navbar-right">
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li><a href="https://www.apache.org">Apache Homepage <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/security">Security <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/thanks">Thanks <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct <i class="fa fa-external-link"></i></a></li>
        </ul>
        </li>
        </ul>
        </ul>
    </div> 
  </div>  
</nav>


  <div class="container">
    <div class="row">
      <div class="col-md-12">
        <div id="content">
          
          <div class="row">
  <div class="col-md-2" id="sidebar">
  <br />
    
<table class="table" id="sociallinks">
  <tbody>
    <tr>
      <td><img src="/images/Twitter_logo_blue.png" alt="Twitter" style="height: 1em" /></td>
      <td><a href="https://twitter.com/apachepirk">@ApachePirk</a></td>
    </tr>
    <tr>
      <td><img src="/images/GitHub-Mark-32px.png" alt="GitHub" style="height: 1em" /></td>
      <td><a href="https://github.com/apache/incubator-pirk">apache / incubator-pirk</a></td>
    </tr>
  </tbody>
</table>


    <hr />
    <a href="/news"> News</a>
    <br />
    <br />
    
<p><em>October 9, 2016</em></p>

<p><strong>Apache Pirk 0.2.0-incubating released</strong></p>

<p><em>August 29, 2016</em></p>

<p><strong>Apache Pirk 0.1.0-incubating released</strong></p>


    <hr />
    <br />
    <a id="apache_incubator_logo" href="http://incubator.apache.org/"><img alt="Apache Incubator" class="img-responsive" src="/images/apache-incubator-logo.png" /></a>
    <br />
    <p style="text-align:center"><img src="/images/tapir.png" width="60" /></p>
  </div>
  <div class="col-md-8 col-md-offset-1">
  <br />
  <img alt="Apache Pirk" class="img-responsive" src="/images/pirkImage.png" width="500" style="margin:0 auto;" />
  <br />
  <br />
    <div class="jumbotron" style="text-align:center">
      <font size="5"><b>Apache Pirk (incubating) is a framework for scalable <br /> Private Information Retrieval (PIR).</b></font>
      <br />
      <br />
       <a class="btn btn-success" href="downloads/" role="button"><span class="glyphicon glyphicon-download"></span> Get Pirk</a>
    </div>
  </div>
</div>

<h2 id="what-is-pirk">What is Pirk?</h2>

<p>Pirk is a framework for scalable Private Information Retrieval (PIR). The goal of Pirk is to provide a landing place for robust, scalable, and practical implementations of PIR algorithms.</p>

<h2 id="pirk-basics">Pirk Basics</h2>

<p><a href="https://en.wikipedia.org/wiki/Private_information_retrieval">Private Information Retrieval</a> (PIR) enables a user/entity to privately and securely obtain information from a dataset, to which they have been granted access, without revealing, to the dataset owner or to an observer, any information regarding the questions asked or the results obtained. Employing homomorphic encryption techniques, PIR enables datasets to remain resident in their native locations while giving the ability to query the datasets with sensitive terms.</p>

<p>There are two parties in a PIR transaction - the Querier, the party asking encrypted questions, and the Responder, the party holding the target data and answering encrypted questions (performing encrypted queries).</p>

<p>Pirk is centered around the <a href="/for_users#querier">Querier</a> and the <a href="/for_users#responder">Responder</a>.</p>

<p>In Pirk, the Querier is responsible for the following:</p>

<ul>
  <li>Generating the encrypted query vectors (representing encrypted questions)</li>
  <li>Generating the necessary decryption items for each query vector</li>
  <li>Decrypting encrypted query results obtained from the Responder</li>
</ul>

<p>Once the Querier generates an encrypted query, it must be sent to the Responder.</p>

<p>In Pirk, the Responder is responsible for the following:</p>

<ul>
  <li>Performing encrypted queries over their target datasets (using encrypted query vectors)</li>
  <li>Forming the encrypted query results</li>
</ul>

<p>The encrypted query results must be sent from the Responder back to the Querier for decryption.</p>

<p>Pirk employs generic <a href="/for_users#data-and-query-schemas">data and query schemas</a>, specified via XML files, that are shared between the Querier and Responder to enable flexible and varied data and query types.</p>

<h2 id="pirk-framework-and-algorithms">Pirk Framework and Algorithms</h2>

<p>The Pirk framework is centered around the Querier and Responder; key supporting elements include generic query and data schemas, encryption/decryption, query/response, and in-memory and distributed testing components.</p>

<p>Pirk is seeded with the Wideskies PIR algorithm which employs <a href="/papers/1999_asiacrypt_paillier_paper.pdf">Paillier homomorphic encryption</a>; the Wideskies white paper can be found <a href="/papers/wideskies_paper.pdf">here</a>. More information regarding the origin of Apache Pirk can be found <a href="/pirk_origin">here</a>.</p>

<h2 id="getting-started">Getting Started</h2>

<p>Pirk can be downloaded <a href="/downloads">here</a></p>

<p>Pirk is written in Java and uses a Maven build system. Dependencies can be found in the pom.xml file and include <a href="http://hadoop.apache.org/">Apache Hadoop</a>, <a href="http://spark.apache.org/">Apache Spark</a>,  and <a href="https://github.com/elastic/elasticsearch">Elasticsearch</a>. Currently, Pirk may be utilized in a distributed Hadoop/MapReduce or Spark framework as well as in standalone mode.</p>

<p>Pirk is seeded with the Wideskies PIR algorithm; please check out the <a href="/papers/wideskies_paper.pdf">white paper</a></p>

<p>If you are a User, please check out the <a href="/for_users">For Users</a> section.</p>

<p>If you are a Developer, please check out the <a href="/for_developers">For Developers</a> section.</p>

<h2 id="community">Community</h2>

<p>Please check out our <a href="/get_involved_pirk">community</a> section.</p>

<h2 id="roadmap">Roadmap</h2>

<p>Please check out our <a href="/roadmap">Roadmap</a>.</p>

<h2 id="disclaimer">Disclaimer</h2>

<p>Apache Pirk (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the name of Apache TLP sponsor. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p>


        </div>

        
<footer>

  <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p>

  <p>Copyright © 2016-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>

  <p>Apache Pirk (incubating), Apache, the Apache Pirk logo, and the Apache feather logo, are trademarks of the <a href="https://www.apache.org">Apache Software Foundation</a>.</p>

</footer>


      </div>
    </div>
  </div>
</body>
</html>
