Stap 10: Beveiligd communicatiekanaal het platform
Het lastigste onderdeel van dit project was het ontwerp van een beveiligd kanaal, dat zou tegen Replay en Man-In-The-Middle aanvallen. Ik denk dat ik was in staat om dit te bereiken, en ik de oplossing geïmplementeerd op een manier die het zeer gemakkelijk maakt om opnieuw te gebruiken in andere vonk Core project.
Deze stap geeft een overzicht van hoe deze bibliotheek is ontworpen en gebruikt.
SecureChannelServer
Alle van de crypto primitieven en het protocol van de instelling sessie worden geïmplementeerd door de SecureChannelServer. De uitvoering delegeert feitelijke communicatie en berichtverwerking op CommunicationChannel en SecureMessageConsumer interfaces. Dit zijn de enige twee interfaces die moet worden geïmplementeerd door een gebruiker van deze bibliotheek.
Merk op dat de enige openbare methode in die deze klasse heeft loop. Het is bedoeld om te worden aangeroepen vanuit de belangrijkste loop -methode in application.cpp, bediend door de Spark Core libraries.
De details van de werking van deze klasse zijn in een volgende stap.
CommunicationChannel
Wordt gebruikt voor een specifieke communicatie-aanpak, zoals TCP/IP over WiFi bijvoorbeeld implementeren. Het weet niets over coderen of decoderen van de gegevens. In plaats daarvan, zal SecureChannelServer deze interface gebruiken wanneer het moet lezen of schrijven van gecodeerde gegevens.
SecureMessageConsumer
Uitvoering ontvangt gedecodeerde berichten en reacties van de platte-tekst terug naar de SecureChannelServerzal terugkeren. Het is volledig neutraal of hoe het bericht werd gedecodeerd, hoe het werd ontvangen.
Dit ontwerp aanpak maakt het zeer gemakkelijk om te ontwikkelen en testen van de SecureChannelServer. Als je in de kern-firmware/bibliotheken/garage/tests kijkt, vindt u dummytest implementaties van beide interfaces, waardoor het mogelijk voor mij om te schrijven en debuggen van alle crypto code w/o eventuele behoefte aan hardware of zelfs netwerk.
WiFiCommunicationChannel Klasse
Behandelt de specifieke kenmerken van de kern verbinden met WiFi, een TCP/IP-server op haven 6666 beheert en beheren van clientverbindingen. Dit is de klasse die gepingd de testserver elke minuut om te controleren van de gezondheid van de verbinding.
Garage Klasse
Dit is onze implementatie van de SecureMessageConsumer -interface. Het fungeert als de garage deur controller, behandeling van de bijzonderheden van de hardware van de schakelaar te activeren, en het lezen van de deur sensor.
Raadpleeg het UML-diagram voor meer informatie.