Talek is a privacy-preserving messaging system. User communication is stored on untrusted systems using PIR.
A basic client (which is not resistant to traffic analysis!) can be found at
go get github.com/privacylab/talek/cli/talekclient
Talek uses a construct called topic handles. Topics represent a stream of messages from one author to a few readers. The author who creates a topic can provide a handle to it to allow others to "follow along". A longer description of the specific guarantees of a topic are provided in the academic paper linked below.
talekclient --config=talek.conf --create --topic=newhandle talekclient --config=talek.conf --topic=newhandle --write "Hello World" talekclient --config=talek.conf --topic=newhandle --share=readOnlyHandle talekclient --config=talek.conf --topic=readOnlyHandle --read
Pull requests are welcome! Please run all tests (see below) before submitting a PR.
Depending on which PIR implementation you use, you may need to install OpenCL / CUDA. Make sure you have the latest graphics drivers for your video card.
OpenCL on Ubuntu:
sudo apt-get install -y ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers clinfo sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so /usr/lib/x86_64-linux-gnu/libCL.so
OpenCL on macOS:
- OpenCL is included in the developer tools. See here
$ make get-tools
All tests should pass before submitting a pull request
$ make test
The GPU backings are not built by default. Changes to
pir/, where the
backing interface may be affected should ensure that code is tested with
go test -tags 'cuda,opencl' to include testing of all drivers.
Talek vendors all of its dependencies into the local
To add or update dependencies to the latest in
vendor/, use the
govendor tool, as follows:
govendor fetch github.com/foo/bar
To see a list and status of dependencies:
Join the mailing list: https://lists.riseup.net/www/info/talek
Talek: a Private Publish-Subscribe Protocol.
Raymond Cheng, Will Scott, Bryan Parno, Irene Zhang, Arvind Krishnamurthy, Tom Anderson.
In Submission. 2017.