Coder Social home page Coder Social logo

berty / berty Goto Github PK

View Code? Open in Web Editor NEW
7.3K 127.0 372.0 262.1 MB

Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network

Home Page: https://berty.tech

License: Other

Makefile 2.03% Go 53.33% JavaScript 1.69% Dockerfile 0.09% Shell 1.85% TypeScript 30.27% Ruby 0.18% Java 8.12% Objective-C 0.44% HTML 0.21% Swift 1.34% Starlark 0.04% C++ 0.22% Objective-C++ 0.12% HCL 0.05% Jinja 0.03%
berty ipfs libp2p mobile-app ios android cybersecurity privacy p2p orbitdb

berty's Introduction

Berty

Berty is an open, secure, offline-first, peer-to-peer and zero trust messaging app

berty.tech discord github twitter

GoDoc GitHub release CodeFactor


TLDR : Install it!

Mobile

To use the latest released version, install it from Google Play or Apple App Store.

To compile and run the mobile application on your device, see js/README.md.

CLI

You can go run or go install the CLI tool located in go/cmd/berty. The two main command line utilities are:

  • berty mini: a CLI messaging app using the Wesh Protocol.
  • berty daemon: a full node manageable through the Wesh Protocol API.

Introduction

Warning: Berty is still under active development and should not yet be used to exchange sensitive data.

Berty is a privacy-first messaging application built on top of the Wesh Protocol.

  • Secure and private :
    • Messages are end-to-end encrypted by default
    • Metadata is kept to a minimum
    • No phone number or email address is required to create an account
    • Built to retain its properties even when used on adversarial networks
  • Censorship-resilient
    • Decentralized, distributed, peer-to-peer and serverless
    • No internet connection is required, thanks to BLE technology and mDNS.
  • Open :
    • Free forever and open-source

Berty is designed to be used as a communication tool when all other traditional messengers fail. Berty Messenger serves the following use cases:

  • When you need to share sensitive information over untrusted networks, for instance while traveling
  • If you want to communicate anonymously
  • If you want full control over your data and thus don't want to rely on third-party servers
  • In countries that actively monitor and temper with their network, restricting its use and censoring some of its contents
  • In areas with weak or no connection at all

Berty is currently developed by Berty Technologies, a French nonprofit organization.

Note: this project is led by a small team made of humans, who make mistakes. Please do not hesitate to point out bugs or missing features. See the contribute section below.

We cannot promise we will offer you the best application, but we dedicate ourselves to doing our best to create a great one.

The philosophy behind Berty

We want to contribute to a world where free and secure communications are common and fear of censorship or surveillance are not.

We believe that open-source is more secure, as anyone can examine the code and improve it: this is why we rely on and build open and free software.

As the founding team, our ultimate goal is to progressively relinquish control over Berty and to make it become a truly global community project.

More info on berty/community.

Development Status

The current Berty implementation is using the Wesh Protocol, which means the encryption technique is safe, and it works as a peer-to-peer app!

Alas, Berty has not yet been hardened, so please avoid using it on devices with weak sandboxes, such as unpatchable devices that use old Android versions.

The current Wesh Protocol is partially implemented.

The API will continue to evolve in the near future. As such, we cannot yet guarantee none-breaking changes, or any kind of API stability. Be prepared for a rough ride if you start rolling the Wesh Protocol in your application.

Subscribe to our newsletter if you wish to be notified about the latest features and releases.

Note: The repositories are being opened progressively, and there will be additional modifications and updates soon.

Under the hood

Berty Messenger High Level Architecture

Wesh Protocol

go.dev reference Code coverage

The Wesh Protocol comes with a generic, but full-featured SDK allowing developers to write peer-to-peer applications. You can just focus on high-level features for your app, we will take care of the rest (encryption, identities, network routing, group management, account management, device management, application lifecycle).

The main concept of the Wesh Protocol is called the "group", a virtual place where multiple devices can share messages and metadata using OrbitDB, which itself relies on the InterPlanetary File System (IPFS)

Get it:

git clone https://github.com/berty/berty

The Berty Messenger

Code coverage

The Berty Messenger, or simply Berty, is a messaging application written in React Native, that uses the Wesh Protocol through gomobile-ipfs, which, in turns, is using gomobile.

Main items in the repo

  • ./go: Where all the Golang code lies.
  • ./js: Where all the Javascript/Typescript code lies:
    • The Berty Messenger application, written in React Native.
  • ./docs: Mostly auto-generated documentation.

Contributing

Contribute to Berty

We welcome contributions! Your input is deeply appreciated and extremely valuable to us. We thank you in advance for it.

There is no small feat: everyone is encouraged to do what they can to help, based on their ability and interest.

There are plenty of ways to get involved and to help our community, which can roughly be divided in two distinct parts: everything that is related to the code and everything that is not.

To put it simply:

  • Code-related = GitHub
  • Not code-related = Open a task

Everything about contribution is summed up here: CONTRIBUTING.MD

Stargazers over time

Star History Chart

Other resources

Contact

For a direct contact, see our contact page of our website. Alternatively, take a look at our community repository.

Licensing

© 2018-2023 Berty Technologies

Licensed under the Apache License, Version 2.0 (LICENSE-APACHE) or the MIT license (LICENSE-MIT), at your discretion. See the COPYRIGHT file for more details.

berty's People

Contributors

90dy avatar aeddi avatar alexsland avatar awantoch avatar berty-assistant avatar clegirar avatar d4ryl00 avatar d4ryl00-sudo avatar dependabot[bot] avatar ekelen avatar gfanton avatar glouvigny avatar hubub avatar imgbotapp avatar iuricmp avatar jefft0 avatar jembijemb avatar johnberd avatar jorropo avatar lfgaming avatar lucasdc99 avatar mathisve avatar matubu avatar moul avatar moul-sudo avatar n0izn0iz avatar phanhuynhquy avatar sakul-budhathoki avatar sfroment avatar zxxma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

berty's Issues

OSS Release

  • Public release (Depends on #2)
  • Bot interface
  • Create CONTRIBUTING.md
  • Create GitHub templates (.github/*.md)
  • Update README.md texts, badges, how to contact us
  • Document How-to hack Android
  • Document How-to hack iOS
  • Document How-to hack Web
  • Document How-to hack Core
  • Document How-to hack Bot
  • Cleanup repo
  • Cleanup issues
  • Configure GitHub labels
  • Add a link to Waffle Board in the README.md
  • Have a fully-automated CI/CD
  • Test the repo on Linux & Darwin
  • Choose a license
  • Add a nice logo :)
  • Add links to changelog, feature ideas, etc

Setup CI

It should:

  • lint everything, to avoid discussions about coding styles in PRs (go, js, dockerfile, proto files, readmes, scripts)
  • run unit tests when we have some

Automate build of iOS app

Target:

  • to be easy for a developer to run the project
  • to be possible to build the app from the CI
  • to have reproducible builds or at least to be sure we all have the same build deps verions

Depends on #23
Related with #38
Related with #39

Implement group conversations

Targets:

  • to support having a lot of peers in a conversation, we need to encrypt events once for the conversation with a shared symmetric key
  • support forward secrecy
  • being async ready

depends on #41
depends on #36
depends on #178
depends on #179

related to "Add a sub event message used to have detailed acks for group-based events" #102

Create a pinentry library

Should be located in ./core/pinentry

This library will support multiple pinentry interfaces: faceid, touchid, cli pinentry, gui pinentry, env vars

For the V1, we can only support env var

Automate build of web app

Target:

  • to be easy for a developer to run the project
  • to be possible to build the app from the CI
  • to have reproducible builds or at least to be sure we all have the same build deps versions

Depends on #23
Related with #37
Related with #38

Initial enclave driver

Create a library that:

  • double-check that enclave is not an apple registered trademark
  • Create enclave keypairs (the secret is stored in the enclave, the public is available)
  • Create helpers to perform cryptography operations on enclave keys based on key indexes
  • Support 1 real hardware secure enclave (mac or iOS)
  • Have a fallback software mode

The library should not have any internal dependency

Should be located in ./core/crypto/enclave

Child of #1

bootstrap react-native with gomobile project structure

The goal is to have an hello-world style app that can be run on web and mobile devices with common code and bridge with gomobile

  • ./client/react-native/common
  • ./client/react-native/web
  • ./client/react-native/mobile
  • ./client/react-native/gomobile

Test more things in CI

It should:

  • build core
  • build docker
  • build ios (#37)
  • build androd (#38)
  • build web (#39)
  • run integration tests that can run easily without being based on external components
  • run last tests that require external dependencies in a specific task that have a retry policy

Depends on #22
Depends on #23
Depends on #37
Depends on #38
Depends on #39

Public Release

  • Beta Release (#4)
  • async communication
  • sync communication
  • bluetooth mesh networking
  • can use relays
  • can work in a micro network: ~2 new users
  • bullet-proof basic contact flow
  • bullet-proof basic conversation flow
  • bullet-proof basic messages flow
  • advanced contact flow
  • advanced conversation flow
  • advanced messages flow
  • backup/restore profile
  • secure directory service

Automate build of Android app

Target:

  • to be easy for a developer to run the project
  • to be possible to build the app from the CI
  • to have reproducible builds or at least to be sure we all have the same build deps versions

Depends on #23
Related with #37
Related with #39

Initial desktop app

The desktop app should contain (and link together):

  • a browser able to render static web pages
  • an export of the web version of the client
  • a node

Should be located in ./client/desktop

Depends on #25
Depends on #26
Depends on #22

first bot

the bot should:

  • use a bot library ./client/bot
  • be used for integration tests in CI
  • be used by developers

Depends on #22
Depends on #61
Depends on #100

Create "profile init" function

This function should:

  • Create an enclave key (#9)
  • Create a pin (#11)
  • Init a new database with the master password (#12)
  • Generate a myself contact with an initial sigchain

Depends on #9
Depends on #12
Child of #1

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.