Architektura i Eksperymenty
Ostatnia aktualizacja: 2026-05-27
Architektura systemu
Opis ogólny
System ciągłego uwierzytelniania oparty na biometrii behawioralnej, łączący dynamikę pisania na klawiaturze (TypeNet LSTM) z modelem federacyjnym i differential privacy. Główny wkład techniczny: transfer TypeNet do detekcji botów w formularzach e-commerce oraz privacy-preserving continuous authentication z on-device inference (<50ms).
Komponenty główne
| Komponent | Opis | Technologia |
|---|---|---|
| M1 – Keystroke Feature Extractor | Ekstrakcja cech z sekwencji klawiszy (HL, IL, RL, PL timings) | JavaScript (browser), TF.js |
| M2 – TypeNet LSTM | 2-layer LSTM z triplet loss do reprezentacji keystroke biometrics | PyTorch, triplet loss |
| M3 – Bot/Human Classifier | Klasyfikacja sesja: człowiek vs bot na podstawie M2 | SVM, RF, TypeNet fine-tuned |
| M4 – Federated Aggregator | FedAvg + DP-SGD aggregation gradientów z wielu klientów | PySyft / Flower |
| M5 – Continuous Auth Engine | Re-autentykacja co 50 keystrokes; sesja aktywna/hijacked | threshold, DDQN (Bansal) |
Przepływ danych
flowchart TD BFE([Browser form events]) --> M1[M1 Feature Extractor] M1 --> M2[M2 TypeNet LSTM] TRIPLET([Triplet: anchor=human\nnegative=bot]) --> M2 M2 --> EMB([Embedding vector]) EMB --> M3[M3 Bot Classifier] M3 --> DEC([BOT / HUMAN per-session]) DEC --> M5[M5 Continuous Auth\nre-auth co 50 keystrokes] M5 --> ALERT([Alert: session hijacking]) M5 -->|gradient on-device| M4[M4 FL Aggregator\nFedAvg + DP-SGD ε=1.0] M4 --> GLOBAL([Global model update])
Stack technologiczny
| Warstwa | Technologia | Uzasadnienie |
|---|---|---|
| Język | Python 3.11+ / TypeScript | ML backend / browser JS |
| ML framework | PyTorch 2.x | TypeNet LSTM, triplet loss |
| On-device | TensorFlow.js | <50ms browser inference |
| Federated | Flower (flwr) | FedAvg + DP-SGD |
| Dane | Dhakal 168K users, Palin 60K users | publiczne keystroke datasets |
| Pomiar / eval | EER, AUC, FPR@TPR=0.8 | standard biometrics metrics |
Eksperymenty
BB-EXP-1: TypeNet Transfer do Bot Detection w Formularzach E-Commerce
Status: planned
Priorytet: high
Powiązany pomysł: BB-1
Dodano: 2026-05-27
Hipoteza: Model TypeNet (2-layer LSTM, triplet loss) wytrenowany na keystroke sekwencjach z formularzów e-commerce osiąga AUC ≥ 0.90 w rozróżnianiu botów (Selenium, Playwright) od ludzi, przy minimalnej sekwencji 20-30 klawiszy — co jest wystarczające dla praktycznego zastosowania w formularzach checkout.
Dane:
- Dataset: własny (1,000+ ludzkich sesji MTurk + 5,000+ botów: Selenium/Playwright/randomizowane)
- Podział: 70/15/15 train/val/test (per-user stratified)
- Preprocessing: normalizacja czasów klawiszy, padding/masking sekwencji do M=70
Metoda:
- Zebranie keystroke data przez instrumentację formularza checkout (JavaScript collector)
- Generowanie botów: proste (stała prędkość), zaawansowane (randomizacja, błędy)
- Trenowanie TypeNet (LSTM, triplet loss) na sekwencjach M=70 klawiszy
- Ablation: porównaj M ∈ {20, 30, 50, 70} klawiszy → kiedy AUC saturuje?
- Baseline: Random Forest na statystykach keystroke (mean/std hold-time)
Modele / Baseline:
| Model | Opis |
|---|---|
| RF na keystroke statistics | mean/std HL, IL, RL — szybki baseline |
| TypeNet M=70 | pełna sekwencja, oryginał Acien 2021 |
| TypeNet M=20 | skrócona sekwencja — praktyczne e-commerce |
| TypeNet M=30 | kompromis długość–dokładność |
Metryki:
- Główna: AUC (próg sukcesu: ≥0.90 dla M=20)
- Dodatkowe: EER, FPR@TPR=0.95, latencja inferencji [ms]
- Test statystyczny: DeLong test (TypeNet M=20 vs RF, α=0.05)
Wyniki: (do wypełnienia po wykonaniu)
| Model | AUC | EER | [email protected] | Latencja |
|---|
Wnioski: (do wypełnienia po wykonaniu)
BB-EXP-2: Privacy-Preserving Continuous Authentication: FL + DP-SGD
Status: planned
Priorytet: high
Powiązany pomysł: BB-2
Dodano: 2026-05-27
Hipoteza: FedAvg + DP-SGD (ε=1.0, δ=10⁻⁵) osiągnie accuracy ≥ 90% (vs 94.7% model centralny) przy symulacji 10 klientów federacyjnych na Dhakal dataset — potwierdzając akceptowalny trade-off prywatność–dokładność dla ciągłego uwierzytelniania w e-commerce.
Dane:
- Dataset: Dhakal 168K users (publiczny), własny session hijacking dataset (synthetic)
- Podział: 10 partycji (symulacja klientów FL), 80/20 local train/test per klient
- Preprocessing: normalizacja keystroke timings, okno 50 klawiszy
Metoda:
- Implementacja LSTM (2 warstwy) do ciągłego uwierzytelniania (re-auth co 50 klawiszy)
- Trenowanie centralne (baseline) na Dhakal dataset
- Federacyjna symulacja: 10 klientów (Flower), FedAvg 50 rund
- DP-SGD: Opacus (PyTorch) z ε ∈ {0.1, 0.5, 1.0, 5.0, ∞}
- Atak sesji: symulacja session hijacking + credential stuffing → TPR alertów
Modele / Baseline:
| Model | Opis |
|---|---|
| Centralny LSTM | brak prywatności, upper bound |
| FedAvg LSTM | federacyjny, bez DP |
| FedAvg + DP (ε=1.0) | target: prywatność + skuteczność |
| FedAvg + DP (ε=0.1) | wysokie DP, niższe accuracy |
Metryki:
- Główna: accuracy ciągłej autentykacji (próg sukcesu: ≥90%)
- Dodatkowe: TPR na session hijacking, komunikacja FL (MB per runda), latencja inference
- Test statystyczny: t-test (FL+DP vs centralny, α=0.05)
Wyniki: (do wypełnienia po wykonaniu)
| Model | Accuracy | TPR (hijacking) | ε | Comm. [MB/runda] |
|---|
Wnioski: (do wypełnienia po wykonaniu)
Pipeline danych
Keystroke data zbierana przez JavaScript event listener (keydown, keyup timestamps). Dla Dhakal dataset: publiczny CSV z HL/IL/RL/PL dla 168K użytkowników, podzielony na 10 partycji FL. Sesje session hijacking: syntetyczne, generowane przez podmianę keystroke profilu użytkownika na profil atakującego po N keystrokes.
Wymagania techniczne
Środowisko
Python: 3.11+
GPU: opcjonalnie (LSTM trenowanie szybkie na CPU)
RAM: min. 8 GB
Dysk: ~10 GB (Dhakal dataset + modele)
Kluczowe biblioteki
# requirements-research.txt
torch>=2.0
opacus>=1.4 # DP-SGD
flwr>=1.7 # Flower federated
scikit-learn>=1.3
numpy>=1.25
pandas>=2.0