Talek is a privacy-preserving messaging system. User communication is stored on untrusted systems using PIR.
A basic client 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.
NVIDIA CUDA:
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
- gometalinter for linting
$ 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.
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. 2020.
PDF