Skip to content

imperviousinc/beacon

Repository files navigation

Beacon browser

Beacon browser


Note: ⚠️ Beacon is still in beta use at your own risk.

A first-class browsing experience for a decentralized internet built with web technologies and secured without third parties. Trustless HTTPS with native DANE support and a DNSSEC chain secured by a peer-to-peer light client.

How it works

  • Beacon syncs block headers to retrive a verifiable merkle tree root.
  • Requests proofs from peers to retrive a DNSSEC signed zone.
  • Performs in-browser DNSSEC validation.
  • Verifies certificates with DANE.

TODOs

There are still lots of things we'd like to do. Contributions are welcome!

  • Android & linux support
  • Automatic updates using Omaha 4
  • Signed binaries for windows
  • Widevine support
  • DNSSEC prefetching to reduce latency
  • DANE support for ICANN domains
  • Experiment with embedding a DNSSEC chain in x509 certificates and/or a TLS extension (RFC9102).
  • Experiment with embedding HNS proofs in x509 certificates.
  • Block internal Chrome telemetry & other privacy enhancements
  • More tests

Development

This repository does not contain the actual Chromium code it will be fetched using butil.

Get started

Install chromium build depedencies for the target platform and then install butil.

$ go install github.com/imperviousinc/beacon/tools/src/butil@latest

butil is beacon's development utility. It helps you apply patches and do various overrides to chromium. Make sure it's in your path.

$ mkdir beacon && cd beacon
$ butil clone
$ butil init

This may take a while since init will fetch chromium. Once it's done, this repo will be at src/beacon

Building

$ butil build debug

Updating butil

butil is just a wrapper around the actual tool. You can make changes to tools/src/realbutil and it will get rebuilt automatically.

Making changes to Chromium

Make your modifications to chromium and when you are ready to transfer those into patches: Note: This will remove any patches that are no longer in chromium.

$ butil patches update

To remove a patch just undo the changes in chromium repo and call patches update again.

Credits

Beacon ports patches from Brave mainly for branding and shares a similar patching format/tooling with brave-core