Skip to content

Security: super-e/Slip39DotNet

Security

SECURITY.md

Security Policy

Supported Versions

We provide security updates for the following versions:

Version Supported
1.0.x ✅ Yes
< 1.0 ❌ No

Reporting a Vulnerability

We take the security of our SLIP-0039 implementation seriously. If you discover a security vulnerability, please report it responsibly.

How to Report

Please do NOT create a public GitHub issue for security vulnerabilities.

Instead, please report security issues by:

  1. Email: Send details to slip39_security@supere.simplelogin.com
  2. Private disclosure: Use GitHub's private vulnerability reporting feature
  3. Encrypted communication: Use our PGP key if available

What to Include

When reporting a security vulnerability, please include:

  • Description: Clear description of the vulnerability
  • Impact: Potential security impact and affected components
  • Reproduction: Step-by-step instructions to reproduce the issue
  • Environment: .NET version, operating system, and other relevant details
  • Proof of Concept: Code or examples demonstrating the vulnerability (if applicable)

Response Timeline

We aim to respond to security reports according to the following timeline:

  • Initial Response: Within 48 hours
  • Confirmation: Within 7 days
  • Fix Development: Within 30 days (depending on complexity)
  • Release: As soon as possible after fix is ready

Security Update Process

  1. Assessment: We evaluate the reported vulnerability
  2. Confirmation: We confirm the issue and determine impact
  3. Fix Development: We develop and test a security fix
  4. Coordinated Disclosure: We work with the reporter on disclosure timing
  5. Release: We release a security update
  6. Advisory: We publish a security advisory with details

Security Considerations

Cryptographic Implementation

This project implements SLIP-0039 Shamir's Secret Sharing, which involves handling sensitive cryptographic material. Key security aspects:

What We Do

  • Specification Compliance: Implement SLIP-0039 exactly as specified
  • Standard Libraries: Use proven .NET cryptographic libraries
  • Input Validation: Rigorous validation of all inputs
  • Memory Safety: Secure handling of sensitive data
  • Test Vector Compliance: Pass all official test vectors

What We Don't Do

  • Custom Crypto: No custom cryptographic primitives
  • Key Storage: We don't store or manage private keys
  • Network Communication: No network operations
  • Side-Channel Protection: Basic implementation (not hardened against timing attacks)

Security Best Practices

When using this library:

For Developers

// ✅ Good: Clear sensitive data
var secret = Encoding.UTF8.GetBytes(sensitiveData);
try 
{
    var shares = Slip39ShareGeneration.GenerateShares(secret, 2, 3);
    // Use shares...
}
finally 
{
    Array.Clear(secret, 0, secret.Length); // Clear sensitive data
}

// ❌ Bad: Leaving secrets in memory
var shares = Slip39ShareGeneration.GenerateShares(
    Encoding.UTF8.GetBytes(sensitiveData), 2, 3);

For Users

  • Secure Storage: Store mnemonic shares securely and separately
  • Backup Strategy: Have a proper backup strategy for your shares
  • Threshold Security: Understand that you need the threshold number of shares
  • Passphrase Security: Use strong, memorable passphrases when applicable
  • Environment Security: Use the tool in a secure environment

Known Limitations

Security Limitations

  • Side-Channel Attacks: Not hardened against timing or power analysis attacks
  • Memory Dumps: Sensitive data may persist in memory dumps
  • Multi-Threading: Not designed for concurrent access to sensitive operations
  • Platform Security: Relies on underlying platform security

Recommended Use Cases

  • Development and Testing: Safe for development and testing
  • Educational Purposes: Good for learning SLIP-0039
  • Non-Critical Applications: Suitable for non-critical secret sharing
  • ⚠️ Production Use: Review security requirements carefully
  • High-Security Environments: May not meet stringent security requirements

Threat Model

In Scope

  • Implementation Bugs: Errors in cryptographic implementation
  • Input Validation: Improper handling of malicious inputs
  • Memory Safety: Sensitive data handling issues
  • API Misuse: Insecure usage patterns

Out of Scope

  • Physical Attacks: Hardware-based attacks on the device
  • Social Engineering: Attacks targeting users directly
  • Operating System: Vulnerabilities in the underlying OS
  • Network Security: Network-based attacks (not applicable)

Security Auditing

Current Status

  • Code Review: Internal code review completed
  • Test Vector Validation: All official test vectors pass
  • Static Analysis: Basic static analysis performed
  • External Audit: No external security audit performed
  • Formal Verification: No formal verification performed

Future Plans

  • Consider external security audit for future versions
  • Implement additional security hardening measures
  • Add more comprehensive security testing

Responsible Disclosure

We believe in responsible disclosure and will:

  • Acknowledge: Acknowledge valid security reports promptly
  • Communicate: Keep reporters informed of progress
  • Credit: Provide appropriate credit for valid reports (if desired)
  • Timeline: Work towards reasonable disclosure timelines
  • Coordination: Coordinate with reporters on public disclosure

Security Resources

Documentation

Tools and Libraries

  • Uses .NET built-in cryptographic libraries
  • Follows Microsoft's cryptographic guidelines
  • Implements industry-standard algorithms

Contact

For security-related questions or concerns:

  • General Questions: Create a GitHub discussion
  • Security Reports: Use the private reporting methods described above
  • Project Maintainers: Contact through GitHub

Important: This security policy applies specifically to the SLIP-0039 .NET implementation. Users are responsible for securing their own applications and environments when using this library.

There aren’t any published security advisories