<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>data center &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/data-center/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Tue, 21 Apr 2026 10:33:54 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>data center &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Een &#8220;on-premise&#8221; Trusted Execution Environment gebruiken</title>
		<link>https://www.smalsresearch.be/een-betrouwbare-runtime-omgeving-on-premise-gebruiken/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Tue, 21 Apr 2026 06:30:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[confidential computing]]></category>
		<category><![CDATA[confidential containers]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[TEE]]></category>
		<category><![CDATA[Trusted Execution Environment]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=26524</guid>

					<description><![CDATA[In deze blogpost gaan we in op het onderwerp door bepaalde aspecten van "CoCo" confidential containers in detail te beschrijven en onze installatie op onze eigen hardware toe te lichten.]]></description>
										<content:encoded><![CDATA[
<p>In een <a href="/je-data-beschermen-tegen-beheerders-on-premise-vertrouwelijke-it/">vorige blogpost</a> hebben we de voordelen besproken van confidential containers en hun architectuur in het CoCo-project. In deze blogpost gaan we dieper in op het onderwerp door bepaalde aspecten van CoCo in detail te beschrijven en onze installatie op onze eigen hardware toe te lichten.</p>



<h1 class="wp-block-heading">Containercertificering</h1>



<p>Het gebruik van Kubernetes-pods als abstractielaag voor vertrouwelijke container-workloads introduceert diverse uitdagingen. Door hun dynamische karakter – het maken, verwijderen, updaten van de containers – en de invloed van de Kubernetesomgeving (omgevingsvariabelen, toelatingscontrollers, enz.) valt het moeilijk te garanderen dat enkel de door de gebruiker bedoelde code wordt uitgevoerd. Zo kan het injecteren van kwaadaardige variabelen of het wijzigen van de specificatie van een pod voordat deze wordt gestart, de vertrouwelijkheid in gevaar brengen.</p>



<p>Het CoCo-project stelt een elegante oplossing voor, namelijk het gebruik van een engine voor beveiligingsbeleid, geïntegreerd in de containerruntime-omgeving binnen de trusted execution environment (TEE), die de door de gebruiker gedefinieerde regels toepast. Deze engine kan bijvoorbeeld alleen bepaalde images of commando’s toestaan en problematische verzoeken (zoals het uitvoeren van ongeoorloofde processen) afwijzen. <a href="#Figuur-1">Figuur 1</a> toont een voorbeeld van zo’n beleid.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>package agent_policy

# Seules certaines images de conteneurs peuvent être exécutées
default CreateContainerRequest&nbsp;:= false
CreateContainerRequest if {
    every storage in input.storages {
    some allowed_image in policy_data.allowed_images
    storage.source == allowed_image
  }
}

# Seules certaines commandes peuvent être exécutées
# via ‘kubectl exec’ dans les images de conteneurs
default ExecProcessRequest&nbsp;:= false
ExecProcessRequest if {
  input_command = concat(" ", input.process.Args)
      some allowed_command in policy_data.allowed_commands
      input_command == allowed_command
}

policy_data&nbsp;:= {
    "allowed_commands": &#91;
        "ls",
        "cat",
    &#93;,
    "allowed_images": &#91;
        "pause",
        "my-registry.be/,my-app@sha256:5ed86f469bbc40026a0235dd92e2b0b0c7ce54e3b254132e271a9b9e85d5f220
",
    &#93;,
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">package agent_policy</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># Seules certaines images de conteneurs peuvent être exécutées</span></span>
<span class="line"><span style="color: #D4D4D4">default CreateContainerRequest&nbsp;:= </span><span style="color: #569CD6">false</span></span>
<span class="line"><span style="color: #D4D4D4">CreateContainerRequest</span><span style="color: #C586C0"> if</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">every</span><span style="color: #D4D4D4"> storage</span><span style="color: #569CD6"> in</span><span style="color: #D4D4D4"> input.storages {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">some</span><span style="color: #D4D4D4"> allowed_image</span><span style="color: #569CD6"> in</span><span style="color: #D4D4D4"> policy_data.allowed_images</span></span>
<span class="line"><span style="color: #D4D4D4">    storage</span><span style="color: #D7BA7D">.source</span><span style="color: #D4D4D4"> == allowed_image</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># Seules certaines commandes peuvent être exécutées</span></span>
<span class="line"><span style="color: #D4D4D4"># via ‘kubectl exec’ dans les images de conteneurs</span></span>
<span class="line"><span style="color: #D4D4D4">default ExecProcessRequest&nbsp;:= </span><span style="color: #569CD6">false</span></span>
<span class="line"><span style="color: #D4D4D4">ExecProcessRequest</span><span style="color: #C586C0"> if</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">input_command</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">concat</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot; &quot;</span><span style="color: #D4D4D4">, input.process.Args)</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #DCDCAA">some</span><span style="color: #D4D4D4"> allowed_command</span><span style="color: #569CD6"> in</span><span style="color: #D4D4D4"> policy_data.allowed_commands</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">input_command</span><span style="color: #D4D4D4"> == allowed_command</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #9CDCFE">policy_data</span><span style="color: #D4D4D4">&nbsp;:= {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #CE9178">&quot;allowed_commands&quot;</span><span style="color: #D4D4D4">: &#91;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&quot;ls&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&quot;cat&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    &#93;,</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #CE9178">&quot;allowed_images&quot;</span><span style="color: #D4D4D4">: &#91;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&quot;pause&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&quot;my-registry.be/,my-app@sha256:5ed86f469bbc40026a0235dd92e2b0b0c7ce54e3b254132e271a9b9e85d5f220</span></span>
<span class="line"><span style="color: #CE9178">&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    &#93;,</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<p class="has-text-align-center wp-element-caption" id="Figuur-1">Figuur 1 – Voorbeeld van een beperkend beveiligingsbeleid voor images die kunnen worden uitgevoerd en de commando’s die in de image kunnen worden aangeroepen. Dit beleid wordt toegepast door een agent die in de vertrouwelijke VM zit.</p>



<p>Vier componenten van de vertrouwelijke virtuele guestmachine worden altijd gecontroleerd om te bepalen of ze nog goed werken: de firmware (bijvoorbeeld OVMF), de kernel van het besturingssysteem, de kernel commandoregel en het rootbestandssysteem (<a href="#Figuur-2">Figuur 2</a>). Een vertrouwelijke externe entiteit, vaak Trustee genoemd, zorgt ervoor dat de vertrouwensketen versterkt wordt.</p>



<figure class="wp-block-image aligncenter size-full is-resized" id="Figuur-2"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture2-Measurement.svg"><img decoding="async" src="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture2-Measurement.svg" alt="" class="wp-image-26527" style="width:500px"/></a><figcaption class="wp-element-caption">Figuur 2 &#8211; Samenstelling van de “meting” (measurement) die door het <a href="https://www.smalsresearch.be/tools-voor-confidential-computing/">SEV-systeem</a> van de AMD-microprocessor wordt berekend tijdens de certificering. De meting is de cryptografische hashwaarde van een versleuteld geheugengebied waarin zich de firmware bevindt (bijv. OVMF). In deze firmware zijn de cryptografische hashwaarden geïnjecteerd van de OS-kernel van de geattesteerde virtuele machine, de command-line waarmee deze kernel is opgestart en, tot slot, het root-bestandssysteem. </figcaption></figure>



<p>Vertrouwelijke containers hebben echter meestal initialisatiedata nodig die niet direct in de image van de virtuele machine of de toepassingscontainer kunnen worden opgenomen, zoals certificaten, adressen van certificeringsdiensten of toe te passen beveiligingsbeleidsregels. Deze data zijn weliswaar niet geheim, maar moeten wel worden beschermd tegen wijzigingen.</p>



<p>Deze initialisatiedata, ook wel <code>init-data</code> genoemd, kunnen worden opgegeven in de vorm van een woordenboek (bijv. JSON-bestanden, TOML, YAML), gecodeerd in base64 en doorgegeven aan de Kubernetes-pod via een Kubernetes annotation (<a href="#Figuur-3">Figuur 3</a>). Om de integriteit ervan te garanderen, wordt hun cryptografische hashwaarde door de certificeringsagent (die in de vertrouwelijke virtuele machine draait) als data voor de berekening van de certificering verstrekt (dit kan worden gedaan met behulp van het veld “<em>HostData</em>” van SEV-SNP). Het is dan mogelijk om de initialisatiedata die naar de hostmachine zijn gestuurd voor het starten van de container te vergelijken met de hashwaarde die op het moment van de certificering is ontvangen, zodat elke wijziging tijdens de certificering op afstand kan worden gedetecteerd.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>version = "0.1.0"
algorithm = "sha256"

&#91;data&#93;

# Configuration de l’agent d’attestation
"aa.toml" = '''
&#91;token_configs&#93;
&#91;token_configs.kbs&#93;
url = "${KBS_ADDRESS}"
'''

# Configuration du gestionnaire de données secrètes
"cdh.toml" = '''
&#91;kbc&#93;
name = "cc_kbc"
url = "${KBS_ADDRESS}"

&#91;image&#93;
authenticated_registry_credentials_uri = "kbs:///${REGISTRY_AUTH_KBS_PATH}"
image_security_policy_uri = "${SECURITY_POLICY_KBS_URI}"
'''

# Politique de sécurité restreignant l’environnement du conteneur
"policy.rego"= '''
&#91;Voir Figure 1 ci-dessus&#93;
'''</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #9CDCFE">version</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;0.1.0&quot;</span></span>
<span class="line"><span style="color: #9CDCFE">algorithm</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;sha256&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">&#91;data&#93;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955"># Configuration de l’agent d’attestation</span></span>
<span class="line"><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4">aa.toml</span><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color: #CE9178">&#91;token_configs&#93;</span></span>
<span class="line"><span style="color: #CE9178">&#91;token_configs.kbs&#93;</span></span>
<span class="line"><span style="color: #CE9178">url = &quot;${KBS_ADDRESS}&quot;</span></span>
<span class="line"><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955"># Configuration du gestionnaire de données secrètes</span></span>
<span class="line"><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4">cdh.toml</span><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color: #CE9178">&#91;kbc&#93;</span></span>
<span class="line"><span style="color: #CE9178">name = &quot;cc_kbc&quot;</span></span>
<span class="line"><span style="color: #CE9178">url = &quot;${KBS_ADDRESS}&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #CE9178">&#91;image&#93;</span></span>
<span class="line"><span style="color: #CE9178">authenticated_registry_credentials_uri = &quot;kbs:///${REGISTRY_AUTH_KBS_PATH}&quot;</span></span>
<span class="line"><span style="color: #CE9178">image_security_policy_uri = &quot;${SECURITY_POLICY_KBS_URI}&quot;</span></span>
<span class="line"><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955"># Politique de sécurité restreignant l’environnement du conteneur</span></span>
<span class="line"><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4">policy.rego</span><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4">= </span><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color: #CE9178">&#91;Voir Figure 1 ci-dessus&#93;</span></span>
<span class="line"><span style="color: #CE9178">&#39;&#39;&#39;</span></span></code></pre></div>



<p class="has-text-align-center wp-element-caption" id="Figuur-3">Figuur 3 &#8211; Voorbeeld van initialisatiedata die (in gecodeerde vorm) via een Kubernetes-annotatie aan de CoCo-guestagent in de vertrouwelijke virtuele machine worden geleverd.</p>



<h1 class="wp-block-heading">Sleutelbeheer</h1>



<p>Een externe sleutelbemiddelingsdienst (key broker service), die kan worden gekoppeld aan een transactionele &#8216;black box&#8217;, stelt de container in staat om dynamisch de resources op te halen die nodig zijn voor de werking ervan. Indien de client nog niet in het bezit is van een eerder verkregen authenticatietoken van de sleutelbemiddelingsdienst, moet hij zich eerst authenticeren, waarna de sleutelbemiddelingsdienst hem <a href="https://github.com/confidential-containers/trustee/blob/main/kbs/docs/kbs_attestation_protocol.md">een challenge stuurt</a> die hij moet beantwoorden (<a href="#Figuur-4">Figuur 4</a>).</p>



<p>De client genereert een paar cryptografische sleutels en vraagt de processor om een certificaat te verstrekken met daarin de hashwaarde van zijn openbare sleutel en een unieke willekeurige waarde die door de dienst in zijn challenge is verzonden. Het certificaat dat de openbare sleutel van de client, de unieke willekeurige waarde die door de service is gestuurd en de meting van de vertrouwelijke VM die de client bevat aan elkaar koppelt, wordt door de processor ondertekend. De service gebruikt een certificeringsagent die het certificaat controleert door de handtekening te verifiëren en de meting te vergelijken met een referentiewaarde.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture4-Authantication-protocol.svg"><img decoding="async" src="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture4-Authantication-protocol.svg" alt="" class="wp-image-26528" style="width:600px"/></a><figcaption class="wp-element-caption"><a>Figuur </a>4 &#8211; Protocol voor authenticatie van de vertrouwelijke virtuele machine bij de externe “Trustee”-service, bestaande uit een sleutelbemiddelingsservice en een certificeringsservice: om een opgeslagen waarde (geheim, sleutel, enz.) van de bemiddelingsservice te kunnen verkrijgen, moet de client eerst zijn authenticiteit bewijzen via de certificering. Dit protocol volgt het <a href="https://www.ietf.org/rfc/rfc9334.html">RATS-model (RFC9334)</a>.</figcaption></figure>



<h1 class="wp-block-heading">Installatie en testen</h1>



<p>Om de CoCo-omgeving te testen, hebben we gekozen voor een EPYC <a href="https://www.amd.com/en/products/processors/server/epyc/9005-series/amd-epyc-9335.html">9335-microprocessor</a> van AMD. Deze maakt gebruik van SEV-SNP-technologie voor versleuteling en bescherming van de integriteit van het RAM-geheugen. We hebben een machine geassembleerd met een moederbord dat deze microprocessor ondersteunt (Supermicro MBD-H13SSL-NT-O) en 128 GB RAM-geheugen. Vervolgens moesten we het BIOS configureren om ervoor te zorgen dat de gewenste beveiligingsfuncties van de microprocessor goed waren geactiveerd. We hebben ook gekozen voor de Ubuntu 24.04.3 LTS-distributie van het Linux-besturingssysteem. Voordat we de beveiligingsfuncties van de processor konden testen, moesten we ten slotte de kernel van het besturingssysteem opnieuw compileren. Dit is eigenlijk vrij simpel dankzij de <a href="https://github.com/AMDESE/AMDSEV">scripts die AMD heeft meegegeven</a>.</p>



<p>Eenmaal het systeem is ingesteld, kun je het Docker-platform installeren (om containerimages te maken), de containeruitvoeringsinterface <em>containerd </em>(inbegrepen in de Docker-distributie) en het Kubernetes-beheersysteem. Het instellen van deze tools is best lastig en afhankelijk van de versie. Er zijn <a href="https://gitlab.smalsrech.be/fape/coco-with-snp">verschillende scripts</a> beschikbaar om deze installatie te vergemakkelijken.</p>



<p>Nadat het systeem was geïnstalleerd, konden we een bestaande toepassing in vertrouwelijke containers zetten: je hoeft alleen maar de naam van de runtimeklasse die Kubernetes gebruikt (<code>runtimeClassName</code>) in het YAML-configuratiebestand van Kubernetes te veranderen in een van de CoCo-klassen (bijvoorbeeld <code>kata-qemu-snp</code>). Natuurlijk is deze simpele wijziging niet genoeg om te profiteren van de beveiligingsfuncties van CoCo. Je moet de productiecyclus aanpassen om de volgende stappen toe te voegen:</p>



<ul class="wp-block-list">
<li>Versleuteling van de containerimage</li>



<li>Ondertekening van de containerimage</li>



<li>Beschikbaar stellen van versleutelings- en ondertekeningssleutels</li>
</ul>



<p>Zodra de containerimage op de gebruikelijke manier is gemaakt, bijvoorbeeld met docker build, kan deze worden versleuteld met de tool <a href="https://github.com/containers/skopeo">skopeo</a>, die verschillende algoritmen ondersteunt: <a href="https://www.ietf.org/rfc/rfc7516.html">JWE (RFC7516)</a>, <a href="https://www.ietf.org/rfc/rfc4880.html">PGP (RFC4880)</a> en <a href="https://www.ietf.org/rfc/rfc2315.html">PKCS7 (RFC2315)</a>. Deze versleutelde image kan vervolgens worden ondertekend met de tool <a href="https://github.com/sigstore/cosign">cosign</a> en ten slotte worden geüpload naar een imageregister.</p>



<p>Bij het opstarten van de container moeten de CoCo-componenten in de vertrouwelijke virtuele machine de handtekening kunnen verifiëren en de image kunnen ontsleutelen. Hiervoor moeten de benodigde sleutels beschikbaar worden gesteld. Hier komt het sleutelbemiddelingssysteem om de hoek kijken. Zoals we eerder hebben gezien, voert dit systeem een certificeringsprotocol uit voordat het de sleutels verstrekt.</p>



<p>De implementatie van confidential ccontainers is transparant voor de gebruiker van Kubernetes. Zodra het gebruikelijke commando <code>kubectl apply</code> wordt aangeroepen, wordt een lichte Kata-virtuele machine aangemaakt. Deze moet bij de sleutelbemiddelaar de toegangssleutel tot het imageregister (als dit niet openbaar is), het toe te passen beveiligingsbeleid, de sleutel voor handtekeningverificatie en de sleutel voor het ontsleutelen van de image ophalen. Deze informatie wordt pas verstrekt nadat de virtuele machine is geverifieerd (zie hierboven). De agents in de virtuele machine kunnen dan het beveiligingsbeleid toepassen, de image downloaden, de handtekening controleren en deze decoderen voordat de toepassingscontainer in de virtuele machine wordt gestart.</p>



<p>Wat betreft de communicatie van de gecontaineriseerde toepassing met externe diensten, moeten wederzijds erkende versleutelingssleutels worden ingesteld. Een eerste mogelijkheid is dat de vertrouwde container bij het opstarten een cryptografisch sleutelpaar aanmaakt en de cryptografische hashwaarde van deze openbare sleutel bij de certificering verstrekt. Dit wordt gebruikt binnen het authenticatieprotocol dat in Figuur 4 wordt beschreven. Een andere optie is om de openbare sleutel van een certificeringsinstantie in de versleutelde en vervolgens ondertekende image te verstrekken. De container kan dan de certificaten checken die deze autoriteit heeft ondertekend en de encryptiesleutels aanvaarden. Een derde optie bestaat erin om te steunen op de sleutelbemiddelingsdienst: hiermee kan de container op een veilige manier geheimen ophalen. Afhankelijk van de gekozen optie moet de code van de toepassing al dan niet worden aangepast.</p>



<h1 class="wp-block-heading">Bescherming tegen een beheerder</h1>



<p>Wat kan een beheerder van de hostmachine doen?&nbsp; In principe niet veel, behalve de container opstarten.</p>



<p>Het certificeringsmechanisme zorgt er namelijk voor dat hij niets kan vervangen of simuleren wat betreft de onderdelen van de virtuele machine die wordt gebruikt om de containers te starten. Door de versleuteling van het geheugen dat aan de virtuele machine is toegewezen, heeft hij geen toegang tot de data die in de virtuele machine en de container worden verwerkt. Door de versleuteling en ondertekening van de containerimage kan hij geen andere container vervangen of de aard van de container achterhalen. In de veronderstelling dat de toepassing geconfigureerd is om versleuteld te communiceren met externe diensten waarmee ze moet interageren, kan de beheerder ook geen toegang krijgen tot gevoelige data door het netwerkverkeer te observeren, tenzij hij ook bevoorrechte toegang heeft tot het systeem voor het aanmaken van sleutels. Ten slotte kan hij de container ook niet ondervragen via het commando <code>kubectl exec</code>, omdat het kan worden beperkt door een beveiligingsbeleid (zie <a href="#Figure-1">Figuur 1</a>).</p>



<p>De beheerder kan daarentegen de toepassingslogboeken lezen die door Kubernetes op de host zijn opgeslagen. Daarom is het belangrijk dat de workload provider ervoor zorgt dat zijn code geen gevoelige informatie onthult in de gelogde berichten van de toepassing.</p>



<p>Tot slot, zoals we in de vorige blogpost al stelden, zijn vertrouwde uitvoeringsomgevingen niet perfect en houdt hun beveiligingsmodel meestal geen rekening met fysieke aanvallen. In een omgeving zoals de G-Cloud biedt de toevoeging ervan tal van mogelijkheden. In een omgeving waar echter noch SMALS, noch haar klanten, noch zelfs de Belgische Staat enige technische of juridische controle hebben over de infrastructuur, zijn er aanzienlijke risico’s die serieus moeten worden geëvalueerd.</p>



<h1 class="wp-block-heading">Conclusie</h1>



<p>In deze blogpost en de <a href="https://www.smalsresearch.be/je-data-beschermen-tegen-beheerders-on-premise-vertrouwelijke-it/">vorige </a>hebben we de echte voordelen belicht op het gebied van beveiliging die microprocessors kunnen bieden om &#8220;vertrouwde uitvoeringsomgevingen&#8221; binnen een IT-infrastructuur te creëren. Vooral het “on-premise” gebruik ervan  maakt het mogelijk om gecontaineriseerde toepassingen beter te beschermen tegen kwaadwillige beheerders of indringers en zo onze leden nog meer garanties te bieden.</p>



<p>Omdat ze eenvoudiger in gebruik zijn dan geavanceerde cryptografische methoden, kunnen dergelijke systemen ons ook helpen om meer generieke problemen op te lossen dan met cryptografie alleen, of problemen die we tot nu toe simpelweg niet konden oplossen.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Utiliser un environnement d’exécution de confiance « on-premise »</title>
		<link>https://www.smalsresearch.be/utiliser-un-environnement-dexecution-de-confiance-on-premise/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Tue, 21 Apr 2026 06:30:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[confidential computing]]></category>
		<category><![CDATA[confidential containers]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[TEE]]></category>
		<category><![CDATA[Trusted Execution Environment]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=26503</guid>

					<description><![CDATA[Dans cet article, nous détaillons le fonctionnement de certains aspects des conteneurs confidentiels "CoCo" et décrivons notre installation sur notre propre matériel.]]></description>
										<content:encoded><![CDATA[
<p>Dans un <a href="/proteger-ses-donnees-des-administrateurs-linformatique-confidentielle-on-premise/">précédent article</a>, nous avons exposé les avantages des conteneurs confidentiels et leur architecture dans le projet «&nbsp;CoCo.&nbsp;» Dans cet article, nous approfondissons notre propos en détaillant le fonctionnement de certains aspects de CoCo et en décrivant notre installation sur notre propre matériel.</p>



<h1 class="wp-block-heading">Attestation de conteneurs</h1>



<p>Les capsules Kubernetes, utilisées comme abstraction pour les charges de travail conteneurisées confidentielles, introduisent plusieurs défis. Leur nature dynamique — création, suppression, mise à jour de conteneurs — et l’influence de l’environnement Kubernetes (variables d’environnement, contrôleurs d’admission, etc.) rendent difficile la garantie que seul le code prévu par l’utilisateur sera exécuté. Par exemple, l’injection de variables malveillantes ou la modification de la spécification d’une capsule avant son lancement peuvent compromettre la confidentialité.</p>



<p>Le projet CoCo propose une solution élégante qui consiste à utiliser un moteur de politiques de sécurité, intégré à l’environnement d’exécution du conteneur dans l’environnement d’exécution de confiance (EEC), qui applique des règles définies par l’utilisateur. Ce moteur peut, par exemple, autoriser uniquement certaines images ou commandes, et rejeter les appels problématiques (comme l’exécution de processus non autorisés). La <a href="#Figure-1">Figure 1</a> montre un exemple d’une telle politique.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>package agent_policy

# Seules certaines images de conteneurs peuvent être exécutées
default CreateContainerRequest&nbsp;:= false
CreateContainerRequest if {
    every storage in input.storages {
    some allowed_image in policy_data.allowed_images
    storage.source == allowed_image
  }
}

# Seules certaines commandes peuvent être exécutées
# via ‘kubectl exec’ dans les images de conteneurs
default ExecProcessRequest&nbsp;:= false
ExecProcessRequest if {
  input_command = concat(" ", input.process.Args)
      some allowed_command in policy_data.allowed_commands
      input_command == allowed_command
}

policy_data&nbsp;:= {
    "allowed_commands": &#91;
        "ls",
        "cat",
    &#93;,
    "allowed_images": &#91;
        "pause",
        "my-registry.be/,my-app@sha256:5ed86f469bbc40026a0235dd92e2b0b0c7ce54e3b254132e271a9b9e85d5f220
",
    &#93;,
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">package agent_policy</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># Seules certaines images de conteneurs peuvent être exécutées</span></span>
<span class="line"><span style="color: #D4D4D4">default CreateContainerRequest&nbsp;:= </span><span style="color: #569CD6">false</span></span>
<span class="line"><span style="color: #D4D4D4">CreateContainerRequest</span><span style="color: #C586C0"> if</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">every</span><span style="color: #D4D4D4"> storage</span><span style="color: #569CD6"> in</span><span style="color: #D4D4D4"> input.storages {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">some</span><span style="color: #D4D4D4"> allowed_image</span><span style="color: #569CD6"> in</span><span style="color: #D4D4D4"> policy_data.allowed_images</span></span>
<span class="line"><span style="color: #D4D4D4">    storage</span><span style="color: #D7BA7D">.source</span><span style="color: #D4D4D4"> == allowed_image</span></span>
<span class="line"><span style="color: #D4D4D4">  }</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4"># Seules certaines commandes peuvent être exécutées</span></span>
<span class="line"><span style="color: #D4D4D4"># via ‘kubectl exec’ dans les images de conteneurs</span></span>
<span class="line"><span style="color: #D4D4D4">default ExecProcessRequest&nbsp;:= </span><span style="color: #569CD6">false</span></span>
<span class="line"><span style="color: #D4D4D4">ExecProcessRequest</span><span style="color: #C586C0"> if</span><span style="color: #D4D4D4"> {</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">input_command</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">concat</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&quot; &quot;</span><span style="color: #D4D4D4">, input.process.Args)</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #DCDCAA">some</span><span style="color: #D4D4D4"> allowed_command</span><span style="color: #569CD6"> in</span><span style="color: #D4D4D4"> policy_data.allowed_commands</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #9CDCFE">input_command</span><span style="color: #D4D4D4"> == allowed_command</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #9CDCFE">policy_data</span><span style="color: #D4D4D4">&nbsp;:= {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #CE9178">&quot;allowed_commands&quot;</span><span style="color: #D4D4D4">: &#91;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&quot;ls&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&quot;cat&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    &#93;,</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #CE9178">&quot;allowed_images&quot;</span><span style="color: #D4D4D4">: &#91;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&quot;pause&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">&quot;my-registry.be/,my-app@sha256:5ed86f469bbc40026a0235dd92e2b0b0c7ce54e3b254132e271a9b9e85d5f220</span></span>
<span class="line"><span style="color: #CE9178">&quot;</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    &#93;,</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span></code></pre></div>



<p class="has-text-align-center wp-element-caption" id="Figure-1">Figure 1 – Exemple de politique de sécurité (langage <a href="https://www.openpolicyagent.org/docs/policy-language">REGO</a>) restreignant les images pouvant être exécutées et les commandes pouvant être invoquées dans l’image. Cette politique est appliquée par un agent inclus dans la machine virtuelle confidentielle.</p>



<p>Quatre composants de la machine virtuelle confidentielle invitée sont systématiquement mesurés pour assurer leur intégrité&nbsp;: le micrologiciel (e.g., OVMF), le noyau du système d’exploitation, la ligne de commande du noyau et le système de fichiers racine (<a href="#Figure-2">Figure 2</a>). Une entité externe de confiance, généralement appelée Trustee, atteste de l’intégrité de l’invité, renforçant ainsi la chaîne de confiance.</p>



<figure class="wp-block-image aligncenter size-full is-resized" id="Figure-2"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Picture2-Composition-mesure.svg"><img decoding="async" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Picture2-Composition-mesure.svg" alt="" class="wp-image-26665" style="width:500px"/></a><figcaption class="wp-element-caption">Figure 2 – Composition de la «&nbsp;mesure&nbsp;» calculée par le <a href="/outils-pour-linformatique-confidentielle/#AMD_SEV-SNP">système SEV</a> du microprocesseur AMD lors de l’attestation. La mesure est la valeur de hachage cryptographique d’une zone de la mémoire chiffrée où se trouve le micrologiciel (e.g., OVMF) dans lequel ont été injectées les valeurs de hachage cryptographique du noyau du système d’exploitation de la machine virtuelle attestée, de la ligne de commande utilisée pour lancer ce noyau et enfin du système de fichier racine.</figcaption></figure>



<p>Cependant, les conteneurs confidentiels nécessitent généralement des données d’initialisation qui ne peuvent pas être intégrées directement dans l’image de la machine virtuelle ou du conteneur applicatif, comme les certificats, les adresses des services d’attestation ou les politiques de sécurité à appliquer. Ces données, bien que non secrètes, doivent être protégées contre toute altération.</p>



<p>Ces données d’initialisation appelées <a href="https://github.com/confidential-containers/trustee/blob/main/kbs/docs/initdata.md"><code>init-data</code></a> peuvent être spécifiées sous forme de dictionnaire (e.g., fichiers JSON, TOML, YAML), encodé en base64 et passé à la capsule Kubernetes via une annotation Kubernetes (<a href="#Figure-3">Figure 3</a>). Afin de garantir leur intégrité, leur valeur de hachage cryptographique est fournie par l’agent d’attestation (fonctionnant dans la machine virtuelle confidentielle) en donnée d’entrée pour le calcul de l’attestation (cela peut se faire en utilisant le champ «&nbsp;<em>HostData&nbsp;</em>» de SEV-SNP). Il est alors possible de comparer les données d’initialisation envoyées à la machine hôte pour le lancement du conteneur avec la valeur de hachage reçue au moment de l’attestation, assurant ainsi que toute modification sera détectée lors de l’attestation à distance.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>version = "0.1.0"
algorithm = "sha256"

&#91;data&#93;

# Configuration de l’agent d’attestation
"aa.toml" = '''
&#91;token_configs&#93;
&#91;token_configs.kbs&#93;
url = "${KBS_ADDRESS}"
'''

# Configuration du gestionnaire de données secrètes
"cdh.toml" = '''
&#91;kbc&#93;
name = "cc_kbc"
url = "${KBS_ADDRESS}"

&#91;image&#93;
authenticated_registry_credentials_uri = "kbs:///${REGISTRY_AUTH_KBS_PATH}"
image_security_policy_uri = "${SECURITY_POLICY_KBS_URI}"
'''

# Politique de sécurité restreignant l’environnement du conteneur
"policy.rego"= '''
&#91;Voir Figure 1 ci-dessus&#93;
'''
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #9CDCFE">version</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;0.1.0&quot;</span></span>
<span class="line"><span style="color: #9CDCFE">algorithm</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&quot;sha256&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">&#91;data&#93;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955"># Configuration de l’agent d’attestation</span></span>
<span class="line"><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4">aa.toml</span><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color: #CE9178">&#91;token_configs&#93;</span></span>
<span class="line"><span style="color: #CE9178">&#91;token_configs.kbs&#93;</span></span>
<span class="line"><span style="color: #CE9178">url = &quot;${KBS_ADDRESS}&quot;</span></span>
<span class="line"><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955"># Configuration du gestionnaire de données secrètes</span></span>
<span class="line"><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4">cdh.toml</span><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color: #CE9178">&#91;kbc&#93;</span></span>
<span class="line"><span style="color: #CE9178">name = &quot;cc_kbc&quot;</span></span>
<span class="line"><span style="color: #CE9178">url = &quot;${KBS_ADDRESS}&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #CE9178">&#91;image&#93;</span></span>
<span class="line"><span style="color: #CE9178">authenticated_registry_credentials_uri = &quot;kbs:///${REGISTRY_AUTH_KBS_PATH}&quot;</span></span>
<span class="line"><span style="color: #CE9178">image_security_policy_uri = &quot;${SECURITY_POLICY_KBS_URI}&quot;</span></span>
<span class="line"><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955"># Politique de sécurité restreignant l’environnement du conteneur</span></span>
<span class="line"><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4">policy.rego</span><span style="color: #9CDCFE">&quot;</span><span style="color: #D4D4D4">= </span><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color: #CE9178">&#91;Voir Figure 1 ci-dessus&#93;</span></span>
<span class="line"><span style="color: #CE9178">&#39;&#39;&#39;</span></span>
<span class="line"></span></code></pre></div>



<p class="has-text-align-center wp-element-caption" id="Figure-3">Figure 3 – Exemple de données d’initialisation fournies (sous forme encodée) via une annotation Kubernetes à l’agent invité CoCo dans la machine virtuelle confidentielle.</p>



<h1 class="wp-block-heading">Gestion de clés</h1>



<p>Un service extérieur de médiation de clés, qui peut être connecté à une boîte noire transactionnelle, permet au conteneur d’obtenir dynamiquement des ressources nécessaires à son fonctionnement. Si le client n’est pas déjà en possession d’un témoin de connexion précédemment obtenu du service de médiation de clés, il doit d’abord s’authentifier et le service de médiation de clés lui <a href="https://github.com/confidential-containers/trustee/blob/main/kbs/docs/kbs_attestation_protocol.md">répond avec un défi</a> auquel il doit répondre (<a href="#Figure-4">Figure 4</a>).</p>



<p>Le client génère une paire de clés cryptographiques et demande au processeur de lui fournir une attestation en incluant la valeur de hachage de sa clé publique et une valeur aléatoire unique envoyée par le service dans son défi. L’attestation qui lie clé publique du client, valeur aléatoire unique envoyée par le service et mesure de la VM confidentielle contenant le client est signée par le processeur. Le service fait appel à un agent d’attestation qui vérifie l’attestation en vérifiant la signature et en comparant la mesure à une valeur de référence.</p>



<figure class="wp-block-image aligncenter size-full is-resized" id="Figure-4"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Picture4-Protocol-authentification.svg"><img decoding="async" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Picture4-Protocol-authentification.svg" alt="" class="wp-image-26664" style="width:600px"/></a><figcaption class="wp-element-caption">Figure 4 – Protocole d’authentification de la machine virtuelle confidentielle auprès du service extérieur «&nbsp;Trustee&nbsp;» composé d’un service de médiation de clés et d’un service d’attestation&nbsp;: afin de pouvoir obtenir une valeur stockée (secret, clé, etc.) par le service de médiation, le client doit d’abord prouver son authenticité via l’attestation. Ce protocole suit le modèle <a href="https://www.ietf.org/rfc/rfc9334.html">RATS (RFC9334)</a>.</figcaption></figure>



<h1 class="wp-block-heading">Installation et tests</h1>



<p>Afin de tester l’environnement CoCo, nous avons choisi d’utiliser un microprocesseur <a href="https://www.amd.com/fr/products/processors/server/epyc/9005-series/amd-epyc-9335.html">EPYC 9335</a> de la société AMD. Il met en œuvre la technologie SEV-SNP de chiffrement et de protection de l’intégrité de la mémoire vive. Nous avons assemblé une machine avec une carte mère prenant en charge ce microprocesseur (Supermicro MBD-H13SSL-NT-O) et 128 Go de mémoire vive. Il a ensuite fallu configurer le BIOS afin que les fonctionnalités souhaitées de sécurité du microprocesseur soient bien activées. Nous avons aussi opté pour la distribution Ubuntu 24.04.3 LTS du système d’exploitation Linux. Avant de pouvoir tester les fonctionnalités de sécurité du processeur, nous avons enfin dû recompiler le noyau du système d’exploitation. L’opération est en fait relativement simple grâce aux <a href="https://github.com/AMDESE/AMDSEV">scripts fournis par AMD</a>.</p>



<p>Une fois le système configuré, il est alors possible d’y installer la plateforme Docker (afin de pouvoir créer des images de conteneurs), l’interface d’exécution de conteneur <code>containerd </code>(incluse dans la distribution de Docker) et le système de gestion Kubernetes. La configuration de ces outils est assez délicate et sensible aux version. Plusieurs scripts permettant de faciliter cette installation sont <a href="https://gitlab.smalsrech.be/fape/coco-with-snp">fournis ici</a>.</p>



<p>Une fois le système installé, il nous a été possible de déployer une application existante dans des conteneurs confidentiels&nbsp;: il suffit en fait de changer le nom de classe d’exécution utilisé par Kubernetes (<code>runtimeClassName</code>) dans le fichier YAML de configuration de Kubernetes pour l’une des classes de CoCo (e.g., <code>kata-qemu-snp</code>). Bien sûr ce changement simple ne suffit pas à bénéficier des fonctionnalités de sécurité de CoCo. Il est nécessaire de modifier le cycle de production afin d’ajouter les étapes suivantes&nbsp;:</p>



<ul class="wp-block-list">
<li>Chiffrement de l’image du conteneur</li>



<li>Signature de l’image du conteneur</li>



<li>Mise à disposition des clés de chiffrement et de signature</li>
</ul>



<p>Une fois l’image du conteneur créée de la manière habituelle, par exemple avec docker build, celle-ci peut être chiffrée avec l’outil <a href="https://github.com/containers/skopeo">skopeo</a> qui prend en charge différents algorithmes&nbsp;: <a href="https://www.ietf.org/rfc/rfc7516.html">JWE (RFC7516)</a>, <a href="https://www.ietf.org/rfc/rfc4880.html">PGP (RFC4880)</a>, et <a href="https://www.ietf.org/rfc/rfc2315.html">PKCS7 (RFC2315)</a>. Cette image chiffrée peut ensuite être signée avec l’outil <a href="https://github.com/sigstore/cosign">cosign</a> et enfin chargée sur un registre d’images.</p>



<p>Au moment du lancement du conteneur, les composants CoCo inclus dans la machine virtuelle confidentielle devront pouvoir vérifier la signature et déchiffrer son image. Pour cela, il est nécessaire de mettre à disposition les clé requises. C’est là que le système de médiation de clés intervient. Comme nous l’avons vu précédemment, celui effectue un protocole d’attestation avant de fournir les clés.</p>



<p>Le déploiement des conteneurs confidentiels est transparent vis-à-vis de l’utilisateur de Kubernetes. Une fois l’invocation de la commande habituelle <code>kubectl apply</code>, une machine virtuelle légère Kata est créée. Celle-ci doit récupérer auprès du médiateur de clés, la clé d’accès au registre d’image (si celui-ci n’est pas public), la politique de sécurité à appliquer, la clé de vérification de signature et la clé de déchiffrement de l’image. Ces informations ne sont fournies qu’après l’attestation de la machine virtuelle (voir plus haut). Les agents inclus dans la machine virtuelle peuvent alors appliquer la politique de sécurité, télécharger l’image, vérifier sa signature et la déchiffrer avant de lancer le conteneur applicatif dans la machine virtuelle.</p>



<p>En ce qui concerne la communication de l’application conteneurisée avec des services extérieurs, il convient d’établir des clés de chiffrement mutuellement reconnues. Une première possibilité est que le conteneur confidentiel crée une paire de clé cryptographiques à son lancement et fournisse la valeur de hachage cryptographique de cette clé publique lors de l’attestation. C’est ce qui est utilisé dans le protocole d’authentification présenté dans la <a href="#Figure-4">Figure 4</a>. Une autre option est de fournir la clé publique d’une autorité de certification dans l’image chiffrée-puis-signée. Le conteneur pourra alors vérifier les certificats signés par cette autorité et accepter des clés de chiffrement. Une troisième option consiste à s’appuyer sur le service de médiation de clés&nbsp;: celui-ci permet au conteneur de récupérer des secrets de manière sécurisée. En fonction de l’option choisie, il conviendra de modifier plus ou moins le code de l’application.</p>



<h1 class="wp-block-heading">Protection vis-à-vis d’un administrateur</h1>



<p>Que peut faire un administrateur de la machine hôte&nbsp;? A priori, pas grand-chose, à part lancer le conteneur.</p>



<p>En effet, le mécanisme d’attestation l’empêche de substituer ou de simuler les composants de la machine virtuelle utilisée pour le lancement des conteneurs. Le chiffrement de la mémoire allouée à la machine virtuelle le bloque dans l’observation des données traitées dans la machine virtuelle et le conteneur. Le chiffrement et la signature de l’image du conteneur ne lui permettent ni de substituer un autre conteneur, ni de connaître la nature du conteneur. En supposant que l’application soit configurée pour communiquer de manière chiffrée avec les services extérieurs avec lesquelles elle doit interagir, l’administrateur ne peut pas non plus accéder aux données sensibles en observant le trafic réseau, sauf s’il a également un accès privilégié au système de création des clés. Enfin, il ne peut pas non plus interroger le conteneur via la commande <code>kubectl exec</code> car celle-ci peut être restreinte via une politique de sécurité (voir <a href="#Figure-1">Figure 1</a>).</p>



<p>En revanche, l’administrateur peut lire les journaux applicatifs enregistrés par Kubernetes sur l’hôte. Par conséquent, il est important que le fournisseur de la charge de travail prenne soin que son code ne divulgue pas des informations sensibles dans les messages journalisés de l’application.</p>



<p>Enfin, comme nous l’avons rappelé dans l’<a href="/proteger-ses-donnees-des-administrateurs-linformatique-confidentielle-on-premise/">article précédent</a>, les environnements d’exécution de confiance ne sont pas parfaits et leur modèle de sécurité ne tient généralement pas compte des attaques physiques. Dans un environnement comme le G-Cloud, leur ajout offre de nombreuses possibilités. En revanche, dans un environnement où ni SMALS, ni ses clients, ni même l’État belge n’ont le moindre contrôle technique ou juridique sur l’infrastructure, il existe des risques importants qu’il convient d’évaluer sérieusement.</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>À travers cet article et <a href="/proteger-ses-donnees-des-administrateurs-linformatique-confidentielle-on-premise/">le précédent</a>, nous avons mis en avant les avantages réels en termes de sécurité que pourraient apporter des microprocesseurs permettant de créer des environnements d’exécution de confiance au sein d’une infrastructure informatique. En particulier, leur utilisation « on-premise » permet de mieux protéger des applications conteneurisées d’administrateurs malveillants ou d’intrus et donc d’offrir des garanties encore plus fortes à nos Membres.</p>



<p>Plus simples d’utilisation que les méthodes cryptographiques avancées, de tels systèmes pourraient aussi nous permettre de résoudre des problèmes plus génériques que la cryptographie ou des problèmes que nous ne pouvions pas résoudre jusqu’à présent.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Protéger ses données des administrateurs&#160;: l’informatique confidentielle « on-premise »</title>
		<link>https://www.smalsresearch.be/proteger-ses-donnees-des-administrateurs-linformatique-confidentielle-on-premise/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Tue, 17 Mar 2026 07:30:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[confidential computing]]></category>
		<category><![CDATA[confidential containers]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[TEE]]></category>
		<category><![CDATA[Trusted Execution Environment]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=26501</guid>

					<description><![CDATA[Dans cet article et le suivant, nous nous penchons sur la possibilité de déployer des EEC sur notre propre infrastructure (on-premise). L’objectif est triple : bénéficier de la puissance de l’informatique confidentielle pour protéger les données et permettre de nouveaux cas d’usage, tout en gardant un certain contrôle sur la pile logicielle et matérielle, et ainsi renforcer la confiance de nos clients.]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar&nbsp;in het&nbsp;<a href="/je-data-beschermen-tegen-beheerders-on-premise-vertrouwelijke-it/">Nederlands</a>.</em></p>



<p>Et si vos administrateurs système pouvaient accéder à vos données sensibles sans que vous le sachiez&nbsp;? L’informatique confidentielle propose une solution&nbsp;: isoler les données, même de ceux qui gèrent l’infrastructure. Mais comment&nbsp;?</p>



<p>L’informatique confidentielle regroupe un ensemble de technologies permettant de protéger les données sensibles de telle sorte qu’il n’est pas nécessaire de les déchiffrer pour les traiter. Alors que certaines, comme le chiffrement homomorphe, sont encore très complexes à mettre en œuvre, les environnements d’exécution de confiance (EEC aussi appelés «&nbsp;<em>trusted execution environment (TEE)</em>&nbsp;» en anglais) ont atteint une bonne maturité, permettant de les considérer comme des composants importants dans la protection des données.</p>



<p>L’objectif premier des EEC est de dresser un rempart contre la curiosité des entités contrôlant l’infrastructure. Toutefois la protection technique ne résout pas tout. Les lois extraterritoriales [<a href="#ref1">1-5</a>] et l’usage de bibliothèques logicielles propriétaires imposées par certains fournisseurs d’infrastructure informatique peuvent fragiliser cette isolation.</p>



<p>Dans cet article et le suivant, nous nous penchons sur la possibilité de déployer des EEC sur notre propre infrastructure (<em>on-premise</em>). L’objectif est triple&nbsp;: bénéficier de la puissance de l’informatique confidentielle pour protéger les données et permettre de nouveaux cas d’usage, tout en gardant un certain contrôle sur la pile logicielle et matérielle, et ainsi renforcer la confiance de nos clients.</p>



<h1 class="wp-block-heading">Séparation des rôles</h1>



<p>Commençons par rappeler les différents acteurs qui interviennent lors du déploiement d’une application sur une infrastructure informatique. Leurs rôles doivent être hermétiquement séparés pour garantir l’intégrité du système.</p>



<ul class="wp-block-list">
<li><strong>L’opérateur d’infrastructure</strong> gère le matériel et les infrastructures (calcul, stockage, réseau), incluant la maintenance des environnements d’exécution de confiance. Il contrôle les mises à jour des micrologiciels et l’allocation des ressources, mais ne devrait pas pouvoir accéder aux données ou aux charges de travail exécutées.</li>



<li><strong>L’opérateur d’orchestration</strong>, qui peut être le même que l’opérateur d’infrastructure, est responsable de la gestion des grappes de serveurs et du déploiement des charges de travail. Il configure les ressources nécessaires aux applications et supervise les services associés (journalisation, surveillance). Ses privilèges devraient aussi être strictement limités afin d’éviter toute intrusion dans l&#8217;application, tout en permettant l’orchestration essentielle.</li>



<li><strong>Le fournisseur de la charge de travail</strong> conçoit les spécifications des applications et choisit les images de conteneurs adaptées, en garantissant leur conformité et leur intégrité. Il doit prouver aux propriétaires de données (voir ci-dessous) que le code utilisé est sécurisé et respectueux de la confidentialité, sans pour autant accéder directement aux données sensibles.</li>



<li><strong>Le fournisseur d’images de conteneurs</strong> construit, signe et chiffre les images conteneurs, assurant leur provenance et leur sécurité. Il fournit les clés de vérification et de déchiffrement. Sa collaboration avec le fournisseur de l’application est cruciale pour garantir la chaîne d’approvisionnement logicielle et assurer que le code déployé est exactement celui qui a été audité.</li>



<li><strong>Enfin, le propriétaire des données</strong> détient les données traitées par les applications et exige leur confidentialité et leur intégrité. Il accorde sa confiance au code de l’application (le conteneur) et aux preuves cryptographiques fournies par le microprocesseur, excluant de fait les opérateurs d’infrastructure et d’orchestration de son périmètre de confiance. Il peut imposer des vérifications supplémentaires pour s’assurer que ses données ne sont ni visibles ni manipulées par des personnes non autorisées.</li>
</ul>



<p>Les relations entre ces acteurs soulèvent des enjeux spécifiques&nbsp;: le propriétaire des données, par exemple, doit pouvoir faire confiance au code des conteneurs (fournis par le fournisseur de la charge de travail) pour traiter ses données, tout en protégeant celles-ci contre les autres acteurs comme l’opérateur d’infrastructure ou l’opérateur d’orchestration. Notamment les administrateurs de ces opérateurs ne devraient en aucun cas pouvoir avoir accès aux données traitées par les conteneurs.</p>



<h1 class="wp-block-heading">Environnement d’exécution de confiance</h1>



<p>Les EEC permettent de créer une barrière technique renforçant la confiance du propriétaire des données dans le conteneur applicatif. Nous avons déjà expliqué en détail leur fonctionnement ainsi que leurs avantages et inconvénients dans un rapport technique&nbsp;[<a href="#ref6">6</a>] et des articles de blogues&nbsp;[<a href="#ref7">7</a>], [<a href="#ref8">8</a>]. Dans cette section nous en rappelons les points clés avant de présenter des choix technologiques pour une mise en œuvre sur notre infrastructure de recherche.</p>



<p>Le bon fonctionnement des EEC réside dans le matériel. Certains micro-processeurs modernes permettent de réserver et de chiffrer une portion de la mémoire vive (RAM) dédiée à une machine virtuelle (VM) spécifique. Ainsi, un administrateur de la machine hôte, même avec les privilèges les plus élevés, ne verra que des données chiffrées s’il tente d’inspecter cette zone mémoire. Bien que des attaques par canaux auxiliaires existent (e.g.,&nbsp;[<a href="#ref9">9</a>]), leur complexité nécessite généralement un accès physique prolongé et l’ajout de composants matériels malveillants, ce qui les rend extrêmement difficiles à exécuter.</p>



<p>Pour que le propriétaire des données soit certain que son application s’exécute dans un environnement sain, il utilise le mécanisme d’<a href="/introduction-a-l-informatique-confidentielle/#Attestation">attestation</a>. Ce processus génère une signature cryptographique du contenu de la mémoire de la VM au moment de son lancement. Cette signature est certifiée par le fabricant du micro-processeur.</p>



<p>Ce processus a des limites&nbsp;notamment dans le cas où l’opérateur d’infrastructure est une société étrangère (e.g., Amazon AWS, Google Cloud ou Microsoft Azure) qui impose ses bibliothèques propriétaires dans la VM afin, par exemple, de fournir la bonne couche d’abstraction matérielle.</p>



<p>Cela nous a conduit à vouloir tester ce type de technologie dans notre laboratoire de recherche sur notre propre matériel, anticipant la possibilité de le faire un jour sur <a href="https://www.gcloud.belgium.be/">G-Cloud</a>. L’intérêt est de permettre à un client de SMALS de faire fonctionner un conteneur applicatif de manière sécurisée, sans qu’un administrateur de SMALS puisse accéder au contenu du conteneur.</p>



<p>Mais l’utilité des EEC dépasse la simple protection contre les administrateurs. Elle ouvre la voie à d’autres cas d’usage.</p>



<h1 class="wp-block-heading">Cas d’usage</h1>



<p>Un premier exemple se trouve dans le cadre de l’infrastructure européenne de <a href="https://health.ec.europa.eu/ehealth-digital-health-and-care/digital-health-and-care/electronic-cross-border-health-services_fr">services numériques de santé en ligne (eHDSI)</a>. Là, les professionnels de santé d’un pays de traitement peuvent demander les données de santé pertinentes du patient au pays d’affiliation de celui-ci. D’un point de vue technique, la demande est transmise par la passerelle du point de contact national pour la santé (NCPeH) du pays où l’événement de santé imprévu se produit, au pays d’affiliation. Les informations demandées doivent ensuite être récupérées auprès de l’infrastructure nationale du pays d’affiliation, traduites en anglais et transcodées (les données de santé sont transformées du système de codification national vers le système de codification communément accepté, par exemple du format <a href="https://www.hl7.org.uk/standards/hl7-standards/fhir/">FHIR</a> ou <a href="https://www.ehealth.fgov.be/standards/kmehr/en">KMEHR</a> vers <a href="https://www.hl7.org.uk/standards/hl7-standards/cda-clinical-document-architecture/">CDA</a>), puis renvoyées et présentées au professionnel de santé du pays de traitement. Compte tenu du caractère sensible des données, les données devraient être chiffrées de bout en bout, depuis la source de données sur l’infrastructure du pays d’affiliation jusqu’au prestataire de soins de santé dans le pays de traitement. Dans la pratique, cela n’est pas encore possible en raison des différences importantes entre les pays européens. Cependant, il devrait être possible, au minimum, de garantir que les données restent chiffrées et inaccessibles à tout utilisateur ou administrateur entre la source des données et la sortie de la passerelle NCPeH. Une possibilité consiste alors à utiliser des EEC pour effectuer la traduction et le transcodage des données.</p>



<p>Un autre exemple d’utilisation des EEC est la collaboration sécurisée entre entités ne souhaitant pas partager leurs données brutes. Dans le secteur de l’éducation et de l’emploi, une expérience menée par Bogdanov <em>et al</em> en Estonie&nbsp;[<a href="#ref10">10</a>] a montré la puissance des techniques d’informatique confidentielle. Les auteurs de cette étude ont cherché à déterminer si le fait de travailler pendant les études supérieures était corrélé à un échec d’obtention du diplôme dans les délais impartis – une question particulièrement cruciale pour le secteur des technologies de l’information et de la communication en Estonie. Pour répondre à cette problématique sans compromettre la confidentialité des données personnelles, les chercheurs ont combiné les registres d’éducation du ministère de l’Éducation et de la Recherche avec les données de paiements d’impôts du Conseil des taxes et des douanes, grâce à une technique particulière d’informatique confidentielle. Mais une variante plus simple avec un EEC eût été tout aussi efficace pour l’analyse tout en respectant le secret fiscal et la protection des données.</p>



<h1 class="wp-block-heading">CoCo</h1>



<p>Plusieurs solutions logicielles sont disponibles pour mettre à profit les EEC sur notre propre infrastructure de recherche. Nous avons choisi d’utiliser le projet «&nbsp;<a href="https://confidentialcontainers.org/">Confidential Containers (CoCo)</a>&nbsp;» dont le code source est ouvert. Il permet en effet une bonne isolation des conteneurs applicatifs et prend en charge le mécanisme d’attestation de manière transparente, tout en préservant la flexibilité de déploiement et la compatibilité avec la plateforme <a href="https://kubernetes.io/">Kubernetes</a> sur laquelle il s’appuie. Chaque capsule Kubernetes est isolée dans une machine virtuelle confidentielle très légère, de manière à garantir que seules les applications autorisées peuvent accéder aux données sensibles.</p>



<p>Les conteneurs CoCo contiennent quelques composants logiciels nécessaires en plus de l’application elle-même. Ceux-ci permettent de télécharger l’image du conteneur à exécuter, de faciliter la vérification de l’attestation et d’appliquer certaines politiques de sécurité. Leur interface de programmation est relativement petite, notamment par rapport à une solution où tout un nœud Kubernetes serait mis à l’intérieur d’une machine virtuelle confidentielle. En outre, l’image de la machine virtuelle invitée est statique et générique sur toutes les charges de travail et même les plateformes, permettant ainsi d’assurer plus simplement des garanties de sécurité. En même temps, le partage entre les conteneurs dans la même capsule Kubernetes est aisé. Par exemple, l’espace de noms du réseau de la capsule ne quitte pas la machine virtuelle confidentielle, autorisant ainsi les conteneurs qu’elle contient à communiquer de manière confidentielle sans coût supplémentaire.</p>



<p>CoCo s’appuie sur les conteneurs <a href="https://katacontainers.io/">Kata</a>, un autre projet de logiciel libre, qui permet de faire fonctionner des capsules Kubernetes à l’intérieur de machines virtuelles confidentielles très légères (voir <a href="#Figure-1">Figure 1</a>). CoCo ajoute cependant deux composants cruciaux afin d’assurer confidentialité et sécurité (voir <a href="#Figure-2">Figure 2</a>).</p>



<ul class="wp-block-list">
<li>Le premier concerne la <strong>récupération des images des conteneurs</strong>&nbsp;: celles-ci sont habituellement téléchargées par le nœud principal Kubernetes avec l’aide d’une interface d’exécution de conteneur (CRI) comme «&nbsp;<code>containerd</code>,&nbsp;» exposant ainsi les images à la machine hôte à travers le système de fichiers. Avec CoCo, les images sont déchiffrées, et décompactées à l’intérieur de la machine virtuelle confidentielle, d’où la nécessité des composants susmentionnés.</li>



<li>Le second est l’<strong>attestation</strong> qui est, comme nous l’avons déjà vu, indispensable à l’établissement d’un environnement d’exécution de confiance. Par exemple, afin de déchiffrer une image, l’invité doit pouvoir obtenir la clé secrète de déchiffrement, mais celle-ci n’est fournie que si l’invité peut prouver son authenticité. C’est le rôle de deux composants&nbsp;qui s’appuient sur un système appelé «&nbsp;<em><a href="https://github.com/confidential-containers/trustee">Trustee</a></em>,&nbsp;» extérieur à la machine virtuelle et composé de deux services&nbsp;: un service d’attestation permettant de valider la base d’exécution de confiance et un service de médiation de clés permettant de fournir les ressources secrètes nécessaires à la machine virtuelle et à l’application.</li>
</ul>



<figure class="wp-block-image aligncenter size-full is-resized" id="Figure-1"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture1-Exemple-architecture.svg"><img decoding="async" src="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture1-Exemple-architecture.svg" alt="" class="wp-image-26519" style="width:600px"/></a><figcaption class="wp-element-caption">Figure 1 &#8211; Exemple d’architecture avec deux nœuds Kubernetes et des machines virtuelles confidentielles légères Kata, elles-mêmes contenant des capsules Kubernetes. La mémoire allouée à chaque machine virtuelle est directement chiffrée par le microprocesseur du nœud 2. Cela permet une forte isolation de chaque capsule non seulement vis-à-vis des autres, mais aussi vis-à-vis du noyau de la machine hôte.</figcaption></figure>



<p>CoCo fournit donc les bases pour construire des conteneurs applicatifs confidentiels en permettant d’exécuter ces conteneurs à l’intérieur de machines virtuelles confidentielles, gérant les images chiffrées et signées des conteneurs, les secrets scellés, et d’autres caractéristiques. Chaque conteneur ou groupe de conteneurs de la même application peut être assigné à une machine virtuelle confidentielle, incluant non seulement la charge de travail, mais aussi des processus permettant à l’application d’appeler certains services de sécurité. <strong></strong></p>



<figure class="wp-block-image aligncenter size-full is-resized" id="Figure-2"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture2-Schema-coco-1.svg"><img decoding="async" src="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture2-Schema-coco-1.svg" alt="" class="wp-image-26520" style="width:600px"/></a><figcaption class="wp-element-caption">Figure 2 – Représentation schématique d’un conteneur CoCo et de son environnement. À partir de l’utilisation de la commande <code>kubelet</code> pour lancer le déploiement d’un conteneur CoCo, une machine virtuelle légère est créée avec différents agents de base en son sein. L’un se charge de télécharger l’image (chiffrée et signée) du conteneur applicatif à partir d’un registre. Les autres permettent à la machine virtuelle de s’authentifier et de récupérer les clés nécessaires au déchiffrement et à la vérification de la signature de l’image, avant le lancement du conteneur. D’après <a href="https://github.com/confidential-containers/confidential-containers/blob/main/images/coco-threat-model.png">cette figure</a>.</figcaption></figure>



<p>Tout ce qui se trouve en dehors de la machine virtuelle confidentielle sur l’hôte est considéré comme non fiable, y compris l’outil <code>kubelet</code>, l’interface d’exécution de conteneurs et le noyau du système d’exploitation de l’hôte. Les échanges d’informations entre les contextes de confiance et non fiables sont strictement contrôlés, notamment via des politiques de sécurité dynamiques et configurables. Enfin, l’orchestration Kubernetes elle-même est considérée comme non fiable, limitant les garanties sur le planning ou l’ordre d’exécution des charges de travail, à l’exception de leur déploiement dans une enclave authentifiée.</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Les conteneurs confidentiels s’inscrivent dans une démarche globale de sécurité, combinant attestation, vérification des images et bonnes pratiques de la chaîne d’approvisionnement logicielle. Ils permettent de traiter des cas d’usage plus simplement que la cryptographie avancée (collaboration confidentielle, intersection privée d’ensemble, pseudonymisation avancée, etc.). Certes les puristes argueront qu’une solution basée sur des conteneurs confidentiels est moins sûre, mais dans la pratique, elle sera probablement suffisante dans un cadre « <em>on-premise</em> », d’autant plus qu’elle simplifie beaucoup d’aspect une fois qu’elle est mise en place.</p>



<p>Dans l’article suivant, nous entrerons plus en détails dans l’installation et l’utilisation des conteneurs confidentiels CoCo.</p>



<h1 class="wp-block-heading">Références</h1>



<p id="ref1">[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C. Bômont, «&nbsp;Strategic Brief no.70 &#8211; 2024 &#8211; Extension of the FISA Law European “digital sovereignty” far from American concerns &#8211; IRSEM&nbsp;», Institut de Recherche Stratégique de l’Ecole Militaire. Consulté le: 9 février 2026. [En ligne]. Disponible sur: <a href="https://www.irsem.fr/en/strategic-brief-no-70-2024">https://www.irsem.fr/en/strategic-brief-no-70-2024</a></p>



<p id="ref2">[2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Michels, «&nbsp;Europeans, forget the US Cloud Act… worry about FISA instead (!)&nbsp;». Consulté le: 1 juillet 2025. [En ligne]. Disponible sur: <a href="https://www.linkedin.com/pulse/europeans-forget-us-cloud-act-worry-fisa-instead-dave-michels-anjze">https://www.linkedin.com/pulse/europeans-forget-us-cloud-act-worry-fisa-instead-dave-michels-anjze</a></p>



<p id="ref3">[3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M. Rochefort, «&nbsp;Microsoft face au Sénat : l’aveu qui fait vaciller la souveraineté numérique française&nbsp;», clubic.com. Consulté le: 9 février 2026. [En ligne]. Disponible sur: <a href=" https://www.clubic.com/actualite-573438-microsoft-face-au-senat-l-aveu-qui-fait-vaciller-la-souverainete-numerique-francaise.html">https://www.clubic.com/actualite-573438-microsoft-face-au-senat-l-aveu-qui-fait-vaciller-la-souverainete-numerique-francaise.html</a></p>



<p id="ref4">[4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Deridder, «&nbsp;Understanding Sovereignty: Who Rules your Cloud?&nbsp;», Dirk Deridder. Consulté le: 1 juillet 2025. [En ligne]. Disponible sur: <a href="https://dirkderidder.wordpress.com/2025/03/13/understanding-sovereignty-who-rules-your-cloud/">https://dirkderidder.wordpress.com/2025/03/13/understanding-sovereignty-who-rules-your-cloud/</a></p>



<p id="ref5">[5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P. Kunert, «&nbsp;Microsoft exec admits it “cannot guarantee” data sovereignty&nbsp;», The Register. Consulté le: 28 juillet 2025. [En ligne]. Disponible sur: <a href="https://www.theregister.com/2025/07/25/microsoft_admits_it_cannot_guarantee/">https://www.theregister.com/2025/07/25/microsoft_admits_it_cannot_guarantee/</a></p>



<p id="ref6">[6]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F. A. P. Petitcolas, «&nbsp;Informatique confidentielle &#8211; État de l’art&nbsp;», Smals Research, juill. 2023. [En ligne]. Disponible sur: <a href="https://www.smalsresearch.be/publications/document?docid=269">https://www.smalsresearch.be/publications/document?docid=269</a></p>



<p id="ref7">[7]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F. A. P. Petitcolas, «&nbsp;Introduction à l’informatique confidentielle&nbsp;», Smals Research. Consulté le: 9 janvier 2026. [En ligne]. Disponible sur: <a href="https://www.smalsresearch.be/introduction-a-l-informatique-confidentielle/">https://www.smalsresearch.be/introduction-a-l-informatique-confidentielle/</a></p>



<p id="ref8">[8]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F. A. P. Petitcolas, «&nbsp;Outils pour l’informatique confidentielle&nbsp;», Smals Research. Consulté le: 9 janvier 2026. [En ligne]. Disponible sur: <a href="https://www.smalsresearch.be/outils-pour-linformatique-confidentielle/">https://www.smalsresearch.be/outils-pour-linformatique-confidentielle/</a></p>



<p id="ref9">[9]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; J. De Meulemeester, D. Oswald, I. Verbauwhede, et J. V. Bulck, «&nbsp;Battering RAM: Low-cost interposer attacks on confidential computing via dynamic memory aliasing&nbsp;», présenté à 47th IEEE Symposium on Security and Privacy (S&amp;P), mai 2026.</p>



<p id="ref10">[10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Bogdanov, L. Kamm, B. Kubo, R. Rebane, V. Sokk, et R. Talviste, «&nbsp;Students and taxes: a Privacy-preserving study using secure computation&nbsp;», <em>Proc. Priv. Enhancing Technol.</em>, vol. 2016, n<sup>o</sup> 3, p. 117‑135, juill. 2016, doi: 10.1515/popets-2016-0019.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Je data beschermen tegen beheerders: ‘on-premise’ Confidential Computing</title>
		<link>https://www.smalsresearch.be/je-data-beschermen-tegen-beheerders-on-premise-vertrouwelijke-it/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Tue, 17 Mar 2026 07:30:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[confidential computing]]></category>
		<category><![CDATA[confidential containers]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[TEE]]></category>
		<category><![CDATA[Trusted Execution Environment]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=26512</guid>

					<description><![CDATA[In deze en de volgende blogpost kijken we naar de mogelijkheid om TEE's op onze eigen infrastructuur (on-premise) te gebruiken. Het doel is drieledig: gebruikmaken van de kracht van confidential computing om data te beschermen en nieuwe toepassingen mogelijk te maken, terwijl we een zekere controle behouden over de software- en hardwarestack, en zo het vertrouwen van onze klanten versterken.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible&nbsp;en&nbsp;<a href="/proteger-ses-donnees-des-administrateurs-linformatique-confidentielle-on-premise/">français</a>.</em></p>



<p>Wat als je systeembeheerders toegang zouden hebben tot je gevoelige data zonder dat je het weet? <em>Confidential Computing</em> biedt een oplossing: data isoleren, zelfs voor degenen die de infrastructuur beheren. Maar hoe?</p>



<p><em>Confidential Computing</em> omvat een geheel van technologieën waarmee gevoelige data zodanig worden beschermd dat ze niet hoeven te worden ontsleuteld om te worden verwerkt. Hoewel sommige technologieën, zoals homomorfe versleuteling, nog steeds erg complex zijn om te implementeren, zijn <em>Trusted Execution Environments</em> (TEE&#8217;s) inmiddels zo ver ontwikkeld dat ze kunnen worden beschouwd als belangrijke technologie bij databescherming.</p>



<p>Het belangrijkste doel van TEE&#8217;s is om een buffer te vormen tegen de <a href="https://tweakers.net/nieuws/245316/1700-politiemedewerkers-bekeken-dossier-vermoorde-lisa-buitengewoon-kwalijk.html">nieuwsgierigheid</a> van de entiteiten die de infrastructuur beheren. Technische bescherming lost echter niet alles op. Extraterritoriale wetten [<a href="#ref1">1-5</a>] en het gebruik van eigen softwarelibrary&#8217;s die door sommige IT-infrastructuurproviders worden opgelegd, kunnen deze isolatie ondermijnen.</p>



<p>In deze en de volgende blogpost kijken we naar de mogelijkheid om TEE&#8217;s op onze eigen infrastructuur (<em>on-premise</em>) te gebruiken. Het doel is drieledig: gebruikmaken van de kracht van confidential computing om data te beschermen en nieuwe toepassingen mogelijk te maken, terwijl we een zekere controle behouden over de software- en hardwarestack, en zo het vertrouwen van onze klanten versterken.</p>



<h1 class="wp-block-heading">Scheiding van rollen</h1>



<p>Laten we beginnen met een overzicht van de verschillende spelers die betrokken zijn bij de implementatie van een toepassing op een IT-infrastructuur. Hun rollen moeten strikt gescheiden zijn om de integriteit van het systeem te garanderen.</p>



<ul class="wp-block-list">
<li>De <strong>infrastructure operator</strong> beheert de hardware en infrastructuur (computing, storage, network) en onderhoudt de beveiligde runtime-omgevingen. Hij beheert de firmware-updates en de toewijzing van middelen, maar zou geen toegang mogen hebben tot de data of de uitgevoerde workloads.</li>



<li>De <strong>orchestration operator</strong>, die dezelfde kan zijn als de infrastructure operator, is verantwoordelijk voor het beheer van de serverclusters en de implementatie van de workloads. Hij configureert de benodigde middelen voor de toepassing en houdt toezicht op de bijbehorende diensten (logging, monitoring). Ook zijn rechten zouden strikt beperkt moeten blijven om elke vorm van inbreuk op de toepassing te voorkomen, terwijl de noodzakelijke orchestratie wel mogelijk blijft.</li>



<li><strong>De workload provider </strong>ontwerpt de specificaties van de toepassingen en kiest de juiste container images, waarbij hij de conformiteit en integriteit ervan garandeert. Hij moet aan de data owners (zie hieronder) laten zien dat de gebruikte code veilig is en de privacy respecteert, zonder direct toegang te geven tot gevoelige data.</li>



<li><strong>De container image provider</strong> bouwt, ondertekent en versleutelt de container images, zodat hun herkomst en veiligheid gegarandeerd zijn. Hij verstrekt de verificatie en decryptiesleutel. Zijn samenwerking met de toepassingsprovider is cruciaal om de softwareketen te garanderen en ervoor te zorgen dat de geïmplementeerde code precies dezelfde is als de geauditeerde code.</li>



<li>Ten slotte bezit <strong>de data owner</strong> de data die door de toepassingen worden verwerkt en eist hij de vertrouwelijkheid en integriteit ervan. Hij vertrouwt op de code van de toepassing (de container) en de cryptografische bewijzen die door de microprocessor worden geleverd, waardoor infrastructure en orchestration operators buiten zijn vertrouwensbereik vallen. Hij kan extra controles opleggen om ervoor te zorgen dat zijn data niet zichtbaar zijn voor of gemanipuleerd worden door onbevoegde personen.</li>
</ul>



<p>De relaties tussen deze spelers brengen specifieke uitdagingen met zich mee: de data owner moet bijvoorbeeld kunnen vertrouwen op de code van de containers (geleverd door de workload provider) om zijn data te verwerken, terwijl hij deze tegelijkertijd moet beschermen tegen andere spelers, zoals de infrastructure of orchestration operator. Met name de beheerders van deze operators mogen in geen geval toegang hebben tot de data die door de containers worden verwerkt.</p>



<h1 class="wp-block-heading">Betrouwbare runtime-omgeving</h1>



<p>Met TEE&#8217;s kan een technische barrière worden gecreëerd die het vertrouwen van de data owner in de toepassingscontainer versterkt. We hebben al uitvoerig uitgelegd hoe ze werken en wat hun voor- en nadelen zijn in een technisch rapport [<a href="#ref6">6</a>] en blogposts [<a href="#ref7">7</a>], [8]. Hier gaan we even de belangrijkste punten herhalen alvorens we de technologische keuzes voor een implementatie op onze onderzoeksinfrastructuur voorstellen.</p>



<p>Het goed functioneren van TEE&#8217;s hangt af van de hardware. Sommige moderne microprocessors maken het mogelijk om een deel van het RAM-geheugen dat is toegewezen aan een specifieke virtuele machine (VM) te reserveren en te versleutelen. Zo zal een beheerder van de hostmachine, zelfs met de hoogste privileges, alleen versleutelde data zien als hij dit geheugengebied probeert te inspecteren. Hoewel er aanvallen via side-channels bestaan (bijv. [<a href="#ref9">9</a>]), vereisen deze vanwege hun complexiteit doorgaans langdurige fysieke toegang en de toevoeging van kwaadaardige hardwarecomponenten, waardoor ze in de praktijk uiterst moeilijk uit te voeren zijn.</p>



<p>Opdat de data owner er zeker van kan zijn dat zijn toepassing in een veilige omgeving draait, gebruikt hij het <a href="https://www.smalsresearch.be/introduction-a-l-informatique-confidentielle/#Attestation">certificeringsmechanisme</a>. Dit proces genereert een cryptografische handtekening van de inhoud van het geheugen van de VM op het moment dat deze wordt opgestart. Deze handtekening wordt gecertificeerd door de fabrikant van de microprocessor.</p>



<p>Dit proces heeft zijn beperkingen, vooral als de infrastructure operator een buitenlandse onderneming is (bijvoorbeeld Amazon AWS, Google Cloud of Microsoft Azure) die zijn eigen libraries in de VM oplegt om bijvoorbeeld de juiste hardware-abstractielaag te bieden.</p>



<p>Dit heeft ons ertoe aangezet om dit soort hardware op onze eigen infrastructuur binnen het onderzoekslabo te testen, in afwachting van de mogelijkheid om dit op een dag op <a href="https://www.gcloud.belgium.be/">G-Cloud</a> toe te passen. Het voordeel hiervan is dat een klant van SMALS een toepassingscontainer op een veilige manier kan gebruiken, zonder dat een beheerder van SMALS toegang heeft tot de inhoud van de container.</p>



<p>Maar het nut van TEE&#8217;s gaat verder dan alleen bescherming tegen beheerders. Het opent de deur naar andere toepassingen.</p>



<h1 class="wp-block-heading">Use case</h1>



<p>Een eerste voorbeeld is te vinden in de Europese infrastructuur voor <a href="https://health.ec.europa.eu/ehealth-digital-health-and-care/digital-health-and-care/electronic-cross-border-health-services_nl">digitale gezondheidsdiensten (eHDSI)</a>. Daar kunnen zorgverleners in het land waar de behandeling plaatsvindt de relevante gezondheidsdata van de patiënt opvragen in het land waar de patiënt is aangesloten. Technisch gezien wordt de aanvraag via de gateway van het nationale contactpunt voor gezondheidszorg (NCPeH) van het land waar de onverwachte gezondheidsgebeurtenis plaatsvindt, doorgestuurd naar het land waar de patiënt is aangesloten. De gevraagde info moet dan worden opgehaald uit de nationale infrastructuur van het land van aansluiting, vertaald naar het Engels en getranscodeerd (de gezondheidsdata worden omgezet van het nationale coderingssysteem naar het algemeen aanvaarde coderingssysteem, bijvoorbeeld van het <a href="https://www.hl7.org.uk/standards/hl7-standards/fhir/">FHIR</a>&#8211; of <a href="https://www.ehealth.fgov.be/standards/kmehr/en">KMEHR</a>-formaat naar <a href="https://www.hl7.org.uk/standards/hl7-standards/cda-clinical-document-architecture/">CDA</a>), en vervolgens teruggestuurd en gepresenteerd worden aan de zorgverlener in het land van behandeling. Vanwege het gevoelige karakter van de data moeten deze van begin tot eind worden versleuteld, vanaf de gegevensbron op de infrastructuur van het land van aansluiting tot aan de zorgverlener in het land van behandeling. In de praktijk is dit nog niet mogelijk vanwege de grote verschillen tussen de Europese landen. Het zou echter op zijn minst mogelijk moeten zijn om te garanderen dat de data versleuteld en ontoegankelijk blijven voor alle gebruikers of beheerders tussen de bron van de data en de uitgang van de NCPeH-gateway. Een mogelijkheid is dan om TEE&#8217;s te gebruiken voor het vertalen en transcoderen van de data.</p>



<p>Een ander voorbeeld van het gebruik van TEE&#8217;s is de beveiligde samenwerking tussen entiteiten die hun ruwe data niet willen delen. In de onderwijs- en werkgelegenheidssector heeft een experiment van Bogdanov <em>et al.</em> in Estland [<a href="#ref10">10</a>] de kracht van confidential computertechnieken aangetoond. De auteurs van deze studie wilden achterhalen of werken naast een hogere opleiding ertoe leidt dat je je diploma niet op tijd behaalt – een vraag die vooral belangrijk is voor de sector van de informatie- en communicatietechnologie (ICT) in Estland. Om deze probleemstelling te beantwoorden zonder de privacy van persoonlijke data in gevaar te brengen, hebben de onderzoekers de onderwijsregisters van het ministerie van Onderwijs en Onderzoek gecombineerd met de data van de belastingdienst, dankzij een speciale techniek van confidential computing. Maar een simpelere variant met een TEE zou net zo goed hebben gewerkt voor de analyse, terwijl de fiscale vertrouwelijkheid en databescherming gewaarborgd bleven.</p>



<h1 class="wp-block-heading">CoCo</h1>



<p>Om TEE&#8217;s te gebruiken in onze eigen onderzoeksinfrastructuur bestaan er verschillende softwareoplossingen. We hebben gekozen voor het project &#8220;<a href="https://confidentialcontainers.org/">Confidential Containers (CoCo)</a>&#8220;, waarvan de broncode vrij toegankelijk is. Dit project zorgt voor een goede isolatie van de toepassingscontainers en ondersteunt het certificeringsmechanisme op een transparante manier, terwijl de flexibiliteit van de implementatie en de compatibiliteit met het <a href="https://kubernetes.io/">Kubernetes</a>-platform waarop het is gebaseerd, behouden blijven. Elke Kubernetes-pod is geïsoleerd in een zeer lichte Confidential Virtual Machine, om te garanderen dat alleen geautoriseerde applicaties toegang hebben tot gevoelige gegevens.</p>



<p>CoCo&#8217;s bevatten naast de toepassing zelf enkele noodzakelijke softwarecomponenten. Deze maken het mogelijk om de uit te voeren containerimage te downloaden, de verificatie van de certificering te vergemakkelijken en bepaalde beveiligingsbeleidsregels toe te passen. Hun programmeerinterface is relatief klein, vooral vergeleken met een oplossing waarbij een hele Kubernetes-node in een Confidential Virtual Machine wordt geplaatst. Bovendien is de image van de guest-VM statisch en generiek voor alle workloads en zelfs platforms, waardoor het eenvoudiger is om veiligheidsgaranties te bieden. Tegelijkertijd is het makkelijk om dingen te delen tussen containers in dezelfde Kubernetes-pod. De naamruimte van het netwerk van de pod blijft bijvoorbeeld binnen de confidential VM, waardoor de containers daarin zonder extra kosten vertrouwelijk met elkaar kunnen communiceren.</p>



<p>CoCo is gebaseerd op <a href="https://katacontainers.io/">Kata</a>-containers, een ander open source-project, waarmee Kubernetes-pods kunnen worden uitgevoerd binnen zeer lichte Confidential Virtual Machines (zie <a href="#Figuur-1">Figuur 1</a>). CoCo voegt echter twee cruciale componenten toe om vertrouwelijkheid en veiligheid te garanderen (zie <a href="#Figuur-2">Figuur 2</a>).</p>



<ul class="wp-block-list">
<li>De eerste heeft te maken met het <strong>ophalen van containerimages</strong>: deze worden meestal gedownload door de Kubernetes-hoofdnode met behulp van een Container Runtime Interface (CRI) zoals “containerd”, waardoor de images via het bestandssysteem zichtbaar worden voor de hostmachine. Met CoCo worden de images binnen de Confidential Virtual Machine ontsleuteld en uitgepakt, vandaar de noodzaak van de bovengenoemde componenten.</li>



<li>Het tweede onderdeel is het <strong>certificaat</strong>, dat, zoals we al hebben gezien, essentieel is voor het opzetten van een betrouwbare uitvoeringsomgeving. Om bijvoorbeeld een image te ontsleutelen, dient de guest de geheime ontsleutelingssleutel te kunnen verkrijgen, maar deze wordt alleen verstrekt als de guest zijn authenticiteit kan aantonen. Dit is de rol van twee componenten die steunen op een zogenaamd “<em><a href="https://github.com/confidential-containers/trustee">Trustee</a></em>”-systeem, dat buiten de virtuele machine staat en uit twee diensten bestaat: een certificeringsdienst om de vertrouwde runtime te valideren en een key mediation-dienst om de geheime middelen te leveren die de virtuele machine en de toepassing nodig hebben.</li>
</ul>



<figure class="wp-block-image aligncenter size-full is-resized" id="Figuur-1"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture1-Voorbeeld-architectuur.svg"><img decoding="async" src="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture1-Voorbeeld-architectuur.svg" alt="" class="wp-image-26516" style="width:600px"/></a><figcaption class="wp-element-caption">Figuur 1 &#8211; Voorbeeld van een architectuur met twee Kubernetes-nodes en lichte Kata Confidential Virtual Machines, die zelf weer Kubernetes-pods bevatten. Het aan elke virtuele machine toegewezen geheugen wordt direct versleuteld door de microprocessor van node 2. Dit zorgt ervoor dat elke pod niet alleen sterk geïsoleerd is van de andere, maar ook van de kernel van de hostmachine.</figcaption></figure>



<p>CoCo levert dus de basis voor het bouwen van confidential toepassingscontainers door het mogelijk te maken deze containers binnen confidential virtuel machines uit te voeren, waarbij de geëncrypteerde en ondertekende images van de containers, de verzegelde geheimen en andere kenmerken worden beheerd. Elke container of groep containers van dezelfde toepassing kan worden toegewezen aan een confidential virtuele machine, waarbij niet alleen de werklast wordt meegenomen, maar ook processen waarmee de toepassing bepaalde beveiligingsdiensten kan aanroepen. </p>



<figure class="wp-block-image aligncenter size-full is-resized" id="Figuur-2"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture2-CoCo-schematische-weergave.svg"><img decoding="async" src="https://www.smalsresearch.be/wp-content/uploads/2026/03/Picture2-CoCo-schematische-weergave.svg" alt="" class="wp-image-26518" style="width:600px"/></a><figcaption class="wp-element-caption">Figuur 2 &#8211; Schematische weergave van een CoCo en zijn omgeving. Door het kubelet-commando te gebruiken om de implementatie van een CoCo te starten, wordt een lichte VM gemaakt met verschillende basisagenten erin. Eén agent zorgt ervoor dat de (versleutelde en ondertekende) image van de app-container wordt gedownload uit een register. De andere zorgen ervoor dat de virtuele machine zich kan authenticeren en de nodige sleutels kan ophalen om de image te ontsleutelen en de handtekening te verifiëren, voordat de container wordt gestart. Gebaseerd op <a href="https://github.com/confidential-containers/confidential-containers/blob/main/images/coco-threat-model.png">dit figuur</a>.</figcaption></figure>



<p>Alles buiten de confidential VM op de host wordt als onbetrouwbaar beschouwd, inclusief de kubelet-tool, de runtime-interface van de containers en de kernel van het besturingssysteem van de host. De uitwisseling van informatie tussen vertrouwde en niet-vertrouwde contexten wordt streng gecontroleerd, met name via dynamische en configureerbare beveiligingsbeleidsregels. Ten slotte wordt de Kubernetes-orkestratie zelf als niet-vertrouwd beschouwd, waardoor de garanties met betrekking tot de planning of de volgorde van uitvoering van de workloads beperkt zijn, met uitzondering van de implementatie ervan in een geauthenticeerde enclave.</p>



<h1 class="wp-block-heading">Conclusie</h1>



<p>Confidential containers maken deel uit van een algemene beveiligingsaanpak, waarbij certificering, verificatie van images en best practices in de softwaretoeleveringsketen worden gecombineerd. Ze maken het mogelijk om use cases eenvoudiger te verwerken dan geavanceerde cryptografie (<em>confidential collaboration, private set intersection, </em>geavanceerde pseudonimisering, enz.). Puristen kunnen natuurlijk aanvoeren dat een oplossing op basis van confidential containers minder veilig is, maar in de praktijk zal deze waarschijnlijk volstaan in een on-premise omgeving, des te meer omdat het veel aspecten vereenvoudigt zodra het eenmaal is geïmplementeerd.</p>



<p>In de volgende blogpost gaan we dieper in op de installatie en het gebruik van confidential CoCo&#8217;s.</p>



<h1 class="wp-block-heading">Referenties</h1>



<p id="ref1">[<a href="https://ref1">1</a>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C. Bômont, “Strategic Brief no.70 &#8211; 2024 &#8211; Extension of the FISA Law European ‘digital sovereignty’ far from American concerns &#8211; IRSEM”, Institut de Recherche Stratégique de l’Ecole Militaire. Geraadpleegd: 9 februari 2026. [Online]. Beschikbaar op: <a href="https://www.irsem.fr/en/strategic-brief-no-70-2024">https://www.irsem.fr/en/strategic-brief-no-70-2024</a></p>



<p id="ref2">[2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Michels, “Europeans, forget the US Cloud Act… worry about FISA instead (!)”. Geraadpleegd: 1 juli 2025. [Online]. Beschikbaar op: <a href="https://www.linkedin.com/pulse/europeans-forget-us-cloud-act-worry-fisa-instead-dave-michels-anjze">https://www.linkedin.com/pulse/europeans-forget-us-cloud-act-worry-fisa-instead-dave-michels-anjze</a></p>



<p id="ref3">[3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Paul Kunert, “Microsoft exec admits it ‘cannot guarantee’ data sovereignty”. Geraadpleegd: 9 februari 2026. [Online]. Beschikbaar op: <a href="https://www.theregister.com/2025/07/25/microsoft_admits_it_cannot_guarantee/">https://www.theregister.com/2025/07/25/microsoft_admits_it_cannot_guarantee/</a></p>



<p id="ref4">[4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M. Rochefort, “Microsoft face au Sénat : l’aveu qui fait vaciller la souveraineté numérique française”, clubic.com. Geraadpleegd: 9 februari 2026. [Online]. Beschikbaar op: <a href="https://www.clubic.com/actualite-573438-microsoft-face-au-senat-l-aveu-qui-fait-vaciller-la-souverainete-numerique-francaise.html">https://www.clubic.com/actualite-573438-microsoft-face-au-senat-l-aveu-qui-fait-vaciller-la-souverainete-numerique-francaise.html</a></p>



<p id="ref5">[5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Deridder, “Understanding Sovereignty: Who Rules your Cloud?”, Dirk Deridder. Geraadpleegd: 1 juli 2025. [Online]. Beschikbaar op: <a href="https://dirkderidder.wordpress.com/2025/03/13/understanding-sovereignty-who-rules-your-cloud/">https://dirkderidder.wordpress.com/2025/03/13/understanding-sovereignty-who-rules-your-cloud/</a></p>



<p id="ref6">[6]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F. A. P. Petitcolas, “Informatique confidentielle &#8211; État de l’art”, Smals Research, jul. 2023. [Online]. Beschikbaar op: <a href="https://www.smalsresearch.be/publications/document?docid=269">https://www.smalsresearch.be/publications/document?docid=269</a></p>



<p id="ref7">[7]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F. A. P. Petitcolas, “Introduction à l’informatique confidentielle”, Smals Research. Geraadpleegd: 9 januari 2026. [Online]. Beschikbaar op: <a href="https://www.smalsresearch.be/introduction-a-l-informatique-confidentielle/">https://www.smalsresearch.be/introduction-a-l-informatique-confidentielle/</a></p>



<p id="ref8">[8]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F. A. P. Petitcolas, “Outils pour l’informatique confidentielle”, Smals Research. Geraadpleegd: 9 januari 2026. [Online]. Beschikbaar op: <a href="https://www.smalsresearch.be/outils-pour-linformatique-confidentielle/">https://www.smalsresearch.be/outils-pour-linformatique-confidentielle/</a></p>



<p id="ref9">[9]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; J. De Meulemeester, D. Oswald, I. Verbauwhede, en J. V. Bulck, “Battering RAM: Low-cost interposer attacks on confidential computing via dynamic memory aliasing”, gepresenteerd bij 47th IEEE Symposium on Security and Privacy (S&amp;P), mei 2026.</p>



<p id="ref10">[10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Bogdanov, L. Kamm, B. Kubo, R. Rebane, V. Sokk, en R. Talviste, “Students and taxes: a Privacy-preserving study using secure computation”, <em>Proc. </em><em>Priv. Enhancing Technol.</em>, vol. 2016, nr. 3, pp. 117-135, jul. 2016, doi: 10.1515/popets-2016-0019.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Souveraineté numérique</title>
		<link>https://www.smalsresearch.be/souverainete-numerique/</link>
					<comments>https://www.smalsresearch.be/souverainete-numerique/#comments</comments>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Fri, 18 Apr 2025 12:00:27 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidentiality]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[G-Cloud]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[interoperability]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[open standards]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Resilience]]></category>
		<category><![CDATA[Risk Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=22369</guid>

					<description><![CDATA[Nous assistons une fois de plus à l’émergence de questions fondamentales d’indépendance, de sécurité et d’autonomie stratégique : la souveraineté numérique est tendance.]]></description>
										<content:encoded><![CDATA[
<p><em><em>Dit artikel is ook beschikbaar in het</em> <a href="/digitale-soevereiniteit/">Nederlands</a>.</em></p>



<p>Les services numériques doivent non seulement être rentables, mais également robustes&nbsp;: ils doivent continuer à fonctionner si certains fournisseurs ou éléments de base font défaut pour une raison quelconque. Il ne s’agit pas uniquement d’une question purement technique, d’un enfermement propriétaire (<a href="https://fr.wikipedia.org/wiki/Enfermement_propri%C3%A9taire">vendor lock-in</a>) ou d’<a href="https://www.ibm.com/think/topics/multicloud">architecture multicloud</a>. Nous assistons une fois de plus à <a href="https://foreignpolicy.com/2025/03/31/europe-digital-sovereignty-colony-trump-asml-ai-eurostack/">l’émergence de questions fondamentales </a>d’indépendance, de sécurité et d’autonomie stratégique&nbsp;: la <em>souveraineté numérique</em> est tendance.</p>



<p>On comprend aisément pourquoi&nbsp;: avec un revirement politique d’une ampleur sans précédent, la réputation des États-Unis en tant que partenaire commercial fiable s’est volatilisée en un temps record. Du jour au lendemain, un <a href="https://www.reuters.com/world/us-aerospace-firm-maxar-disables-satellite-photos-ukraine-2025-03-07/">service peut être interrompu</a> ou des <a href="https://www.reuters.com/world/us/trump-tariffs-updates-world-braces-us-announce-duties-2025-04-01/">droits de douane peuvent être introduits</a> sans raison valable. Quiconque développe ou gère des infrastructures IT critiques en tremble rien qu’à l’idée. Et l’autonomie vaut soudain à nouveau son pesant d’or.</p>



<h2 class="wp-block-heading">Piliers stratégiques</h2>



<p>Le cœur de la souveraineté numérique réside dans la capacité à choisir, déployer et gérer des solutions technologiques sans dépendances externes étendues. Ces dépendances sont souvent plus profondes que nous ne le pensons, comme l’a démontré une expérience intéressante du<a href="https://www.youtube.com/watch?v=Rxuf1598bjc"> journaliste de Gizmodo, Kashmir Hill</a>, il y a quelques années. La dépendance technologique représente toujours un risque. Afin de le minimiser, nous pouvons entre autres&nbsp;:</p>



<ul class="wp-block-list">
<li>Investir dans le développement local et <em>open source</em> des technologies</li>



<li>Construire nous-même des infrastructures robustes et décentralisées</li>



<li>Développer nos propres compétences et capacités technologiques</li>



<li>Inclure des conditions d’interopérabilité, de migration de données, de flexibilité, d’interruption, etc. dans des clauses contractuelles et les marchés publics.</li>



<li>&#8230;</li>
</ul>



<p>En matière de développement logiciel pratique également, les choix qui favorisent l’agilité technologique présentent un avantage&nbsp;:</p>



<ul class="wp-block-list">
<li>Choisir des normes ouvertes et des API robustes et standardisées</li>



<li>Développer des solutions non seulement modulaires et évolutives, mais également agnostiques vis-à-vis du cloud</li>



<li>Implémenter des middleware capables de relier différentes technologies</li>



<li>Prêter attention à la portabilité, à la compatibilité multiplateforme et à la compatibilité entre navigateurs</li>



<li>…</li>
</ul>



<p><a href="https://publications.jrc.ec.europa.eu/repository/handle/JRC138657">La souveraineté sur les données</a> est également très importante. Une souveraineté numérique exige de conserver un contrôle maximal sur la collecte, le stockage, le traitement et la protection des données. Cela peut se faire en organisant le stockage et le traitement des données localement, de préférence en appliquant des mécanismes solides de <a href="https://fr.wikipedia.org/wiki/Gouvernance_des_donn%C3%A9es">gouvernance des données</a>, ou en les confiant à un tiers qui offre les garanties nécessaires et opère dans le cadre d’une <a href="https://commission.europa.eu/law/law-topic/data-protection/international-dimension-data-protection/adequacy-decisions_en">législation compatible</a>.</p>



<p>La Belgique se débrouille plutôt bien en matière d’autonomie infrastructurelle, avec le <a href="https://gcloud.belgium.be">cloud gouvernemental G-Cloud</a> et le réseau <a href="https://www.belnet.be/">Belnet</a>, entre autres.</p>



<h2 class="wp-block-heading">Le rôle de l’<em>open source</em></h2>



<p>Les technologies <em>open source</em>, en tant que <em>vecteurs</em> d’indépendance technologique, sont des éléments fondamentaux de la souveraineté numérique. Elles offrent une totale transparence du code, permettent la modification ou le propre développement, et diminuent la dépendance vis-à-vis des géants technologiques étrangers.</p>



<p>Cependant, cela a également un coût. L’utilisation de logiciels <em>open source</em> et de normes ouvertes implique de fournir soi-même l’ensemble du support, de la formation, des mises-à-jour, de la compatibilité, du débogage, etc. En échange de l’autonomie, il faut inclure un éventail de tâches connexes. Cela implique notamment un investissement dans la gestion active, ainsi que la maintenance et le développement des connaissances. Les acteurs commerciaux proposant des solutions propriétaires s’en chargent généralement.</p>



<p>Devenir totalement autonome est donc généralement impossible. Il existe un cas d’étude bien connu, celui de la ville de Munich, qui a ambitieusement <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/document/munichs-long-history-open-source-public-administration">basculé en 2006 vers un environnement Linux développé en interne</a>, mais qui, en raison de problèmes persistants de compatibilité et de l’augmentation des coûts de gestion qui en découle, a mis fin au programme en 2017 pour revenir à un environnement Microsoft standardisé.</p>



<h2 class="wp-block-heading">Chez nos voisins</h2>



<p>L’Allemagne est une fervente partisane de la souveraineté numérique depuis longtemps. L’<em><a href="https://osb-alliance.de/ueber-uns/was-ist-die-osb-alliance">Open Source Business Alliance</a></em> allemande utilise même le terme dans son slogan. L’expérience munichoise a donné naissance à l’actuel <em><a href="https://opensource.muenchen.de/">Open Source Programme Office</a></em> de la ville. Le niveau fédéral allemand encourage également l’indépendance technique, notamment&nbsp;:</p>



<ul class="wp-block-list">
<li>Des projets propres tels que <em><a href="https://scs.community/">Sovereign Cloud Stack</a></em> (actuellement <a href="https://www.sovereigncloudstack.org/">en transformation</a> après la fin du financement),</li>



<li>Le <em><a href="https://www.sovereign.tech/">Sovereign Tech Fund</a></em>, qui fournit des fonds pour maintenir les composants <em>open source</em> essentiels,</li>



<li>Le <em><a href="https://zendis.de/">Zentrum Digitale Souveränität</a></em> (ZenDis), qui aide les gouvernements à réduire leurs dépendances technologiques.</li>
</ul>



<p>Ce dernier investit également avec succès dans deux projets propres&nbsp;:</p>



<ul class="wp-block-list">
<li>La plateforme <a href="https://opencode.de/">OpenCode</a>, où les services publics peuvent publier et partager leur code avec d’autres,</li>



<li>L’environnement de travail administratif <a href="https://opendesk.eu/en/">OpenDesk</a>, qui inclut également des options typiques pour les entreprises telles que l’authentification unique et les intégrations entre les réunions, les «&nbsp;chats&nbsp;», le calendrier et les courriers électroniques.<br></li>
</ul>



<p>La France n’est pas en reste non plus. Plusieurs initiatives en faveur de la souveraineté numérique sont menées par la Direction interministérielle du Numérique (<a href="https://www.numerique.gouv.fr/dinum/">DINUM</a>). Ils comptent également leur propre dépôt sous la forme de <a href="https://code.gouv.fr/fr/">code.gouv.fr</a>. En outre, ils développent de manière proactive de nouvelles applications dans leur propre <a href="https://beta.gouv.fr/">incubateur</a>. Cela a donné naissance à des projets tels que <a href="https://lasuite.numerique.gouv.fr">La Suite Numérique</a>, une suite <em>enterprise level</em> de bureautique qui offre des fonctionnalités telles que le chat vidéo, les webinaires et le transfert de fichiers, et qui est en cours d’extension pour inclure des traitements de texte et des tableurs. La France s’est également engagée dans une <a href="https://www.economie.gouv.fr/securite-performance-souverainete-strategie-cloud">stratégie de cloud computing la plus indépendante possible</a> et, tout aussi important, elle s’efforce de motiver et de former ses fonctionnaires par le biais de la <a href="https://code.gouv.fr/fr/bluehats/">communauté des Blue Hats</a>. Du côté des entreprises, l’union des entreprises du logiciel libre et du numérique ouvert (<a href="https://cnll.fr/">CNLL</a>) s’est engagé en faveur de la souveraineté numérique.</p>



<p>Ce qui est frappant à la fois avec l’<a href="https://opendesk.eu/">OpenDesk</a> allemand et <a href="https://lasuite.numerique.gouv.fr">La Suite Numérique</a> française, c’est qu’ils sont tous deux également disponibles en anglais. Même dans le contexte gouvernemental, on prend de plus en plus conscience que les initiatives <em>open source</em> ont de meilleures chances de succès si l’on investit de manière proactive dans l’internationalisation. Plus prometteur encore, <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a> et <a href="https://zendis.de/">ZenDis</a> ont commencé une collaboration concrète avec une <a href="https://fosdem.org/2025/schedule/event/fosdem-2025-6403-note-worthy-collaboration-co-developing-a-note-taking-application/">application de prise de notes développée conjointement</a>. Cette dernière a été présentée lors du dernier <a href="https://fosdem.org/">FOSDEM</a>, la grand-messe annuelle des développeurs <em>open source</em> à Bruxelles, où les <a href="https://fosdem.org/2025/schedule/track/government-collaboration/">collaborations gouvernementales étaient à l’honneur</a>.</p>



<p>Le tandem franco-allemand est un signe prometteur de la volonté de l’Europe de s’unir pour promouvoir la souveraineté numérique. Nous savons déjà que les <a href="https://www.numerique.gouv.fr/espace-presse/premiers-succes-cooperation-franco-allemande-administration-numerique-souveraine-collaboration-trilaterale-avec-royaume-des-pays-bas-signature-nouvelle-declaration-dintention-commune/">Pays-Bas souhaitent se joindre</a> à cette collaboration. En effet, le <a href="https://ibestuur.nl/artikel/actie-nodig-om-de-digitale-soevereiniteit-van-nederland-en-europa-te-versterken/">débat social</a> y est également bien vivant, même à la Seconde Chambre, avec des discussions sur les <a href="https://ecp.nl/argumentenkaart-niet-europese-clouddiensten-overhandigd-aan-tweede-kamer/">services cloud</a> ou le <a href="https://tweakers.net/nieuws/233008/tweede-kamer-wil-unaniem-dat-sidn-nl-domeininfrastructuur-niet-naar-aws-overzet.html">DNS</a>. L’Organisation néerlandaise pour la recherche scientifique appliquée (<a href="https://www.tno.nl/en/importance-digital-sovereignty/">TNO</a>) a publié un <a href="https://publications.tno.nl/publication/34642268/o5remY/TNO-2024-R10300.pdf">long rapport sur la souveraineté numérique</a>, les <a href="https://www.uu.nl/sites/default/files/Moerel%2C%20Timmers%20%282.0%29%20-%20Preadvies%20Staatsrechtconferentie%202020.pdf">universités en font un sujet de discussion</a> et le <a href="https://dutchcloudcommunity.nl/digitale-soevereiniteit/">monde des affaires</a> y prête également attention. La souveraineté numérique est à l’ordre du jour à <a href="https://www.binnenlandsbestuur.nl/digitaal/experts-slaan-alarm-over-soevereiniteit">tous les niveaux de gouvernement</a>.</p>



<h2 class="wp-block-heading">Le rôle de l’Europe</h2>



<p>L’Union européenne a un intérêt stratégique évident dans la souveraineté (numérique). Les éléments clés à cet égard sont le récent <a href="https://digital-markets-act.ec.europa.eu/index_en">Digital Markets Act (DMA)</a> et le <a href="https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package">Digital Services Act (DSA)</a>. Ces deux cadres législatifs visent à limiter le pouvoir des géants technologiques étrangers et à rendre le «&nbsp;terrain de jeu&nbsp;» plus équitable et transparent pour les entreprises européennes. L’UE souhaite ainsi renforcer son autonomie stratégique en établissant des règles claires en matière de gestion des données et des plateformes, rendant les États membres européens moins vulnérables aux dépendances extérieures. Le <a href="https://digital-strategy.ec.europa.eu/en/policies/cybersecurity-act">Cybersecurity Act</a> et la <a href="https://eur-lex.europa.eu/eli/dir/2022/2555/oj/">directive NIS2</a> devraient garantir que la sécurité et la fiabilité ne soient pas compromises.</p>



<p class="has-text-align-left">L’UE entreprend également de <a href="https://www.europarl.europa.eu/RegData/etudes/BRIE/2020/651992/EPRS_BRI(2020)651992_EN.pdf">nombreuses initiatives pertinentes</a>, mais toutes ne décollent pas tout aussi facilement. La fragmentation européenne est une vieille plaie. Les petits projets restent souvent petits et, une fois le financement terminé, ils se transforment en <em><a href="https://fr.wikipedia.org/wiki/Logiciel_abandonn%C3%A9">abandonware</a></em>. Par exemple, il est impossible de savoir si la nouvelle <em><a href="https://europeanopensource.academy/">European Open Source Academy</a></em> survivra à la fin de son cycle de financement en 2027. D’autre part, les consortiums à grande échelle ont de nombreux problèmes de coordination et de contrôle. Le projet <a href="https://gaia-x.eu/">GAIA-X</a> a ainsi acquis la réputation d’être <a href="https://blog.okfn.org/2025/02/11/open-source-policy-and-europes-digital-sovereignty-key-takeaways-from-the-eu-open-source-policy-summit/">plus une histoire de mémos que de démos</a>, si bien que les nouveaux projets tels qu’<a href="https://openeurollm.eu/">OpenEuroLLM</a> sont également accueillis avec un certain scepticisme. Le déploiement des <em><a href="https://digital-strategy.ec.europa.eu/en/policies/data-spaces">European Data Spaces</a></em> dans divers domaines devrait favoriser la souveraineté sur les données. Cela <a href="https://health.ec.europa.eu/ehealth-digital-health-and-care/european-health-data-space-regulation-ehds_en">deviendra obligatoire</a> pour la santé (EHDS), qui pourrait insuffler un nouvel élan. Cela ne suffit cependant pas à apaiser les inquiétudes&nbsp;: le <a href="https://www.euro-stack.info/">rapport complet EuroStack</a> de la <em>Bertelsmann Stiftung</em> présente même à l’UE une vision plus ambitieuse sur un plateau d’argent.</p>



<p>Sous l’égide de l’<a href="https://interoperable-europe.ec.europa.eu/">Europe Interopérable</a>, on retrouve l’<em>Open Source Observatory and Repository</em> (<a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor">OSOR</a>), en plus de <em><a href="https://interoperable-europe.ec.europa.eu/collection/public-sector-tech-watch">Public Sector Techwatch</a></em> et <em><a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/">GovTech Connect</a></em>. Ils surveillent l’utilisation de l’<em>open source</em> dans les administrations gouvernementales européennes depuis plus de 15 ans maintenant, et encouragent les partenariats et la réutilisation. L’<em><a href="https://interoperable-europe.ec.europa.eu/eu-oss-catalogue/solutions">Open Source Solutions Catalogue</a></em> récemment lancé devrait permettre aux pays de réutiliser plus facilement les solutions des uns et des autres. Ils publient également des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/reports-and-guidelines">rapports</a>, des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/case-studies">études de cas</a>, des <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/oss-repositories">catalogues nationaux</a> (dans lesquels nous trouvons <a href="https://www.ict-reuse.be/">ict-reuse.be</a>) et une <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/osor-newsletters">lettre d’information</a>. Les gouvernements qui souhaitent mettre en place leur propre <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/ospos-oss-governance"><em>Open Source Program Office</em> (OSPO)</a> afin de contribuer activement aux projets <em>open source</em> tels que <a href="https://interoperable-europe.ec.europa.eu/collection/ec-ospo">celui de l’UE</a>, y trouvent le soutien nécessaire. Les <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/news/dutch-digitalisation-minister-announces-ospo-creation">Pays-Bas</a> sont déjà convaincus. Si les autorités belges veulent contribuer visiblement à la souveraineté numérique, voilà une excellente occasion.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>La souveraineté numérique est plus qu’un choix technique. C’est une stratégie continue pour retrouver un pouvoir d’agir dans un monde numérique hautement interconnecté où les éléments fondamentaux peuvent soudainement changer. Nous ne voulons pas nous contenter de consommer la technologie, mais aussi la façonner, la comprendre et la contrôler activement. Cela nous permettrait de réduire les dépendances externes et les risques qui en découlent. La pensée et la coopération européennes offrent des possibilités de synergies.</p>



<p><a id="_msocom_1"></a>L’autonomie technologique nécessite un écosystème technologique sain. Une attention constante au capital humain et au développement des connaissances est indispensable. Pour y parvenir de manière durable, les initiatives de soutien doivent bénéficier des ressources nécessaires&nbsp;:</p>



<ul class="wp-block-list">
<li>Développer de manière proactive des alternatives technologiques, qui anticipent la demande,</li>



<li>Participer à l’échange de connaissances, à des évènements et réseauter, avec des pairs, des institutions du savoir, des pays voisins, avec l’UE, etc.</li>



<li>Investir ou participer activement aux solutions <em>open source</em> existantes que l’on réutilise,</li>



<li>Construire des communautés autour de projets propres,</li>



<li>Investir dans un design attrayant et l’intuitivité des solutions propres,</li>



<li>Rendre sa propre solution disponible en dehors de ses murs&nbsp;: publier en <em>open source</em>, <a href="https://yml.publiccode.tools">intégrer dans des catalogues</a>, ajouter une documentation et une traduction anglaise, etc.</li>



<li>Travailler sur la notoriété de la marque&nbsp;: sites web, promotion, marketing, salons professionnels, médias (sociaux), etc.</li>



<li>&#8230;</li>
</ul>



<p>Les personnes intéressées par ce thème peuvent suivre les organisations et les initiatives mentionnées dans cet article sur les médias sociaux ou à travers leurs lettres d’information. Pour une analyse approfondie, le <a href="https://www.euro-stack.info/">rapport EuroStack</a> mentionné ci-dessus est intéressant. Si vous cherchez des alternatives pour les dépendances dans vos propres projets, <a href="https://european-alternatives.eu/">european-alternatives.eu</a>, <a href="https://euro-stack.com/">euro-stack.com</a> ou <a href="https://alternativeto.net/">alternativeto.net</a> sont de bons points de départ. Enfin, la souveraineté numérique est un effort d’équipe, n’hésitez donc surtout pas à partager d’autres sources, projets ou liens intéressants dans les commentaires ci-dessous&nbsp;!</p>



<p>______________________</p>



<p><em>Ce post est une contribution de Joachim Ganseman, consultant IT chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.</em></p>


]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/souverainete-numerique/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Digitale Soevereiniteit</title>
		<link>https://www.smalsresearch.be/digitale-soevereiniteit/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Fri, 04 Apr 2025 14:39:21 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidentiality]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[G-Cloud]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[interoperability]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[open standards]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Resilience]]></category>
		<category><![CDATA[Risk Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Society]]></category>
		<guid isPermaLink="false">/?p=22224</guid>

					<description><![CDATA[We zien vandaag fundamentele kwesties rond onafhankelijkheid, veiligheid en strategische autonomie opnieuw ter sprake komen: Digitale Soevereiniteit is hot.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible <a href="/souverainete-numerique/">en français</a>.</em></p>



<p>Digitale dienstverlening moet niet alleen kostenefficiënt zijn, maar ook robuust: het moet blijven werken als bepaalde toeleveranciers of bouwblokken het laten afweten, om welke reden dan ook. Dat is niet alleen een louter technisch vraagstuk van <a href="https://nl.wikipedia.org/wiki/Vendor_lock-in">vendor lock-in</a> of <a href="https://www.ibm.com/think/topics/multicloud">multicloud architectuur</a>. We zien fundamentele kwesties rond onafhankelijkheid, veiligheid en strategische autonomie <a href="https://foreignpolicy.com/2025/03/31/europe-digital-sovereignty-colony-trump-asml-ai-eurostack/">opnieuw ter sprake komen</a>: <em>Digitale Soevereiniteit</em> is hot.</p>



<p>De aanleiding is niet ver te zoeken: met een beleidsomslag van jewelste is de reputatie van de VS als betrouwbare handelspartner in recordtempo verdampt. Zonder aanleiding kan van de ene dag op de andere een <a href="https://www.reuters.com/world/us-aerospace-firm-maxar-disables-satellite-photos-ukraine-2025-03-07/">dienstverlening stopgezet</a>, of een <a href="https://www.reuters.com/world/us/trump-tariffs-updates-world-braces-us-announce-duties-2025-04-01/">handelstarief ingevoerd</a> worden. Wie kritische infrastructuur en IT ontwikkelt of beheert, trekt lijkbleek weg van het idee alleen al. En zo is zelfredzaamheid plots weer goud waard.</p>



<h2 class="wp-block-heading">Strategische pijlers</h2>



<p>De kern van digitale soevereiniteit ligt in het kunnen kiezen, implementeren en beheren van technologische oplossingen zonder verregaande externe afhankelijkheden. Die afhankelijkheden zitten dieper dan we vaak denken, zoals enkele jaren geleden nog gedemonstreerd in een interessant <a href="https://www.youtube.com/watch?v=Rxuf1598bjc">experiment van Gizmodo journaliste Kashmir Hill</a>. Technologische afhankelijkheid vormt altijd een risico. Om dat te minimaliseren kunnen we onder andere:</p>



<ul class="wp-block-list">
<li>Investeren in lokale en open-source technologie-ontwikkeling</li>



<li>Zelf robuuste, gedecentraliseerde infrastructuren opbouwen</li>



<li>Eigen technologische vaardigheden en capaciteiten uitbouwen</li>



<li>Voorwaarden qua interoperabiliteit, data-migratie, flexibiliteit, stopzetting, … opnemen in contractuele clausules en openbare aanbestedingen</li>



<li>&#8230;</li>
</ul>



<p>Ook bij praktische software-ontwikkeling hebben keuzes die technologische wendbaarheid bevorderen een streepje voor:</p>



<ul class="wp-block-list">
<li>Verkies open standaarden en robuuste, gestandaardiseerde APIs</li>



<li>Ontwikkel niet alleen modulair en schaalbaar maar ook cloud-agnostisch</li>



<li>Implementeer eventueel middleware die verschillende technologieën kan overbruggen</li>



<li>Besteed aandacht aan portabiliteit, cross-platform en cross-browser compatibiliteit</li>



<li>…</li>
</ul>



<p>Daarnaast is ook <a href="https://publications.jrc.ec.europa.eu/repository/handle/JRC138657">data-autonomie</a> van groot belang. Zo vereist digitale soevereiniteit dat men maximale controle over data-verzameling, -opslag, -verwerking en -bescherming behoudt. Dat kan door de data-opslag en -verwerking lokaal te organiseren, liefst met toepassing van degelijke <a href="https://en.wikipedia.org/wiki/Data_governance">data governance</a> mechanismes, of door ze bij een derde partij onder te brengen die de nodige garanties biedt en tenminste onder een <a href="https://commission.europa.eu/law/law-topic/data-protection/international-dimension-data-protection/adequacy-decisions_en">compatibele wetgeving</a> opereert.</p>



<p>Het mag gerust gezegd worden dat België het op het vlak van infrastructurele autonomie, met onder andere de <a href="https://gcloud.belgium.be">overheidscloud Gcloud</a> en <a href="https://www.belnet.be/">Belnet</a>, best goed doet.</p>



<h2 class="wp-block-heading">De rol van open-source</h2>



<p>Open-source technologieën zijn, als <em>enablers</em> van technologische onafhankelijkheid, fundamentele bouwstenen voor digitale soevereiniteit. Ze bieden volledige transparantie van code, geven de mogelijkheid tot aanpassing of eigen ontwikkeling, en ze verminderen de afhankelijkheid van buitenlandse technologiereuzen.</p>



<p>Dat heeft echter ook een kostenplaatje. Wie in eigen beheer open-source software en open standaarden wil aanwenden, moet ook zelf voorzien in alle ondersteuning, opleiding, upgrades, compatibiliteit, eventueel debuggen, etc. In ruil voor autonomie moet je een heel takenpakket mee opnemen in de marge. Dat impliceert dat je moet willen investeren in actief beheer, onderhoud en kennisopbouw. Commerciële spelers met bedrijfseigen oplossingen ontzorgen je daar meestal van.</p>



<p>“All the way” zelfvoorzienend worden is daarom meestal onhoudbaar. Een bekende case studie is die van de stad München, die vanaf 2006 ambitieus <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/document/munichs-long-history-open-source-public-administration">overschakelde naar een zelf ontwikkelde Linux-omgeving</a>, maar omwille van aanslepende compatibiliteitsproblemen en de daarmee gepaard gaande oplopende beheerskosten, in 2017 de stekker uit het programma trok en opnieuw voor een gestandaardiseerde Microsoft-omgeving koos.</p>



<h2 class="wp-block-heading">In de buurlanden</h2>



<p>Duitsland draagt het idee van digitale soevereiniteit dus al langer een warm hart toe. De Duitse <a href="https://osb-alliance.de/ueber-uns/was-ist-die-osb-alliance">Open Source Business Alliance</a> zet de term zelfs in hun slogan. De ervaring van München evolueerde naar het huidige <a href="https://opensource.muenchen.de/">Open Source Programme Office</a> van de stad. Het Duitse federale niveau moedigt technische onafhankelijkheid ook aan, met onder andere:</p>



<ul class="wp-block-list">
<li>Eigen projecten zoals <a href="https://scs.community/">Sovereign Cloud Stack</a> (lijkt momenteel <a href="https://www.sovereigncloudstack.org/">in transformatie</a> na afloop financiering),</li>



<li>Het <a href="https://www.sovereign.tech/">Sovereign Tech Fund</a>, dat financiering voorziet om kritische open-source componenten te onderhouden,</li>



<li>Het <a href="https://zendis.de/">Zentrum Digitale Souveränität</a> (ZenDis), dat overheden ondersteunt bij de afbouw van technologische afhankelijkheden.</li>
</ul>



<p>Die laatste investeert ook met succes in 2 eigen projecten:</p>



<ul class="wp-block-list">
<li>Het platform <a href="https://opencode.de/">OpenCode</a> waar overheidsdiensten hun code kunnen publiceren en delen met anderen,</li>



<li>De administratieve werkomgeving <a href="https://opendesk.eu/en/">OpenDesk</a> , die ook typische enterprise-opties omvat zoals Single Sign-on en integraties tussen meetings, chats, kalender, en email.</li>
</ul>



<p>Frankrijk zit evenmin stil. Verschillende initiatieven voor digitale soevereiniteit worden bij onze zuiderburen getrokken door <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a>, de centrale interministeriële dienst voor digitalisering. Met <a href="https://code.gouv.fr/fr/">code.gouv.fr</a> hebben zij ook hun eigen code repository. Daarnaast ontwikkelen ze zelf proactief nieuwe toepassingen in een eigen <a href="https://beta.gouv.fr/">incubator</a>. Dat resulteerde onder andere in <a href="https://lasuite.numerique.gouv.fr/en">La Suite Numérique</a>, een <em>enterprise-level</em> kantoorsuite die functionaliteiten zoals videochat, webinars, en file transfer aanbiedt, en nu wordt uitgebreid met tekstverwerkers en spreadsheets. Frankrijk zet eveneens in op een <a href="https://www.economie.gouv.fr/securite-performance-souverainete-strategie-cloud">maximaal onafhankelijke cloud-strategie</a>, en minstens zo belangrijk, werken ze aan motivatie en kennis bij hun overheidsmedewerkers via de <a href="https://code.gouv.fr/fr/bluehats/">Blue Hats community</a>. Vanuit het bedrijfsleven zet <a href="https://cnll.fr/">CNLL</a> zich in voor digitale soevereiniteit.</p>



<p>Opvallend aan zowel het Duitse <a href="https://opendesk.eu/">OpenDesk</a> als het Franse <a href="https://lasuite.numerique.gouv.fr/en">La Suite Numérique</a>, is dat beide ook beschikbaar zijn in het Engels. Zelfs in overheidscontext is dus ondertussen het bewustzijn gegroeid dat open-source initiatieven betere slaagkansen hebben als men proactief investeert in internationalisering. Nog hoopgevender is dat <a href="https://www.numerique.gouv.fr/dinum/">DINUM</a> en <a href="https://zendis.de/">ZenDis</a> concreet zijn beginnen samenwerken. Op het laatste <a href="https://fosdem.org/">FOSDEM</a> evenement, de jaarlijks weerkerende hoogmis voor open-source developers in Brussel, stonden <a href="https://fosdem.org/2025/schedule/track/government-collaboration/">overheidssamenwerkingen in de kijker</a> en presenteerden ze een <a href="https://fosdem.org/2025/schedule/event/fosdem-2025-6403-note-worthy-collaboration-co-developing-a-note-taking-application/">tesamen ontwikkelde notitie-app</a>.</p>



<p>Deze Duits-Franse tandem is een veelbelovend teken dat, als het gaat over het bevorderen van digitale soevereiniteit, de wil alleszins bestaat om Europese krachten wat te bundelen. Er is alvast bekend dat <a href="https://www.numerique.gouv.fr/espace-presse/les-premiers-succ%C3%A8s-de-la-coop%C3%A9ration-franco-allemande-en-faveur-dune-administration-num%C3%A9rique-souveraine-ouvrent-la-voie-%C3%A0-une-collaboration-trilat%C3%A9rale-avec-le-royaume-des-pays-bas-%C3%A0-travers-la-signature-dune-nouvelle-d%C3%A9claration-dintention-commune/">Nederland wil aansluiten</a> bij hun samenwerking. Daar leeft de <a href="https://ibestuur.nl/artikel/actie-nodig-om-de-digitale-soevereiniteit-van-nederland-en-europa-te-versterken/">maatschappelijke discussie</a> immers ook, tot in de Tweede Kamer, met debatten over <a href="https://ecp.nl/argumentenkaart-niet-europese-clouddiensten-overhandigd-aan-tweede-kamer/">clouddiensten</a> of <a href="https://tweakers.net/nieuws/233008/tweede-kamer-wil-unaniem-dat-sidn-nl-domeininfrastructuur-niet-naar-aws-overzet.html">DNS</a>. Het onderzoeksinstituut <a href="https://www.tno.nl/nl/digitale-soevereiniteit/">TNO</a> publiceerde er een <a href="https://publications.tno.nl/publication/34642268/o5remY/TNO-2024-R10300.pdf">lijvig rapport over digitale soevereiniteit</a>, de <a href="https://www.uu.nl/sites/default/files/Moerel%2C%20Timmers%20%282.0%29%20-%20Preadvies%20Staatsrechtconferentie%202020.pdf">universiteiten agenderen het</a>, en ook het <a href="https://dutchcloudcommunity.nl/digitale-soevereiniteit/">bedrijfsleven</a> besteedt er aandacht aan. Op <a href="https://www.binnenlandsbestuur.nl/digitaal/experts-slaan-alarm-over-soevereiniteit">alle bestuursniveaus</a> ligt digitale soevereiniteit er op tafel.</p>



<h2 class="wp-block-heading">De rol van Europa</h2>



<p>De EU heeft een evident strategisch belang bij (digitale) soevereiniteit. Centrale elementen hierin zijn de recente <a href="https://digital-markets-act.ec.europa.eu/index_en">Digital Markets Act (DMA)</a> en <a href="https://digital-strategy.ec.europa.eu/en/policies/digital-services-act-package">Digital Services Act (DSA)</a>. Beide wetgevende kaders hebben tot doel om de macht van buitenlandse technologiereuzen te beperken en het speelveld voor Europese bedrijven gelijkwaardiger en transparanter te maken. Hiermee wil Europa haar strategische autonomie versterken door duidelijke regels te stellen rondom data- en platformbeheer, waardoor Europese lidstaten minder kwetsbaar worden voor externe afhankelijkheden. De <a href="https://digital-strategy.ec.europa.eu/en/policies/cybersecurity-act">Cybersecurity Act</a> en de <a href="https://eur-lex.europa.eu/eli/dir/2022/2555/oj/">NIS2-richtlijn</a> moeten erover waken dat daarbij niet aan veiligheid en betrouwbaarheid wordt ingeboet.</p>



<p class="has-text-align-left">Ze onderneemt daarnaast <a href="https://www.europarl.europa.eu/RegData/etudes/BRIE/2020/651992/EPRS_BRI(2020)651992_EN.pdf">tal van relevante initiatieven</a>, maar die komen niet allemaal even vlot van de grond. De Europese versnippering is een oud zeer. Kleine projecten blijven vaak klein, en eens de financiering afloopt, verworden ze tot <a href="https://en.wikipedia.org/wiki/Abandonware">abandonware</a>. Zo is het onvoorspelbaar of het net gestarte <a href="https://europeanopensource.academy/">European Open Source Academy</a> het einde van haar financieringsronde in 2027 zal overleven. Grootschalige consortia kennen dan weer heel wat problemen met coördinatie en sturing. Het <a href="https://gaia-x.eu/">GAIA-X</a> project heeft zo enigszins de reputatie gekregen als een verhaal van <a href="https://blog.okfn.org/2025/02/11/open-source-policy-and-europes-digital-sovereignty-key-takeaways-from-the-eu-open-source-policy-summit/">meer memo&#8217;s dan demo&#8217;s</a>, wat maakt dat ook nieuwe projecten zoals <a href="https://openeurollm.eu/">OpenEuroLLM</a> met enige scepsis onthaald worden. De uitrol van de <a href="https://digital-strategy.ec.europa.eu/en/policies/data-spaces">Europese Data Spaces</a> in verschillende domeinen moet data-autonomie bevorderen. Voor gezondheid (EHDS) <a href="https://health.ec.europa.eu/ehealth-digital-health-and-care/european-health-data-space-regulation-ehds_en">wordt deze verplicht</a>, wat misschien voor nieuw momentum kan zorgen. Maar dat is niet genoeg om de bezorgdheden weg te nemen: het lijvige <a href="https://www.euro-stack.info/">EuroStack rapport</a> van de Bertelsmann Stiftung stelt de EU zelfs op een dienblaadje een ambitieuzere visie voor.</p>



<p>Onder de paraplu van <a href="https://interoperable-europe.ec.europa.eu/">Interoperable Europe</a> vinden we naast <a href="https://interoperable-europe.ec.europa.eu/collection/public-sector-tech-watch">Public Sector Techwatch</a> en <a href="https://interoperable-europe.ec.europa.eu/collection/govtechconnect/">GovTech Connect</a> ook <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor">OSOR</a>, het Open Source Observatory and Repository, terug. Zij monitoren ondertussen al meer dan 15 jaar het gebruik van open-source in Europese overheidsadministraties, en moedigen samenwerkingsverbanden en hergebruik aan. Met de recent gelanceerde <a href="https://interoperable-europe.ec.europa.eu/eu-oss-catalogue/solutions">Open Source Solutions Catalogue</a> moet het gemakkelijker worden voor landen om elkaars oplossingen te hergebruiken. Daarnaast publiceren ze <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/reports-and-guidelines">rapporten</a>, <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/case-studies">case studies</a>, <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/oss-repositories">nationale catalogi</a> (waarin we <a href="https://www.ict-reuse.be/">ict-reuse.be</a> terugvinden) en een <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/osor-newsletters">nieuwsbrief</a>. Overheden die zelf een <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/ospos-oss-governance">Open Source Program Office (OSPO)</a> willen oprichten om actief bij te dragen aan open-source projecten, net zoals de <a href="https://interoperable-europe.ec.europa.eu/collection/ec-ospo">EU er een heeft</a>, vinden bij hen steun. <a href="https://interoperable-europe.ec.europa.eu/collection/open-source-observatory-osor/news/dutch-digitalisation-minister-announces-ospo-creation">Nederland</a> is alvast overtuigd. Als Belgische overheden zichtbaar willen bijdragen aan digitale soevereiniteit, ligt hier nog een uitgelezen kans.</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Digitale soevereiniteit is meer dan een technische keuze. Het is een continue strategie om <em>agency </em>terug te winnen in een sterk geïnterconnecteerde digitale wereld waarvan fundamentele bouwblokken plots kunnen verschuiven. We willen niet alleen technologie consumeren, maar deze ook actief vormgeven, begrijpen en controleren. Zo beperken we externe afhankelijkheden en de risico&#8217;s die daarmee gepaard gaan. Europees denken en samenwerken biedt daarbij opportuniteiten voor synergieën.</p>



<p>Technologische autonomie vereist een gezond technologisch ecosysteem. Permanente aandacht voor menselijk kapitaal en kennisopbouw zijn een must. Om dat te doen slagen op een duurzame manier, verdienen ondersteunende initiatieven de nodige middelen:</p>



<ul class="wp-block-list">
<li>Proactief technologische alternatieven ontwikkelen, anticiperend op de vraag,</li>



<li>Participeren in kennisuitwisseling, evenementen en netwerken, met vakgenoten, kennisinstellingen, buurlanden, EU, &#8230;</li>



<li>Actief meewerken aan, of investeren in, bestaande open-source oplossingen die je zelf hergebruikt,</li>



<li>Communities uitbouwen rondom eigen projecten,</li>



<li>Investeren in aantrekkelijke vormgeving en gebruiksgemak van de eigen oplossingen,</li>



<li>Eigen oplossingen inzetbaar maken buiten de eigen muren: publiceren als open-source, <a href="https://yml.publiccode.tools">integreren in catalogi</a>, een Engelse vertaling en documentatie toevoegen,</li>



<li>Werken aan naambekendheid: websites, promotie, marketing, vakbeurzen, (social) media, &#8230;</li>



<li>&#8230;</li>
</ul>



<p>Wie interesse heeft om dit thema verder op te volgen, kan de in dit artikel vermelde organisaties en initiatieven volgen op sociale media of via hun nieuwsbrieven. Voor een <em>deep dive</em> is het bovenvermelde <a href="https://www.euro-stack.info/">EuroStack rapport</a> interessant. Om alternatieven te zoeken voor afhankelijkheden in je eigen projecten, zijn <a href="https://european-alternatives.eu/">european-alternatives.eu</a>, <a href="https://euro-stack.com/">euro-stack.com</a>, of <a href="https://alternativeto.net/">alternativeto.net</a> goede startpunten. Tot slot: digitale soevereiniteit is een <em>team effort</em>, voel je daarom vrij om andere bronnen, projecten, of interessante links te delen in de commentaren hieronder!</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Tools voor confidential computing</title>
		<link>https://www.smalsresearch.be/tools-voor-confidential-computing/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Mon, 24 Jul 2023 14:21:53 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidential computing]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[TEE]]></category>
		<category><![CDATA[Trusted Execution Environment]]></category>
		<guid isPermaLink="false">/?p=18844</guid>

					<description><![CDATA[In een vorig artikel gaven we een algemeen overzicht van TEE’s en het nut ervan. In dit artikel gaan we dieper in op hoe de belangrijkste commerciële implementaties werken.]]></description>
										<content:encoded><![CDATA[
<p><a href="/outils-pour-linformatique-confidentielle/"><em>Version en français</em></a></p>



<p>Om te voldoen aan de eisen van hun klanten die met gevoelige gegevens omgaan, of om nieuwe klanten aan te trekken, verrichten leveranciers van publieke IT-infrastructuren inspanningen om hun beveiliging te verbeteren en met name om de gegevens van hun klanten beter te beschermen.&nbsp; Microsoft, bijvoorbeeld, zegt elk jaar ongeveer een miljard dollar te investeren in de beveiliging van zijn infrastructuren <a href="#ref1">[1]</a>. Sinds halfweg 2010 investeren deze infrastructuurleveranciers in een aanbod van <em>confidential computing</em>. Voornamelijk gebaseerd op <em>Trusted Execution Environments</em> (TEE), vermindert dit in principe het vereiste vertrouwen van de klant in de infrastructuurleverancier.</p>



<p>In een <a href="/introduction-a-l-informatique-confidentielle/">vorig artikel</a> (in het Frans) gaven we een algemeen overzicht van deze TEE’s en het nut ervan. In dit artikel gaan we dieper in op hoe de belangrijkste commerciële implementaties werken. Het is echter belangrijk om in gedachten te houden dat de definities van <em>confidential computing</em> en TEE verschillen en soms onvolledig zijn. Dit kan leiden tot een vals gevoel van veiligheid, juridische onzekerheden en maakt het vergelijken moeilijk <a href="#ref2">[2]</a>. Als reactie op dit gebrek aan standaardisatie en interoperabiliteit tussen de verschillende benaderingen van <em>confidential computing</em> is het <em>Confidential Computing Consortium</em> opgericht door grote spelers in de sector, waaronder AMD, Google, Intel en Microsoft. Daarbij moeten we opmerken dat Amazon geen deel uitmaakt van dit consortium en dat zijn Nitro-systeem (zie <a href="#AWS">hier</a>) sterk afwijkt van de andere benaderingen<a href="#_ftn1" name="_ftnref1"><sup>1</sup></a>.</p>



<p>Een uitgebreidere versie van dit artikel, voorbehouden aan de klanten van Smals, is op aanvraag beschikbaar.</p>



<h1 class="wp-block-heading">Fabrikanten van microprocessors</h1>



<p>AMD en Intel zijn de twee voornaamste fabrikanten van microprocessors die noodzakelijke functionaliteiten bieden voor de <em>confidential computing</em> in grote data centers<a href="#_ftn2" name="_ftnref2"><sup>2</sup></a>. Terwijl Intels TDX en AMD’s SEV-SNP-technologieën ontwikkeld zijn om complete <em>virtual machines</em> (VM’s) te beschermen, is de SGX-technologie erg verschillend en heeft deze een kleiner <em>attack surface</em>. Figuur 1 toont de elementen die de <em>Trusted Computing Base</em> (TCB) vormen voor deze drie technologieën die we in de volgende paragrafen beschrijven.</p>



<figure class="wp-block-image aligncenter size-full"><a href="/wp-content/uploads/2023/07/Vergelijking_SEV-SNP_SGX_TDX.png"><img fetchpriority="high" decoding="async" width="994" height="445" src="/wp-content/uploads/2023/07/Vergelijking_SEV-SNP_SGX_TDX.png" alt="" class="wp-image-18846" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/07/Vergelijking_SEV-SNP_SGX_TDX.png 994w, https://www.smalsresearch.be/wp-content/uploads/2023/07/Vergelijking_SEV-SNP_SGX_TDX-300x134.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/07/Vergelijking_SEV-SNP_SGX_TDX-768x344.png 768w" sizes="(max-width: 994px) 100vw, 994px" /></a><figcaption class="wp-element-caption">Figuur 1 – Intels SGX-technologie kan worden gebruikt om een proces te isoleren, terwijl Intels TDX- en AMD’s SEV-SNP-technologieën kunnen worden gebruikt om hele virtuele machines te isoleren.</figcaption></figure>



<h2 class="wp-block-heading"><a id="AMD_SEV-SNP"></a>AMD’s SEV-SNP-technologie</h2>



<p>In 2016 introduceerde AMD de technologie <em>Secure Encrypted Virtualisation</em> (SEV) om VM’s op hardwareniveau te isoleren van de hypervisor <a href="#ref3">[3]</a>, <a href="#ref4">[4]</a>. Elke VM ontvangt zijn eigen AES-coderingssleutel voor geheugenversleuteling. De status van de microprocessorregisters van elke VM wordt ook versleuteld, waardoor de hypervisor de gegevens in de VM niet kan lezen. Later voegde AMD de technologie <em>Secure Nested Paging</em> (SNP) toe om geheugenintegriteit te beschermen en aanvallen door een schadelijke hypervisor te voorkomen (bijv. replay-aanvallen, herconfiguratie van het virtuele geheugenvertaalmechanisme, corruptie van geheugengegevens) <a href="#ref5">[5]</a>. Het fundamentele principe van SEV-SNP is dat als een VM een geheugenpagina kan lezen die voor haar is gereserveerd (en daarom is versleuteld), ze altijd de laatste waarde moet lezen die ze zelf heeft geschreven. Verder vormen in het beveiligingsmodel dat voor SNP wordt gebruikt alleen de VM van de klant en de AMD-microprocessor onderdeel van de <em>trusted base</em>. Dit omvat niet de hypervisor, BIOS, andere VM’s, enzovoort (zie Figuur 1). Tot slot stelt een SEV-SNP-optie VM’s in staat om hun virtuele geheugen op te delen in vier <em>Virtual Machine Privilege Levels</em> (VMPL’s) op een vergelijkbare manier als de beschermingsringen in de x86-architectuur.</p>



<p>AMD’s <a href="/introduction-a-l-informatique-confidentielle/#Attest">attestatiemechanisme op afstand</a> verifieert dat de hostmachine een AMD-processor is die de SEV-SNP-technologie ondersteunt en dat een VM is geïmplementeerd met SEV-SNP-bescherming. Elke AMD-processor bevat een beveiligde coprocessor die een paar dedicated sleutels genereert (“<em>Platform Endorsement Key</em> (PEK)”), zelf ondertekend door een unieke sleutel die is afgeleid van geheimen opgeslagen met behulp van eenmalig programmeerbare zekeringen in de chip zelf. Deze PEK wordt ook indirect gebruikt om een gedeeld geheim te creëren tussen het SEV-platform en de klant <a href="#ref6">[6]</a>. Wanneer de beveiligde VM door de hypervisor op het SEV-platform wordt gestart, berekent de SEV-<em>firmware</em> de meting (waarde van de cryptografische hash) van het geheugen van de VM. Deze meting kan veilig worden doorgegeven aan de klant, zodat deze kan controleren of de gedeployde VM niet is gewijzigd.</p>



<p>De SEV-SNP-technologie is beschikbaar op AMD EPYC-processors van 3<sup>e</sup> (<a href="https://www.amd.com/fr/processors/epyc-7003-series">serie 7003</a>) en 4<sup>e</sup> generatie (<a href="https://www.amd.com/fr/processors/epyc-9004-series">serie 9004</a>). Deze processors zijn verkrijgbaar bij verschillende leveranciers, waaronder Dell (‘<a href="https://www.amd.com/fr/processors/epyc-7003-series">PowerEdge</a>‘-servers), <a href="https://www.amd.com/fr/processors/epyc-7003-series">Lenovo</a> en <a href="https://www.hpe.com/us/en/solutions/amd.html">HP</a>. De prijzen variëren van enkele duizenden tot enkele tienduizenden euro’s, afhankelijk van de configuratie.</p>



<h2 class="wp-block-heading"><a id="INTEL_SGX_TDX"></a>Intels SGX- en TDX-technologieën</h2>



<p>Met Intels systeem <em>Software Guard eXtensions</em> (SGX), dat in 2015 werd geïntroduceerd, kan een software beschermde geheugengebieden definiëren voor beveiligde ‘enclaves’ die geïsoleerd zijn van andere processen die op dezelfde machine draaien (kernels van besturingssystemen, hypervisor, enz.) en waartoe randapparatuur ook rechtstreeks toegang heeft. De processor zorgt ervoor dat elke enclave zijn eigen speciale, versleutelde geheugengebied heeft en registreert elke allocatie door het besturingssysteem <a href="#ref7">[7]</a>. Een enclave wordt gegenereerd als een dynamisch gedeelde bibliotheek met behulp van standaard compilatietools. Wanneer een enclave wordt geïnitialiseerd, vraagt het besturingssysteem de processor om de toepassing te kopiëren naar geheugenpagina’s in de versleutelde beschermde ruimte. Wanneer dan de toepassing in het geheugen is geladen, berekent de processor een meting van de toepassing. Hiermee kan vervolgens de integriteit van de toepassing gecontroleerd worden met behulp van een attestatiemechanisme. In 2020 introduceerde Intel de technologie <em>Trusted Domain Extensions</em> (TDX), een ondertekende softwaremodule uitgevoerd in een nieuwe processormodus die kan worden gebruikt om virtuele machines te beschermen en cryptografisch te isoleren. Meer details over de werking en architectuur van TDX zijn te vinden in <a href="#ref8">[8]</a>.</p>



<p>Er zijn twee soorten <a href="/introduction-a-l-informatique-confidentielle/#Attest">attestatie op afstand</a> beschikbaar met SGX: <em>Enhanced Privacy ID</em> (EPID) en <em>Data Centre Attestation Primitives</em> (DCAP).&nbsp;De eerste is een attestatiemodus waarbij de Intel-attestatieserver moet worden gecontacteerd om informatie te verkrijgen over de aanvragende enclave. De tweede vereist geen contact met de Intel-attestatieserver. Tijdens het bouwen van een enclave worden er twee metingen gedaan. <code>MRENCLAVE</code> is de cryptografische hashwaarde van de virtuele geheugenlayout die aan de enclave wordt toegewezen wanneer deze wordt gestart. De andere meting, <code>MRSIGNER</code>, is de cryptografische hashwaarde van de publieke sleutel van de auteur van de toepassing die in de enclave draait <a href="#ref9">[9]</a>.</p>



<p>Hoewel SGX-technologie is verwijderd uit Intels 12<sup>e</sup> generatie Core-processors, blijft deze beschikbaar op 3<sup>e</sup> generatie Xeon-processors <a href="#ref10">[10]</a>. Xeon-processors van de 4<sup>e</sup> generatie ondersteunen TDX-technologie en zijn verkrijgbaar bij <a href="https://www.intel.com/content/www/us/en/partner/showcase/partner-directory/overview.html">Intels erkende partners en verdelers</a>.</p>



<p>We merken op dat het gebruik van SGX-technologie een grote herschrijving vereist van de bestaande toepassingen<a href="#_ftn3" name="_ftnref3"><sup>3</sup></a>. Het is noodzakelijk om de toepassing te partitioneren door te bepalen welk deel van de code toegang moet hebben tot gevoelige gegevens. Hoewel deze essentiële stap complex is, verbetert het in principe de veiligheid van de toepassing, omdat algemeen wordt aangenomen dat een kleine toepassing – in dit geval een toepassing die in de enclave draait – minder kans heeft op fouten en gemakkelijker te verifiëren is dan een grote. Communicatie tussen het beveiligde deel van de toepassing (binnen de enclave) en de rest van de toepassing (buiten de enclave) vindt plaats via aanroepen van functies die gedeclareerd moeten worden voordat de enclave wordt gelanceerd. Tenslotte kunnen toepassingen die geschreven zijn voor het SGX-platform niet gebruikt worden op andere platformen.</p>



<h1 class="wp-block-heading">Leveranciers van IT-infrastructuren</h1>



<p>Meerdere leveranciers van publieke IT-infrastructuren bieden vandaag oplossingen voor <em>confidential computing</em> gebaseerd op TEE’s. Hier beschrijven we de drie belangrijkste<a href="#_ftn4" name="_ftnref4"><sup>4</sup></a>.</p>



<h2 class="wp-block-heading"><a id="AWS"></a>AWS</h2>



<p>Amazon definieert <em>confidential computing</em> als het gebruik van gespecialiseerde hardware en bijbehorende firmware om de code en gegevens van de klant tijdens de verwerking te beschermen tegen toegang van buitenaf. Amazon vertaalt dit in twee dimensies:</p>



<ul class="wp-block-list">
<li>Bescherming tegen de beheerder van de onderliggende IT-infrastructuur, in dit geval AWS;</li>



<li>De mogelijkheid voor klanten om hun eigen workloads op te delen in meer of minder betrouwbare componenten, of om multi-agentsystemen te ontwerpen.</li>
</ul>



<p>Amazon legt de nadruk op de architectuur van het Nitro-systeem, niet op de beschikbaarheid van een bepaalde microprocessor om een TEE te leveren. Sinds april 2023 biedt AWS echter ook de mogelijkheid om EC2-instanties te maken met AMD’s SEV-SNP-technologie (zie <a href="#AMD_SEV-SNP">hier</a>).</p>



<p>Het Nitro-systeem biedt volgens AWS geen enkel mechanisme waarmee systemen of personen verbinding kunnen maken met EC2-servers, het geheugen van EC2-instanties kunnen lezen of toegang kunnen krijgen tot opgeslagen gegevens. Onderhoudswerk kan alleen worden verricht via beperkte API’s.</p>



<p>Het AWS Nitro-systeem (Figuur 2) is onderdeel van een herziening van Amazons infrastructuur voor EC2-servicevirtualisatie, inclusief het minimaliseren van de onderdelen van de hypervisor die op het moederbord draait. Het AWS Nitro-systeem is een combinatie van servers, processors, beheercomponenten en gespecialiseerde firmware die het onderliggende platform vormt voor alle Amazon EC2-instanties. Het bestaat uit drie hoofdcomponenten:</p>



<ul class="wp-block-list">
<li><strong>Specifieke Nitro Cards</strong> &#8211; Hardwareonderdelen ontworpen door AWS die zorgen voor algehele systeemcontrole en I/O-virtualisatie onafhankelijk van het moederbordvan het systeem met zijn processors en geheugen;</li>



<li><strong>Nitro-beveiligingschip</strong> &#8211; Deze is geïntegreerd in het moederbordvan de server en maakt veilig opstarten mogelijk op basis van een hardware root of trust, maakt het mogelijk om bare metal instances aan te bieden (waardoor de AWS-hypervisor overbodig wordt) en zorgt voor de bescherming van de server tegen ongeoorloofde wijzigingen in de firmware van het systeem;</li>



<li><strong>Nitro-hypervisor</strong> &#8211; Een geminimaliseerde, firmwareachtige hypervisor ontworpen om resource- en performance-isolatie te bieden.</li>
</ul>



<p>Beveiligingsoverwegingen voor dit systeem staan gedetailleerd in <a href="#ref12">[12]</a>.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="/wp-content/uploads/2023/07/AWS_Nitro_NL.png"><img decoding="async" width="300" height="262" src="/wp-content/uploads/2023/07/AWS_Nitro_NL-300x262.png" alt="" class="wp-image-18848" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS_Nitro_NL-300x262.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS_Nitro_NL-768x671.png 768w, https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS_Nitro_NL.png 907w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">Figuur 2 – Architectuur van een AWS-machine.</figcaption></figure>



<p>Nitro enclaves daarentegen zijn geïsoleerde virtuele machines die draaien op een klassieke EC2-instantie, een zogenaamde ‘<em>parent instance</em>’ (Figuur 3).</p>



<p>Volgens AWS biedt de Nitro enclave <u>geen extra beveiliging</u> ten aanzien van een AWS-operator <a href="#ref13">[13]</a>, maar kan wel worden voorkomen dat een <em>client-side administrator</em> toegang krijgt tot de inhoud van de enclave (code en gegevens).</p>



<figure class="wp-block-image aligncenter size-medium"><a href="/wp-content/uploads/2023/07/AWS-Creatie-van-enclave.png"><img decoding="async" width="300" height="268" src="/wp-content/uploads/2023/07/AWS-Creatie-van-enclave-300x268.png" alt="" class="wp-image-18849" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS-Creatie-van-enclave-300x268.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS-Creatie-van-enclave.png 582w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">Figuur 3 – Een Nitro enclave maken van een EC2 instance. Een enclave wordt gemaakt door de CPU en het geheugen van een EC2 instance, de zogenaamde parent instance, te partitioneren. Enclaves kunnen worden gemaakt met verschillende combinaties van processorcores en geheugen.</figcaption></figure>



<p>De belangrijkste beperking van Nitro enclaves is dat de toepassing die in de enclave draait geen verbinding heeft met het netwerk. Ze kan alleen communiceren met de parent instance via een point-to-point interface genaamd ‘vsock’, die wordt gedefinieerd door een context identifier en een poortnummer<a href="#_ftn5" name="_ftnref5"><sup>5</sup></a>. Een eenvoudige ‘<em>lift and shift</em>’ is daarom niet mogelijk.</p>



<p>Wanneer het is aangemaakt, kan de toepassing die in de enclave draait een asymmetrisch sleutelpaar genereren en de publieke sleutel in het certificaat laten opnemen. Hierdoor kan de <em>client-side</em> applicatie die het attest verifieert deze sleutel gebruiken om beveiligde communicatie met de enclave tot stand te brengen.</p>



<h2 class="wp-block-heading">Microsoft Azure</h2>



<p>Microsoft Azure stelt drie types <em>confidential computing</em> voor gebaseerd op TEE’s:</p>



<ul class="wp-block-list">
<li>De <strong>toepassingsenclaves</strong> zijn gebaseerd op de SGX-technologie van Intel. Zoals eerder vermeld, is het noodzakelijk om de bestaande toepassingen grondig te wijzigen om ze aan te passen. Dit vereist veel denkwerk over welke delen van de toepassing beveiligd moeten worden en hun interactie met andere delen, maar het voordeel van deze aanpak is dat slechts een beknopte hoeveelheid code vertrouwd moet worden. Het nadeel is natuurlijk de complexiteit van de implementatie, die speciale training vereist voor analisten, architecten en programmeurs;</li>



<li>De <strong>confidential virtual machines</strong> gebruiken AMD’s SEV-SNP-technologie (zie <a href="#AMD_SEV-SNP">hier</a>) en Microsoft kondigde in april 2023 aan dat ze binnenkort Intels TDX-technologie beschikbaar zou stellen (zie <a href="#INTEL_SGX_TDX">hier</a>) <a href="#ref14">[14]</a>. Azure stelt tevens een ‘<em>trusted platform module</em>’ (TPM) voor, die met name wordt gebruikt voor het attesteren van virtual machines;</li>



<li>De <strong>confidential containers</strong> geven de klant een preciezere mate van controle over de TCB dan virtuele machines. In principe maakt dit verpakkingsmodel het mogelijk om bestaande containers in een SGX enclave te draaien zonder dat de software aangepast of opnieuw gecompileerd hoeft te worden (“<em>lift and shift</em>”).</li>
</ul>



<p>De optie om meerdere threads parallel te laten draaien (“<em>hyper threading</em>”-technologie) binnen dezelfde processor is uitgeschakeld op alle SGX instances. Dit voorkomt aanvallen die leiden tot datalekken tussen toepassingen die dezelfde processor delen.</p>



<h2 class="wp-block-heading">Google</h2>



<p>Google stelt verschillende manieren voor om <em>confidential computing</em> op zijn infrastructuur te implementeren:</p>



<ul class="wp-block-list">
<li><strong>Confidential virtual machines</strong> maken gebruik van AMD’s technologie;</li>



<li><strong>Confidential Kubernetes nodes</strong> zijn ook gebaseerd op AMD’s SEV-technologie. De Kubernetes engine van Google kan het gebruik van confidential virtual machines voor alle Kubernetes nodes afdwingen.</li>
</ul>



<p>Terwijl alle confidential virtual machines virtuele TPM’s bevatten die de integriteit van een virtuele machine valideren bij een gemeten opstart, bieden <em>confidential virtual machines</em> met SEV-SNP-technologie ook hardware cryptografisch ondertekende attestrapporten. SEV-SNP-technologie is echter nog niet algemeen beschikbaar op de infrastructuur van Google.</p>



<h2 class="wp-block-heading">Praktische limiet van attesten</h2>



<p>Zoals uitgelegd in ons vorige <a href="/introduction-a-l-informatique-confidentielle/">artikel</a>, is een belangrijk punt bij het gebruik van TEE’s het verkrijgen van een garantie dat de software die draait op de gehuurde infrastructuur echt de software is die de klant verwacht en dat de gegevens die hij verwerkt niet kunnen worden gelezen door andere software. Deze garantie, een attest genoemd en verkregen via een betrouwbaar mechanisme, moet volledige, recente en semantisch expliciete informatie bevatten <a href="#ref15">[15]</a>.</p>



<p>Ervan uitgaande dat we de fysieke veiligheid van de microprocessor of gespecialiseerde chip vertrouwen, dat bekende aanvallen zijn afgeweerd en dat de enclavecode niet kwetsbaar is voor side channel attacks, hoe kunnen we er dan zeker van zijn dat de output van een <em>enclave</em> betrouwbaar is?</p>



<p>Er moet voor gezorgd worden dat:</p>



<ul class="wp-block-list">
<li><strong>De binary file die in de enclave wordt uitgevoerd, gebouwd is met de verwachte code</strong>. Hiervoor kan de klant zijn toepassing compileren op een vertrouwde machine (bijvoorbeeld een machine die hij bezit) en vervolgens de binary veilig kopiëren naar het confidential IT-platform. Een andere methode is om een <em>reproducible build system</em><a href="#_ftn6"><sup>6</sup></a> te gebruiken;</li>



<li><strong>De binary file die wordt uitgevoerd overeenkomt met het verwachte binary.</strong> Een attestsysteem gebruikt cryptografische sleutels afgeleid van vaste geheimen in de vertrouwde microprocessor om een bewijs te ondertekenen dat de binary zich in een bepaalde toestand bevindt op echte hardware (geen simulatie). Het bewijs bevat een meting (cryptografische hashwaarde) van de binary;</li>



<li><strong>De staat van de toepassing bij het starten</strong> is de verwachte staat: het meten van het uitvoerbare deel van de binary is niet voldoende om het toekomstige gedrag te voorspellen;</li>



<li><strong>Het attest is ondertekend door een vertrouwde entiteit</strong>, in principe de fabrikant van de microprocessor of de beveiligde chip.</li>
</ul>



<p>In de bestudeerde oplossingen, met uitzondering van SGX enclaves, wordt het attest echter ofwel ondertekend door de leverancier van de infrastructuur (en niet door de hardwarefabrikant), ofwel is het niet mogelijk om de meting van de beveiligde software te verifiëren omdat deze <em>proprietary libraries</em> bevat. Het risico bestaat dus dat de gecertificeerde entiteit liegt over haar status.</p>



<h1 class="wp-block-heading">Conclusie</h1>



<p>Tien jaar na de onthullingen van Edward Snowden in juni 2013, betreffende de Amerikaanse surveillancemethoden, moeten we ervan uitgaan dat informatie bemachtigd kan worden als deze voldoende waardevol is. De indruk dat nationale IT-infrastructuren veiliger zijn, kan daarom misleidend zijn<a href="#_ftn7" name="_ftnref6"><sup>7</sup></a>. Er bestaat namelijk een spanningsveld tussen het verlangen naar onafhankelijkheid van de IT-diensten van de Staat en het vermogen om het niveau van middelen (hardware, personeel, R&amp;D), redundantie en beveiliging te evenaren dat aangeboden wordt door de dominante bedrijven in de sector<a href="#_ftn8" name="_ftnref7"><sup>8</sup></a>. <em>Confidential computing</em> gebaseerd op TEE’s brengt een nieuw argument ten voordele van publieke IT-infrastructuren.</p>



<p>Als ze correct worden geïmplementeerd, en alle andere zaken onveranderd blijven, kunnen TEE’s op basis van fysieke componenten het niveau van gegevensbescherming binnen een IT-infrastructuur aanzienlijk verhogen, met name ten opzichte van derden en in het bijzonder cybercriminelen<a href="#_ftn9" name="_ftnref8"><sup>9</sup></a>. Ze maken het in feite mogelijk om de meeste logische aanvallen te vermijden die conventionele systemen treffen, dankzij verbeterde procesisolatie, geheugenversleuteling via de hardwarelaag, veilig opstarten, controlemechanismen voor firmware-updates en, in het algemeen, een vermindering van de omvang van de trusted computing base. Met andere woorden, de veiligheidsmaatregelen opgenomen in de TEE’s maken een aanval aanzienlijk complexer en duurder.</p>



<p>Het aanbod van op TEE-gebaseerde <em>confidential computing</em> varieert tussen leveranciers, afhankelijk van het type abstractie dat wordt aangeboden: software library, container, virtuele machine. De keuze van deze opties leidt tot verschillen in de omvang van de trusted code base (en dus het oppervlak dat blootgesteld wordt aan aanvallen), maar ook in de inspanning die nodig is om bestaande toepassingen aan te passen aan deze nieuwe omgevingen.</p>



<p>Bij het kiezen van een op TEE-gebaseerde oplossing voor <em>confidential computing</em> moeten daarom de volgende punten worden gecontroleerd:</p>



<ul class="wp-block-list">
<li>Bescherming moet verankerd zijn in de fysieke laag van het systeem en elk apparaat moet een unieke identiteit hebben;</li>



<li>Het attestmechanisme moet het mogelijk maken om de inhoud<a href="#_ftn10" name="_ftnref9"><sup>10</sup></a>&nbsp;te verifiëren van de TEE op onafhankelijke wijze van de infrastructuurleverancier<a href="#_ftn11" name="_ftnref10"><sup>11</sup></a>;</li>



<li>Het attest moet ten minste ondertekend worden door de fabrikant van de fysieke component en niet alleen door de infrastructuurleverancier<a href="#_ftn11" name="_ftnref11"><sup>12</sup></a>;</li>



<li>De dienst stelt ten minste in staat om eigen crypotografische sleutels te importeren in een toegewijde hardware-beveiligingsmodule (HSM), en in het beste geval om een eigen HSM te gebruiken;</li>



<li>Het moet mogelijk zijn om de source code van de critical libraries die in de trust base zijn opgenomen door de infrastructuurleverancier te controleren op de goede werking van de klanttoepassing;</li>



<li>De infrastructuurleverancier moet de klant een dienst ter beschikking stellen waarmee de verschillende software dependencies, compilatieomgevingen en binaries die voor de TEE worden gebruikt, kunnen worden getraceerd.</li>
</ul>



<p>Tot slot is de gegevensbescherming aangeboden door <em>confidential computing</em> tijdens gebruik slechts één van de vele technische aspecten die in overweging moeten worden genomen met betrekking tot de vertrouwelijkheid van gevoelige gegevens (om nog maar te zwijgen van de juridische, economische en politieke aspecten). Net zoals het beste slot op de voordeur van een huis het probleem van een wijd openstaande achterdeur niet oplost, gaat het gebruik van <em>confidential computing</em> ervan uit dat gegevens in rust en in transit effectief worden beschermd, maar vereist het ook specifieke training voor de mensen die verantwoordelijk zijn voor het aanpassen (in meer of mindere mate afhankelijk van het gekozen type <em>confidential computing</em>) en migreren van bestaande toepassingen, in het bijzonder analisten, architecten en programmeurs.</p>



<h1 class="wp-block-heading">Bibliografie</h1>



<p><a id="ref1"></a>[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A. Linn, ‘Securing the cloud | Microsoft Story Labs’, <em>Securing the cloud | Microsoft Story Labs</em>, 2017. <a href="https://news.microsoft.com/stories/cloud-security">http://news.microsoft.com/stories/cloud-security</a> (geraadpleegd 6 juni 2023).</p>



<p><a id="ref2"></a>[2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M. U. Sardar en C. Fetzer, ‘Confidential computing and related technologies: a critical review’, <em>Cybersecurity</em>, vol. 6, nr. 1, p. 10, mei 2023, doi: <a href="https://doi.org/10.1186/s42400-023-00144-1">10.1186/s42400-023-00144-1</a>.</p>



<p><a id="ref3"></a>[3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Kaplan, ‘AMD x86 Memory Encryption Technologies’, augustus 2016. Geraadpleegd: 11 mei 2023. [Online]. Beschikbaar op: <a href="https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/kaplan">https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/kaplan</a></p>



<p><a id="ref4"></a>[4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Kaplan, J. Powell, en T. Woller, ‘AMD Memory Encryption’, White Paper, okt. 2021. Geraadpleegd: 1 mei 2023. [Online]. Beschikbaar op: <a href="https://www.amd.com/system/files/TechDocs/memory-encryption-white-paper.pdf">https://www.amd.com/system/files/TechDocs/memory-encryption-white-paper.pdf</a></p>



<p><a id="ref5"></a>[5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘AMD SEV-SNP: Strengthening VM Isolation with Integrity Protection and More’, AMD, jan. 2020.</p>



<p><a id="ref6"></a>[6]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘Secure Encrypted Virtualisation API Version 0.24’, Specification, apr. 2020. [Online]. Beschikbaar op: <a href="https://www.amd.com/system/files/TechDocs/55766_SEV-KM_API_Specification.pdf">https://www.amd.com/system/files/TechDocs/55766_SEV-KM_API_Specification.pdf</a></p>



<p><a id="ref7"></a>[7]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Victor Costan en Srinivas Devadas, ‘Intel SGX Explained’. Cryptology ePrint Archive, 2016. [Online]. Beschikbaar op: <a href="https://eprint.iacr.org/2016/086">https://eprint.iacr.org/2016/086</a></p>



<p><a id="ref8"></a>[8]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P.-C. Cheng <em>e.a.</em>, ‘Intel TDX Demystified: A Top-Down Approach’. arXiv, 27 maart 2023. Geraadpleegd: 23 mei 2023. [Online]. Beschikbaar op: <a href="https://arxiv.org/abs/2303.15540">http://arxiv.org/abs/2303.15540</a></p>



<p><a id="ref9"></a>[9]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘Intel 64 and IA-32 Architectures Software Developer’s Manual, Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4’. Intel Corporation, maart 2023. [Online]. Beschikbaar op: <a href="https://cdrdv2.intel.com/v1/dl/getContent/671200">https://cdrdv2.intel.com/v1/dl/getContent/671200</a></p>



<p><a id="ref10"></a>[10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A. Rao, ‘Rising to the Challenge — Data Security with Intel Confidential Computing’, 20 januari 2022. <a href="https://community.intel.com/t5/Blogs/Products-and-Solutions/Security/Rising-to-the-Challenge-Data-Security-with-Intel-Confidential/post/1353141">https://community.intel.com/t5/Blogs/Products-and-Solutions/Security/Rising-to-the-Challenge-Data-Security-with-Intel-Confidential/post/1353141</a> (geraadpleegd 17 mei 2023).</p>



<p><a id="ref11"></a>[11]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G. Steer, ‘Finance’s big tech problem’, <em>Financial Times</em>, 6 juli 2022. Geraadpleegd: 10 juli 2023. [Online]. Beschikbaar op: <a href="https://www.ft.com/content/41f400b6-f83f-4fa1-8dac-731acddcf8f2">https://www.ft.com/content/41f400b6-f83f-4fa1-8dac-731acddcf8f2</a></p>



<p><a id="ref12"></a>[12]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘The Security Design of the AWS Nitro System &#8211; AWS Whitepaper’. AWS, 18 november 2022. [Online]. Beschikbaar op: <a href="https://docs.aws.amazon.com/fr_fr/whitepapers/latest/security-design-of-aws-nitro-system/security-design-of-aws-nitro-system.html">https://docs.aws.amazon.com/fr_fr/whitepapers/latest/security-design-of-aws-nitro-system/security-design-of-aws-nitro-system.html</a></p>



<p><a id="ref13"></a>[13]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘Confidential computing: an AWS perspective | AWS Security Blog’, 24 augustus 2021. <a href="https://aws.amazon.com/blogs/security/confidential-computing-an-aws-perspective/">https://aws.amazon.com/blogs/security/confidential-computing-an-aws-perspective/</a> (geraadpleegd 18 april 2023).</p>



<p><a id="ref14"></a>[14]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M. McReynolds, ‘Preview: Introducing DCesv5 and ECesv5-series Confidential VMs with Intel TDX’, 24 april 2023. <a href="https://techcommunity.microsoft.com/t5/azure-confidential-computing/preview-introducing-dcesv5-and-ecesv5-series-confidential-vms/ba-p/3800718">https://techcommunity.microsoft.com/t5/azure-confidential-computing/preview-introducing-dcesv5-and-ecesv5-series-confidential-vms/ba-p/3800718</a> (geraadpleegd 16 mei 2023).</p>



<p><a id="ref15"></a>[15]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G. Coker <em>e.a.</em>, ‘Principles of remote attestation’, <em>Int. J. Inf. Secur.</em>, vol. 10, nr. 2, pp. 63-81, jun. 2011, doi: <a href="https://doi.org/10.1007/s10207-011-0124-7">10.1007/s10207-011-0124-7</a>.</p>



<p><a id="ref16"></a>[16]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘Nix &amp; NixOS | Reproducible builds and deployments’. <a href="https://nixos.org/">https://nixos.org/</a> (geraadpleegd 6 juni 2023).</p>



<p><a id="ref17"></a>[17]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R. Gallagher, ‘The Inside Story of How British Spies Hacked Belgium’s Largest Telco’, <em>The Intercept</em>, 13 december 2014. <a href="https://theintercept.com/2014/12/13/belgacom-hack-gchq-inside-story/">https://theintercept.com/2014/12/13/belgacom-hack-gchq-inside-story/</a> (geraadpleegd 8 juni 2023).</p>



<p><a id="ref18"></a>[18]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R. Gallagher, ‘How U.K. Spies Hacked a European Ally and Got Away With It’, <em>The Intercept</em>, 17 februari 2018. <a href="https://theintercept.com/2018/02/17/gchq-belgacom-investigation-europe-hack/">https://theintercept.com/2018/02/17/gchq-belgacom-investigation-europe-hack/</a> (geraadpleegd 8 juni 2023).</p>



<p><a id="ref19"></a>[19]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C. Zhao, ‘SolarWinds, Probably Hacked by Russia, Serves White House, Pentagon, NASA’, <em>Newsweek</em>, 14 december 2020. Geraadpleegd: 9 januari 2023. [Online]. Beschikbaar op: <a href="https://www.newsweek.com/solar-winds-probably-hacked-russia-serves-white-house-pentagon-nasa-1554447">https://www.newsweek.com/solar-winds-probably-hacked-russia-serves-white-house-pentagon-nasa-1554447</a></p>



<p><a id="ref20"></a>[20]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R. Koppel en C. Kuziemsky, ‘Healthcare Data Are Remarkably Vulnerable to Hacking: Connected Healthcare Delivery Increases the Risks’, <em>Stud. Health Technol. Inf.</em>, vol. 257, pp. 218-222, 2019.</p>



<h1 class="wp-block-heading">Noten</h1>



<p><a href="#_ftnref1" name="_ftn1"><sup>1</sup></a>&nbsp; &nbsp;Bijvoorbeeld: de term “enclave” heeft een compleet andere betekenis bij Amazon en Intel. Waar “<em>Nitro Enclaves</em>” volledig virtuele machines zijn, zijn de “<em>SGX Enclaves</em>” bibliotheken die bepaalde API’s beschikbaar stellen.</p>



<p><a href="#_ftnref2" name="_ftn2"><sup>2</sup></a>&nbsp; &nbsp;We moeten opmerken dat NVIDIA onlangs een grafische processor heeft aangeboden (A100 Tensor Core met de technologie <em>Ampere Protected Memory</em> (APM)) die een vertrouwelijke uitvoeringsmodus introduceert in de grafische processor. Deze maakt het mogelijk om datasets te gebruiken en zo modellen voor machine learning op een vertrouwelijke manier te trainen en in te zetten, met name op een publieke IT-infrastructuur. Deze processors zijn beschikbaar op de Azure-cataloog van Microsoft.</p>



<p><a href="#_ftnref3" name="_ftn3"><sup>3</sup></a>&nbsp; &nbsp;Dit is niet het geval met TDX, die een hele virtuele machine kan beschermen.</p>



<p><a href="#_ftnref4" name="_ftn4"><sup>4</sup></a>&nbsp; &nbsp;Volgens de Financial Times waren de drie belangrijkste leveranciers van IT-infrastructuur in 2021 Amazon, Microsoft en Google <a href="#ref11">[11]</a>.</p>



<p><a href="#_ftnref5" name="_ftn5"><sup>5</sup></a>&nbsp; &nbsp;Deze ‘vsock’ gebruikt dezelfde API als POSIX ‘<em>sockets</em>’.</p>



<p><a href="#_ftnref6" name="_ftn6"><sup>6</sup></a>&nbsp; &nbsp;Bijvoorbeeld Nix&nbsp;<a href="#ref16">[16]</a>.</p>



<p><a href="#_ftnref7" name="_ftn6"><sup>7</sup></a>&nbsp; &nbsp;In 2014 kwamen we te weten dat GCHQ, de Britse surveillanceagentschap, een gevoelig systeem van Belgacom had gehackt <a href="#ref17">[17]</a>, <a href="#ref18">[18]</a>.</p>



<p><a href="#_ftnref8" name="_ftn7"><sup>8</sup></a>&nbsp; &nbsp;Cybercriminele groepen aarzelen niet langer om de veiligheid van IT-services te ondermijnen door nieuwe soorten aanvallen uit te zetten. Het voorbeeld van hacking van SolarWind is in dit opzicht symptomatisch <a href="#ref19">[19]</a>. Een nationaal onafhankelijke, maar onvoldoende beveiligde dienst zou een single point of failure vormen die een kritiek risico inhoudt.</p>



<p><a href="#_ftnref9" name="_ftn8"><sup>9</sup></a>&nbsp; &nbsp;“Gezondheidsgegevens zijn aantrekkelijk voor cybercriminelen omdat ze financiële en persoonlijke gegevens bevatten, die gebruikt kunnen worden voor chantage en bovenal ideaal zijn voor frauduleuze facturering” <a href="#ref20">[20]</a>.</p>



<p><a href="#_ftnref10" name="_ftn9"><sup>10</sup></a>&nbsp; &nbsp;Deze inhoud omvat, in het geval van confidential virtual machines, ook het besturingssysteem dat een minimale grootte moet hebben.</p>



<p><a href="#_ftnref11" name="_ftn10"><sup>11</sup></a>&nbsp;Als de infrastructuurleverancier gedeeltelijk de inhoud controleert van de confidential virtual machine of de confidential container en dat de klant geen mechanisme heeft om dit te verifiëren, dan blijft het vertrouwen in de leverancier ongeschonden.</p>



<p><a href="#_ftnref12" name="_ftn11"><sup>12</sup></a>&nbsp;Indien de infrastructuurleverancier het attest ondertekent, dan blijft het vertrouwen in deze leverancier totaal.</p>



<p>_________________________<br><em>Dit is een ingezonden bijdrage van Fabien A. P. Petitcolas, IT-beveiligingsspecialist bij Smals Research. Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Outils pour l’informatique confidentielle</title>
		<link>https://www.smalsresearch.be/outils-pour-linformatique-confidentielle/</link>
					<comments>https://www.smalsresearch.be/outils-pour-linformatique-confidentielle/#comments</comments>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Mon, 24 Jul 2023 08:44:18 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidential computing]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[TEE]]></category>
		<category><![CDATA[Trusted Execution Environment]]></category>
		<guid isPermaLink="false">/?p=18819</guid>

					<description><![CDATA[Dans un article précédent, nous avons présenté de manière générale ce qu’étaient les TEE et leur utilité. Dans cet article nous regardons plus en détail le fonctionnement des principales mises en œuvre commerciales.]]></description>
										<content:encoded><![CDATA[
<p><a href="/tools-voor-confidential-computing/"><em>Nederlandstalige versie</em></a></p>



<p>Pour répondre à la demande de leurs clients traitant des données sensibles ou attirer de nouveaux clients, les fournisseurs d’infrastructures informatiques publiques mettent d’importants moyens en œuvre afin d’améliorer leur sécurité et notamment de mieux protéger les données de leurs clients. Microsoft, par exemple, déclare investir environ un milliard de dollars chaque année dans la sécurité de ses infrastructures <a href="#ref1">[1]</a>. Depuis le milieu des années 2010, ces fournisseurs d’infrastructures investissent notamment dans une offre d’informatique confidentielle. Principalement basée sur des environnements d’exécution de confiance («&nbsp;<em>Trusted Execution Environments (TEE)</em>&nbsp;»), celle-ci permet en principe de réduire la confiance accordée par le client au fournisseur d’infrastructure.</p>



<p>Dans un <a href="/introduction-a-l-informatique-confidentielle/" target="_blank" rel="noopener">article précédent</a>, nous avons présenté de manière générale ce qu’étaient ces TEE et leur utilité. Dans cet article nous regardons plus en détail le fonctionnement des principales mises en œuvre commerciales. Cependant, il convient de garder à l’esprit que les définitions d’informatique confidentielle et de TEE diffèrent et sont parfois incomplètes. Cela peut conduire à un faux sens de sécurité, à des incertitudes légales et à rendre les comparaisons difficiles <a href="#ref2">[2]</a>. Afin de répondre à ce manque de standardisation et d’interopérabilité entre les différentes approches d’informatique confidentielle, le «&nbsp;<em>Confidential Computing Consortium</em>&nbsp;» a été créé par des acteurs importants du secteur, dont AMD, Google, Intel, et Microsoft. Il est à noter qu’Amazon ne fait pas partie de ce regroupement et que son système Nitro (voir <a href="#AWS">ici</a>) est très différent des autres approches<a href="#_ftn1" name="_ftnref1"><sup>1</sup></a>.</p>



<p>Une version plus approfondie de cet article, réservée aux clients de Smals, est disponible sur demande.</p>



<h1 class="wp-block-heading">Fabricants de microprocesseurs</h1>



<p>AMD et Intel sont les deux principaux fabricants de microprocesseurs offrant des fonctionnalités nécessaires à l’informatique confidentielle dans de larges centres informatiques<a href="#_ftn2" name="_ftnref2"><sup>2</sup></a>. Alors que les techniques TDX d’Intel et SEV-SNP d’AMD ont pour but de protéger des machines virtuelles (VM) entières, la techniques SGX est très différente et sa surface d’exposition aux attaques plus faible. La Figure 1 montre les éléments faisant partie de la base informatique de confiance (« <em>Trusted Computing Base (TCB)</em> ») pour ces trois techniques que nous décrivons dans les paragraphes suivants.</p>



<figure class="wp-block-image aligncenter size-full"><a href="/wp-content/uploads/2023/07/Comparaison_SEV-SNP_SGX_TDX.png"><img loading="lazy" decoding="async" width="994" height="446" src="/wp-content/uploads/2023/07/Comparaison_SEV-SNP_SGX_TDX.png" alt="" class="wp-image-18822" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/07/Comparaison_SEV-SNP_SGX_TDX.png 994w, https://www.smalsresearch.be/wp-content/uploads/2023/07/Comparaison_SEV-SNP_SGX_TDX-300x135.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/07/Comparaison_SEV-SNP_SGX_TDX-768x345.png 768w" sizes="auto, (max-width: 994px) 100vw, 994px" /></a><figcaption class="wp-element-caption">Figure 1 – La technique SGX d’Intel permet d’isoler un processus, tandis que les techniques TDX d’Intel et SEV-SNP d’AMD permettent l’isolation de machines virtuelles entières.</figcaption></figure>



<h2 class="wp-block-heading"><a id="AMD_SEV-SNP"></a>Technique SEV-SNP d’AMD</h2>



<p>En 2016, AMD a introduit la technique de virtualisation sécurisée par chiffrement (« <em>Secure Encrypted Virtualisation (SEV)</em>&nbsp;») afin d’isoler les VM de l’hyperviseur au niveau matériel&nbsp;<a href="#ref3">[3]</a>, <a href="#ref4">[4]</a>. Chaque VM reçoit sa propre clé de chiffrement AES pour le chiffrement de la mémoire. L’état des registres du microprocesseur de chaque VM est également chiffré, empêchant l’hyperviseur de lire les données contenues dans la VM. Par la suite, AMD a ajouté une technique de pagination imbriquée sécurisée (« <em>Secure Nested Paging (SNP)</em>&nbsp;») offrant une protection de l’intégrité de la mémoire, et permettant d’empêcher les attaques d’un hyperviseur malicieux (par ex. attaques par rejeu, reconfiguration du mécanisme de traduction de mémoire virtuelle, corruption des données mémoires)&nbsp;<a href="#ref5">[5]</a>. Le principe fondamental de SEV-SNP est que si une VM est en mesure de lire une page mémoire lui étant réservée (et donc chiffrée), alors elle doit toujours lire la dernière valeur qu’elle a elle-même écrite. Par ailleurs dans le modèle de sécurité utilisé pour SNP, seule la VM du client et le microprocesseur AMD font partie de la base de confiance. N’en font donc pas partie l’hyperviseur, le BIOS, les autres VM, etc. (voir Figure 1). Enfin, une option de SEV-SNP permet aux VM de diviser, d’une manière similaire aux anneaux de protection dans l’architecture x86, leur mémoire virtuelle en quatre niveaux de privilèges («&nbsp;<em>Virtual Machine Privilege Levels (VMPL)</em>&nbsp;»).</p>



<p>Le mécanisme d’<a href="/introduction-a-l-informatique-confidentielle/#Attestation" target="_blank" rel="noopener">attestation à distance</a> d’AMD, permet de vérifier que la machine hôte est bien un processeur AMD qui prend en charge la technique SEV-SNP et qu’une VM a bien été déployée avec la protection SEV-SNP. Chaque processeur AMD, contient un coprocesseur sécurisé qui permet de générer une paire de clés dédiées (« <em>Platform Endorsement Key (PEK)</em>&nbsp;»), elle-même signée par une clé unique dérivée de secrets enregistrés grâce à des fusibles dans la puce elle-même. Cette PEK est également indirectement utilisée pour établir un secret partagé entre la plate-forme SEV et le client&nbsp;<a href="#ref6">[6]</a>. Au moment du lancement par l’hyperviseur de la VM sécurisée sur la plate-forme SEV, le micrologiciel (« <em>firmware</em>&nbsp;») SEV calcule la mesure (valeur du hachage cryptographique) de la mémoire de la VM. Cette mesure peut être communiquée de manière sécurisée au client afin qu’il vérifie que la VM déployée n’a pas été altérée.</p>



<p>La technique SEV-SNP est disponible sur les processeurs AMD EPYC de 3<sup>e</sup> génération (<a href="https://www.amd.com/fr/processors/epyc-7003-series" target="_blank" rel="noopener">série 7003</a>) et 4<sup>e</sup> génération (<a href="https://www.amd.com/fr/processors/epyc-9004-series" target="_blank" rel="noopener">série 9004</a>). On peut trouver ces processeurs chez différents fournisseurs comme Dell&nbsp;(serveurs «&nbsp;<a href="https://www.dell.com/fr-be/shop/serveurs-dell-poweredge/sr/servers/amd?appliedRefinements=34947" target="_blank" rel="noopener">PowerEdge</a>&nbsp;»), <a href="https://www.lenovo.com/be/fr/data-center/alliance/amd/" target="_blank" rel="noopener">Lenovo</a> ou <a href="https://www.hpe.com/us/en/solutions/amd.html" target="_blank" rel="noopener">HP</a>. Les prix varient de quelques milliers à plusieurs dizaines de milliers d’euros en fonction de la configuration.</p>



<h2 class="wp-block-heading"><a id="INTEL_SGX_TDX"></a>Technique SGX et TDX d’Intel</h2>



<p>Introduit en 2015, le système «&nbsp;<em>Software Guard eXtensions (SGX)</em>&nbsp;» d’Intel permet à un logiciel de définir des zones de mémoire protégées pour des «&nbsp;enclaves&nbsp;» sécurisées isolées des autres processus fonctionnant sur la même machine (noyaux du système d’exploitation, hyperviseur, etc.) ainsi que des accès directs par des périphériques. Le processeur s’assure que chaque enclave a sa zone mémoire dédiée et chiffrée, enregistrant chaque allocation par le système d’exploitation&nbsp;<a href="#ref7">[7]</a>. Une enclave est générée en tant que bibliothèque partagée dynamiquement à l’aide d’outils de compilation standards. Lors de l’initialisation d’une enclave, le système d’exploitation demande au processeur de copier l’application dans des pages mémoire de la zone protégée chiffrée. Lors de ce chargement en mémoire, le processeur calcule une mesure de l’application. Cela permet par la suite de vérifier l’intégrité de l’application par un mécanisme d’attestation. Intel a introduit en 2020, la technique « <em>Trusted Domain Extensions (TDX)</em>,&nbsp;» qui est un module logiciel signé, exécuté dans un nouveau mode du processeur et qui permet de protéger et d’isoler cryptographiquement des machines virtuelles. Plus de détails sur le fonctionnement et l’architecture de TDX peuvent être trouvés dans&nbsp;<a href="#ref8">[8]</a>.</p>



<p>Deux types d’<a href="/introduction-a-l-informatique-confidentielle/#Attestation" target="_blank" rel="noopener">attestation à distance</a> sont disponibles avec SGX «&nbsp;<em>Enhanced Privacy ID (EPID)</em>&nbsp;» et «&nbsp;<em>Data Centre Attestation Primitives (DCAP)</em>.&nbsp;» Le premier est un mode d’attestation dans lequel le serveur d’attestation d’Intel doit être contacté pour obtenir des informations sur l’enclave requérante. Le second ne nécessite pas de contacter le serveur d’attestation d’Intel. Durant le processus de construction d’une enclave, deux mesures sont faites. <code>MRENCLAVE</code> est la valeur de hachage cryptographique de la disposition de la mémoire virtuelle assignée à l’enclave au moment de son lancement. L’autre mesure, <code>MRSIGNER</code>, est la valeur de hachage cryptographique de la clé publique de l’auteur de l’application fonctionnant dans l’enclave&nbsp;<a href="#ref9">[9]</a>.</p>



<p>Alors que la technique SGX a été retirée de la 12<sup>e</sup> génération des processeurs Core d’Intel, elle reste disponible sur la 3<sup>e</sup> génération de processeurs Xeon&nbsp;<a href="#ref10">[10]</a>. Les processeurs Xeon de 4<sup>e</sup> génération prennent en charge la technique TDX et sont disponibles chez les <a href="https://www.intel.com/content/www/us/en/partner/showcase/partner-directory/overview.html" target="_blank" rel="noopener">partenaires et distributeurs agréés d’Intel</a>.</p>



<p>Notons que l’utilisation de la technique SGX demande une réécriture importante des applications existantes<a href="#_ftn3" name="_ftnref3"><sup>3</sup></a>. Il est en effet nécessaire de partitionner l’application en identifiant quelle partie du code doit pouvoir avoir accès aux données sensibles. Bien que cette étape essentielle soit complexe, elle permet en principe d’améliorer la sécurité de l’application étant donné qu’il est généralement accepté qu’une application de petite taille – en l’occurrence celle fonctionnant dans l’enclave – a moins de chances d’avoir des défauts tout en étant plus facilement vérifiable qu’une application de grande taille. La communication entre la partie sécurisée de l’application (dans l’enclave) et le reste de l’application (en dehors de l’enclave) se fait via des appels à des fonctions devant être déclarées avant le lancement de l’enclave. Enfin, les applications écrites pour la plate-forme SGX ne peuvent pas être utilisées sur d’autres plates-formes.</p>



<h1 class="wp-block-heading">Fournisseurs d’infrastructures informatique</h1>



<p>Plusieurs fournisseurs d’infrastructures informatiques publiques proposent aujourd’hui des solutions d’informatique confidentielle basées sur les TEE. Nous décrivons ici les trois principaux<a href="#_ftn4" name="_ftnref4"><sup>4</sup></a>.</p>



<h2 class="wp-block-heading"><a id="AWS"></a>AWS</h2>



<p>Amazon définit l’informatique confidentielle comme l’utilisation de matériel spécialisé et de micrologiciels associés pour protéger le code et les données du client pendant le traitement contre tout accès extérieur. Amazon traduit cela selon deux dimensions&nbsp;:</p>



<ul class="wp-block-list">
<li>La protection vis-à-vis de de l’opérateur de l’infrastructure informatique sous-jacente, en l’occurrence AWS&nbsp;;</li>



<li>La capacité des clients à diviser leurs propres charges de travail en composants plus ou moins fiables, ou à concevoir des systèmes multi-agents.</li>
</ul>



<p>L’accent est mis par Amazon sur l’architecture du système Nitro, plutôt que sur la disponibilité d’un microprocesseur particulier en charge de fournir un TEE. Cependant, depuis avril 2023, AWS offre aussi la possibilité de créer des instances EC2 avec la technique SEV-SNP d’AMD (voir <a href="#AMD_SEV-SNP">ici</a>).</p>



<p>Dans sa conception, selon AWS, le système Nitro n’offre aucun mécanisme permettant à un système ou à une personne de se connecter aux serveurs EC2, de lire la mémoire des instances EC2 ou d’accéder aux données stockées. Les travaux de maintenance ne peuvent se faire qu’à travers des API limitées.</p>



<p>Le système AWS Nitro (Figure 2) s’inscrit dans une refonte de l’infrastructure de virtualisation du service EC2 d’Amazon, notamment réduire au maximum les parties de l’hyperviseur fonctionnant sur la carte mère. Le système AWS Nitro est une combinaison de serveurs, de processeurs, de composants de gestion et de micrologiciels spécialisés qui fournissent la plate-forme sous-jacente pour toutes les instances Amazon EC2. Il se compose de trois éléments principaux&nbsp;:</p>



<ul class="wp-block-list">
<li><strong>Cartes Nitro spécifiques </strong>– Dispositifs matériels conçus par AWS qui assurent le contrôle global du système et la virtualisation des entrées/sorties indépendamment de la carte mère du système avec ses processeurs et sa mémoire&nbsp;;</li>



<li>La <strong>puce de sécurité Nitro </strong>– Celle-ci est intégrée à la carte mère du serveur et permet un démarrage sécurisé basé sur une racine de confiance matérielle, la capacité d’offrir des instances «&nbsp;bare metal&nbsp;» (permettant de se passer de l’hyperviseur d&#8217;AWS), ainsi qu’une protection du serveur contre les modifications non autorisées du micrologiciel du système&nbsp;;</li>



<li>L’<strong>hyperviseur Nitro </strong>– Un hyperviseur minimisé, semblable à un micrologiciel, conçu pour fournir une isolation des ressources et des performances.</li>
</ul>



<p>Les considérations de sécurité de ce système sont détaillées dans <a href="#ref12">[12]</a>.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="/wp-content/uploads/2023/07/AWS_Nitro.png"><img loading="lazy" decoding="async" width="300" height="262" src="/wp-content/uploads/2023/07/AWS_Nitro-300x262.png" alt="" class="wp-image-18825" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS_Nitro-300x262.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS_Nitro-768x671.png 768w, https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS_Nitro.png 907w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">Figure 2 &#8211; Architecture d’une machine AWS.</figcaption></figure>



<p>Les enclaves Nitro, quant à elles, sont des machines virtuelles isolées fonctionnant avec une instance EC2 classique, appelée instance «&nbsp;parent&nbsp;» (Figure 3).</p>



<p>Selon AWS, l’enclave Nitro <u>n’offre pas de sécurité supplémentaire</u> vis-à-vis d’une opératrice d’AWS&nbsp;<a href="#ref13">[13]</a>, mais permet en revanche d’empêcher un administrateur du client d’accéder au contenu de l’enclave (code et données).</p>



<figure class="wp-block-image aligncenter size-medium"><a href="/wp-content/uploads/2023/07/AWS-Creation-denclave.png"><img loading="lazy" decoding="async" width="300" height="270" src="/wp-content/uploads/2023/07/AWS-Creation-denclave-300x270.png" alt="Diagramme illustrant la création d'une enclave Nitro sur AWS." class="wp-image-18826" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS-Creation-denclave-300x270.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/07/AWS-Creation-denclave.png 579w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">Figure 3 &#8211; Création d’une enclave Nitro à partir d’une instance EC2. Une enclave est créée en partitionnant le processeur et la mémoire d’une instance EC2, appelée instance parent. Il est possible de créer des enclaves avec des combinaisons variées de cœurs de processeur et de mémoire.</figcaption></figure>



<p>La contrainte principale imposée par les enclaves Nitro est que l’application fonctionnant dans l’enclave n’a pas de connexion au réseau. Elle peut seulement communiquer avec l’instance parent via une interface point à point appelée «&nbsp;vsock&nbsp;» qui est définie par un identifiant de contexte et un numéro de port<a href="#_ftn5" name="_ftnref5"><sup>5</sup></a>. Un simple «&nbsp;<em>lift and shift</em>&nbsp;» n’est donc pas possible.</p>



<p>Au moment de sa création, l’application fonctionnant dans l’enclave peut générer une paire de clés asymétriques et faire inclure la clé publique dans l’attestation. Par conséquent l’application client vérifiant l’attestation peut utiliser cette clé afin d’établir une communication sécurisée avec l’enclave.</p>



<h2 class="wp-block-heading">Microsoft Azure</h2>



<p>Microsoft Azure propose trois types d’informatique confidentielle basée sur les TEE&nbsp;:</p>



<ul class="wp-block-list">
<li>Les <strong>enclaves d’applications</strong> sont basées sur la technique SGX d’Intel. Comme indiqué précédemment, il est nécessaire de modifier en profondeur les applications existantes afin de les adapter. Cela impose une réflexion importante sur le choix des parties de l’application à sécuriser et de leur interaction avec les autres parties, mais l’avantage de cette approche est de réduire la quantité de code auquel il faut faire confiance. L’inconvénient est bien évidemment la complexité de la mise en œuvre, requérant notamment une formation particulière des analystes, architectes et programmeurs ;</li>



<li>Les <strong>machines virtuelles confidentielles</strong> utilisent la technique SEV-SNP d’AMD (voir <a href="#AMD_SEV-SNP">ici</a>) et Microsoft a annoncé en avril 2023, la mise à disposition prochaine de la technique TDX d’Intel (voir <a href="#INTEL_SGX_TDX">ici</a>) <a href="#ref14">[14]</a>. Azure met également à disposition un module de plate-forme fiable («&nbsp;<em>trusted platform module (TPM) </em>») utilisé notamment pour l’attestation des machines virtuelles&nbsp;;</li>



<li>Les <strong>conteneurs confidentiels</strong> permettent au client d’avoir un niveau de contrôle plus fin que les machines virtuelles sur la TCB. Ce modèle d’empaquetage permet en principe d’exécuter des conteneurs existants dans une enclave SGX sans devoir modifier ou recompiler le logiciel (« <em>lift-and-shift </em>»).</li>
</ul>



<p>L’option permettant l’existence de plusieurs fils d’exécution en parallèle (technique « <em>hyper-threading</em>&nbsp;») au sein du même processeur est désactivée sur toutes les instances SGX. Cela permet d’éviter des attaques conduisant à des fuites de données entre applications partageant le même processeur.</p>



<h2 class="wp-block-heading">Google</h2>



<p>Google propose différentes façons de mettre en œuvre l’informatique confidentielle sur son infrastructure&nbsp;:</p>



<ul class="wp-block-list">
<li>Les <strong>machines virtuelles confidentielles</strong> utilisent la technique d’AMD ;</li>



<li>Les <strong>nœuds Kubernetes confidentiels</strong> reposent également sur la technique SEV d’AMD. Le moteur Kubernetes de Google peut imposer l’utilisation de machines virtuelles confidentielles pour tous les nœuds Kubernetes.</li>
</ul>



<p>Alors que toutes les machines virtuelles confidentielles contiennent des TPM virtuels qui valident l’intégrité d’une machine virtuelle avec le démarrage mesuré, les machines virtuelles confidentielles avec la technique SEV-SNP offrent également des rapports d’attestation signés cryptographiquement par le matériel. Cependant la technique SEV-SNP n’est pas encore disponible de manière généralisée sur l’infrastructure de Google.</p>



<h2 class="wp-block-heading">Limite pratique des attestations</h2>



<p>Comme nous l’expliquions dans notre <a href="/introduction-a-l-informatique-confidentielle/" target="_blank" rel="noopener">article</a> précédent, un point essentiel de l’utilisation des TEE est d’obtenir la garantie que le logiciel fonctionnant sur l’infrastructure louée est réellement le logiciel auquel s’attend le client et que les données qu’il traite ne peuvent être lues par aucun autre logiciel. Cette garantie, appelée attestation et obtenue à travers un mécanisme fiable, devrait contenir des informations complètes, récentes et explicites sur le plan sémantique <a href="#ref15">[15]</a>.</p>



<p>En supposant que l’on fasse confiance à la sécurité physique du microprocesseur ou de la puce spécialisée, que les attaques connues ont été atténuées et que le code de l’enclave n’est pas vulnérable aux attaques par canaux auxiliaires («&nbsp;<em>side-channel attacks</em>&nbsp;»), comment peut-on être certain que la sortie d’une enclave est fiable?</p>



<p>Il faut s’assurer que&nbsp;:</p>



<ul class="wp-block-list">
<li>Le <strong>fichier binaire exécuté dans l’enclave a bien été construit avec le code attendu</strong>. Pour ce faire le client peut compiler son application sur une machine de confiance (par ex. lui appartenant), puis copier le binaire de manière sécurisée sur la plate-forme d’informatique confidentielle. Une autre méthode est d’utiliser un outil de compilation reproductible<a href="#_ftn6" name="_ftnref6"><sup>6</sup></a>&nbsp;;</li>



<li>Le <strong>fichier binaire en cours d’exécution correspond bien au binaire attendu</strong>. Un système d’attestation utilise des clés cryptographiques dérivées de secrets figés dans le microprocesseur de confiance pour signer une preuve que le binaire est dans un état donné sur un véritable matériel (pas une simulation). La preuve contient une mesure (valeur de hachage cryptographique) du binaire&nbsp;;</li>



<li>L’<strong>état de l’application au moment de son démarrage</strong> est celui attendu&nbsp;&#8221; la mesure de la partie exécutable du binaire n’est pas suffisante pour prédire son comportement futur&nbsp;;</li>



<li>L’<strong>attestation est signée par une entité de confiance</strong>, en principe par le fabricant du microprocesseur ou de la puce sécurisée.</li>
</ul>



<p>Pourtant dans les solutions étudiées, à l&#8217;exception des enclaves SGX, soit l’attestation est signée par le fournisseur de l’infrastructure (et non par le fabricant du matériel), soit il n’est pas possible de vérifier la mesure du logiciel sécurisé car il inclut des bibliothèques propriétaires. Le risque est donc que l’entité attestée mente sur son état.</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>Dix ans après les révélations d’Edward Snowden en juin 2013, concernant les méthodes de surveillance des États-Unis, nous devons partir du principe que des informations pourront être obtenues si elles sont suffisamment précieuses. L’impression de plus grande sécurité des infrastructures informatiques nationales peut alors être trompeuse<a href="#_ftn7" name="_ftnref7"><sup>7</sup></a>. Il existe en effet une tension entre une volonté d’indépendance des services informatiques étatiques et la capacité à égaler les niveaux de ressources (matérielles, humaines, R&amp;D), de redondance et de sécurité qu’offrent les entreprises dominantes du secteur<a href="#_ftn8" name="_ftnref8"><sup>8</sup></a>. L’ajout de l’informatique confidentielle basée sur des TEE ajoute un nouvel argument en faveur des infrastructures informatiques publiques.</p>



<p>Lorsqu’ils sont mis en œuvre correctement, et toutes autres choses égales par elles-mêmes, les TEE fondés sur des composants physiques permettent d’augmenter significativement le niveau de protection des données au sein d’une infrastructure informatique, en particulier vis-à-vis de tiers, et notamment de cybercriminels<a href="#_ftn9" name="_ftnref9"><sup>9</sup></a>. En effet ils permettent d’éviter la plupart des attaques logiques affectant les systèmes habituels, et ce, grâce à une meilleure isolation des processus, un chiffrement de la mémoire par la couche matérielle, un démarrage sécurisé, des mécanismes de contrôle de mise à jour du micrologiciel, et, d’une manière générale à une réduction de la taille de la base informatique de confiance. En d’autres termes les mesures de sécurité mises en place dans les TEE rendent une attaque beaucoup plus complexe et coûteuse.</p>



<p>Les offres d’informatiques confidentielles basées sur des TEE varient entre les fournisseurs, notamment en fonction du type d’abstraction offert&nbsp;: librairie logicielle, conteneur, machine virtuelle. Le choix de ces options conduit à des différences dans la taille du code de la base de confiance (et donc de la surface exposée aux attaques), mais également dans l’effort d’adaptation nécessaire des applications existantes à ces nouveaux environnements.</p>



<p>Lors du choix d’une solution d’informatique confidentielle basée sur les TEE, il conviendra donc de vérifier les points suivants&nbsp;:</p>



<ul class="wp-block-list">
<li>La protection doit être ancrée dans la couche physique du système et chaque appareil doit avoir une identité unique&nbsp;;</li>



<li>Le mécanisme d’attestation doit permettre de pouvoir vérifier le contenu<a href="#_ftn10" name="_ftnref10"><sup>10</sup></a> du TEE de manière indépendante du fournisseur d’infrastructure<a href="#_ftn11" name="_ftnref11"><sup>11</sup></a>;</li>



<li>L’attestation doit être signée au moins par le fabricant du composant physique et pas uniquement par le fournisseur d’infrastructure<a href="#_ftn12" name="_ftnref12"><sup>12</sup></a>;</li>



<li>Le service permet au minimum d’importer ses propres clés cryptographiques dans une boîte noire transactionnelle (HSM) dédiée, et au mieux d’utiliser sa propre boîte&nbsp;;</li>



<li>Il devrait être possible de vérifier le code source des librairies critiques incluses par le fournisseur d’infrastructure dans la base de confiance pour le bon fonctionnement de l’application du client&nbsp;;</li>



<li>Un service permettant de traquer les différentes dépendances logicielles, d’environnement de compilation, et des binaires utilisés pour le TEE devrait être mis à disposition du client par le fournisseur d’infrastructure.</li>
</ul>



<p>Finalement, la protection des données en cours d’utilisation permise par l’informatique confidentielle ne représente qu’un des multiples aspects techniques à considérer concernant la confidentialité des données sensibles (sans compter les aspects juridiques, économiques et politiques). Tout comme la meilleure serrure sur la porte d’entrée principale d’une maison ne résout pas le problème d’une porte secondaire grande ouverte, l’utilisation de l’informatique confidentielle suppose que les données sont effectivement protégées au repos et en mouvement, mais requiert également une formation spécifique des personnes en charge de l’adaptation (plus ou moins importantes en fonction du type d’informatique confidentielle choisie) et du transfert des applications existantes, notamment les analystes, architectes, et programmeurs.</p>



<h1 class="wp-block-heading"><a name="_Toc139374797"></a>Bibliographie</h1>



<p><a id="ref1"></a>[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A. Linn, «&nbsp;Securing the cloud | Microsoft Story Labs&nbsp;», <em>Securing the cloud | Microsoft Story Labs</em>, 2017. <a href="https://news.microsoft.com/stories/cloud-security" target="_blank" rel="noopener">http://news.microsoft.com/stories/cloud-security</a> (consulté le 6 juin 2023).</p>



<p><a id="ref2"></a>[2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M. U. Sardar et C. Fetzer, «&nbsp;Confidential computing and related technologies: a critical review&nbsp;», <em>Cybersecurity</em>, vol. 6, n<sup>o</sup> 1, p. 10, mai 2023, doi: <a href="https://doi.org/10.1186/s42400-023-00144-1" target="_blank" rel="noopener">10.1186/s42400-023-00144-1</a>.</p>



<p><a id="ref3"></a>[3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Kaplan, «&nbsp;AMD x86 Memory Encryption Technologies&nbsp;», août 2016. Consulté le: 11 mai 2023. [En ligne]. Disponible sur: <a href="https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/kaplan" target="_blank" rel="noopener">https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/kaplan</a></p>



<p><a id="ref4"></a>[4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. Kaplan, J. Powell, et T. Woller, «&nbsp;AMD Memory Encryption&nbsp;», White Paper, oct. 2021. Consulté le: 1 mai 2023. [En ligne]. Disponible sur: <a href="https://www.amd.com/system/files/TechDocs/memory-encryption-white-paper.pdf" target="_blank" rel="noopener">https://www.amd.com/system/files/TechDocs/memory-encryption-white-paper.pdf</a></p>



<p><a id="ref5"></a>[5]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «&nbsp;AMD SEV-SNP: Strengthening VM Isolation with Integrity Protection and More&nbsp;», AMD, janv. 2020.</p>



<p><a id="ref6"></a>[6]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «&nbsp;Secure Encrypted Virtualisation API Version 0.24&nbsp;», Specification, avr. 2020. [En ligne]. Disponible sur: <a href="https://www.amd.com/system/files/TechDocs/55766_SEV-KM_API_Specification.pdf" target="_blank" rel="noopener">https://www.amd.com/system/files/TechDocs/55766_SEV-KM_API_Specification.pdf</a></p>



<p><a id="ref7"></a>[7]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Victor Costan et Srinivas Devadas, «&nbsp;Intel SGX Explained&nbsp;». Cryptology ePrint Archive, 2016. [En ligne]. Disponible sur: <a href="https://eprint.iacr.org/2016/086" target="_blank" rel="noopener">https://eprint.iacr.org/2016/086</a></p>



<p><a id="ref8"></a>[8]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P.-C. Cheng <em>et al.</em>, «&nbsp;Intel TDX Demystified: A Top-Down Approach&nbsp;». arXiv, 27 mars 2023. Consulté le: 23 mai 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2303.15540" target="_blank" rel="noopener">http://arxiv.org/abs/2303.15540</a></p>



<p><a id="ref9"></a>[9]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «&nbsp;Intel 64 and IA-32 Architectures Software Developer’s Manual, Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4&nbsp;». Intel Corporation, mars 2023. [En ligne]. Disponible sur: <a href="https://cdrdv2.intel.com/v1/dl/getContent/671200" target="_blank" rel="noopener">https://cdrdv2.intel.com/v1/dl/getContent/671200</a></p>



<p><a id="ref10"></a>[10]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A. Rao, «&nbsp;Rising to the Challenge — Data Security with Intel Confidential Computing&nbsp;», 20 janvier 2022. <a href="https://community.intel.com/t5/Blogs/Products-and-Solutions/Security/Rising-to-the-Challenge-Data-Security-with-Intel-Confidential/post/1353141" target="_blank" rel="noopener">https://community.intel.com/t5/Blogs/Products-and-Solutions/Security/Rising-to-the-Challenge-Data-Security-with-Intel-Confidential/post/1353141</a> (consulté le 17 mai 2023).</p>



<p><a id="ref11"></a>[11]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G. Steer, «&nbsp;Finance’s big tech problem&nbsp;», <em>Financial Times</em>, 6 juillet 2022. Consulté le: 10 juillet 2023. [En ligne]. Disponible sur: <a href="https://www.ft.com/content/41f400b6-f83f-4fa1-8dac-731acddcf8f2" target="_blank" rel="noopener">https://www.ft.com/content/41f400b6-f83f-4fa1-8dac-731acddcf8f2</a></p>



<p><a id="ref12"></a>[12]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «&nbsp;The Security Design of the AWS Nitro System &#8211; AWS Whitepaper&nbsp;». AWS, 18 novembre 2022. [En ligne]. Disponible sur: <a href="https://docs.aws.amazon.com/fr_fr/whitepapers/latest/security-design-of-aws-nitro-system/security-design-of-aws-nitro-system.html" target="_blank" rel="noopener">https://docs.aws.amazon.com/fr_fr/whitepapers/latest/security-design-of-aws-nitro-system/security-design-of-aws-nitro-system.html</a></p>



<p><a id="ref13"></a>[13]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «&nbsp;Confidential computing: an AWS perspective | AWS Security Blog&nbsp;», 24 août 2021. <a href="https://aws.amazon.com/blogs/security/confidential-computing-an-aws-perspective/" target="_blank" rel="noopener">https://aws.amazon.com/blogs/security/confidential-computing-an-aws-perspective/</a> (consulté le 18 avril 2023).</p>



<p><a id="ref14"></a>[14]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; M. McReynolds, «&nbsp;Preview: Introducing DCesv5 and ECesv5-series Confidential VMs with Intel TDX&nbsp;», 24 avril 2023. <a href="https://techcommunity.microsoft.com/t5/azure-confidential-computing/preview-introducing-dcesv5-and-ecesv5-series-confidential-vms/ba-p/3800718" target="_blank" rel="noopener">https://techcommunity.microsoft.com/t5/azure-confidential-computing/preview-introducing-dcesv5-and-ecesv5-series-confidential-vms/ba-p/3800718</a> (consulté le 16 mai 2023).</p>



<p><a id="ref15"></a>[15]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G. Coker <em>et al.</em>, «&nbsp;Principles of remote attestation&nbsp;», <em>Int. J. Inf. Secur.</em>, vol. 10, n<sup>o</sup> 2, p. 63‑81, juin 2011, doi: <a href="https://doi.org/10.1007/s10207-011-0124-7" target="_blank" rel="noopener">10.1007/s10207-011-0124-7</a>.</p>



<p><a id="ref16"></a>[16]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «&nbsp;Nix &amp; NixOS | Reproducible builds and deployments&nbsp;». <a href="https://nixos.org/" target="_blank" rel="noopener">https://nixos.org/</a> (consulté le 6 juin 2023).</p>



<p><a id="ref17"></a>[17]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R. Gallagher, «&nbsp;The Inside Story of How British Spies Hacked Belgium’s Largest Telco&nbsp;», <em>The Intercept</em>, 13 décembre 2014. <a href="https://theintercept.com/2014/12/13/belgacom-hack-gchq-inside-story/" target="_blank" rel="noopener">https://theintercept.com/2014/12/13/belgacom-hack-gchq-inside-story/</a> (consulté le 8 juin 2023).</p>



<p><a id="ref18"></a>[18]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R. Gallagher, «&nbsp;How U.K. Spies Hacked a European Ally and Got Away With It&nbsp;», <em>The Intercept</em>, 17 février 2018. <a href="https://theintercept.com/2018/02/17/gchq-belgacom-investigation-europe-hack/" target="_blank" rel="noopener">https://theintercept.com/2018/02/17/gchq-belgacom-investigation-europe-hack/</a> (consulté le 8 juin 2023).</p>



<p><a id="ref19"></a>[19]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C. Zhao, «&nbsp;SolarWinds, Probably Hacked by Russia, Serves White House, Pentagon, NASA&nbsp;», <em>Newsweek</em>, 14 décembre 2020. Consulté le: 9 janvier 2023. [En ligne]. Disponible sur: <a href="https://www.newsweek.com/solar-winds-probably-hacked-russia-serves-white-house-pentagon-nasa-1554447" target="_blank" rel="noopener">https://www.newsweek.com/solar-winds-probably-hacked-russia-serves-white-house-pentagon-nasa-1554447</a></p>



<p><a id="ref20"></a>[20]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R. Koppel et C. Kuziemsky, «&nbsp;Healthcare Data Are Remarkably Vulnerable to Hacking: Connected Healthcare Delivery Increases the Risks&nbsp;», <em>Stud. Health Technol. Inf.</em>, vol. 257, p. 218‑222, 2019.</p>



<h1 class="wp-block-heading">Notes</h1>



<p><a href="#_ftnref1" name="_ftn1"><sup>1</sup></a>&nbsp; &nbsp;Par exemple le terme «&nbsp;enclave&nbsp;» n’a pas du tout le même sens chez Amazon et Intel. Alors que les «&nbsp;Nitro Enclaves&nbsp;» sont des machines virtuelles entières, les «&nbsp;SGX Enclaves&nbsp;» sont des bibliothèques exposant certaines API.</p>



<p><a href="#_ftnref2" name="_ftn2"><sup>2</sup></a>&nbsp; &nbsp;Notons que NVIDIA offre depuis peu un processeur graphique (A100 Tensor Core avec la technique « Ampere Protected Memory (APM) ») qui introduit un mode d’exécution confidentielle dans le processeur graphique et permet ainsi d’utiliser des ensembles des données pour former et déployer des modèles d’apprentissage automatique (« machine learning ») de manière confidentielle, notamment sur une infrastructure informatique publique. Ces processeurs sont disponibles sur l’offre Azure de Microsoft.</p>



<p><a href="#_ftnref3" name="_ftn3"><sup>3</sup></a>&nbsp; &nbsp;Ce n’est pas le cas avec TDX qui permet de protéger une machine virtuelle entière.</p>



<p><a href="#_ftnref4" name="_ftn4"><sup>4</sup></a>&nbsp; &nbsp;Selon le Financial Times, les trois fournisseurs d’infrastructure informatique les plus importants en 2021 étaient Amazon, Microsoft et Google&nbsp;<a href="#ref11">[11]</a>.</p>



<p><a href="#_ftnref5" name="_ftn5"><sup>5</sup></a>&nbsp; &nbsp;Cette «&nbsp;vsock&nbsp;» utilise la même API que les «&nbsp;sockets&nbsp;» POSIX.</p>



<p><a href="#_ftnref6" name="_ftn6"><sup>6</sup></a>&nbsp; &nbsp;Par exemple Nix <a href="#ref16">[16]</a>.</p>



<p><a href="#_ftnref7" name="_ftn7"><sup>7</sup></a>&nbsp; &nbsp;Nous avons appris en 2014 que l’agence de surveillance britannique GCHQ avait piraté un système sensible de Belgacom&nbsp;<a href="#ref17">[17]</a>, <a href="#ref18">[18]</a>.</p>



<p><a href="#_ftnref8" name="_ftn8"><sup>8</sup></a>&nbsp; &nbsp;Les groupes cybercriminels n’hésitent plus à compromettre la sécurité de services informatiques en mettant en œuvre de nouveaux types d’attaques. L’exemple du piratage de SolarWind est symptomatique à cet égard&nbsp;<a href="#ref19">[19]</a>. Un service indépendant national mais insuffisamment sécurisé pourrait représenter un point de défaillance unique posant un risque crucial.</p>



<p><a href="#_ftnref9" name="_ftn9"><sup>9</sup></a>&nbsp; &nbsp;«&nbsp;Les données de santé sont attrayantes pour les cybercriminels car elles contiennent des données financières et personnelles, peuvent être utilisées pour le chantage et, surtout, sont idéales pour la facturation frauduleuse&nbsp;»&nbsp;<a href="#ref20">[20]</a>.</p>



<p><a href="#_ftnref10" name="_ftn10"><sup>10</sup></a>&nbsp;Ce contenu, dans le cas de machines virtuelles confidentielles, inclut également le système d’exploitation que l’on préférera de taille minimale.</p>



<p><a href="#_ftnref11" name="_ftn11"><sup>11</sup></a>&nbsp;Si le fournisseur d’infrastructure contrôle en partie le contenu de la machine virtuelle confidentielle ou du conteneur confidentiel et que le client n’a pas de mécanisme pour le vérifier, alors la confiance dans le fournisseur reste totale.</p>



<p><sup><a href="#_ftnref12" name="_ftn12">12</a></sup>&nbsp;Si le fournisseur d’infrastructure signe l’attestation, alors la confiance dans ce fournisseur reste totale.</p>



<p>_________________________<br data-rich-text-line-break="true"><br data-rich-text-line-break="true"><em>Ce post est une contribution individuelle de Fabien A. P. Petitcolas, spécialisé en sécurité informatique chez Smals Research. Cet article est écrit en son nom propre et n&#8217;impacte en rien le point de vue de Smals.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/outils-pour-linformatique-confidentielle/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Data scrambling: synthetische data in de praktijk</title>
		<link>https://www.smalsresearch.be/data-scrambling-synthetische-data-in-de-praktijk/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Wed, 23 Mar 2022 14:00:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Information management]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[synthetic data]]></category>
		<guid isPermaLink="false">/?p=17110</guid>

					<description><![CDATA[In dit artikel kijken we naar de praktische bekommernissen als we tools voor synthetische data inzetten: wat komt een data professional die hiermee aan de slag moet zoal tegen?]]></description>
										<content:encoded><![CDATA[
<p>Oracle definieerde <em>data scrambling</em> ooit <a href="https://docs.oracle.com/cd/E11857_01/em.111/e18709/T508706T512067.htm">als volgt</a>: <em>&#8220;the process to obfuscate or remove sensitive data. This process is irreversible so that the original data cannot be derived from the scrambled data.&#8221;</em> Als zodanig hoort het zeker thuis onder de <a href="/wanneer-is-welke-privacybevorderende-technologie-nuttig/">privacybevorderende technologieën waarvan eerder spake</a>: het doel is de gegevens zo goed mogelijk af te schermen, maar ze toch (deels) bruikbaar te houden voor derden. In strikte zin is scrambling slechts een <a href="https://www.imperva.com/learn/data-security/data-masking/">vorm </a>van <a href="https://www.datamasker.com/DataMasking_WhatYouNeedToKnow.pdf">data masking</a>, maar in dit artikel hanteren we een bredere definitie en rekenen we o.a. ook shuffling en substituties ertoe. Deze technologieën worden onder andere toegepast bij banken, waar testers en ontwikkelaars wel een stacktrace moeten kunnen onderzoeken of een programma moeten testen, maar daarbij geen inzage mogen krijgen in de echte bankgegevens van klanten.</p>



<p>Als het doel is om een functioneel alternatief te voorzien voor gevoelige data, zijn tools voor de creatie van <a href="/synthetic-data/">synthetische data</a> bij uitstek geschikt. Ze kunnen immers meer dan enkel de bestaande gegevens door elkaar gooien: ze zijn gemaakt om de structuur van gegevens aan te leren, waarna je willekeurig veel nieuwe gegevens volgens dezelfde structuur kan aanmaken. In combinatie met <a href="https://faker.readthedocs.io/en/master/">generatoren</a> voor totaal fictieve gegevens, hebben we daarmee alles voorhanden om niet alleen de originele gegevens te verbergen, maar ook om te zorgen dat wat in de plaats komt, realistisch oogt. </p>



<p>Dat betekent echter niet dat het een kwestie is van een druk op de knop. Eén en ander hangt af van allerlei randvoorwaarden en aannames over de inhoud en structuur van de gegevens. Afhankelijk van de beoogde toepassing of het doel, kan het nodig zijn om extra beperkingen en filters op te leggen, of misschien net om bepaalde delen van de gegevens buiten beschouwing te laten. In dit artikel kijken we vooral naar die <strong>praktische bekommernissen</strong>: wat kom je zoal tegen als data professional die synthetische data moet aanmaken?</p>



<p></p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2022/03/2022-03-23_13h12_45.png"><img loading="lazy" decoding="async" width="1024" height="447" src="/wp-content/uploads/2022/03/2022-03-23_13h12_45-1024x447.png" alt="" class="wp-image-17153" srcset="https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45-1024x447.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45-300x131.png 300w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45-768x335.png 768w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45-1536x670.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45.png 1648w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Synthetische data in de praktijk: uit de originele data (boven) wordt de structuur approximatief aangeleerd, het resulterende generatieve model kan daarna realistisch lijkende fictieve gegevens genereren (onder).</figcaption></figure>



<h1 class="wp-block-heading">Setup</h1>



<p>Wie een dataset wil scramblen, heeft uiteraard toegang nodig tot de originele gegevens. Het spreekt voor zich dat het uploaden van gevoelige data naar een cloud service of zelfs het gebruik van een <a href="/distributie-van-cloud-services/">Docker container voorzien door een derde partij</a>, slechts mogelijk is als er grondig is nagedacht over GDPR-compliance, eventueel een Data Protection Impact Assessments (DPIA) is opgesteld, en best ook met de DPO is overlegd. We doen zelf geen enkele uitspraak over de geschiktheid van eender welke tool vis-à-vis de GDPR-wetgeving. Voor al wat volgt gaan we ervan uit dat we werken met tabulaire, tekstuele of numerieke gegevens, die lokaal beschikbaar zijn &#8211; met andere woorden, een grote spreadsheet.</p>



<h2 class="wp-block-heading">De markt</h2>



<p>In een <a href="/synthetic-data/">vorig artikel</a> vermeldden we al enkele spelers vanuit de optiek van AI-projecten en software testing. Hier ligt onze focus meer op de privacybescherming en data science. Voor het analyseren en synthetiseren van tabulaire gegevens is er een heel sterk groeiende markt. Enkele interessante spelers zijn de volgende &#8211; en er zijn er ongetwijfeld nog veel meer:</p>



<ul class="wp-block-list">
<li><a href="https://mostly.ai/">Mostly.ai</a></li>



<li><a href="https://ydata.ai/">YData</a></li>



<li><a href="https://www.tonic.ai/">Tonic</a></li>



<li><a href="https://gretel.ai/">Gretel</a></li>



<li><a href="https://www.synthesized.io/">Synthesized.io</a></li>
</ul>



<p>Open source tools zijn er minder en zijn vaak afkomstig van projecten die op universiteiten zijn begonnen. <a href="https://www.benerator.de/">Benerator </a>vermelden we apart omdat deze al langer bestaat en ook een uitgebreid commercieel aanbod heeft. Jongere open source initiatieven zijn onder andere:</p>



<ul class="wp-block-list">
<li><a href="https://sdv.dev/">Synthetic Data Vault (SDV)</a></li>



<li><a href="https://mimesis.name/master/">Mimesis</a></li>



<li><a href="https://dmey.github.io/synthia/">Synthia</a></li>



<li><a href="https://dataresponsibly.github.io/">Data Responsibly</a>&#8216;s <a href="https://github.com/DataResponsibly/DataSynthesizer">DataSynthesizer</a></li>



<li>MITRE&#8217;s <a href="https://synthetichealth.github.io/synthea/">Synthea</a> / <a href="https://synthea.mitre.org/">SyntheticMass</a> (toegespitst op eHealth)</li>
</ul>



<p>SDV is momenteel de populairste van de open source tools, en we gebruiken deze voor al wat volgt. In onze <a href="https://www.smalsresearch.be/wp-content/uploads/2022/03/QR-SDV.pdf">Quick Review</a> vind je meer uitleg over deze tool.</p>



<h2 class="wp-block-heading">Het stappenplan</h2>



<p>Het plan van aanpak om synthetische data te produceren is bij de meeste tools heel gelijkaardig. We kunnen het onderverdelen in 6 grote stappen: </p>



<ol class="wp-block-list">
<li>Upload en <strong>inlezen </strong>van de gegevens. Met name de <a href="https://nl.wikipedia.org/wiki/Tekencodering">tekst-encodering </a>kan hier wel eens voor problemen zorgen als de gegevens uit oudere bronnen afkomstig zijn. Problemen hiermee moeten opgelost worden voordat men aan de volgende stappen begint.</li>



<li><strong>Analyse </strong>en typering van de gegevens. Voor elke kolom: welke zijn de minima, maxima, de waarden die voorkomen, zijn er missende waarden, etc. Omdat de computer niet weet wat de achterliggende betekenis van de gegevens is, is het vaak nodig om in deze stap manueel correcties uit te voeren:
<ul class="wp-block-list">
<li>Niet alle getalwaarden kan je zomaar beschouwen als &#8220;hoeveelheden&#8221; die je vrij kan optellen of aftrekken. Sommige zijn categoriën, zoals <a href="https://statbel.fgov.be/sites/default/files/Over_Statbel_FR/Nomenclaturen/NACE-BEL%202008_NL.pdf">NACE codes</a> of <a href="/la-jointure-spatiale-la-cle-de-lanalytique-geographique/">postcodes</a>, andere zijn misschien onderdeel van een datum.</li>



<li>Ontbrekende gegevens zal je in sommige gevallen kunnen gelijkstellen met 0 of met een reeds aanwezige <em>default</em> categorie, maar vaak wil je ze misschien beschouwen als een klasse apart. Een ontbrekende geboortedatum wilt immers niet zeggen dat iemand geboren is in het jaar 0.</li>
</ul>
</li>



<li><strong>Transformatie </strong>van gegevens. Hierbij worden o.a. ontbrekende gegevens afgesplitst, of categorische variabelen omgezet in een <a href="https://en.wikipedia.org/wiki/One-hot">getal-encodering </a>om compacter voorgesteld te worden. Deze stap gebeurt vooral achter de schermen, maar het is vaak mogelijk om manueel configuratie-opties toe te voegen: van sommige kolommen willen we bijvoorbeeld forceren dat de waarden altijd uniek zijn, andere kolommen willen we misschien negeren.</li>



<li>Een <strong>generatief model trainen</strong>. Dit kunnen zowel <a href="https://en.wikipedia.org/wiki/Copula_(probability_theory)">&#8220;klassieke&#8221; statistische modellen</a> zijn als <a href="https://proceedings.neurips.cc/paper/2019/file/254ed7d2de3b23ab10936522dd547b78-Paper.pdf">deep-learning varianten</a>. Sommige modellen zijn enigszins in staat om diepere verbanden tussen de gegevens te reproduceren, maar dit blijft erg afhankelijk van de hoeveelheid gegevens en hun distributie. </li>



<li><strong>Genereren </strong>van nieuwe gegevens. Bij gebruik van een generatief model staat er in principe geen limiet op de hoeveelheid gegevens die aangemaakt kan worden.</li>



<li><strong>Evalueren en visualiseren</strong> van de resultaten. De meeste commerciële tools genereren een mooi eindrapport met daarin een verslag van het hele proces en enkele samenvattende grafieken die toelaten om in een oogopslag te zien of er anomalieën zijn, en of er nog andere correcties toegevoegd dienen te worden. Bij open-source tools is dat vaak beperkt tot enkele metrieken en moet je verdere gegevensanalyse zelf bijprogrammeren. </li>
</ol>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2022/03/2022-03-23_17h13_49.png"><img loading="lazy" decoding="async" width="1024" height="426" src="/wp-content/uploads/2022/03/2022-03-23_17h13_49-1024x426.png" alt="synthetic data concept" class="wp-image-17159" srcset="https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_17h13_49-1024x426.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_17h13_49-300x125.png 300w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_17h13_49-768x320.png 768w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_17h13_49.png 1117w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Het concept van synthetic data generation. Bron: Haoran Li, Li Xiong, Lifan Zhang, and Xiaoqian Jiang, &#8220;<em><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4496798/">DPSynthesizer: Differentially Private Data Synthesizer for Privacy Preserving Data Sharing</a></em>&#8220;</figcaption></figure>



<h2 class="wp-block-heading">Gegevens</h2>



<p>Wie de tools liefst niet uittest op eigen (gevoelige) data, vindt veel <a href="https://www.kaggle.com/datasets">datasets op Kaggle</a>. Zelf maakten we voor onze testen onder andere gebruik van een variant op de <a href="https://www.kaggle.com/uciml/adult-census-income">Adult Census Income</a> dataset.</p>



<h1 class="wp-block-heading">Praktische bekommernissen</h1>



<h2 class="wp-block-heading">Telgegevens</h2>



<p>Sommige datasets bevatten tellingen. Dat kan het resultaat zijn van een COUNT() functie in de SQL-query voor data-extractie. Om dan een correcte inschatting te kunnen maken van de distributies van de andere variabelen, is het nodig om deze telling ongedaan te maken en de tabel te &#8220;unrollen&#8221;. Een nieuw gegenereerde tabel moet nadien natuurlijk terug &#8220;opgeteld&#8221; worden om terug in het originele formaat te staan. Op deze manier kan men desgewenst ook garanderen dat de resulterende tabel ook effectief hetzelfde aantal records voorstelt als in de originele database, zelfs al is er een ander aantal combinaties van variabelen. De kolom met de telvariabele wordt uiteraard niet meegenomen in het generatief model.</p>



<h2 class="wp-block-heading">Behoud van alle mogelijkheden</h2>



<p>Voor sommige toepassingen kan het nodig zijn dat een gesynthetiseerde dataset zeker ook alle mogelijke waarden bevat die voorkomen in de originele dataset &#8211; bij wijze van representativiteit voor de originele dataset. Maar met name als bepaalde waarden erg zeldzaam zijn, bestaat er een reëel risico dat ze niet genoeg doorwegen bij de training van het generatief model, waardoor ze achteraf bijna nooit gegenereerd worden. De meeste generatieve modellen laten het <a href="https://sdv.dev/SDV/user_guides/single_table/gaussian_copula.html#conditional-sampling">conditioneel samplen</a> van gegevens toe: datapunten kunnen gegenereerd worden waarvoor de waarde van een of meerdere variabelen vaststaan. De distributie van de andere waarden volgt dan een <a href="https://en.wikipedia.org/wiki/Bayes%27_theorem">conditionele distributie</a>, gegeven deze vaste waarden. Doe dat voor elke waarde die voorkomt in de originele dataset, en men kan garanderen dat elke waarde (alleszins onafhankelijk) voorkomt. Dit vraagt weliswaar wat extra programmeerwerk om gedaan te krijgen, en bovendien impliceert dit ook dat een outputdataset een bepaalde minimumgrootte zal hebben.</p>



<h2 class="wp-block-heading">Duplicaten en overlap</h2>



<p>Het genereren van nieuwe gegevens gebeurt door te <a href="https://en.wikipedia.org/wiki/Sample_(statistics)">samplen</a> uit een generatief model &#8211; te vergelijken met het trekken van een lottocombinatie. Zeker als er veel gegevens worden gesynthetiseerd, is het altijd mogelijk dat er twee keer hetzelfde tussenzit. Is dat ongewenst, dan moet een optie toegevoegd worden om duplicaten te verwijderen &#8211; en nadien opnieuw gegevens bij te genereren totdat de gewenste grootte opnieuw is bereikt. Eventueel kan men ook forceren dat gesynthetiseerde gegevens zeker niet mogen voorkomen in de originele dataset &#8211; dat de twee datasets dus volledig disjunct zijn. Dat laatste voegt echter weinig toe qua privacybescherming: zonder kennis van de originele dataset, kan men steeds bogen op een zekere <a href="https://www.vldb.org/pvldb/vol10/p481-bindschaedler.pdf">plausible deniability</a> dat een synthetisch record identiek zou zijn aan een record uit de echte dataset.</p>



<h2 class="wp-block-heading">Trainingstijd</h2>



<p>Zeker bij grote datasets met veel variabelen, en bij gebruik van deep learning tools kan het een lange tijd in beslag nemen om een generatief model te trainen. Dat maakt het moeilijk om iteratief te werk te gaan bij het verfijnen van de opties. Het kan nuttig zijn om tijdens de ontwikkeling, de dataset ten grondslag van de training te beperken tot enkele duizenden willekeurig geselecteerde records. Daarbij mogen we al wat hierboven al werd vermeld natuurlijk niet uit het oog verliezen &#8211; bijvoorbeeld, ook hier kan het nuttig zijn om een extra optie te hebben die garandeert dat een selectie uit de trainingset nog steeds minstens 1 datapunt bevat voor elke waarde van elke variabele.</p>



<h2 class="wp-block-heading">Afhankelijke kolommen</h2>



<p>Een kolom die volledig (lineair) afhankelijk is van een of meerdere andere kolommen, moeten we verwijderen en achteraf terug herberekenen. Dat is typisch het geval bij wiskundige afhankelijkheden: een kolom die een som is van twee andere kolommen, of een percentage van een andere kolom voorstelt. We kunnen best niet hopen dat een generatief model dat verband zelf aanleert. Het is veel zekerder om zulke afhankelijke kolommen gewoon te verwijderen uit de dataset, en nadat een nieuwe dataset is gegenereerd, deze kolommen terug te berekenen op basis van de gesynthetiseerde data en dan pas toe te voegen.</p>



<h2 class="wp-block-heading">Constraints</h2>



<p>Iemands geboortedatum valt altijd vroeger dan iemands sterfdatum. Dat is logisch, maar als men voor een fictief persoon een nieuwe geboortedatum en sterfdatum genereert uit het generatief model dat werd getraind op de distributies van alle geboorte- en sterfdata in een dataset, dan kan het voorvallen dat deze logische beperking niet altijd gerespecteerd blijft. Het kunnen opleggen van <em>constraints</em> &#8211; de ene variabele is altijd groter of kleiner dan een andere, of altijd positief of negatief, etc. &#8211; is een belangrijke feature. Eenvoudige beperkingen, zoals zonet aangehaald, zijn eventueel nog eenvoudig te implementeren door &#8220;rejection sampling&#8221;: voldoet een gesynthetiseerd record niet aan alle constraints, wordt het gedeleted en wordt een nieuw gegenereerd, totdat alle records voldoen. Worden de constraints ingewikkelder of strikter, dan kan het nodig zijn om zelf de nodige filters te programmeren, of om een post-processing stap te definiëren waarin correcties uitgevoerd kunnen worden. </p>



<h2 class="wp-block-heading">Kolommen bevriezen</h2>



<p>Willen we een dataset scramblen met een kolom <em>geslacht</em> en een kolom <em>woonplaats</em>, dan is het eigenlijk voldoende om enkel de kolom met woonplaatsen door elkaar te husselen om een goed gemengde dataset te bekomen. Het geslacht is daar onafhankelijk van, en kunnen we even goed negeren. Het bevriezen van kolommen, in feite gewoon het verwijderen voor de verwerking en terug eraan plakken na het einde, kan zo een grote tijdswinst opleveren. Het is weeral een kolom minder waarvan de distributie aangeleerd moet worden. </p>
<p>Kolommen bevriezen, impliceert weliswaar een voorwaarde: ofwel dat de gesynthetiseerde dataset even lang moet zijn als de originele zodat de dimensies overeenkomen, ofwel dat de gegevens in de bevroren kolom(men) helemaal willekeurig verdeeld zijn, dus op geen enkele manier gesorteerd of gegroepeerd, zodat de bevroren kolom(men) zonder effect op de gegevensdistributie kunnen verkort of verlengd worden. Dat laatste kan echter moeilijk te bewijzen zijn.</p>
<p>Maar zeker als het de bedoeling is dat een gesynthetiseerde dataset even groot is als de originele, wat toch vaak voorkomt, is het een enorm grote tijdswinst als van een dataset met 60 kolommen, er slechts 6 moeten gesynthetiseerd worden om een voldoende gescramblede dataset te krijgen. Bovendien zal een generatief model met minder kolommen meestal ook accurater getraind kunnen worden, dus is het resultaat waarschijnlijk zelfs kwalitatief beter. Eventueel kan de synthetische dataset achteraf nog eens geshuffled worden om enige overgebleven structurele gelijkenis met de originele dataset te verbergen. </p>



<h2 class="wp-block-heading">Rapportering en grafieken</h2>



<p>De gescramblede dataset moet nog vergeleken worden met het origineel, om te verifiëren dat de procedure wel goed verlopen is en of er bepaalde parameters beter aangepast zouden kunnen worden. Het visualiseren van datasets is een uitdaging op zich, waarbij rekening moet worden gehouden met het type van variabele en de waarden die ze kan aannemen. Boxplots zijn vaak een goede keuze voor continue variabelen, en staafdiagrammen voor categorische variabelen. Daarbij moet aandacht worden besteed aan de assen, die overeen moeten komen om in een oogopslag te kunnen vergelijken. Het kan nodig zijn hier en daar extra te groeperen of aggregeren om grafieken van complexe categorische variabelen overzichtelijk te houden. Voor de verbanden tussen twee variabelen kan men verschillende vormen van bivariate plots, heatmaps en correlatiematrices benutten. Werkt men in Python dan zijn <a href="https://matplotlib.org/">matplotlib </a>en <a href="https://seaborn.pydata.org/tutorial.html">seaborn</a> nuttige grafische libraries. </p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2022/03/2022-03-23_13h13_51.png"><img loading="lazy" decoding="async" width="1024" height="684" src="/wp-content/uploads/2022/03/2022-03-23_13h13_51-1024x684.png" alt="" class="wp-image-17156" srcset="https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h13_51-1024x684.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h13_51-300x200.png 300w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h13_51-768x513.png 768w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h13_51.png 1355w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Drie generatieve modellen uit de <a href="https://sdv.dev/">SDV library</a> toegepast op de <a href="https://www.kaggle.com/uciml/adult-census-income">Adult Census Income</a> dataset: een statistisch model (links), deep learning model (rechts), en combinatie van de twee (midden). Enkele variabelen worden geplot als staafdiagrammen, met de distributies van originele data in blauw en synthetische data in oranje. De distributies van individuele variabelen worden approximatief benaderd maar hier en daar zijn er nog merkbare verschillen: er is mogelijk nog ruimte voor verdere optimalisatie door het finetunen van enkele parameters.</figcaption></figure>



<h1 class="wp-block-heading">Conclusie</h1>



<p>Met synthetische data generatoren hebben we een krachtige tool in handen om data scrambling te kunnen doen. We kunnen er bovendien meer mee dan enkel de gegevens door elkaar haspelen: desgewenst interpoleren ze ook tussen minimum- en maximumwaarden, of tussen datums, en zo kunnen ze ook fictieve gegevens genereren volgens dezelfde structuur als de originele dataset. Het aanmaken van een echt goede synthetische dataset vergt vaak een iteratieve aanpak, om het achterliggend generatief model te finetunen. </p>



<p>We merken in de praktijk dat er heel wat <strong>extra checks en balances</strong> komen kijken bij het werken met echte datasets. Het is zelden zo dat een generatief model gegenereerd uit een willekeurige dataset met default parameters, vanaf de eerste keer optimaal is. Met name erg ongelijke distributies zorgen voor problemen in het leerproces en voor statistische instabiliteit in het resulterende generatief model. Bij wijze van voorbeeld: als een dataset slechts 1 persoon bevat met een zeldzame ziekte, en het is toevallig een 43-jarige Limburger, dan riskeren we dat het systeem leert dat alle personen met deze ziekte per definitie 43-jarige Limburgers moeten zijn. Bovendien merken we dat we de beste resultaten bekomen als een dataset weinig variabelen heeft, en voor elke waarde van elke variabele veel datapunten (rijen, samples). Dit alles maakt dat we de beste resultaten vaak bekomen door zoveel mogelijk kolommen te bevriezen, en het aantal te scramblen kolommen te beperken tot het minimum noodzakelijke om het doel van scrambling te bereiken. Die oefening kan voor elke dataset anders zijn. </p>



<p>Een vraag die regelmatig terugkomt is: kunnen we <strong>dezelfde analytics</strong> op de dusdanig gescramblede / gesynthetiseerde dataset loslaten en leidt dat dan tot dezelfde conclusies? Het antwoord is: het hangt ervan af hoe diep je wilt gaan. De structuur van de gegevens wordt in het generatief model immers approximatief aangeleerd. Daarbij merken we: </p>



<ul class="wp-block-list">
<li>De statistieken en verdeling van individuele variabelen (minimum, maximum, gemiddelde etc.) blijven meestal <strong>relatief goed </strong>behouden,</li>



<li>De verbanden tussen twee variabelen (correlatie etc.) blijven <strong>matig </strong>behouden, en hoe gelijkmatiger en stabieler deze variabelen zijn verdeeld hoe beter dat dat lukt,</li>



<li>De verbanden tussen meerdere variabelen (regressies etc.) blijven <strong>relatief slecht</strong> behouden of gaan verloren.</li>
</ul>



<p>Voor complexe analyses zijn scrambled of synthetische data dus zeker <strong>geen drop-in replacement</strong> voor de echte data. Ze zijn wel erg nuttig voor het testen of ontwikkelen van data processing scripts of analyse-pipelines, omdat we wel een goed beeld hebben van welke waarden er allemaal voorkomen en in welk bereik deze vallen. </p>



<p>We hebben nog heel wat andere potentiële struikelblokken die we in de praktijk kunnen tegenkomen niet besproken. Er kunnen afhankelijkheden bestaan tussen rijen &#8211; bijvoorbeeld, een tabel die verschillende records bevat per persoon. Er kunnen ook verbanden zijn in de tijd &#8211; bijvoorbeeld datasets die bestaan uit opeenvolgende kwartalen, of datasets waarin de datums die voorkomen alleen maar werkdagen zijn en nooit weekenddagen, wat maakt dat je niet zomaar eender welke datum kan synthetiseren. Een dataset kan ook bestaan uit meerdere tabellen die met elkaar verbonden zijn. Zulke complexere problemen zijn mogelijk nog voer voor een vervolg-artikel later dit jaar.</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. &nbsp;Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Distributie van cloud services</title>
		<link>https://www.smalsresearch.be/distributie-van-cloud-services/</link>
		
		<dc:creator><![CDATA[Bert Vanhalst]]></dc:creator>
		<pubDate>Tue, 13 Oct 2020 14:20:53 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[hardware]]></category>
		<guid isPermaLink="false">/?p=14874</guid>

					<description><![CDATA[Al geruime tijd is er een tendens om meer en meer gebruik te maken van cloud services. De beweegredenen daartoe zijn onder andere de flexibiliteit waarmee services kunnen afgenomen worden (schaalbaarheid), een lagere kost (pay-per-use), maar ook snel gebruik kunnen maken van de innovatieve services die cloud providers aanbieden. De fysieke locatie van de public [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Al geruime tijd is er een tendens om meer en meer gebruik te maken van cloud services. De beweegredenen daartoe zijn onder andere de flexibiliteit waarmee services kunnen afgenomen worden (schaalbaarheid), een lagere kost (<em>pay-per-use</em>), maar ook snel gebruik kunnen maken van de innovatieve services die cloud providers aanbieden.</p>



<p>De fysieke locatie van de public cloud services was tot nu toe beperkt tot de datacenters van de public cloud provider. Maar nu zien we een tendens waarbij cloud services ook fysiek beschikbaar gesteld worden in het datacenter van de klant of edge locaties.</p>



<p>Het idee is om hiermee scenario’s te ondersteunen waarbij de fysieke locatie van de services er toe doet. Dat is bijvoorbeeld het geval in het kader van bepaalde regelgeving waarbij er vereisten zijn om gegevens op een specifieke locatie te hosten: in het eigen land of in het eigen datacenter. Een ander voorbeeld is het zorgen voor minder vertraging (<em>latency</em>) bij het afhandelen van requests: het feit dat de data dichter staat bij de locatie waar ze verwerkt wordt, kan zorgen voor een snellere afhandeling. Tenslotte kan ook de impact van algemene netwerkproblemen beperkt worden omdat alle benodigde componenten fysiek dicht bij elkaar draaien en niet afhankelijk zijn van externe netwerkverbindingen.</p>



<h2 class="wp-block-heading">Marktaanbod</h2>



<p>Vrijwel alle grote spelers hebben in dit kader een aanbod beschikbaar of in voorbereiding:</p>



<ul class="wp-block-list"><li>Amazon biedt met <a href="https://aws.amazon.com/outposts/">Outposts </a>een oplossing waarbij bepaalde AWS infrastructuur en diensten on-premises kunnen gehost worden. Het is een combinatie van hardware en software die door Amazon beheerd, gemonitored en geupdate wordt en geconnecteerd is met de dichtste AWS Region.</li><li><a href="https://www.ibm.com/cloud/satellite">IBM Cloud Satellite</a> kan gezien worden als een extensie van IBM’s public cloud en moet toelaten om toepassingen consistent te draaien over verschillende locaties heen (on-premises en een publieke cloud omgeving) met centraal beheer.</li><li><a href="https://cloud.google.com/anthos">Google Anthos</a> is een Kubernetes-gebaseerd software platform voor het beheer van container clusters, zowel on-premises als in de cloud (niet enkel de Google cloud). Ook hier is er een console voor centraal beheer van alle componenten.</li><li>Microsoft tenslotte biedt met <a href="https://azure.microsoft.com/nl-nl/overview/azure-stack/">Azure Stack</a> de mogelijkheid om Azure services en toepassingen te draaien in het eigen datacenter. Als klant koop je gecertifiëerde hardware van een Microsoft partner met vooraf geïnstalleerde Azure services. Er is de mogelijkheid om gedeeltelijk of volledig gedeconnecteerd te werken ten opzichte van de public cloud. Daarnaast biedt Microsoft ook verschillende Azure Cognitive Services aan onder de vorm van Docker containers die je lokaal (on-premises) kan draaien (zie verder).</li></ul>



<p>We zien verschillen in het aanbod van de leveranciers: in bepaalde gevallen gaat het over een puur software platform, in andere gevallen over een bundel van hardware en software. Maar telkens wordt de nadruk gelegd op de mogelijkheid om alle componenten centraal te beheren, los van de locatie waar ze fysiek draaien. Om die reden staan de “lokale” cloud services dan ook meestal nog in verbinding met de public cloud.</p>



<h2 class="wp-block-heading">Aandachtspunten</h2>



<p>De evolutie naar gedistribueerde cloud lijkt opportuniteiten te bieden, toch zijn er enkele aandachtspunten. Eerst en vooral moet nagegaan worden of de beoogde voordelen effectief gelden. Biedt een on-premises installatie bijvoorbeeld wel degelijk de nodige garanties omtrent data soevereiniteit? Cloud providers blijven namelijk in bepaalde gevallen verantwoordelijk voor het beheren, monitoren en updaten van de infrastructuur en hebben er aldus toegang toe. Ook moet er nagegaan worden wat de totale kost is van de oplossing en of de beoogde voordelen wel opwegen tegen die kost. Tenslotte bieden de leveranciers niet meteen al hun public cloud services aan in een gedistribueerde manier. Veel is nog in preview of in beta, of zelfs (nog) niet beschikbaar.</p>



<h2 class="wp-block-heading">Voorbeeld</h2>



<p>Een voorbeeld van een public cloud service die ook on-premises ter beschikking kan gesteld worden is de <a href="https://docs.microsoft.com/en-us/azure/cognitive-services/cognitive-services-container-support">Azure Cognitive Services Speech container</a> van Microsoft. Concreet biedt Microsoft een Docker container aan die om het even waar kan gedraaid worden, dus ook on-premises. De container biedt dezelfde API-functionaliteit als de public cloud API. Enige voorwaarde is dat er een link moet zijn met de Azure cloud omwille van billing. De kosten voor het gebruik van de container zijn dezelfde als die van de public cloud service volgens een pay-per-use model. Aandachtspunt is de beveiliging: de lokale API die de container aanbiedt is standaard niet beveiligd, er is bijvoorbeeld geen toegangscontrole. Dat moet je dus zelf nog voorzien.</p>



<p>Een kort experiment toont aan dat de container vlot te installeren is en het gebruik van de API inderdaad gelijkaardig is aan de public cloud service. Wel moet er per taal een aparte container geïnstalleerd worden terwijl de public cloud API de taal aanvaardt als input-parameter. Ook sta je als klant zelf in voor de onderliggende infrastructuur en deployment van updates.</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>Om bepaalde redenen kan het wenselijk zijn om cloud services op een specifieke locatie te draaien. Meer en meer bieden cloud providers de mogelijkheid om cloud services beschikbaar te stellen in het eigen datacenter. Het is een trend die mogelijkheden lijkt te bieden, al moeten we erover waken dat deze voordelen ook echt gelden en de totale kost niet uit het oog verliezen.</p>



<hr class="wp-block-separator"/>



<p><em>Dit is een ingezonden bijdrage van Bert Vanhalst, IT consultant bij Smals Research. &nbsp;Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
