xtrace_sdk.crypto.paillier_client

Classes

PaillierClient

This is an implementation of paillier cryptography system optimized for caculating hamming distance between

Module Contents

class xtrace_sdk.crypto.paillier_client.PaillierClient(embed_len=512, key_len=1024, skip_key_gen=False)

Bases: xtrace_sdk.crypto.hamming_client_base.HammingClientBase

This is an implementation of paillier cryptography system optimized for caculating hamming distance between two binary vectors.

Parameters:
  • embed_len (int)

  • key_len (int)

  • skip_key_gen (bool)

chunk_len = 2048
key_len = 1024
embed_len = 512
stringify_pk()

stringify public key for networking/storage purpose

Returns:

stringified public key

Return type:

str

stringify_sk()

stringify secret key for networking/storage purpose

Returns:

stringified secret key

Return type:

str

stringify_config()

stringify crypto context for networking/storage purpose

Returns:

stringified crypto context

Return type:

str

load_stringified_keys(pk, sk)

load stringified keys

Parameters:
  • str_keys (str) – stringified keys

  • pk (str)

  • sk (str)

Return type:

None

load_config(config)

load crypto context from a json string

Parameters:
  • context (str) – the json string containing crypto context

  • config (dict)

Return type:

None

id2power(id_)

helper: return chunk id & corresponding power of 2 given an id in the original padded arr

Parameters:
  • id (int) – id_ of an entry in an embedding vector

  • id_ (int)

Return type:

tuple[int, int]

encrypt(embd)

This function implements the encryption scheme on embedding vectors that needs to be run on client side.

Parameters:

embd (iterable[0,1]) – the embedding vector to be encrypted

Returns:

return a list of length chunk_num contaning PaillierEncryptedNumber

Return type:

PaillierEncryptedNumber

encode_hamming_client(ct1, ct2)

This function is called from client side.

Parameters:
  • embd1 (PaillierEncryptedNumber) – ciphertext of embedding 1

  • embd2 (PaillierEncryptedNumber) – ciphertext of embedding 2

  • ct1 (xtrace_sdk.utils.xtrace_types.PaillierEncryptedNumber)

  • ct2 (xtrace_sdk.utils.xtrace_types.PaillierEncryptedNumber)

Returns:

return a list of length chunk_num contaning large int

Return type:

PaillierEncryptedNumber

static encode_hamming_server(ct1, ct2, pk)

This function is called from server side.

Parameters:
  • ct1 (PaillierEncryptedNumber) – ciphertext of embedding 1

  • ct2 (PaillierEncryptedNumber) – ciphertext of embedding 2

  • pk (PaillierPublicKey) – public key

Returns:

return a list of length chunk_num contaning large int

Return type:

PaillierEncryptedNumber

decode_hamming_client(cipher)

Given a PaillierEncryptedNumber returned from server, calculate the hamming distance encoded

Parameters:

cipher (PaillierEncryptedNumber) – a cipher regturned by server which encodes the hamming distance between two encrypted embeddings

Returns:

hamming distance encoded by cipher

Return type:

int