blob: b5a2b588af6fe1652c9cf855865cf5910139110b [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
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
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
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="//" rel="stylesheet">
<title>Apache Pirk (incubating)</title>
<script src=""></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/jquery.dataTables.min.js"></script>
<script src="/js/dataTables.bootstrap.js"></script>
// show location of canonical site if not currently on the canonical site
$(function() {
var host =;
if (typeof host !== 'undefined' && host !== '') {
// decorate menu with currently navigated page
$(function() {
$(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
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
ga('create', 'UA-81114308-1', 'auto');
ga('send', 'pageview');
<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>
<a href="/"><img id="nav-logo" alt="Apache Pirk" class="img-responsive" src="/images/pirkImage.png" width="150"/></a>
<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>
<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>
<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>
<li><a href=" ">Issue Tracker/JIRA <i class="fa fa-external-link"></i></a></li>
<li><a href="">Jenkins Builds <i class="fa fa-external-link"></i></a></li>
<li><a href="">Travis CI Builds <i class="fa fa-external-link"></i></a></li>
<li><a href=""> Pirk Github Mirror <i class="fa fa-external-link"></i></a></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="">Apache Homepage <i class="fa fa-external-link"></i></a></li>
<li><a href="">License <i class="fa fa-external-link"></i></a></li>
<li><a href="">Sponsorship <i class="fa fa-external-link"></i></a></li>
<li><a href="">Security <i class="fa fa-external-link"></i></a></li>
<li><a href="">Thanks <i class="fa fa-external-link"></i></a></li>
<li><a href="">Code of Conduct <i class="fa fa-external-link"></i></a></li>
<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">
<td><img src="/images/Twitter_logo_blue.png" alt="Twitter" style="height: 1em" /></td>
<td><a href="">@ApachePirk</a></td>
<td><img src="/images/GitHub-Mark-32px.png" alt="GitHub" style="height: 1em" /></td>
<td><a href="">apache / incubator-pirk</a></td>
<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=""><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 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>
<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="">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>
<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>
<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>
<li>Performing encrypted queries over their target datasets (using encrypted query vectors)</li>
<li>Forming the encrypted query results</li>
<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="">Apache Hadoop</a>, <a href="">Apache Spark</a>, and <a href="">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>
<p><a href=""><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="">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="">Apache Software Foundation</a>.</p>