Přednáška o tom, jak nám na Strahově dělá vrátné Debian, JavaScript a asistuje jim u toho Ruby on Rails a PostgreSQL. Zkrátka o tom jak navrhnout RFID přístupový systém do zájmových místností v areálu, kde žije 4000 lidí.
Přednáška na konferenci InstallFest 2014
4. Obsah
• Co to je?
• Motivace a požadavky
• Architektura
– Dveřní jednotka
– Komunikace
– Integrace s dalšími systémy
5. Systémy kontroly vstupů
ČSN norma (ČSN EN 50133-2-1)
• Poplachové systémy – Systémy kontroly vstupů pro
použití v bezpečnostních aplikacích
• Individuální / Centralizované
• Požadavky (včetně např. IP krytí)
• Neřeší způsob identifikace (pouze počet možností)
6. Motivace
• Areál kolejí Strahov (ČVUT)
• Každý má dnes nějakou RFID kartu
… ale ne všichni jsou studenti ČVUT
• ČVUT systém
• Nasadit pro zájmové místnosti
7. RFID
• Bezkontaktní karta
• Mifare
– 13.56 MHz
• Např. OpenCard, NFC platební karta,…
Studentská karta ČVUT
• Od výroby má každá karta jedinečné ID
8. Základní požadavky
• Využít stávající karty
– Ale možnost přidělit vlastní (non ČVUT lidé)
•
•
•
•
•
Přímé napojení na IS
Jednoduchá správa
Rychlý vývoj (malý počet jednotek)
Možnosti rozvoje do budoucna
Splňovat ČSN EN 50133-2-1 (ne 100%)
11. Dveřní jednotka
• Základem je BeagleBone Black
– ~ mini počítač ala Raspberry Pi
– Má ale mnohem víc GPIO
– Distribuce Debian
• Původní návrh počítal s ARM Cortex M3 + ETH
modul – cenově srovnatelné s BBB
13. SW dveřní jednotky
• JavaScript
• Node.js
– JS platforma postavená nad V8
– event-driven, non-blocking I/O model
• NPM (node package manager)
– Knihovna Serialport
– Knihovna Onoff
15. Node.js (asynchronní kód I.)
var Gpio = require('onoff').Gpio,
led = new Gpio(17, 'out');
function on () {
led.writeSync(1);
setTimeout(off, 1000);
}
function off () {
led.writeSync(0);
setTimeout(on, 1000);
}
on();
16. Node.js (asynchronní kód II.)
function on () {
led.write(1, function (err) {
if (err) throw err;
setTimeout(off, 1000);
});
}
function off () {
led.write(0, function (err) {
if (err) throw err;
setTimeout(on, 1000);
});
}
on();
17. Node.js (asynchronní kód II. - lépe)
function callFn(fn) {
return function (err) {
if (err) throw err;
setTimeout(off, 1000);
}
}
function on () {
led.write(1, callFn(off));
}
function off () {
led.write(0, callFn(on));
}
on();
19. Komunikace s ISem
• HTTPS
– Serverový i klientský certifikát
– Server i klient ověřuje Fingerprint certifikátu
• Komunikace pomocí REST
– RESTful webservice
21. Jak zjistit místnost
• Čtečka (pošle požadavek na IS)
→ zařízení v síti
→ přiřazené v místnosti
→ do místnosti má přístup skupina
→ uživatel
→ ID karty
23. Okolní systémy
Monitoring
SMS při narušení
• Icinga
• Observium
• Statistika provozu
Bezpečnostní kamery
Vzdálená zpráva
• Záznam při otevření
dveří
• VPN, SSH
• Proxy
Nějaké další nápady…