Skip to main content

Hardware device fingerprinting with post-quantum cryptography, TPM support, and ML-based anomaly detection

Project description

Device Fingerprinting Pro

Python PyPI version License Tests Downloads Security Build

Production-ready Python library for hardware-based device fingerprinting with post-quantum cryptography, ML anomaly detection, and TPM integration.

Documentation: For detailed documentation and examples, visit the GitHub Repository


Table of Contents

Click to expand

Hello World

from device_fingerprinting.production_fingerprint import ProductionFingerprintGenerator

generator = ProductionFingerprintGenerator()
fingerprint = generator.generate_fingerprint()

print(fingerprint['fingerprint_hash'])

Why This Library?

FingerprintJS and Browser Fingerprinting

  • Hardware-level identification
  • Post-quantum cryptography (SHA3-512)
  • Server-side processing

Generic Device ID Libraries

  • ML Anomaly Detection for behavioral analysis
  • Encrypted Storage with OS keyring integration
  • TPM/Secure Hardware backing (Windows, macOS, Linux)
  • Deterministic fingerprinting

TPM Attestation Tools

  • Cross-platform TPM support (Windows, macOS, Linux)
  • Software fallback mode
  • ML-based anomaly detection
  • Secure storage for keys and sensitive data
  • Comprehensive test suite

Key Differentiators

Feature Device FP Pro FingerprintJS Generic ID TPM Tools
Post-Quantum Crypto Yes No No Yes
ML Anomaly Detection Yes No No No
Cross-platform TPM Yes No No Yes
Secure Storage Yes No Yes No
Hardware-Backed Yes No No Yes
Encryption Yes No No No

Overview

Provides the following components:

  • Hardware fingerprinting for device identification
  • Cryptographic operations with AES-GCM and SHA3-512
  • ML-based anomaly detection
  • Secure storage with OS keyring integration
  • Support for Windows, macOS, and Linux

Quick Start

Installation

# Basic installation
pip install device-fingerprinting-pro

# With post-quantum cryptography
pip install device-fingerprinting-pro[pqc]

# With cloud storage support
pip install device-fingerprinting-pro[cloud]

# Full installation
pip install device-fingerprinting-pro[pqc,cloud,dev]

Basic Usage

from device_fingerprinting.production_fingerprint import ProductionFingerprintGenerator

# Generate device fingerprint
generator = ProductionFingerprintGenerator()
fingerprint_data = generator.generate_fingerprint()

print(f"Fingerprint: {fingerprint_data['fingerprint_hash']}")
print(f"Platform: {fingerprint_data['system_info']['platform']}")
print(f"CPU: {fingerprint_data['hardware_info']['cpu_model']}")

Output:

{
    'fingerprint_hash': 'sha3_512_hash_value...',
    'hardware_info': {
        'cpu_model': 'Intel Core i7-9750H',
        'cpu_cores': 6,
        'mac_addresses': ['00:1B:44:11:3A:B7'],
        'disk_serials': ['S3Z3NY0M123456']
    },
    'system_info': {
        'platform': 'Windows-10-...',
        'python_version': '3.11.0'
    }
}

Core Features

1. Device Fingerprinting

Generate stable, unique device identifiers from hardware characteristics:

  • Data Sources: CPU model, MAC addresses, disk serials, OS details
  • Hash Algorithm: SHA3-512 (quantum-resistant)
  • Properties: Stable across reboots, deterministic, collision-resistant

Process Flow:

Hardware Data → Normalization → Sorting → SHA3-512 → Fingerprint Hash

2. TPM/Secure Hardware Fingerprinting

Hardware-backed device identification with dual-mode enforcement:

Mode A: Software (Default) - Optional TPM with fallback

import device_fingerprinting as df

# Enable TPM if available (graceful fallback)
df.enable_tpm_fingerprinting(enabled=True)
fingerprint = df.generate_fingerprint(method="stable", mode="software")

Mode B: TPM-Strict - Mandatory TPM requirement

import device_fingerprinting as df

# Enforce TPM hardware attestation (fails if unavailable)
try:
    fingerprint = df.generate_fingerprint(method="stable", mode="tpm_strict")
except RuntimeError as e:
    print(f"TPM required: {e}")

Platform Support:

  • Windows: TPM 2.0 (PowerShell/WMI)
  • macOS: Secure Enclave (T2/Apple Silicon)
  • Linux: TPM 2.0 (/sys/class/tpm)

3. Secure Storage

Encrypted key-value storage with OS keyring integration:

from device_fingerprinting.secure_storage import SecureStorage

# Initialize storage
storage = SecureStorage(
    storage_path="./secure_data",
    service_name="my_app",
    username="device_001"
)

# Store encrypted data
storage.set_item("api_key", "secret_value")
api_key = storage.get_item("api_key")

# List and delete
keys = storage.list_keys()
storage.delete_item("api_key")

Security Features:

  • AES-GCM authenticated encryption
  • Scrypt KDF for key derivation
  • OS keyring integration (Windows Credential Manager, macOS Keychain, Linux Secret Service)
  • No plaintext storage

3. Anomaly Detection

ML-based detection of suspicious system behavior:

from device_fingerprinting.ml_features import FeatureExtractor, AnomalyDetector
import numpy as np

# Train on baseline data
normal_data = np.random.rand(100, 3)  # [cpu%, memory%, battery%]
detector = AnomalyDetector()
detector.train(normal_data)

# Monitor system
extractor = FeatureExtractor()
current_features = extractor.collect_features()
prediction, score = detector.predict(current_features)

if prediction == -1:
    print(f"⚠ Anomaly detected (score: {score:.2f})")
else:
    print(f"✓ Normal behavior (score: {score:.2f})")

# Save/load model
detector.save_model("baseline.pkl")
detector.load_model("baseline.pkl")

Detection Capabilities:

  • Debugger and reverse engineering detection
  • Virtual machine identification
  • System tampering indicators
  • Abnormal resource usage patterns

Architecture

System Components

┌─────────────────────────────────────────────────────────┐
│                   Your Application                       │
└────────────────┬────────────────────────────────────────┘
                 │
        ┌────────┴────────┐
        │  API Layer      │
        │  - Fingerprint  │
        │  - Security     │
        │  - Storage      │
        └────────┬────────┘
                 │
    ┌────────────┼────────────┐
    │            │            │
┌───▼───┐   ┌───▼───┐   ┌───▼────┐
│Crypto │   │  ML   │   │Storage │
│Engine │   │Anomaly│   │Manager │
└───────┘   └───────┘   └────────┘
    │            │            │
    └────────────┼────────────┘
                 │
        ┌────────┴────────┐
        │  Data Collection│
        │  - CPU Info     │
        │  - MAC Address  │
        │  - Disk Serial  │
        │  - System Stats │
        └─────────────────┘

Security Stack

Layer Technology Purpose
Hashing SHA3-512 Fingerprint generation
Encryption AES-GCM-256 Data at rest encryption
KDF Scrypt Password-based key derivation
Storage OS Keyring Secure credential management
ML IsolationForest Anomaly detection

Security Model

Threat Model

Addresses the following threats:

  • Unauthorized device impersonation
  • Data tampering
  • Key extraction
  • Anomalous system behavior
  • Quantum attacks

Out of scope:

  • Compromised OS kernel
  • Physical hardware attacks
  • User credential compromise

Attack Surfaces & Mitigations

Attack Surface Description Mitigation
Storage Encrypted data at rest AES-GCM with OS keyring integration
Transmission Data in transit Use HTTPS/TLS (application responsibility)
Fingerprint Leakage Exposed device IDs Hash-based (collision-resistant SHA3-512)
Key Derivation Weak key generation Scrypt with memory-hard parameters
ML Model Inversion Reversing anomaly detector Black-box output only (no model exposure)

Security Guarantees

This library provides:

  • Deterministic fingerprints (same hardware produces same ID)
  • Collision-resistant fingerprints (SHA3-512, 256-bit security)
  • Encrypted storage with authenticated encryption (AES-GCM)
  • Secure key derivation (Scrypt, memory-hard)
  • ML-based behavioral anomaly detection
  • No plaintext storage of sensitive data

This library does not provide:

  • Protection against compromised OS kernel
  • Protection against physical hardware attacks
  • Perfect fingerprint uniqueness
  • Quantum security for previously-collected encrypted data
  • Privacy isolation when device ID is linked to user identity

Privacy Considerations

Data Collection:

  • Collects: CPU model, MAC addresses, disk serials, OS info
  • Does NOT collect: Browser cookies, IP geolocation, user behavior
  • Does NOT transmit data (local processing only)

Hashing & Anonymization:

  • All fingerprints are SHA3-512 hashed (one-way, non-reversible)
  • Hardware details are not exposed in the hash
  • Can't reverse engineer device specs from fingerprint

Storage Privacy:

  • All encrypted data uses OS-specific secure storage
  • Windows: Credential Manager (DPAPI-backed)
  • macOS: Keychain
  • Linux: Secret Service / KWallet

Complete Integration Example

from device_fingerprinting.production_fingerprint import ProductionFingerprintGenerator
from device_fingerprinting.ml_features import FeatureExtractor, AnomalyDetector
from device_fingerprinting.secure_storage import SecureStorage
import numpy as np

class DeviceSecurityManager:
    def __init__(self):
        self.generator = ProductionFingerprintGenerator()
        self.storage = SecureStorage("./data", "my_app", "device_001")
        self.detector = AnomalyDetector()
        
    def initialize(self):
        """Initialize security system"""
        # Generate and store fingerprint
        fp = self.generator.generate_fingerprint()
        self.storage.set_item("fingerprint", fp['fingerprint_hash'])
        
        # Train anomaly detector
        baseline = self._collect_baseline()
        self.detector.train(baseline)
        self.detector.save_model("./detector.pkl")
        
        return fp['fingerprint_hash']
    
    def verify_device(self):
        """Verify device hasn't changed"""
        current = self.generator.generate_fingerprint()
        stored = self.storage.get_item("fingerprint")
        return current['fingerprint_hash'] == stored
    
    def check_security(self):
        """Check for anomalies"""
        extractor = FeatureExtractor()
        features = extractor.collect_features()
        prediction, score = self.detector.predict(features)
        
        return {
            'is_normal': prediction == 1,
            'score': score
        }
    
    def _collect_baseline(self, samples=100):
        extractor = FeatureExtractor()
        data = [extractor.collect_features() for _ in range(samples)]
        return np.array(data)

# Usage
manager = DeviceSecurityManager()
device_id = manager.initialize()

# Periodic verification
if manager.verify_device():
    status = manager.check_security()
    if not status['is_normal']:
        print("Security alert: Anomaly detected")

JWT Authentication Integration

from device_fingerprinting.production_fingerprint import ProductionFingerprintGenerator
import jwt
from datetime import datetime, timedelta

def create_device_bound_token(user_id, secret_key):
    """Create JWT bound to device"""
    generator = ProductionFingerprintGenerator()
    device_fp = generator.generate_fingerprint()
    
    payload = {
        'user_id': user_id,
        'device_id': device_fp['fingerprint_hash'],
        'exp': datetime.utcnow() + timedelta(hours=24)
    }
    
    return jwt.encode(payload, secret_key, algorithm='HS256')

def verify_device_bound_token(token, secret_key):
    """Verify JWT and device match"""
    payload = jwt.decode(token, secret_key, algorithms=['HS256'])
    
    generator = ProductionFingerprintGenerator()
    current = generator.generate_fingerprint()
    
    if payload['device_id'] != current['fingerprint_hash']:
        raise SecurityError("Device mismatch detected")
    
    return payload['user_id']

Use Cases

Authentication & Security

  • Multi-factor authentication (device-based 2FA)
  • Session binding to specific devices
  • Account takeover detection
  • Credential sharing prevention

Licensing & DRM

  • Per-device software licensing
  • License key validation
  • Installation tracking
  • Prevent unauthorized copying

Fraud Detection

  • Detect suspicious device changes
  • Monitor for automated bots
  • Identify virtual machines
  • Track device reputation

Compliance & Auditing

  • Device access logs
  • Compliance reporting
  • Track data access by device
  • Audit trail generation

Technical Specifications

Hardware Data Collection

Component Information Platform Support
CPU Model, cores, architecture Windows, macOS, Linux
Network MAC addresses Windows, macOS, Linux
Storage Disk serial numbers Windows, macOS, Linux
System OS type, version, hostname All platforms

Cryptographic Primitives

Algorithm Key Size Security Level Standard
SHA3-512 N/A 256-bit FIPS 202
AES-GCM 256-bit 256-bit FIPS 197
Scrypt 256-bit Memory-hard RFC 7914

ML Anomaly Detection

  • Algorithm: IsolationForest (scikit-learn)
  • Features: CPU%, Memory%, Battery%, Network activity
  • Training: Minimum 50-100 baseline samples
  • Output: Binary classification (-1=anomaly, 1=normal) + anomaly score

Dependencies

Core Requirements

  • numpy >= 1.21.0 - Numerical operations
  • scikit-learn >= 1.0.0 - Machine learning
  • psutil >= 5.8.0 - System metrics
  • cryptography >= 41.0.0 - Encryption
  • keyring >= 23.0.0 - OS keyring integration

Optional Features

  • pqcdualusb >= 0.1.4 - Post-quantum cryptography
  • boto3 - AWS S3 integration
  • azure-storage-blob - Azure Blob Storage

Testing

Test Suite

  • 57 tests covering all core functionality
  • 31% code coverage
  • Automated CI/CD with GitHub Actions
  • Multi-platform testing (Windows, macOS, Linux)
  • Multi-version testing (Python 3.9-3.12)

Run Tests

# Install dev dependencies
pip install device-fingerprinting-pro[dev]

# Run tests
pytest

# With coverage
pytest --cov=device_fingerprinting --cov-report=html

Troubleshooting

Common Issues

ImportError: No module named 'sklearn'

pip install scikit-learn>=1.0.0

KeyringError: No backend found (Linux)

sudo apt-get install gnome-keyring
# or
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring

Fingerprint changes after reboot

  • Check if MAC addresses are randomized (privacy features)
  • Ensure network interfaces have stable ordering
  • Verify disk serials are accessible with proper permissions

Anomaly detector reports false positives

  • Collect more baseline samples (100+ recommended)
  • Train during normal system operation
  • Adjust contamination parameter (default: 0.1)

Performance Optimization

Fingerprint Generation:

  • Cache results (fingerprints rarely change)
  • Use async for network operations
  • Skip slow hardware checks if needed

Anomaly Detection:

  • Reduce sampling frequency (e.g., every 60s)
  • Use pre-trained models
  • Batch predictions when possible

Storage Operations:

  • Batch writes
  • Use in-memory cache for frequent reads
  • Compress large data before encryption

Documentation & Support

Contributing

Contributions welcome! Please see CONTRIBUTING.md

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new features
  4. Submit a pull request

License

MIT License - see LICENSE for details

Changelog

Version 2.2.0 (2025-12-21)

  • Added TPM/Secure Hardware fingerprinting support
  • Dual-mode architecture: software (default) and tpm_strict (enforced)
  • Cross-platform TPM detection (Windows TPM 2.0, macOS Secure Enclave, Linux TPM)
  • Hardware attestation with privacy-preserving obfuscation
  • Enhanced security for deployment requiring hardware-backed identity

Version 2.0.0 (2025-10-18)

  • Initial PyPI release
  • Device fingerprinting
  • ML-based anomaly detection
  • AES-GCM encryption and secure storage
  • Cross-platform support (Windows, macOS, Linux)
  • Test suite (57 tests)
  • CI/CD pipeline with GitHub Actions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

device_fingerprinting_pro-2.2.3.tar.gz (115.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

device_fingerprinting_pro-2.2.3-py3-none-any.whl (91.2 kB view details)

Uploaded Python 3

File details

Details for the file device_fingerprinting_pro-2.2.3.tar.gz.

File metadata

File hashes

Hashes for device_fingerprinting_pro-2.2.3.tar.gz
Algorithm Hash digest
SHA256 7156083ddb9cbac0c437386e527c20cbfd42e5eb6f6ba287fd7b18270e433de9
MD5 880a043f60597134d0f9f66afe027dd1
BLAKE2b-256 21a5aae2274d9fb1301d4bc8b2c091e8bfe306f7df5e244ef2a2187fae479552

See more details on using hashes here.

File details

Details for the file device_fingerprinting_pro-2.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for device_fingerprinting_pro-2.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 14bd106d86d7fb59ccca803bf0737459937a0d4f7f0c00be98ce337d03cb3b6e
MD5 63626f5ca8abc19a88ea20ff10d6223f
BLAKE2b-256 3ef504d573133a287908aada81be7f2fd6d2e4dda79b3918f95a33220c741569

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page