Welcome to B3Note, an innovative decentralized application built on the Internet Computer that sets a new standard for secure and anonymous note-sharing. B3Note not only allows users to write and share notes anonymously without any login but also employs a unique form of encryption similar to Witness Encryption. This adds an extra layer of security and functionality to the platform.
- Anonymous Usage: B3Note can be used anonymously, with no login required.
- Limited Notes for Anonymous Users: Create up to 5 notes, each with a 1-hour timeout. After this period, the notes are automatically deleted. Additionally, any generated share link will also expire after 1 hour.
- Canister Global Timer: A global timer is employed to clean up expired users and one-time keys, thereby enhancing system efficiency and security.
- Secure Sharing with On-Chain Verification: Notes can be securely shared through a simple link that carries the signature of your public key. This signature is verifiable on-chain and pairs with the note's unique ID to confirm access to the decryption key for that note.
- Auto Deletion: Notes are automatically deleted either after they have been read for the first time or if they remain unread for an hour.
- Advanced Encryption: B3Note uses a form of witness-like encryption to ensure that only authorized users with the correct credentials can access the notes.
- Timelock Encryption: Encrypted decryption keys, notes, and shared links come with a built-in expiry feature, aligning with the concept of Timelock Encryption for temporary secure access.
B3Note stands out for its encryption mechanism that resembles Witness Encryption, enabling secure multi-party computation, anonymous credentials, and intricate access control systems. This feature also allows us to verify anonymous users directly on-chain, a significant advancement in decentralized technologies.
B3Note uses IBE to enable secure note-sharing based on uniquely generated public keys, thereby eliminating the need for traditional identifiers like email addresses or usernames and removing the complexities of pre-shared keys.
In line with the concept of Timelock Encryption, B3Note ensures that notes created by anonymous users expire after 1 hour. Shared links for these notes are also available only for the same time frame.
Your feedback is invaluable as we continue to develop and enhance this project. Feel free to raise issues or submit pull requests.
- Rust
- Internet Computer
- BLS Pairing for Blockchain Verification
- VetKeys API
- Symmetric Key Encryption
- Custom Rust crate:
b3_utils
-
Clone the repository
git clone https://github.com/B3Pay/b3-note.git
-
Navigate to the project directory
cd B3Note
-
Install dependencies
yarn dfx:start
-
Deploy it
yarn deploy
-
For development mode:
yarn dev
- Open the application go to the 'Without Identity ' tab and select 'Random Login'.
- Write your note and click 'Save'.
- Open the Note and click 'Generate Link'. Share this link to give read access to the note.
- The link is valid for one hour and will be deleted after the first access.
- Open the application and go to the 'With Identity' tab.
- Login with your Internet Computer identity.
- Write your note and click 'Save'.
- Open the Note and click 'Generate Link'. Share this link to give read access to the note.
- Anonymous Note Sharing: Create and share notes without login.
- Authenticated Note Sharing: Enhanced security through blockchain verification.
- Time-Limited Links: Links expire after one hour or after the first access.
- Blockchain Verification: Utilizes BLS pairing for note verification.
- Strong Encryption: Notes are encrypted using symmetric key encryption and VetKeys API.
- Utility Crate:
b3_utils
makes it easy to use various Internet Computer features like stable memory, timers, and logging.
This project is open-source, licensed under MIT.