{"id":28443968,"url":"https://github.com/maxirmx/lsabe-ma","last_synced_at":"2025-10-29T21:36:48.329Z","repository":{"id":213426211,"uuid":"362377643","full_name":"maxirmx/LSABE-MA","owner":"maxirmx","description":"Lightweight Searchable Encryption Protocol Multi Authority (LSABE-MA)","archived":false,"fork":false,"pushed_at":"2024-01-24T07:28:46.000Z","size":5253,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-06T08:09:17.994Z","etag":null,"topics":["encryption","searchable-encryption"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxirmx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-04-28T07:29:21.000Z","updated_at":"2025-05-12T15:07:59.000Z","dependencies_parsed_at":"2023-12-21T00:45:54.953Z","dependency_job_id":null,"html_url":"https://github.com/maxirmx/LSABE-MA","commit_stats":null,"previous_names":["maxirmx/lsabe-ma"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/maxirmx/LSABE-MA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FLSABE-MA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FLSABE-MA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FLSABE-MA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FLSABE-MA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxirmx","download_url":"https://codeload.github.com/maxirmx/LSABE-MA/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxirmx%2FLSABE-MA/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262608597,"owners_count":23336533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["encryption","searchable-encryption"],"created_at":"2025-06-06T08:09:18.538Z","updated_at":"2025-10-29T21:36:48.274Z","avatar_url":"https://github.com/maxirmx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LSABE-MA\n\nLightweight Searchable Encryption Protocol for Industrial Internet of Things - Multi Authority \nThis is an implementation of LSABE-MA protocol as described in https://ieeexplore.ieee.org/document/9158514.  \nLSABE-MA is based on [LSABE implementation](https://github.com/maxirmx/LSABE).\n\n## General information\n\nThis version employs single unified codebase to implement LSABE-MA client and LSABE-MA server.\nLSABE-MA server is implemented using [flask](https://flask.palletsprojects.com/en/2.0.x/quickstart) . Please install it with pip at the system where server will be running: ```pip install flask```\nLSABE-MA client is based on [requests module](https://docs.python-requests.org/en/master).  Please install it with pip at the system where client will be running: ```pip install requests```\n\n## The server\n### Functions\nThe server implements the following functions:\n1.\tStore – receive the cyphertext over REST API and store it to memory cash and local file storage\n2.\tSearch – receive the trapdoor and transformation key over REST API, apply trapdoor algorithm to all messages in the memory cash, apply transformation algorithm to all matching messages, return the list of partially description messages to the client\n3.\tClear-messages  – deletes all messages from memory cash and local file storage.\n4.\tGlobal-setup – receive MSK and PP over REST API and store them. Note:  server has encoded default MSK and PP that match client default MSK and PP. This call is optional.\n5.\tAuthority-setup – receive authority secret key, public key and attributes over REST API and store them. Note:  server has encoded default values for authority with id=1 that match client defaults. This call is optional.\n6.\tOn startup the server loads cyphertexts from local file storage to memory cash.\n\nThe server is implemented using LSABE_MA and LSABE_AUTH classes delivered earlier.  Some additional features were added to serialization and deserialization, but the core was left intact.\n\n### Running\nIn the package root folder LSABE-MA-2 run the following commands:\n```\nexport FLASK_APP=lsabe_ma_srv\nexport FLASK_RUN_PORT=5000\t\t This is the port the server will be using\t\nexport FLASK_RUN_HOST=0.0.0.0\t\t This means ‘bind to all network interfaces’\npython -m flask run\n```\n\nPlease ensure that security settings, firewall, antivirus do not block network traffic.  It is also possible to run client and server on the same computer using local host interface:\n```\nexport FLASK_APP=lsabe_ma_srv\npython -m flask run\n```\nThis will bind server to default interface 127.0.0.1:5000\n\n## The client\n### Functions\nThe client is based on lsabe_ma application delivered earlier. Several methods are now accepting additional –url parameter.  If this parameter is provided, the application won’t use local storage but rather call the server over REST API.\nClient code includes default MSK, PP and authority secret key, public key and attributes for authority with id=1. They match default values for the server so initioal setup may be omitted.\n\n### Running\nSuggested initial testing sequence:\n```\npython -m lsabe_ma --keygen --authority-id 1 --sec-attr \"attribute-1\"  --GID \"user-1\"\npython -m lsabe_ma --encrypt --authority-id 1 --msg \"Searchable encryption is good\" --kwd Searchable encryption --url http://127.0.0.1:5000 \npython -m lsabe_ma --encrypt --authority-id 1 --msg \"This is unrelated message\" --kwd unrelated message --url http://127.0.0.1:5000 \npython -m lsabe_ma --search --authority-id 1 --GID \"user-1\" --kwd Searchable --url http://127.0.0.1:5000 \npython -m lsabe_ma --search --authority-id 1 --GID \"user-1\" --kwd ENCRYPTION --url http://127.0.0.1:5000\n```\nThe following call will execute bulk encryption of messages from the file 100.txt.  Each line shall contain comma-separated message text and keywords \n```\npython -m lsabe_ma –bulk-encrypt 100.txt --authority-id 1 --url http://127.0.0.1:5000 \n```\nPlease note that –url parameter must include protocol keyword (http)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxirmx%2Flsabe-ma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxirmx%2Flsabe-ma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxirmx%2Flsabe-ma/lists"}