Introductie
Tegenwoordig worden alle applicaties of software die gebruikers gebruiken gevirtualiseerd en gedownload vanuit een Docker-container. Veel gebruikers vrezen dat aanvallers mogelijk hebben geknoeid met het bestand dat gebruikers vanuit de container downloaden en er een schadelijk script of malware in hebben geplaatst. Als dit het geval is, wordt het systeem getroffen door het schadelijke script van de aanvaller wanneer iemand het downloadt en uitvoert.
De noodzaak voor Docker-imageondertekening:
Als een organisatie software/producten aan haar klanten levert, hoe kan de klant dan controleren of er niet mee geknoeid is? Om klanten hier gemoedsrust over te geven, kan een organisatie haar vertrouwde handtekening op de software/het product zetten. Als iemand probeert de code te manipuleren, wordt de handtekening gewijzigd. Dit is waar image signing om de hoek komt kijken. Image signing is een manier waarop een organisatie haar image kan ondertekenen voordat deze naar de container wordt gepusht, zodat de klant deze veilig kan gebruiken.
Net zoals kwaadaardige activiteiten kunnen worden gedetecteerd door codeondertekening, wordt de handtekening eerst geverifieerd wanneer een gebruiker het bestand probeert te installeren of uit te voeren. Als de afbeelding van de organisatie is ondertekend certificaat Als de zoekterm niet wordt gevonden, kan de gebruiker niet verdergaan.
Wat is Docker Image Signing?
Docker-imageondertekening is het proces waarbij Docker-images digitaal worden ondertekend om de identiteit van de softwareauteur te bevestigen en de garantie te bieden dat de code niet is gewijzigd of aangetast.
Hoe werkt Docker Image Signing?
De manier waarop beeldondertekening werkt, kan worden opgesplitst in twee delen:
- Aan de server- of ontwikkelaarskant
- Aan de kant van de klant
In de eerste plaats zullen we bespreken hoe de
proces vindt plaats aan de serverzijde:

- Het originele beeld, dat wil zeggen het docker-beeld dat de gebruiker veilig aan klanten wil verstrekken, wordt eerst gehasht door een hashing algoritme, omdat het praktisch onmogelijk is om een hash om te draaien.
- Het gehashte dockerimage dat we ontvangen, wordt vervolgens ondertekend met de privésleutel van de ontwikkelaar.
- De ondertekende hash-dockerimage wordt vervolgens ingepakt met de originele image en het digitale certificaat. Samen worden deze twee ook wel een imageondertekeningscertificaat genoemd.
- Nu kan het geüpload of overgedragen worden naar de klant.
Laten we nu eens kijken hoe dit proces aan de clientzijde plaatsvindt.

- De originele docker-image wordt door een hash-algoritme gehaald om de hash van de image te verkrijgen.
- De openbare sleutel wordt uit het certificaat gehaald en toegepast op de ondertekende hash van de docker-image om de hash van de image te extraheren.
- De twee hashes die in stap 1 en 2 zijn gemaakt, worden vergeleken. Als beide hashes hetzelfde zijn, is de afbeelding niet gewijzigd en wordt de handtekening als geldig beschouwd.
- Tegelijkertijd wordt het certificaat voor beeldondertekening gecontroleerd om er zeker van te zijn dat het is ondertekend door een vertrouwde CA. De vervaldatum van het certificaat voor beeldondertekening wordt gecontroleerd en het certificaat wordt ook gecontroleerd aan de hand van de intrekkingslijsten om de geldigheid ervan te garanderen.
Zwakke punten van Docker Image Signing
Er zijn ook verschillende zwakke punten aan beeldondertekening, waaronder:
Onjuist beheer van de privésleutel die aan het begin van het ondertekeningsproces van de afbeelding wordt aangemaakt, kan leiden tot onveiligheid van de verzonden software. Als een legitieme privésleutel wordt gestolen, kan de aanvaller zijn schadelijke software coderen met de privésleutel, waardoor de gebruiker weet dat de software veilig is om te gebruiken, ook al is dat niet zo.
Kwaadwillenden kunnen een vertrouwd certificaat verkrijgen, maar wat de meeste aanvallers afschrikt, is de noodzaak om identificatiegegevens te verstrekken om een certificaat te verkrijgen. Als kwaadaardige software wordt verspreid met een legitiem certificaat, kan de ontwikkelaar worden geïdentificeerd en gestopt.
Note:Als de gebruiker de installatie van de software toestaat, zelfs als het besturingssysteem aangeeft dat het geen ondertekende afbeelding is, dan is het ondertekenen van de afbeelding nutteloos.
Om deze zwakheden te voorkomen, kunt u de volgende best practices volgen:
Voor de bescherming van encryptiesleutels, Hardware Security Modules of HSM's, moet worden gebruikt. Een HSM is een gespecialiseerd, zeer betrouwbaar fysiek apparaat. Het is een netwerkcomputer die alle belangrijke cryptografische bewerkingen uitvoert, waaronder encryptie, decryptie, authenticatie, sleutelbeheer, sleuteluitwisseling, enz. Ze zijn fraudebestendig en maken gebruik van uiterst veilige cryptografische bewerkingen.
In combinatie met HSM's moet bij sleutels het principe van minimale privileges worden toegepast, om ervoor te zorgen dat alleen gebruikers die de sleutel nodig hebben, er toegang toe hebben.
Tot slot is voorzichtigheid geboden bij het ondertekenen van afbeeldingen. Download en installeer alleen software die is ondertekend door een vertrouwde CA.
Toekomst van codeondertekening
Zoals we vandaag de dag kunnen zien, zijn beveiliging en vertrouwen een belangrijk onderdeel van de groei van elke organisatie. Elke organisatie wil haar gegevens veilig bewaren en haar klanten veilige gegevens aanbieden. Er vinden dagelijks diverse kwaadaardige activiteiten plaats, waardoor het aantal image signing-activiteiten exponentieel zal toenemen. Elke organisatie moet code signing en image signing in de praktijk brengen.
Ons aanbod van Code Signing
Ons product, CodeSign Secure, biedt een veilige en flexibele oplossing voor de codeondertekeningsbehoeften van een organisatie voor het ondertekenen van Windows-, Linux-, Macintosh-, Docker- en Android-/iOS-apps.
Ons framework kan worden uitgebreid om, indien gewenst door onze klanten, andere code of documenten te beschermen.
- De sleutels worden beschermd door uw keuze voor HSM: nCipher, Utimaco, Safenet.
- Er worden beleidsregels en workflows gedefinieerd om uw proces voor het indienen en goedkeuren van taken te beveiligen en te stroomlijnen.
- Uw bestaande virus- en malwarescans kunnen systematisch worden geïntegreerd.
- Ontwikkeld op een open REST API, waardoor aangepaste integraties en vereisten mogelijk zijn.
Conclusie
Data is cruciaal in deze verbonden wereld, waar codeondertekening kan worden gebruikt voor dataverificatie. Gemanipuleerde data kan leiden tot ernstig dataverlies en mag daarom niet worden vertrouwd. Software moet ook een waarschuwing tonen of de installatie van software met niet-vertrouwde certificaten volledig blokkeren. Gesigneerde software of applicatie kan een vertrouwd netwerk van gebruikers, apparaten en programma's creëren.
