Coder Social home page Coder Social logo

gameoflifemeetspyseal's Introduction

GameOfLifeMeetsPySEAL

Alt Text

This is a implementation of Cornway's Game of Life in python using homomorphic encryption with the PySEAL library (https://github.com/Lab41/PySEAL). PySEAL is a python wrapper of the Simple Encrypted Arithmetic Library (SEAL) developed by Microsoft. The scope of this project includes a GUI using tkinter in python and a (simulated) server that is performing the computational operations.

Blog Post: https://www.patrick-tu.com/blog-backend/2018/7/30/homomorphic-encryption-conways-game-of-life-meets-the-simple-encrypted-arithmetic-library-seal

Dependencies

Docker

In order to build the python wrapper of the C++ library it needs to be dockerized. Hence, docker needs to be installed. Docker can be found here: https://docs.docker.com/install/

XQuartz (Just needed for MacOS)

To run GUI applications using Docker for Mac, it is neccessary to install XQuartz and later execute the start commands in the XQuartz terminal. The installation guide can be found here: https://www.xquartz.org/

(For Ubuntu this is not necessary)

Install

  • Clone repository

Run the Application

There are shell scripts that are used to run the application. Execute these to run the application:

  1. Execute the build.sh script to build the image from the Dockerfile. This also builds the Python wrapper for the SEAL.
  2. Execute therun.sh script to run a container derived from the previously built image and allow the GUI to connect to the host’s display. This script consists of two parts as different solutions were needed for macOS and Ubuntu 18.04.
  3. (optionally) Execute the debug.sh script to copy the log files of the server and the client from the container to the host. This can be used for debugging.

gameoflifemeetspyseal's People

Contributors

patricktu2 avatar

Stargazers

 avatar Steven avatar Israel Zúñiga de la Mora avatar Luzian Serafin avatar

Watchers

Steven avatar

Forkers

meghnabotcha

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.