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.
Private Information Retrieval (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.
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).
Pirk is centered around the [Querier]({{ site.baseurl }}/for_users#querier) and the [Responder]({{ site.baseurl }}/for_users#responder).
In Pirk, the Querier is responsible for the following:
Once the Querier generates an encrypted query, it must be sent to the Responder.
In Pirk, the Responder is responsible for the following:
The encrypted query results must be sent from the Responder back to the Querier for decryption.
Pirk employs generic [data and query schemas]({{ site.baseurl }}/for_users#data-and-query-schemas), specified via XML files, that are shared between the Querier and Responder to enable flexible and varied data and query types.
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.
Pirk is seeded with the Wideskies PIR algorithm which employs [Paillier homomorphic encryption]({{ site.baseurl }}/papers/1999_asiacrypt_paillier_paper.pdf); the Wideskies white paper can be found [here]({{ site.baseurl }}/papers/wideskies_paper.pdf). More information regarding the origin of Apache Pirk can be found [here]({{ site.baseurl }}/pirk_origin).
Pirk can be downloaded [here]({{ site.baseurl }}/downloads)
Pirk is written in Java and uses a Maven build system. Dependencies can be found in the pom.xml file and include Apache Hadoop, Apache Spark, and Elasticsearch. Currently, Pirk may be utilized in a distributed Hadoop/MapReduce or Spark framework as well as in standalone mode.
Pirk is seeded with the Wideskies PIR algorithm; please check out the [white paper]({{ site.baseurl }}/papers/wideskies_paper.pdf)
If you are a User, please check out the [For Users]({{ site.baseurl }}/for_users) section.
If you are a Developer, please check out the [For Developers]({{ site.baseurl }}/for_developers) section.
Please check out our [community]({{ site.baseurl }}/get_involved_pirk) section.
Please check out our [Roadmap]({{ site.baseurl }}/roadmap).
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.