
Research
/Security News
Toptal’s GitHub Organization Hijacked: 10 Malicious Packages Published
Threat actors hijacked Toptal’s GitHub org, publishing npm packages with malicious payloads that steal tokens and attempt to wipe victim systems.
Multi-Party Computation Threshold Signature Scheme Implementation in Javascript
WARNING: Work in progress!
An attempt to implement a multi-party computation (MPC) threshold signature scheme (TSS) in Javascript/Typescript for use on Node.js, browsers, react-native apps and other modern JS platforms. This strives to be secure and auditable, based on state of the art research and proven implementations, permissively licensed.
The approach is described in the original paper by Canetti et al., "UC Non-Interactive, Proactive, Threshold ECDSA with Identifiable Aborts" https://eprint.iacr.org/2021/060
Updated Dec 5, 2023:
Full keygen + signing works, now need to publish to be able to use externally for a demo check. Get back to refinement after that.
Updated Dec 2, 2023:
Milestone 2 sort of complete -- the library is able to generate a 3-party configuration via a keygen ceremony; this configuration is tested to be ingestable by the signing ceremony and to produce a valid signature in the end. Some issues leftover: proper key configuration hashing that is required at Round 4 of keygen, as well as multiple minor ones.
Updated Nov 30, 2023:
Milestone 1 complete -- the library is able to perform a "2 out of 3" or "3 out of 3" parties ECDSA signature (and probably other party numbers, too), the signature is validated both internally and with Ethereum tools. The 3 parties key configuration used is pre-created using the original multi-party-sig library. Milestone 2 is going to be the key generation ceremony implementation, but before that it needs some care with state/parameters validation and cleanup.
Until Milestone 2 I see no point exporting any API or interfaces so the best you can do now is to run the tests:
Use Node.js 21+
git clone git@github.com:burmisov/mpc-tss-js.git
cd mpc-tss-js
npm install
npm test
The signature test uses a pre-created 3-party key configuration and handles (more like emulates) signatories communication throught the 5 rounds of creating a signature.
MILESTONE 1: Create a valid signature via "online" ceremony given pre-created party setups
Paillier encryption scheme internal library (minimal)
Keyconfig (party setup) data
Pedersen
Lagrange
ZK Proofs -- zk/enc
Signing Round 1 !
ZK Proofs -- zk/logstar
ZK Proofs -- zk/affg
ZK Proofs -- zk/affp
MTA
Signing Round 2
Signing Round 3
Signing Round 4
Signing Round 5
Covert to Ethereum signature and verify with external tool
Fix session hashing
Blake3-based hasher class
Signing round data and implementations
ECDSA with secp256k1 utils (use/wrap @noble/curves -- did use it)
MILESTONE 2: Implement a key generation ceremony; generate valid party setups and create a valid signature
ZK Proofs -- sch
ZK Proofs -- fac
ZK Proofs -- mod
ZK Proofs -- prm
Polynomials
Polynomial Exponent
Keygen round 1
Keygen round 2
Keygen round 3
Keygen round 4
Keygen round 5
Implement KeyConfig hashing and amend round 5
End-to-end test with keygen and signing with fresh keys (arbitrary parties)
Copyright 2023 Sergey Burmisov (burmisov.com)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this work except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Major components of this library are derived from the original Go-language library:
https://github.com/taurusgroup/multi-party-sig
While no original source files are used as-is, many JS/TS files closely rewrite the original Go files. Other parts adhere to similar semantics as the original library, and other sections are original due to JS/TS idiosyncrasies or simply at the author's discretion.
Original Go multi-party-sig copyright notice:
copyright (c) Adrian Hamelink and Taurus SA, 2021, and under Apache 2.0 license.
FAQs
Multi-Party Computation Threshold Signature Scheme Implementation in Javascript
The npm package mpc-tss receives a total of 0 weekly downloads. As such, mpc-tss popularity was classified as not popular.
We found that mpc-tss demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
Threat actors hijacked Toptal’s GitHub org, publishing npm packages with malicious payloads that steal tokens and attempt to wipe victim systems.
Research
/Security News
Socket researchers investigate 4 malicious npm and PyPI packages with 56,000+ downloads that install surveillance malware.
Security News
The ongoing npm phishing campaign escalates as attackers hijack the popular 'is' package, embedding malware in multiple versions.