Skip to content

pzkt/abe-scripts

Repository files navigation

abe-scripts

A collection of scripts to help me with my Attribute-Based Encryption (ABE) paper.
The code is split into different folders for each individual sub-application.

abe-scheme

This folder contains the conceptual system implementation, split into client, database, and authority.
Benchmark results for encoding schemes, upload / download times, and space overhead can be found in the results folder.

For the system to work, the key authority, the database and postgreSQL must be running in the background for a client to be able to upload and download files. (Technically, the key authority only has to be online for private key exchange, which is a desirable feature for key authorities) Each application can be run by executing go run . in each relevant folder.

For PostgreSQL, the Docker image can be used (docker pull postgres) with the following command:

docker run --name postgres-container -e POSTGRES_PASSWORD=pwd -p 5432:5432 -d postgres

scheme-benchmarking

This folder contains the code for benchmarking the large ABE libraries. The benchmarks cover setup, key generation, AND encryption, OR encryption, AND decryption, OR decryption and ciphertext size for the libraries Charm, GoFE, CIRCL, Rabe and OpenABE. Precomputed results can be found in the results folder.

The rust library Rabe and the go libraries GoFE and CIRCL should run without problems with the dependency versions defined in their respective configuration files. The Charm library does not work on the newest Python version, so downgrading to an older version (e.g. 3.7.5) is the most frictionless solution. OpenABE is quite difficult to set up, as the underlying math library has updated a considerable amount since OpenABE has stopped being maintained. The easiest way of running OpenABE is using a Docker image, such as this one by Lorenzo

plot-generator

This folder contains functions for generating pseudodata of variable length that mimics real-world data and can be used for the scheme and system benchmarks. Pseudodata generated by these functions will look something like this:

{
    "id": "18953729",
    "name": {
      "name_prefix": "",
      "first_name": "Gladyce",
      "last_name": "Eichmann"
    },
    "date_of_birth": "1946-02-04T15:29:57.197003575Z",
    "address": "314 South Groveport, San Bernardino, Wisconsin 41828",
    "phone": "6225754615",
    "email": "kenyonhaag@cartwright.biz",
    "insurance": "Humana",
    "emergency_contact": {
      "name": {
        "name_prefix": "",
        "first_name": "Wilhelmine",
        "last_name": "Labadie"
      },
      "phone": "5073005250",
      "email": "tiffanypowlowski@crooks.name",
      "address": "990 Port Portville, Henderson, New Hampshire 92329"
    },
    "created_date": "1926-07-04T22:06:58.092104116Z",
    "records": [
      {
        "patient_id": "18953729",
        "provider_id": "859335",
        "date": "2011-09-01T10:43:15.980530897Z",
        "notes": "Id veniam excepturi dolorum voluptatem iste magni.",
        "cancer_type": "Glioblastoma",
        "tumor_location": "Et non dolorem nesciunt.",
        "biomarkers": "Doloremque assumenda laboriosam debitis.",
        "treatment_plan": "Quo aliquam nulla at rerum provident quo ab repudiandae fuga itaque facere modi eveniet id sit quidem quod et.",
        "last_treatment_date": "1962-05-13T00:49:52.889744714Z"
      }
    ]
  }

fhe-testing

This folder contains tests in three different fully homomorphic encryption libraries. There are no rigorous benchmarking functions, but time recording for basic arithmetic and gate functions over encrypted data.

About

a collection of scripts to help me with my abe paper

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published