Git Product home page Git Product logo

permapaste's Introduction

PermaPaste

Store plain text ascii documents, markdown documents on the Arweave Permaweb. Store pastes publicy or encrypted, using a password or secret link to encrypt the page.

You do not need your private wallet key to open previously encrypted pastes, only the tx id (url) and passphrase.

The current version is deployed at: https://arweave.net/z_NhVkfe-qeuHhc3i4GZewK-tLgwhFdF-S74-v8rC7A

Other features

  • Permaweb App so the version you use now will always be available.
  • Lightweight & Mobile friendly
  • Supports GitHub flavour Markdown (v0.29)
  • Recover and edit previous pastes by searching by wallet address or block number
  • Use as mobile app (PWA), pick the Add to Home screen option from your mobile browser (tested in Mobile Firefox & Mobile Chrome)

Use cases

  • Publish public pastes & documents
  • Private notepad
  • Private sharing of pastes & documents
  • Private storage of key files, wallet backups, etc.
  • Publish ascii art, e-zines or other ascii based content on the Arweave blockchain

Potential Future Features & Improvments

  • Some form of bookmarking password protected documents to allow them to be looked up easier
  • Publish Mode, publish previously saved documents.
    • Render to HTML and publish as stand-alone web page
    • Potentially publish to other arweave apps such as Scribe, Weavez, AskWeave etc. This wouldnt require any integration on their side but would need additional tags/metadata etc added depending on the app.
  • Improve editor to insert markdown snippets for tables etc.
  • Add support for more markdown extensions such as charts, uml diagrams, etc.
  • More content types supported
  • Password strength checking, heuristic and against haveibeenpwned database.
  • File attachments
  • Re-introduce hightlight.js and support code snippets more explicitly
  • Use a wasm module for scrypt to decrease encrypt/decrypt time.

Privacy

Documents are encrypted with AES256-GCM, with the key being created from a user supplied password or a randomly generated 224bit value that is passed in the URL.

The password or key is passed through a KDF (key derivation function, or key stretching function) with a unique salt to make brute force attacks impractical. The KDF used is PBKDF2(scrypt(PASSWORD)) with R=2^16, P=2 for scrypt and 250,000 iterations of PBKDF2.

The KDF and parameters were selected with influence from https://keybase.io/warp/ & https://blog.filippo.io/the-scrypt-parameters/ and considering mobile clients.

All encryption and decryption is done client side in the browser Your password or content never leaves your machine and only encrypted data is transmitted over the network to be stored or retrieved by the Arweave blockchain

IMPORTANT: This makes brute-forcing passwords difficult, but trivial passwords like 12345 or common phrases could still be cracked easily, so make sure to use a strong & unique password

For scrypt we select the scrypt-async npm library, due it having zero dependencies, being quite widely used, and documented clearly for browser use.

Reproducible build

To ensure the deployed verion is actually the same version as in this repo, the build is reproducible, see REPRODUCIBLE.md

Development

Built with Vue & Parcel Bundler

To run dev-mode with live-reload:

npm run dev

or

npm run dev-lan to run with https so usable from lan clients. This breaks firefox live-reload.

To build for production:

npm run build

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.