Motivation
Goal: Build a home security system that uses facial recognition to detect an intruder.
How it Works
If a roommate is detected (with or without someone else) don’t ask for a password. If someone is detected and it is not a roommate, ask for a password, if the password is incorrect notify a roommate by sending an email with pictures as attachemnts and a text message. If the password is correct don’t notify roommate.
Tools Used
-
Hardare: Raspberry Pi, Keyboard, Camera
-
Language: Python
-
Packages
-
OpenCV
-
OpenCV-Contrib
-
Numpy
-
Python-PiCamera
-
Twilio
-
Memory_Profiler
-
Demo
Analysis
Memory Analysis
Time Analysis
Security
Assumptions
-
Using minimum number of characters (6 required)
-
Using QWERTY keyboard (101, 104, or 107 possible characters)
-
Using Efficiency Constant = 0.99 Using encryption constant 45898 (from a John the Ripper benchmarks)
Number of combinations: 1.615202*10^12 - 1.5007304*10^12
Brute Force Times
Algorithm: Effective Cores: 1/1-Efficiency Constant)+(Efficiency Constant/Processor Cores GFLOPS: Processor Frequency * Effective Cores Keys per second: GFLOPS/Encryption Constant Seconds = Combos/Keys per second
-
Average Computer (3 ghz, quad core)
-
Effective Cores: 3.883495
-
GFLOPS: 13980582524.3
-
Keys per second: 304601.12694
-
Time (for 101 possible characters): 3484951.65026 seconds, 968.04213 hours, 40.335 days
-
Time (for 107 possible characters): 4926870.80667 seconds, 82114.5134445 minutes, 1368.57522408 hours, 57.024 days
-
-
1,000 Core Computer
-
Effective Cores: 90.9918
-
GFLOPS: 1.6196542*10^14
-
Keys per second: 3528812216.48
-
Time (for 101 possible characters): 300.815 seconds
-
Time (for 107 possible characters): 425.2792 seconds
-
Improvements
-
Use database to store test data
-
Create setup script to setup household
-
To avoid a brute force attack monitor speed of password entry (if speed not humanly possible, exit)