{"id":36811808,"url":"https://github.com/itslab-kyushu/sss","last_synced_at":"2026-01-12T13:49:51.165Z","repository":{"id":57524085,"uuid":"81308892","full_name":"itslab-kyushu/sss","owner":"itslab-kyushu","description":"A simple implementation of Shamir's Secret Sharing","archived":false,"fork":false,"pushed_at":"2018-03-02T06:43:12.000Z","size":714,"stargazers_count":8,"open_issues_count":4,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T15:49:53.617Z","etag":null,"topics":["go","golang","grpc","secret-sharing","security","storage"],"latest_commit_sha":null,"homepage":"https://itslab-kyushu.github.io/sss/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itslab-kyushu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-08T09:00:08.000Z","updated_at":"2023-08-27T17:14:26.000Z","dependencies_parsed_at":"2022-09-26T18:10:53.033Z","dependency_job_id":null,"html_url":"https://github.com/itslab-kyushu/sss","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/itslab-kyushu/sss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itslab-kyushu%2Fsss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itslab-kyushu%2Fsss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itslab-kyushu%2Fsss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itslab-kyushu%2Fsss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itslab-kyushu","download_url":"https://codeload.github.com/itslab-kyushu/sss/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itslab-kyushu%2Fsss/sbom","scorecard":{"id":497510,"data":{"date":"2025-08-11","repo":{"name":"github.com/itslab-kyushu/sss","commit":"194cf518fcf32b2162d42e0ef2e083d31f6898f1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: COPYING:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: dockerfile/Dockerfile:27: pin your Docker image by updating ubuntu:latest to ubuntu:latest@sha256:7c06e91f61fa88c08cc74f7e1b7c69ae24910d745357e0dfe1d2c0322aaf20f9","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.3.2 not signed: https://api.github.com/repos/itslab-kyushu/sss/releases/6053221","Warn: release artifact v0.3.1 not signed: https://api.github.com/repos/itslab-kyushu/sss/releases/5683556","Warn: release artifact v0.3.0 not signed: https://api.github.com/repos/itslab-kyushu/sss/releases/5449098","Warn: release artifact v0.2.0 not signed: https://api.github.com/repos/itslab-kyushu/sss/releases/5416349","Warn: release artifact v0.1.1 not signed: https://api.github.com/repos/itslab-kyushu/sss/releases/5399796","Warn: release artifact v0.3.2 does not have provenance: https://api.github.com/repos/itslab-kyushu/sss/releases/6053221","Warn: release artifact v0.3.1 does not have provenance: https://api.github.com/repos/itslab-kyushu/sss/releases/5683556","Warn: release artifact v0.3.0 does not have provenance: https://api.github.com/repos/itslab-kyushu/sss/releases/5449098","Warn: release artifact v0.2.0 does not have provenance: https://api.github.com/repos/itslab-kyushu/sss/releases/5416349","Warn: release artifact v0.1.1 does not have provenance: https://api.github.com/repos/itslab-kyushu/sss/releases/5399796"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T20:51:47.366Z","repository_id":57524085,"created_at":"2025-08-19T20:51:47.367Z","updated_at":"2025-08-19T20:51:47.367Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28339516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["go","golang","grpc","secret-sharing","security","storage"],"created_at":"2026-01-12T13:49:50.479Z","updated_at":"2026-01-12T13:49:51.157Z","avatar_url":"https://github.com/itslab-kyushu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shamir's Threshold Secret Sharing\n[![GPLv3](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://www.gnu.org/copyleft/gpl.html)\n[![CircleCI](https://circleci.com/gh/itslab-kyushu/sss/tree/master.svg?style=svg)](https://circleci.com/gh/itslab-kyushu/sss/tree/master)\n[![wercker status](https://app.wercker.com/status/16562999f1f803486bd8893c1dec21e6/s/master \"wercker status\")](https://app.wercker.com/project/byKey/16562999f1f803486bd8893c1dec21e6)\n[![Release](https://img.shields.io/badge/release-0.3.2-brightgreen.svg)](https://github.com/itslab-kyushu/sss/releases/tag/v0.3.2)\n[![Dockerhub](https://img.shields.io/badge/dockerhub-itslabq%2Fsss-blue.svg)](https://hub.docker.com/r/itslabq/sss/)\n[![MicroBadger](https://images.microbadger.com/badges/image/itslabq/sss.svg)](https://microbadger.com/images/itslabq/sss)\n[![GoDoc](https://godoc.org/github.com/itslab-kyushu/sss/sss?status.svg)](https://godoc.org/github.com/itslab-kyushu/sss/sss)\n\nThis software provides a [Go](https://golang.org/)\n[library](https://godoc.org/github.com/itslab-kyushu/sss/sss) implementing\na Secret Sharing scheme, a command line tool which distributes and\nreconstructs your secret files, and a client/server datastore service.\n\nThis software has been made for comparing performance of secret sharing based\nkey-value storages in the following article:\n\n* [Hiroaki Anada](http://sun.ac.jp/prof/anada/),\n  [Junpei Kawamoto](https://www.jkawamoto.info),\n  Chenyutao Ke,\n  [Kirill Morozov](http://www.is.c.titech.ac.jp/~morozov/), and\n  [Kouichi Sakurai](http://itslab.inf.kyushu-u.ac.jp/~sakurai/),\n  \"[Cross-Group Secret Sharing Scheme for Secure Usage of Cloud Storage over Different Providers and Regions](http://www.anrdoezrs.net/links/8186671/type/dlg/https://link.springer.com/article/10.1007%2Fs11227-017-2009-7),\"\n  [The Journal of Supercomputing](http://www.anrdoezrs.net/links/8186671/type/dlg/https://link.springer.com/journal/11227),\n  73(10), pp.4275-4301, 2017.\n\nPlease consider to refer it, if you will publish any articles using this\nsoftware.\n\n## Installation\n### Go library\nIf you are only interested in our secret sharing library for Go,\n\n```sh\n$ go get -d github.com/itslab-kyushu/sss\n```\n\n### Client/Server application\nIf you are interested in our client/server application,\ncompiled binaries of them are available on\n[Github](https://github.com/itslab-kyushu/sss/releases).\nAfter downloading a binary to your environment, decompress and put it in a path\nincluded in $PATH.\n\nIf you're a [Homebrew](http://brew.sh/) user,\nyou can install the client application by\n\n```sh\n$ brew tap itslab-kyushu/sss\n$ brew install sss\n```\n\nYou can also compile by yourself.\nFirst, you need to download the code base:\n\n```\n$ git clone https://github.com/itslab-kyushu/sss $GOPATH/src/itslab-kyushu/sss\n```\n\nThen, build client command `sss`:\n\n```\n$ cd $GOPATH/src/itslab-kyushu/sss/client\n$ go get -d -t -v .\n$ go build -o sss\n```\n\nand build server command `sss-server`:\n\n```\n$ cd $GOPATH/src/itslab-kyushu/sss/server\n$ go get -d -t -v .\n$ go build -o sss-server\n```\n\nTo build both commands, [Go](https://golang.org/) \u003e 1.7.4 is required.\n\n### Server application as a Docker image\nWe have a docker image [itslabq/sss](https://hub.docker.com/r/itslabq/sss/)\nwhich includes a compiled binary of the server application.\n\n[![Docker](https://itslab-kyushu.github.io/sss/img/small_h-trans.png)](https://www.docker.com/)\n\nContainers created from this image exposes port 13009 and a volume `/data`\nwhere all uploaded data will be stored.\n\nTo run this server image;\n\n```\n$ docker run -d --name sss-server -p 13009:13009 -v $(pwd)/data:/data itslabq/sss\n```\n\nThe above command mounts `./data` to `/data` in the container so that all data\nare store in `./data`.\n\n## Client Usage\nThe client application provides two way to run the threshold Secret Sharing\nscheme (SSS).\nOne of them is local mode, which stores shares into a local file system.\nThe other one is remote mode, which stores shares into servers provided the\nserver command.\n\n### Local mode\nThe local mode provides two sub commands, distribute and reconstruct.\nDistribute command reads a file and creates a set of shares,\non the other hand, reconstruct command reads a set of shares and reconstructs\nthe original file.\n\n#### Distribute\n```\n$ sss local distribute \u003cfile\u003e \u003cnumber of shares\u003e \u003cthreshold\u003e\n```\n\nIt produces share files and the file name of i-th share has `.i.xz` as the\nsuffix.\n\n#### Reconstruct\n```\n$ sss local reconstruct \u003cfile\u003e...\n```\n\nIt produces a file based on the given share's file name by removing the above\nsuffix.\n\n### Remote mode\nRemote mode provides four sub command: get, put, delete, and list.\nAll commands take a YAML based server configuration file.\nThe format is as follows:\n\n```yaml\nservers:\n  - address: 192.168.0.1\n    port: 13009\n  - address: 192.168.0.2\n    port: 13009\n  - address: 192.168.1.1\n    port: 13009\n```\n\nThe above example defines three servers.\n\nThe get command gathers shares from the servers defined the configuration file,\nand put command distributes shares to the servers.\n\nThe default name of the configuration file is `sss.yml` but you can set another\nname via `--config` flag.\n\n#### Get\n```\nsss remote get --config sss.yml --output result.dat \u003cfile name\u003e\n```\n\nGet command gathers shares associated with the given file name from the servers\ndefined in the configuration file, and then reconstructs and stores them as\nthe given file name via `--output` flag.\n\nIf `--config` flag is omitted, `sss.yml` is used, and if `--output` flag is\nomitted, `\u003cfile name\u003e` is used.\n\nTo find available file names, use list command.\n\nThe number of groups and the number of total servers must be greater then or\nequal to the group threshold and the data threshold, which are given when those\nshares were created.\n\n#### Put\n```\nsss remote put --config sss.yml \u003cfile\u003e \u003cthreshold\u003e\n```\n\nPut command reads the given file and runs distribute procedure to create shares.\nThe threshold is a parameter of SSS.\nThe number of total shares are as same as defined in the server configuration\nfile.\n\nIf `--config` flag is omitted, `sss.yml` is used.\n\nPut command also takes `--chunk` flag to set the byte size of each chunk.\nThe default value is 256.\nThe distribute procedure creates a finite filed Z/pZ, where p is a prime number\nwhich has chunk size + 1 bit length.\n\n### Delete\n```\nsss remote delete --config sss.yml \u003cfile name\u003e\n```\n\nDelete command deletes all shares associated with the given file name from all\nservers defined in the configuration file.\n\nIf `--config` flag is omitted, `sss.yml` is used.\n\n### List\n```\nsss remote list --config sss.yml\n```\n\nList command shows all file names stored in the servers.\nIf `--config` flag is omitted, `sss.yml` is used.\n\n\n## Server Usage\nThe server application runs a simple data store service using SSS.\n\nIt takes three flags,\n* `--port`: the port number the server will listen,\n* `--root`: the document root path to store uploaded shares,\n* `--no-compress`: if set, all shares will be stored without compression.\n\nIf those flags are omitted, default values are used.\nThus, you can start a server by just run `sss-server`.\n\n\n## Library Usage\nSee [godoc](https://godoc.org/github.com/itslab-kyushu/sss/sss).\n\n\n## License\nThis software is released under The GNU General Public License Version 3,\nsee [COPYING](COPYING) for more detail.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitslab-kyushu%2Fsss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitslab-kyushu%2Fsss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitslab-kyushu%2Fsss/lists"}