https://github.com/cloudlink-omega/e2ee
General-purpose E2EE extension for Scratch.
https://github.com/cloudlink-omega/e2ee
cloudlink-omega e2ee scratch-extension scratch3
Last synced: 5 months ago
JSON representation
General-purpose E2EE extension for Scratch.
- Host: GitHub
- URL: https://github.com/cloudlink-omega/e2ee
- Owner: cloudlink-omega
- License: mit
- Created: 2024-04-19T13:53:40.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-05T21:52:37.000Z (over 1 year ago)
- Last Synced: 2024-11-05T22:35:59.110Z (over 1 year ago)
- Topics: cloudlink-omega, e2ee, scratch-extension, scratch3
- Language: JavaScript
- Homepage:
- Size: 21.5 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# E2EE
This is a Scratch 3 extension that enables E2EE (End-to-End Encryption). This E2EE extension utilizes the same underlying cryptography code that powers CloudLink Omega.
## Under the hood
This extension implements ECDH-P256-AES-GCM with SPKI-BASE64 keypairs, allowing Scratch projects to send/receive data over a wide variety of transports. It is highly resistant to attacks, and supports creating shared secrets over insecure channels (e.g. cloud variables).
## What is...
### ECDH-P256?
[Elliptic-curve Diffie–Hellman](https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman) is a key agreement protocol that allows two parties to establish a shared encryption secret over an insecure channel. This takes advantage of a epiliptic curve keypair.
NIST P-256 is an implementation of a epiliptic curve, providing 256-bit keys that makes ECDH work.
### AES-GCM?
[Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) is a symmetric encryption algorithm that utilizes public/private keys for encrypting/decrypting data. In this extension, this takes advantage of a shared key (secret), made possible by ECDH-P256.
[Galois/Counter Mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode) improves performance of AES. In short, it provides authenticated encryption and integrity checking, all with great speed and low latency.
### SPKI-BASE64?
[Simple Public Key Infrastructure](https://en.wikipedia.org/wiki/Simple_public-key_infrastructure) (Pronounced Spoo-Key) simplifies linking things to keys, in favor of typical X.509-based public keys. This extension simplifies these keys into Base64 encoding that can be easily transmitted or shared.
# Disclaimers
Since Scratch does not have any concept of "secure" data storage; you should be mindful of how you store your keys. A flawed implementation of this extension can put your transmitted data at risk.