Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Secure data storage with trusted third-parties to use in Javascript environment
crumbl-js is a JavaScript client developed in TypeScript for generating secure data storage with trusted signing third-parties using the Crumbl™ technology patented by Cyril Dever for Edgewhere.
If you're interesting in using the library, please contact Edgewhere.
For details on the mathematical and protocol foundations, you might want to check out our white paper.
The whole process could be divided into two major steps:
The first step involves at least two stakeholders, but preferably four for optimal security and sustainability:
Creation
To create the crumbl, one would need the data and the public keys of all the stakeholders, as well as the encryption algorithm used by them. Currently, two encryption algorithms are allowed by the system: ECIES and RSA.
Once created, the crumbl could be stored by anyone: any stakeholder or any outsourced data storage system. The technology guarantees that the crumbl can't be deciphered without the presence of the signing stakeholders, the number of needed stakeholders depending on how many originally signed it, but a data owner must at least be present. In fact, only a data owner will be able to fully recover the original data from the crumbl.
Extraction
To extract the data from a crumbl is a multi-step process:
All these steps could be done building an integrated app utilizing the TypeScript library server-side, or the JavaScript library in the browser.
npm i crumbl-js
The code below should display a new crumbl from the passed credential strings of the stakeholders:
import { BrowserWorker, CREATION, ECIES_ALGORITHM, hash } from 'crumbl-js'
function main(owner_pubkey, trustee1_pubkey, trustee2_pubkey) {
const source = document.getElementById('source').innerHTML;
hash(source).then(hashedSource => {
// Feed with the signers' credentials
const owner = {
encryptionAlgorithm: ECIES_ALGORITHM,
publicKey: Buffer.from(owner_pubkey, 'hex') // ECIES hexadecimal string representation of the decompressed public key
};
const trustee1 = {
encryptionAlgorithm: ECIES_ALGORITHM,
publicKey: Buffer.from(trustee1_pubkey, 'hex')
};
const trustee2 = {
encryptionAlgorithm: ECIES_ALGORITHM,
publicKey: Buffer.from(trustee2_pubkey, 'hex')
};
const workerCreator = new BrowserWorker({
mode: CREATION,
data: [source],
verificationHash: hashedSource,
htmlElement: document.getElementById('crumbled')
});
workerCreator.create([owner], [trustee1, trustee2]).then(crumbled => {
// At this point, the crumbled value would have been assigned to the passed HTML element.
// But you may want to do something else with it here.
console.log(crumbled);
}):
});
}
Following the above situation, using the crumbled data and two "partial uncrumbs" gathered from the trusted signing third-parties, the code below shows how to recover the original source data as a data owner:
const workerExtractor = new BrowserWorker({
mode: EXTRACTION,
data: [crumbled, partialUncrumb1, partialUncrumb2],
verificationHash: '580fb8a91f05833200dea7d33536aaec9d7ceb256a9858ee68e330e126ba409d',
});
workerExtractor.extract(owner, true).then(result => {
console.assert(result === source, 'Something wrong happened: are you sure you used the right items?');
});
If the extracting stakeholder is not the data owner, the result would be a "partial uncrumb" to give to the data owner for processing the complete operation. For maximum security and sustainability, we recommend the involvement of at least three trusted signing third-parties in the process in addition to the data owner. Please contact us for a complete implementation.
This library relies on the following dependencies:
ecies-geth
and feistel-cipher
provided by Cyril Dever for Edgewhere;buffer-xor
;seedrandom.js
.Besides, to run the tests, you would need to install live-server
:
npm i -g live-server
You might want to check out the Go implementation for the Crumbl™: crumbl-exe
, an executable and a Go client for generating secure data storage with trusted signing third-parties using the Crumbl™ technology patented by Cyril Dever for Edgewhere.
You might also want to check out the Scala implementation for the Crumbl™: crumbl-jar
, a Scala client for the JVM and an executable JAR as well.
The use of the Crumbl™ library is subject to fees for commercial purposes and to the respect of the BSD-2-Clause-Patent License.
All technologies are protected by patents owned by Edgewhere SAS.
Please contact Edgewhere to get further information.
FAQs
Secure data storage with trusted third-parties to use in Javascript environment
The npm package crumbl-js receives a total of 64 weekly downloads. As such, crumbl-js popularity was classified as not popular.
We found that crumbl-js demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.