The go implementation of Aura, cite from the paper Practical Non-Interactive Searchable Encryption with Forward and Backward Privacy.
- Secure search over encrypted data
- Dynamic updates (insert and delete operations)
- Bloom filter optimization for deletion
- GGM tree based key derivation
- AES encryption for data protection
The system consists of three main components:
- SSE Client: Handles encryption, search token generation and update operations
- SSE Server: Stores encrypted index and performs search operations
- GGM Tree: Provides efficient key derivation mechanism
To Use AURA, make sure you have Go 1.21 or later installed, then run:
go get github.com/ZBCccc/Aura
- Initialize the Client: Set up the SSE client to handle encryption and token generation.
- Perform Searches: Use the client to generate search tokens and query the SSE server.
- Update Data: Insert or delete data dynamically using the client.
import "github.com/ZBCccc/Aura/Core/SSEClient"
// Create a new SSE client
client := sseclient.NewSSEClient()
// Insert a document
client.Update(util.Insert, "keyword", "document1")
// Search for documents
results := client.Search("keyword")
// Delete a document
client.Update(util.Delete, "keyword", "document1")