diff --git a/docs/guides/quantum_security.md b/docs/guides/quantum_security.md index ef7dc2334b..7d7f7d8b36 100644 --- a/docs/guides/quantum_security.md +++ b/docs/guides/quantum_security.md @@ -4,28 +4,33 @@ This guide explains Autonomi's approach to quantum-resistant security and how to ## Overview -Autonomi is built with post-quantum cryptography at its core, ensuring that your data remains secure even against quantum computer attacks. This guide covers the security features and best practices for maintaining quantum-resistant security in your applications. +Autonomi implements a hybrid security approach, combining information-theoretic security for data storage with traditional cryptographic methods for signatures. This guide covers the security features and best practices for maintaining security in your applications. -## Quantum-Resistant Features +## Security Features -### Self-Encryption +### Self-Encryption (Information-Theoretically Secure) -Autonomi uses a quantum-resistant self-encryption scheme that: +Autonomi's self-encryption scheme provides the highest level of security possible: -- Splits data into chunks -- Encrypts each chunk with quantum-resistant algorithms +- Information-theoretically secure chunking (quantum-secure by definition) +- No reliance on computational hardness assumptions +- Secure against both classical and quantum attacks +- Splits data into chunks using information-theoretic principles - Creates secure data maps for reconstruction - Implements content-based addressing -### BLS Threshold Signatures +### BLS Threshold Signatures (Classical Security) Our BLS threshold signature implementation provides: -- Quantum-resistant signature schemes +- Classical cryptographic security (not quantum-resistant) - Distributed key generation - Threshold signature creation - Secure aggregation +!!! warning "Quantum Computing Consideration" + The BLS signature scheme is based on elliptic curve cryptography and will require updates when quantum computers reach sufficient capability. However, the core data storage mechanism using self-encryption chunks remains secure against quantum attacks. + ## Implementation Guide ### Secure Data Storage @@ -89,15 +94,14 @@ let combined = scheme.combine_signatures(&[signature1, signature2, signature3])? ### Current Threats -- Grover's algorithm impact on symmetric cryptography -- Shor's algorithm impact on asymmetric cryptography -- Store now, decrypt later attacks +- Shor's algorithm impact on BLS signatures (future consideration) +- Store now, decrypt later attacks (mitigated by information-theoretic security for data) - Quantum side-channel attacks ### Mitigation Strategies -1. Use increased key sizes -2. Implement quantum-resistant algorithms +1. Core data storage is already quantum-secure through information-theoretic security +2. Future upgrade path planned for signature scheme 3. Regular security audits 4. Continuous monitoring diff --git a/docs/pointer_design_doc.md b/docs/pointer_design_doc.md deleted file mode 100644 index 390887d1e4..0000000000 --- a/docs/pointer_design_doc.md +++ /dev/null @@ -1,75 +0,0 @@ -# Pointer Data Type Design Document - -## Overview - -The `Pointer` data type is designed to represent a reference to a `LinkedList` in the system. It will include metadata such as the owner, a counter, and a signature to ensure data integrity and authenticity. - -## Structure - -```rust -struct Pointer { - owner: PubKey, // This is the address of this data type - counter: U32, - target: PointerTarget, // Can be PointerAddress, LinkedListAddress, ChunksAddress, or ScratchpadAddress - signature: Sig, // Signature of counter and pointer (and target) -} -``` - -## Pointer Target - -The `PointerTarget` enum will define the possible target types for a `Pointer`: - -```rust -enum PointerTarget { - PointerAddress(PointerAddress), - LinkedListAddress(LinkedListAddress), - ChunkAddress(ChunkAddress), - ScratchpadAddress(ScratchpadAddress), -} -``` - -## Detailed Implementation and Testing Strategy - -1. **Define the `Pointer` Struct**: - - Implement the `Pointer` struct in a new Rust file alongside `linked_list.rs`. - - **Testing**: Write unit tests to ensure the struct is correctly defined and can be instantiated. - -2. **Address Handling**: - - Implement address handling similar to `LinkedListAddress`. - - **Testing**: Verify address conversion and serialization through unit tests. - -3. **Integration with `record_store.rs`**: - - Ensure that the `Pointer` type is properly integrated into the `record_store.rs` to handle storage and retrieval operations. - - **Testing**: Use integration tests to confirm that `Pointer` records can be stored and retrieved correctly. - -4. **Signature Verification**: - - Implement methods to sign and verify the `Pointer` data using the owner's private key. - - **Testing**: Write tests to validate the signature creation and verification process. - -5. **Output Handling**: - - The `Pointer` will point to a `LinkedList`, and the `LinkedList` output will be used as the value. If there is more than one output, the return will be a vector of possible values. - - **Testing**: Test the output handling logic to ensure it returns the correct values. - -6. **Integration with ant-networking**: - - Implement methods to serialize and deserialize `Pointer` records, similar to how `LinkedList` records are handled. - - Ensure that the `Pointer` type is supported in the `NodeRecordStore` for storage and retrieval operations. - - **Testing**: Conduct end-to-end tests to verify the integration with `ant-networking`. - -7. **Payment Handling**: - - Introduce `RecordKind::PointerWithPayment` to handle `Pointer` records with payments. - - Implement logic to process `Pointer` records with payments, similar to `LinkedListWithPayment`. - - **Testing**: Test the payment processing logic to ensure it handles payments correctly. - -8. **Documentation and Review**: - - Update documentation to reflect the new `Pointer` type and its usage. - - Conduct code reviews to ensure quality and adherence to best practices. - -## Next Steps - -- Develop a detailed implementation plan for each component. -- Identify any additional dependencies or libraries required. -- Plan for testing and validation of the `Pointer` data type. - -## Conclusion - -The `Pointer` data type will enhance the system's ability to reference and manage `LinkedList` structures efficiently. Further details will be added as the implementation progresses. diff --git a/mkdocs.yml b/mkdocs.yml index 533e3cd631..a1942ac30d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -6,9 +6,9 @@ site_author: Autonomi Team theme: name: material palette: - scheme: slate - primary: deep purple - accent: purple + scheme: default + primary: green + accent: green font: text: Roboto code: Roboto Mono @@ -74,10 +74,23 @@ plugins: nav: - Home: index.md - Getting Started: + - Installation: getting-started/installation.md + - Quick Start: getting-started/quickstart.md - Local Network: guides/local_network.md + - Local Development: guides/local_development.md - Core Concepts: - Data Types: guides/data_types.md + - Data Storage: guides/data_storage.md - Client Modes: guides/client_modes.md + - Payments: guides/payments.md + - Development Guides: + - Web Development: guides/web_development.md + - Quantum Security: guides/quantum_security.md + - Error Handling: guides/error_handling.md + - Data Science: guides/data_science.md + - Rust Performance: guides/rust_performance.md + - EVM Integration: guides/evm_integration.md + - Testing Guide: guides/testing_guide.md - API Reference: - Overview: api/README.md - Rust: api/rust/README.md