Wéi mir geléiert hunn Chinesesch Kameraen fir 1000 Rubel mat der Wollek ze verbannen. Keng Logger oder SMS (a Millioune Dollar gespuert)

Hallo jiddereen!

Et ass méiglecherweis kee Geheimnis datt Cloud Video Iwwerwaachungsservicer viru kuerzem Popularitéit gewonnen hunn. An et ass kloer firwat dat geschitt ass, Video ass "schwéier" Inhalt, de Stockage vun deem erfuerdert Infrastruktur a grouss Quantitéiten vun Disk Stockage. Mat engem on-premises Video Iwwerwaachungssystem erfuerdert Fongen fir ze bedreiwen an z'ënnerstëtzen, souwuel fir eng Organisatioun déi Honnerte vun Iwwerwaachungskameraen benotzt a fir en individuellen Benotzer mat verschiddene Kameraen.

Wéi mir geléiert hunn Chinesesch Kameraen fir 1000 Rubel mat der Wollek ze verbannen. Keng Logger oder SMS (a Millioune Dollar gespuert)

Cloud Video Iwwerwaachungssystemer léisen dëse Problem andeems de Clienten eng existent Videolagerung a Veraarbechtungsinfrastruktur ubitt. E Cloud Video Iwwerwaachungsclient muss einfach d'Kamera mam Internet verbannen an se mat sengem Cloud Kont verbannen.

Et gi verschidde technologesch Weeër fir Kameraen mat der Wollek ze verbannen. Sécherlech ass déi bequemst a bëllegst Method datt d'Kamera direkt mat der Wollek verbënnt a funktionnéiert, ouni d'Participatioun vun zousätzlech Ausrüstung wéi e Server oder Recorder.

Fir dëst ze maachen, ass et néideg datt e Softwaremodul, deen mat der Wollek funktionnéiert, op der Kamera installéiert ass. Wéi och ëmmer, wa mir iwwer bëlleg Kameraen schwätzen, dann hunn se ganz limitéiert Hardware Ressourcen, déi bal 100% vun der gebierteg Firmware vum Kamera Verkeefer besat sinn, an et gi keng Ressourcen néideg fir de Cloud Plugin. Entwéckler vun ivideon hunn dëse Problem gewidmet Artikel, wat erkläert firwat se de Plugin net op bëlleg Kameraen installéiere kënnen. Als Resultat ass de Mindestpräis vun der Kamera 5000 Rubel ($ 80 Dollar) a Millioune Suen op Ausrüstung ausginn.

Mir hunn dëse Problem erfollegräich geléist. Wann Dir interesséiert sidd wéi - wëllkomm op de Schnëtt

E bësse vun der Geschicht

Am 2016 hu mir ugefaang eng Cloud Video Iwwerwaachungsplattform fir Rostelecom z'entwéckelen.

Wat d'Kamera Software ugeet, hu mir an der éischter Etapp de "Standard" Wee fir sou Aufgaben gefollegt: mir hunn eisen eegene Plugin entwéckelt, deen an der Standard Firmware vun der Kamera vum Verkeefer installéiert ass a mat eiser Cloud funktionnéiert. Wéi och ëmmer, et ass derwäert ze bemierken datt mir während dem Design déi liicht an effizientst Léisunge benotzt hunn (zum Beispill plain C Implementatioun vu Protobuf, libev, mbedtls a komplett opginn praktesch awer schwéier Bibliothéiken wéi Boost)

Am Moment sinn et keng universell Integratiounsléisungen um IP Kameramaart: all Verkeefer huet seng eege Manéier fir de Plugin z'installéieren, seng eege Set vun APIen fir d'Firmware ze bedreiwen an en eenzegaartegen Updatemechanismus.

Dëst bedeit datt fir all Kamera Verkeefer et néideg ass individuell eng ëmfaassend Schicht vun Integratiounssoftware z'entwéckelen. A beim Start vun der Entwécklung ass et unzeroden nëmme mat 1 Verkeefer ze schaffen fir d'Efforte vum Team op d'Entwécklung vun der Logik fir mat der Wollek ze konzentréieren.

Den éischte Verkeefer, deen gewielt gouf, war Hikvision, ee vun de Weltleit am Kameramaart, deen eng gutt dokumentéiert API a kompetent technesch technesch Ënnerstëtzung ubitt.

Mir hunn eisen éischte Pilotprojet gestart, Cloud Video Iwwerwaachung Video Comfort, mat Hikvision Kameraen.

Bal direkt nom Start hunn eis Benotzer ugefaang Froen ze stellen iwwer d'Méiglechkeet méi bëlleg Kameraen vun aneren Hiersteller un de Service ze verbannen.

Ech hunn d'Optioun verworf fir eng Integratiounsschicht fir all Verkeefer bal direkt ëmzesetzen - well et schlecht skalierbar ass an sérieux technesch Ufuerderungen un d'Kamera Hardware setzt. D'Käschte vun enger Kamera déi dësen Input Ufuerderunge entsprécht: ~60-70 $

Dofir hunn ech beschloss méi déif ze gräifen - meng eegen Firmware fir Kameraen vun all Verkeefer ze maachen. Dës Approche reduzéiert däitlech d'Ufuerderunge fir Kamera Hardware Ressourcen - well D'Schicht fir mat der Wollek ze schaffen ass vill méi effektiv mat der Videoapplikatioun integréiert, an et gëtt keen onnéideg onbenotzt Fett an der Firmware.

A wat wichteg ass, ass datt wann Dir mat der Kamera op engem nidderegen Niveau schafft, et méiglech ass Hardware AES ze benotzen, déi Daten verschlësselt ouni zousätzlech Belaaschtung op der Low-Power CPU ze kreéieren.

Wéi mir geléiert hunn Chinesesch Kameraen fir 1000 Rubel mat der Wollek ze verbannen. Keng Logger oder SMS (a Millioune Dollar gespuert)

Mir haten dee Moment guer näischt. Iwwerhaapt näischt.

Bal all Ubidder waren net prett mat eis op esou engem nidderegen Niveau ze schaffen. Et gëtt keng Informatioun iwwer de Circuit a Komponenten, et gëtt keng offiziell SDK vu Chipsets a Sensordokumentatioun.
Et gëtt och keng technesch Ënnerstëtzung.

All Froen hu missen duerch Reverse Engineering geäntwert ginn - Versuch a Feeler. Mee mir hunn et fäerdeg bruecht.

Déi éischt Kameramodeller, déi mir getest hunn, ware Xiaomi Yi Ants, Hikvision, Dahua, Spezvision, D-Link Kameraen a verschidde ultra-bëlleg Nameless Chinese Kameraen.

Technique

Kameraen baséiert op Hisilicon 3518E Chipsatz. D'Hardware Charakteristike vun de Kameraen sinn wéi follegt:

Xiaomi Yi Ants
Kee Numm

SoC
Hisilicon 3518E
Hisilicon 3518E

Ram
64MB
64MB

Flash
16MB
8MB

Wifi
mt7601/bcm43143
-

éichter
ov9732 (720p)
ov9712 (720p)

Ethernet
-
+

MicroSD
+
+

Mikrofhone
+
+

Mammesprooch
+
+

IRLed
+
+

IRCut
+
+

Mir hunn mat hinnen ugefaang.

Mir ënnerstëtzen de Moment Hisilicon 3516/3518 Chipsets, souwéi Ambarella S2L / S2LM. Et ginn Dosende vu Kameramodeller.

Firmware Zesummesetzung

uboot

uboot ass de Bootloader, et boott als éischt nom Stroum un, initialiséiert d'Hardware a lued de Linux Kernel.

D'Kamera Luede Skript ass zimmlech trivial:

bootargs=mem=38M console=ttyAMA0,115200 rootfstype=ramfs mtdparts=hi_sfc:256K(boot),64K(tech),4096K(kernel),8192K(app),-(config) hw_type=101
bootcmd=sf probe 0; sf read 0x82000000 0x50000 0x400000; bootm 0x82000000; setenv bootargs $(bootargs) bkp=1; sf read 0x82000000 0x450000 0x400000; bootm 0x82000000

Ee vun de Fonctiounen ass, datt et zweemol genannt gëtt bootm, Méi iwwer dëst e bësse méi spéit, wa mir op den Update-Subsystem kommen.

Opgepasst op d'Linn mem=38M. Jo, jo, dëst ass keen Tippfeeler - de Linux Kernel an alles, all, all Uwendungen hunn Zougang zu nëmmen 38 Megabytes RAM.

Och nieft uboot gëtt et e spezielle Block genannt reg_info, deen e Low-Level Skript enthält fir d'Initialiséierung vun DDR an eng Rei vu Systemregistere vum SoC. Inhalt reg_info hänkt vum Kameramodell of, a wann et net richteg ass, wäert d'Kamera net emol fäeg sinn uboot ze lueden, awer am fréie Stadium vum Luede afréieren.

Am Ufank, wa mir ouni Verkeefer Support geschafft hunn, hu mir dëse Block einfach vun der Original Kamera Firmware kopéiert.

Linux Kernel a Rootfs

D'Kameraen benotzen den Linux Kernel, deen Deel vum Chip SDK ass; normalerweis sinn dës net déi lescht Kernel aus der 3.x Branche, also musse mir dacks mat der Tatsaach këmmeren datt Treiber fir zousätzlech Ausrüstung net kompatibel sinn mat dem benotzte Kernel , a mir mussen se op d'Kernelkameraen zréckportéieren.

En anert Thema ass d'Gréisst vum Kärel. Wann d'FLASH Gréisst nëmmen 8MB ass, zielt all Byte an eis Aufgab ass all onbenotzt Kernelfunktiounen virsiichteg auszeschalten fir d'Gréisst op e Minimum ze reduzéieren.

Rootfs ass e Basis Dateiesystem. Et enthält busybox, Wifi Modul Chauffeuren, eng Rei vu Standard Systembibliothéiken, wéi z libld и libc, wéi och eis Software, déi verantwortlech ass fir d'LED Kontrolllogik, d'Netzverbindungsverwaltung an d'Firmware Updates.

De Root-Dateisystem ass mam Kernel als Initramfs verbonnen an als Resultat vum Build kréien mir eng Datei uImage, déi souwuel de Kernel wéi och de Rootfs enthält.

Video Applikatioun

Dee komplexsten a ressourceintensivsten Deel vun der Firmware ass d'Applikatioun, déi Video-Audio Capture, Videokodéierung ubitt, Bildparameter konfiguréiert, Videoanalytik implementéiert, zum Beispill Bewegungs- oder Toundetektoren, kontrolléiert PTZ a verantwortlech ass fir den Dag ze wiesselen an Nuecht Modi.

Eng wichteg, ech soe souguer Schlëssel, Feature ass wéi d'Videoapplikatioun mam Cloud Plugin interagéiert.

An traditionelle Léisungen 'Verkeefer Firmware + Cloud Plugin', déi net op bëlleg Hardware funktionnéiere kënnen, gëtt Video an der Kamera iwwer den RTSP Protokoll iwwerdroen - an dëst ass e riesegen Overhead: Kopie an Iwwerdroung vun Daten iwwer Socket, onnéideg Syscallen.

Hei benotze mir de gemeinsame Gedächtnismechanismus - de Video gëtt net kopéiert oder iwwer Socket tëscht de Kamera Software Komponenten geschéckt, doduerch optimal a suergfälteg déi bescheiden Hardwarefäegkeeten vun der Kamera benotzt.

Wéi mir geléiert hunn Chinesesch Kameraen fir 1000 Rubel mat der Wollek ze verbannen. Keng Logger oder SMS (a Millioune Dollar gespuert)

Update Subsystem

E Punkt vu spezielle Stolz ass de Feeler-tolerante Subsystem fir Online Firmwareupdates.

Loosst mech de Problem erklären. D'Aktualiséierung vun der Firmware ass technesch keng atomar Operatioun, a wann e Stroumausfall an der Mëtt vum Update geschitt, da wäert de Flash Memory en Deel vun der "ënnerschriwwener" neier Firmware enthalen. Wann Dir keng speziell Moossname maacht, wäert d'Kamera dann e "Zille" ginn, deen an e Servicecenter geholl muss ginn.

Mir hunn och mat dësem Problem behandelt. Och wann d'Kamera wärend dem Update ausgeschalt ass, wäert se automatesch an ouni Benotzerinterventioun d'Firmware aus der Wollek eroflueden an d'Operatioun restauréieren.

Loosst eis d'Technik méi am Detail kucken:

De stäerkste vulnérabel Punkt ass d'Partition iwwerschreiwe mam Linux Kernel a Root Dateisystem. Wann ee vun dëse Komponenten beschiedegt ass, wäert d'Kamera guer net iwwer den uboot Bootloader booten, deen d'Firmware net aus der Wollek eroflueden kann.

Dëst bedeit datt mir musse suergen datt d'Kamera e funktionnéierende Kernel a rootfs zu all Moment während dem Updateprozess huet. Et géif schéngen datt déi einfachst Léisung dauernd zwee Exemplare vum Kernel mat rootfs am Flash Memory ze späicheren an, wann den Haaptkär beschiedegt ass, se aus der Backupkopie ze lueden.

Eng gutt Léisung - awer de Kernel mat Rootfs hëlt ongeféier 3.5MB an fir e permanente Backup musst Dir 3.5MB allocéieren. Déi bëllegst Kameraen hunn einfach net sou vill fräi Plaz fir e Backup-Kernel.

Dofir, fir de Kernel während engem Firmware Update ze backen, benotze mir d'Applikatiounspartition.
A fir déi gewënscht Partition mam Kernel ze wielen, ginn zwee Kommandoen benotzt bootm am uboot - am Ufank probéieren mir den Haaptkär ze lueden a wann et beschiedegt ass, dann de Backup.

Wéi mir geléiert hunn Chinesesch Kameraen fir 1000 Rubel mat der Wollek ze verbannen. Keng Logger oder SMS (a Millioune Dollar gespuert)

Dëst garantéiert datt zu all Zäit d'Kamera de richtege Kernel mat rootfs huet, an et wäert fäeg sinn d'Firmware ze booten an ze restauréieren.

CI / CD System fir Firmware ze bauen an z'installéieren

Fir Firmware ze bauen, benotze mir gitlab CI, déi automatesch Firmware fir all ënnerstëtzt Kameramodeller baut, an nodeems d'Firmware gebaut gëtt, gëtt se automatesch an de Kamera Software Update Service ofgesat.

Wéi mir geléiert hunn Chinesesch Kameraen fir 1000 Rubel mat der Wollek ze verbannen. Keng Logger oder SMS (a Millioune Dollar gespuert)

Vum Service, Firmwareupdates ginn op eis QA Testkameraen geliwwert, an no der Ofschloss vun all Teststadien, op d'Kameraen vun de Benotzer.

Informatioun Sécherheet

Et ass kee Geheimnis datt haut Informatiounssécherheet de wichtegsten Aspekt vun all IoT Apparat ass, inklusiv Kameraen. Botnets wéi Mirai roamen um Internet, infizéiert Millioune Kameraen mat Standard Firmware vu Verkeefer. Mat all Respekt fir d'Kamera-Verkeefer, kann ech net hëllefen, datt d'Standard Firmware vill Funktionalitéit enthält, déi net gebraucht gëtt fir mat der Wollek ze schaffen, awer vill Schwachstelle enthält, déi Botnets profitéieren.

Dofir ass all onbenotzt Funktionalitéit an eiser Firmware ausgeschalt, all tcp / udp Ports sinn zou, a wann Dir d'Firmware aktualiséiert, gëtt d'digitale Ënnerschrëft vun der Software iwwerpréift.

An zousätzlech gëtt d'Firmware regelméisseg Tester am Informatiounssécherheetslaboratoire.

Konklusioun

Elo gëtt eis Firmware aktiv a Videoiwwerwaachungsprojeten benotzt. Vläicht déi gréisste vun hinnen ass d'Sendung vum Vote am Dag vun de Wahle vum President vun der Russescher Federatioun.
De Projet huet méi wéi 70 Tausend Kamerae mat eiser Firmware involvéiert, déi bei de Wahlbüroen an eisem Land installéiert goufen.

Nodeems mir eng Rei vu komplexen, an op e puer Plazen, och zu där Zäit bal onméiglech Problemer geléist hunn, hu mir natierlech als Ingenieuren grouss Zefriddenheet kritt, awer ausserdeem hu mir och Millioune Dollar op de Kaf vu Kameraen gespuert. An an dësem Fall sinn spueren net nëmme Wierder an theoretesch Berechnungen, mä d'Resultater vun enger scho fäerdeg Ausschreiwung fir de Kaf vun Ausrüstung. Deementspriechend, wa mir iwwer Cloud Video Iwwerwaachung schwätzen: et ginn zwou Approche - strategesch op nidderegen Niveau Expertise an Entwécklung vertrauen, wat zu enormen Erspuernisser op Ausrüstung resultéiert, oder benotzt deier Ausrüstung, déi, wann Dir spezifesch op Konsumenteigenschaften kuckt, praktesch keng ass anescht wéi ähnlech bëlleg.

Firwat ass et strategesch wichteg fir sou fréi wéi méiglech iwwert d'Wiel vun der Integratioun Approche ze entscheeden? Wann Dir e Plugin entwéckelen, vertrauen d'Entwéckler op bestëmmten Technologien (Bibliothéiken, Protokoller, Standarden). A wann e Set vun Technologien nëmme fir deier Ausrüstung gewielt gëtt, da wäert an Zukunft e Versuch, op bëlleg Kameraen ze wiesselen, héchstwahrscheinlech op e Minimum eng verréckt laang Zäit daueren oder souguer versoen an e Retour op deier Ausrüstung wäert geschéien.

Source: will.com

Setzt e Commentaire