<?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>Productivity &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/productivity/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Wed, 15 Apr 2026 14:43:05 +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>Productivity &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Legacy &#038; IA : Voyagez dans le Temps depuis votre Terminal</title>
		<link>https://www.smalsresearch.be/legacy-ai-voyagez-temps-terminal/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 14 Apr 2026 09:48:59 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=28963</guid>

					<description><![CDATA[Depuis l'essor de l'engouement pour les grands modèles de langage, la plupart des développeurs ont sans doute déjà pu constater le gain de productivité que ces outils peuvent offrir, à condition de les utiliser correctement. Dans cet article de blog, nous explorons la possibilité d'aller plus loin : l'IA offre-t-elle une aide suffisante afin de maîtriser le legacy code ?]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj.png"><img fetchpriority="high" decoding="async" width="1024" height="1024" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1024x1024.png" alt="" class="wp-image-27693" style="width:274px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1024x1024.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-768x768.png 768w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1536x1536.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text no-top-margin" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">Depuis l&#8217;essor de l&#8217;engouement pour les grands modèles de langage, la plupart des développeurs ont sans doute déjà pu constater le gain de productivité que ces outils peuvent offrir, à condition de les utiliser correctement. Dans cet article de blog, nous explorons la possibilité d&#8217;aller plus loin&nbsp;: l&#8217;IA offre-t-elle une aide suffisante afin de maîtriser le legacy code&nbsp;?</p>



<span id="more-28963"></span>



<p class="justify-text">Le recours aux grands modèles de langage <a href="https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/">(Large Language Model &#8211; LLM)</a> en programmation est en effet bien connu à présent&nbsp;: cela va de la formulation de questions à un chatbot (&#8220;comment écrire un algorithme dans Java qui&#8230;&#8221;), à un <a href="https://www.smalsresearch.be/llms-pour-code/"><em>code completion</em> de plus en plus intelligent et étendu</a> (saisie automatique de ce que vous souhaitez taper dans l&#8217;éditeur), jusqu&#8217;au <a href="https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/"><em>vibe coding</em> complet </a>(dans l&#8217;IDE, ou même simplement dans un terminal)&nbsp;: des agents IA rédigent, à l&#8217;aide de prompts, des pans entiers de code sur votre machine &#8211; oui, même des applications fonctionnelles.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%">
<p class="justify-text">Cette méthode de travail a déjà été décrite <a href="https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/">dans un article de blog précédent</a>, et le mises en garde, les points auxquels il faut prêter attention, restent d&#8217;actualité&nbsp;: surveiller en permanence, remettre les choses en question, vérifier, et fournir à l&#8217;IA la bonne quantité de contexte utile (un art en soi). Cependant, le traitement du <strong><em>code legacy</em></strong> pose encore un certain nombre de problèmes supplémentaires :</p>



<ul class="wp-block-list">
<li class="justify-text">Il ne s&#8217;agit pas d&#8217;une nouvelle construction (ou <em>greenfield</em>)&nbsp;: les décisions du passé, souvent obscures, ont un impact considérable.</li>



<li class="justify-text">Dans de nombreux cas, il existe déjà une masse de code.</li>



<li class="justify-text">Souvent, la compilation, l’exécution et le test du code nécessitent une technologie spécifique, qui est elle-même obsolète et parfois difficile à installer ou à simuler.</li>



<li class="justify-text">En tant qu’humain, on n’est souvent plus au courant du comment et du pourquoi de la base de code existante, ce qui rend plus difficile l’évaluation critique des résultats de l’IA.</li>
</ul>
</div>



<div class="wp-block-column is-style-section-1 has-accent-5-background-color has-background is-layout-flow wp-container-core-column-is-layout-43dc041e wp-block-column-is-layout-flow is-style-section-1--1" style="border-width:2px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;flex-basis:70%">
<h3 class="wp-block-heading is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-right:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);margin-left:var(--wp--preset--spacing--20)"><span style="text-decoration: underline;">Vibe coding&nbsp;: quelques conseils</span></h3>



<p class="justify-text has-small-font-size" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><em>Nous avons déjà découvert ces astuces simples dans le cadre de notre travail sur le code legacy et l&#8217;IA, mais elles s&#8217;appliquent plus largement à tous les projets de Vibe Coding.</em></p>



<ul class="wp-block-list">
<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Nettoyage en profondeur&nbsp;: avant de laisser une IA se pencher sur une base de code, vous devez vous assurer qu&#8217;elle ne contient aucune donnée privée, aucun mot de passe ni aucune autre information sensible&nbsp;!</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Planification&nbsp;: demandez des options et reportez l&#8217;exécution. En effet, lorsqu&#8217;on maîtrise soi-même ce que l&#8217;on souhaite réaliser, on a certainement déjà une idée précise de l&#8217;objectif à atteindre. Il peut toutefois s&#8217;avérer utile de commencer une conversation avec l&#8217;IA en gardant l&#8217;esprit ouvert et de lui demander des idées et des options (par exemple en matière d&#8217;architecture ou de technologie utilisée) pour concrétiser sa vision générale (tout en précisant à l&#8217;IA, parfois trop zélée, qu&#8217;il ne s&#8217;agit encore que de planification). Demandez spécifiquement plusieurs suggestions&nbsp;! Cela peut aider à réfléchir ensemble et à enrichir vos propres idées avec davantage d’inspiration. Au fil de la conversation, explorez plus en profondeur les options qui vous plaisent le plus, puis n’ajoutez votre expertise personnelle que pour affiner les idées de l’IA, jusqu’à ce qu’un plan d’action concret et aussi optimal que possible ait vu le jour. Ce n’est qu’ensuite que nous passerons à une mise en œuvre effective..</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Indirection et outils. En particulier lorsque vous travaillez via une CLI (Command Line Interface), ni vous ni l’IA n’avez immédiatement conscience de tous les outils existants qui pourraient être exploités pour atteindre vos objectifs. Laissez l’IA rechercher les outils susceptibles de vous aider, et aidez-la à les installer. Plus vous pouvez accomplir de tâches à l&#8217;aide d&#8217;outils, moins le contexte est encombré par un travail &#8220;manuel&#8221; inutile effectué par l&#8217;IA elle-même (sans parler des économies réalisées en termes de consommation de tokens). Il existe par exemple toutes sortes d&#8217;outils d&#8217;analyse statique de code permettant d&#8217;évaluer et de maintenir la qualité des lignes de code que vous écrivez. L&#8217;IA n&#8217;a souvent aucun mal à mettre en œuvre bon nombre des suggestions fournies après l&#8217;analyse.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Mode Expert&nbsp;: parfois, les outils standard ne suffisent pas pour aider suffisamment l&#8217;IA à accomplir ce que vous souhaitez qu&#8217;elle fasse. Dans ce cas, vous pouvez d&#8217;abord laisser l&#8217;IA écrire ses propres outils. De cette manière, il est possible de s&#8217;assurer que le résultat, ou l&#8217;output de l&#8217;outil, soit concis et synthétique pour les tâches suivantes, afin de ne pas surcharger le contexte. Les <em>context windows</em> des LLM s&#8217;agrandissent certes de plus en plus, mais il faut tout de même veiller à ce qu&#8217;elles ne contiennent que les éléments les plus utiles (attention au <a href="https://redis.io/blog/context-rot/"><em>context rot</em></a>).</li>
</ul>
</div>
</div>



<p>Nous avons donné une définition très large du code legacy dans un <a href="https://www.smalsresearch.be/code-herite-meilleures-pratiques-ia/">précédent article de blog</a>. Commençons donc par préciser ce que nous entendons par &#8220;legacy&#8221; et par mieux illustrer le &#8220;degré de difficulté&#8221; des projets legacy.</p>



<h2 class="wp-block-heading">&#8220;Ancien&#8221; code&nbsp;: une multitude de possibilités</h2>



<p class="justify-text">Il n’existe pas vraiment de définition officielle du code legacy&nbsp;; généralement, on parle de l’utilisation d’une technologie qui n’est plus prise en charge, difficile à maintenir, ou simplement de &#8220;code dont on hérite de quelqu’un d’autre&#8221;. Il s’agit évidemment toujours de code encore en service, et donc important. Ironiquement, les applications les plus critiques sont souvent celles qui existent depuis des années et auxquelles on &#8220;fait confiance&#8221; depuis longtemps, mais sans les entretenir correctement.</p>



<p class="justify-text">L&#8217;IA peut nous aider à entretenir n&#8217;importe quel code ; nous allons donc présenter un spectre allant du code legacy le plus ancien et le plus problématique au code de projets ne nécessitant qu&#8217;une petite mise à jour. À une extrémité du spectre, on trouve des programmes écrits dans des langages de programmation obsolètes, selon une architecture dépassée, utilisant des bases de données qui ne sont plus d’actualité et fonctionnant sur des serveurs équipés de systèmes d’exploitation qui ne sont plus pris en charge&nbsp;: avec ces géants, on doit souvent craindre une défaillance critique à la moindre modification erronée. À l’autre extrémité, on trouve des logiciels assez bien entretenus, mais qui utilisent une bibliothèque logicielle qui n’est plus la version la plus récente&nbsp;: il est généralement très facile de les remettre entièrement à jour. Enfin, quelque part entre les deux, on trouve des applications pour lesquelles la plupart des développeurs n’utiliseraient pas encore le terme<em> Legacy</em>, mais qui nécessitent néanmoins des migrations complexes, avec par exemple un ou deux frameworks obsolètes à remplacer.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-scaled.png"><img decoding="async" width="1024" height="506" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-1024x506.png" alt="" class="wp-image-27634" style="width:1301px;height:auto"/></a></figure>



<p class="justify-text">Que pouvons-nous en faire&nbsp;? Les LLM offrent-ils d&#8217;autres possibilités en fonction de la position du projet sur ce spectre&nbsp;? Jusqu&#8217;à présent, nos recherches se sont concentrées sur la partie gauche de ce spectre&nbsp;; la suite de cet article portera donc davantage sur les possibilités d&#8217;aborder le &#8220;véritable&#8221; legacy. Plus tard dans l&#8217;année, nous approfondirons également ce que nous pouvons faire en matière de migrations et d&#8217;updates.</p>



<h2 class="wp-block-heading">Utilisation des LLM sur des bases de code legacy</h2>



<p class="justify-text">Il est clair qu&#8217;un simple prompt &#8220;réécris ce programme selon les normes modernes&#8221; ne fonctionnera pas (même si certains fournisseurs affirment que cela sera bientôt possible). Nous devrons poser des questions un peu plus concrètes et décomposer le travail en plusieurs étapes. Il y a en fait deux choses que nous pouvons faire avec notre code legacy&nbsp;: le réécrire et le documenter.</p>



<h3 class="wp-block-heading">Réécriture du code legacy</h3>



<p class="justify-text">Lorsque nous commençons à réécrire du code, nous devons souvent tenir compte du fait que la reconstruction complète d’un très grand projet est une tâche trop difficile. Il est possible d’obtenir des &#8220;quick wins&#8221; en réécrivant stratégiquement certaines parties d’un projet, qui seront ensuite réutilisées dans un contexte plus large, où une équipe humaine et l’IA reconstruiront l’application dans les règles de l’art. Nos expériences nous ont montré qu’il était trop ambitieux d’attendre de l’IA qu’elle utilise une architecture entièrement nouvelle tout en traduisant l’ancien code vers le nouveau. En revanche, il est possible de &#8220;vibe coder&#8221; une grande partie de la charpente typique d’un nouveau projet, puis d’y injecter de manière ciblée un certain nombre de morceaux de code qui sont des traductions de parties d’un projet legacy. En tant qu’êtres humains, notre tâche consiste à indiquer clairement quelle architecture nous attendons et quelles sont les règles de qualité du code nouveau.</p>



<p class="justify-text">L&#8217;un des principaux défis liés à la réécriture de code à l&#8217;aide de l&#8217;IA consiste à tester l&#8217;exactitude de la traduction&nbsp;: le code fait-il toujours ce qu&#8217;il faisait auparavant (indépendamment du fait que cela soit souhaitable, car même le business case peut parfois être trop obsolète dans le cas d&#8217;un projet legacy)&nbsp;? Pour les projets relativement récents, il existe déjà de nombreux tests que nous pouvons effectuer pour vérifier l&#8217;exactitude, mais avec les anciens systèmes legacy, nous sommes souvent confrontés au problème que l&#8217;application est simplement testée en production, ou du moins avec des données de production&nbsp;: il n&#8217;y a pas de tests spécifiques ni même de données de test pouvant être utilisées en toute sécurité. Dans ce cas, il s&#8217;agit de créer un environnement dans lequel nous pouvons tester le nouveau code en toute sécurité, ce qui est généralement un travail ad hoc et demande une certaine créativité. Nous ne pouvons pas envoyer de données de production vers le cloud, nous devons donc nous assurer que le LLM ne puisse pas les lire. Ce serait plus simple si nous pouvions utiliser des LLM fonctionnant en local, mais pour l&#8217;instant, ceux-ci ne sont pas encore assez puissants (quand ils sont disponibles) pour effectuer des tâches aussi complexes avec du code legacy.</p>



<p class="justify-text">L&#8217;interface utilisateur constitue un autre défi&nbsp;: dans les projets plus anciens, celle-ci est souvent obsolète et il faut construire une nouvelle GUI à partir de zéro. Cela pose toutefois le problème de ne plus disposer d&#8217;une base de référence dans l&#8217;ancien projet&nbsp;: la nouvelle interface devra généralement être testée manuellement par des personnes. J&#8217;espère toutefois que nous verrons des progrès dans ce domaine dans un avenir proche, en ce qui concerne les possibilités de l&#8217;IA. En effet, nous voyons déjà apparaître des systèmes capables de contrôler l&#8217;intégralité de votre ordinateur (comme OpenClawd), et l&#8217;intégration avec des frameworks plus traditionnels pour le test d&#8217;une interface graphique fait également partie des possibilités.</p>



<p class="justify-text">Enfin, les petits projets legacy constituent également un domaine où nous pouvons obtenir des résultats rapides. Si nous utilisons un programme legacy petit à moyen, doté de fonctionnalités limitées et d’une GUI simple, ou présentant un input et un output clairs en cas de batch processing, et qu’il n’existe aucun business case justifiant son intégration dans une autre méthode de travail, nous pouvons alors tenter une approche directe pour construire une version moderne dans un nouveau langage de programmation à l’aide de l’IA. Dans ce cas, il faudra tout de même bien tester et adopter une approche structurée avec un accompagnement des développeurs humains, mais il est possible d&#8217;essayer cette méthode pour des applications non critiques. Une application à usage interne, par exemple, constitue généralement un bon premier candidat.</p>



<h3 class="wp-block-heading">Documentation du code legacy</h3>



<p class="justify-text">Parfois, la réécriture du code legacy avec l&#8217;IA est un peu trop ambitieuse, ou nous avons besoin de plus d&#8217;informations avant de nous y risquer. Il peut être intéressant de se tourner d’abord vers la documentation&nbsp;: l’IA peut également nous aider à faire en sorte que l’exploration d’une base de code legacy ressemble un peu moins à de l’archéologie de haut niveau.</p>



<p class="justify-text">Expliquer un morceau de code de petite à moyenne taille et en extraire la logique business, ou analyser un morceau plus important et en expliquer la structure et l’architecture, tout cela est tout à fait possible avec les grands modèles de langage actuels. Il est toutefois possible d’aller plus loin&nbsp;: il est possible de créer des outils d’IA pour l&#8217;aider à explorer la base de code et, par exemple, à générer des diagrammes illustrant les dépendances entre les segments de code. Ou bien on peut lui faire écrire des scripts afin de structurer soigneusement ses conclusions après chaque analyse dans un fichier texte pour elle-même et un PDF destiné à l’utilisateur humain.</p>



<p class="justify-text">Il est également possible d&#8217;adopter une approche hiérarchique&nbsp;: commencer par explorer la base de code, puis approfondir progressivement l&#8217;analyse des différents modules afin d&#8217;obtenir de plus en plus de détails et de compléter l&#8217;analyse. Il s&#8217;agit là de l&#8217;approche top-down, que nous pouvons toutefois compléter par une version bottom-up&nbsp;: une fois que nous sommes allés en profondeur, nous pouvons à nouveau demander un résumé afin de construire une présentation mieux documentée de la situation dans son ensemble.</p>



<p class="justify-text">Il est toutefois important ici de savoir à l&#8217;avance ce que nous souhaitons exactement atteindre. Une analyse générale d’une base de code par l’IA peut s’avérer intéressante lorsque les utilisateurs humains ne connaissent pas du tout le système et souhaitent disposer de points de repère pour se familiariser avec celui-ci.</p>



<p class="justify-text">Cependant, lorsque l&#8217;objectif est de pouvoir assurer la maintenance de la base de code, il est préférable de mettre en place un système proposant un chatbot qui connaît le contexte spécifique et les particularités du projet legacy, et qui peut répondre à des questions très ciblées à ce sujet. Cela est possible, par exemple, dans CoPilot Studio. Si cela ne fonctionne pas correctement, il est possible d&#8217;envisager de construire manuellement une knowledge base en utilisant l&#8217;IA qui pourra ensuite être utilisée par l&#8217;IA pour répondre aux questions.</p>



<p class="justify-text">Une autre option consiste à extraire des informations spécifiques de la base de code, telles que la logique business par module individuel, ou du pseudocode pouvant aider les développeurs humains à réimplémenter cette logique dans un autre projet. (Et bien sûr, une IA peut également être mise à contribution lors de cette deuxième étape).</p>



<p class="justify-text">Avec une touche de créativité, nous pouvons concevoir une meilleure approche pour la plupart des analyses ad hoc que celle consistant à &#8220;se contenter d’analyser à tout va&#8221;. Et la documentation d’un système legacy peut tout simplement constituer une première étape vers sa réécriture.</p>



<p></p>



<p></p>



<h2 class="wp-block-heading" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)">Conclusion&nbsp;: professionnels recherchés</h2>



<figure class="wp-block-image alignright size-large is-resized is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-scaled.png"><img decoding="async" width="1024" height="559" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1024x559.png" alt="" class="wp-image-27699" style="aspect-ratio:1.8333516399024625;object-fit:contain;width:546px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1024x559.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-300x164.png 300w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-768x419.png 768w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1536x838.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-2048x1117.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text no-top-margin">Comme mentionné précédemment, les LLM nous offrent progressivement des possibilités très puissantes pour traiter nos bases de code legacy, surtout lorsque nous avons accès aux modèles volumineux et puissants disponibles aujourd’hui. Nous constatons toutefois qu’il s’agit en réalité d’une boîte à outils très bien fournie, comprenant plusieurs &#8220;power tools&#8221; puissants, et que nous devons savoir ce que nous voulons en faire et comment les utiliser au mieux.</p>



<p class="justify-text">Tout n’est pas encore entièrement automatisé&nbsp;: nous aurons donc toujours besoin de bons professionnels pour tirer le meilleur parti de ces outils. Notre conseil aux développeurs est de ne surtout pas avoir peur de l’IA et de l’utiliser régulièrement lors de l’analyse et du développement de logiciels&nbsp;: l’expérience est la meilleure école pour former les bons professionnels dont nous avons besoin dans ce domaine.</p>



<p class="justify-text">Pour l’instant, la conclusion est donc la suivante&nbsp;: pour le code legacy, l’IA n’est pas une panacée, mais une boîte à outils pratique qu’il vaut mieux essayer dans le cadre d’une approche plus large. Comme indiqué, nous nous pencherons plus tard dans l&#8217;année sur le milieu et la partie droite du spectre du code legacy. Nous pensons qu&#8217;il existe ici davantage de possibilités d&#8217;automatisation de certains workflows, surtout si nous exploitons davantage les agents. Il est donc possible que, pour des projets un peu plus simples et répétitifs, nous puissions évoluer du &#8220;professionnel&#8221; vers &#8220;l&#8217;usine&#8221;.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Legacy &#038; AI: Tijdreizen in je Terminal</title>
		<link>https://www.smalsresearch.be/legacy-ai-tijdreizen-in-je-terminal/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 07:56:17 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=27622</guid>

					<description><![CDATA[Sinds de hype van grote taalmodellen is losgebarsten, zullen de meeste ontwikkelaars ondertussen al wel geproefd hebben van de productiviteitswinst die deze tools, mits correct gebruik, kunnen bieden. In deze blog onderzoeken we of we verder kunnen gaan dan dat: biedt het AI ook voldoende hulp bij het beheersen van Legacy Code?]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1024x1024.png" alt="" class="wp-image-27693" style="width:274px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1024x1024.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-768x768.png 768w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1536x1536.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text no-top-margin" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">Sinds de hype van grote taalmodellen is losgebarsten, zullen de meeste ontwikkelaars ondertussen al wel geproefd hebben van de productiviteitswinst die deze tools, mits correct gebruik, kunnen bieden. In deze blog onderzoeken we of we verder kunnen gaan dan dat: biedt AI ook voldoende hulp bij het beheersen van Legacy Code?</p>



<span id="more-27622"></span>



<p class="justify-text">Het inzetten van <a href="https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/" data-type="post" data-id="24386">Large Language Models (LLM)</a> bij het programmeren is inderdaad ondertussen stilaan goed gekend: het gaat van vragen stellen aan een chatbot (&#8220;hoe schrijf ik in Java een algoritme dat &#8230; &#8220;), overheen steeds <a href="https://www.smalsresearch.be/llms-voor-code/" data-type="post" data-id="18875">slimmere en langer wordende <em>code completion</em></a> (automatisch aanvullen wat je wil typen in de editor), tot <a href="https://www.smalsresearch.be/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">volledige <em>vibe coding</em></a> (in de IDE, of zelfs gewoon in een terminal): AI agenten, via prompts, hele stukken code &#8211; ja, zelfs werkende toepassingen &#8211; laten schrijven op je machine.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%">
<p class="justify-text">Deze manier van werken beschreven we reeds <a href="https://www.smalsresearch.be/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">in een vorige blogpost</a>, en de caveats, zaken waarop men moet letten, gelden nog steeds: blijf continu opvolgen, stel zaken in vraag, controleer, en geef de juiste hoeveelheid nuttige context mee aan het AI (een kunst op zich). Voor het behandelen van <strong><em>legacy code</em></strong>, stellen er zich echter nog een aantal verdere problemen:</p>



<ul class="wp-block-list">
<li class="justify-text">Het is geen nieuwbouw (of <em>greenfield</em>): er is erg veel impact van &#8211; vaak obscure &#8211; beslissingen uit het verleden.</li>



<li class="justify-text">In veel gevallen is er reeds een massa code aanwezig.</li>



<li class="justify-text">Vaak vraagt het com- pileren, uitvoeren en testen van de code specifieke technologie, die zelf verouderd is en soms moeilijk te in-stalleren of simuleren.</li>



<li class="justify-text">Je bent als mens vaak niet meer onderwezen in het hoe en waarom van de bestaande codebase, waardoor het moeilijker wordt de resultaten van het AI kritisch te be-oordelen.</li>
</ul>
</div>



<div class="wp-block-column is-style-section-1 has-accent-5-background-color has-background is-layout-flow wp-container-core-column-is-layout-43dc041e wp-block-column-is-layout-flow is-style-section-1--2" style="border-width:2px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;flex-basis:70%">
<h3 class="wp-block-heading is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-right:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);margin-left:var(--wp--preset--spacing--20)"><span style="text-decoration: underline;">Vibe Coding: Een aantal Tips</span></h3>



<p class="justify-text has-small-font-size" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><em>Deze eenvoudige truukjes ondervonden we reeds bij ons werk rond Legacy Code &amp; AI, maar zijn breder toepasbaar naar alle Vibe Coding projecten.</em></p>



<ul class="wp-block-list">
<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Grote Schoonmaak: vóór je een AI loslaat op een codebase, moet je ervoor zorgen dat er geen privégegevens, paswoorden, of andere gevoelige informatie in te vinden zijn!</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Planning: vraag om opties en stel executie uit. Als je zelf bedreven bent in wat je wil doen, heb je vast en zeker al een idee van waar je precies naartoe wilt. Het kan echter soms lonen om je gesprek met het AI heel open van geest te beginnen en te vragen naar ideeën en opties (b.v. qua architectuur of gebruikte technologie) om je algemene visie te bewaarlijken (waarbij je het soms overijverige AI ook duidelijk maakt dat er alleen nog maar wordt gepland). Vraag specifiek naar meerdere suggesties! Dit kan helpen bij het brainstormen, en om je eigen ideeën aan te vullen met meer inspiratie. In het vervolg van het geprek ga je dan dieper in op de opties die je het meeste aanstaan, en dan pas vul je aan met je eigen expertise om de ideeën van het AI bij te sturen, tot er een concreet plan van actie is ontstaan dat zo optimaal mogelijk is. Pas daarna gaan we over tot effectieve implementatie.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Indirectie en Tools. Zeker als je via een CLI (Command Line Interface) werkt, zijn zowel jij als het AI zich niet meteen bewust van alle mogelijke reeds bestaande tools die zouden kunnen worden geëxploiteerd om je doelen te bereiken. Laat het AI zoeken naar tools die zouden kunnen helpen, en helpen bij de installatie ervan. Hoe meer zaken je via tools kan doen, hoe minder de context wordt vervuild met nodeloos &#8220;manueel&#8221; werk door het AI zelf (om nog maar te zwijgen van de besparing qua token gebruik). Zo bestaan er b.v. allerlei <a href="https://en.wikipedia.org/wiki/Static_program_analysis">static code analysis tools</a> die je kan gebruiken om de kwaliteit van je geschreven code te evalueren en hoog te houden. Het is vaak een koud kunstje voor het AI om heel wat van de gegeven suggesties na de analyse uit te voeren.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Expert Mode: soms volstaan standaard tools niet om het AI voldoende te helpen bij wat je wil dat het doet. In dat geval kan je het AI eerst diens eigen tools laten schrijven. Daar kan je erbij voor zorgen dat het resultaat, of de output van de tool, iets is wat kort en samenvattend is voor de verdere taken, om de context niet teveel te belasten. Context windows van LLMs worden weliswaar steeds groter, maar dan nog moet je ervoor zorgen dat enkel de nuttigste zaken erin zitten (pas op voor <a href="https://redis.io/blog/context-rot/">context rot</a>).</li>
</ul>
</div>
</div>



<p>In een vorige <a href="https://www.smalsresearch.be/legacy-code-trotseren-best-practices-ai/" data-type="post" data-id="21131">post rond legacy code</a>, gaven we een erg brede definitie. Laten we dus vooreerst iets duidelijker stellen wat we met Legacy bedoelen, en de &#8220;moei- lijkheidsgraad&#8221; van Legacy projecten beter illustreren.</p>



<h2 class="wp-block-heading">&#8220;Oude&#8221; code: een spectrum aan mogelijkheden</h2>



<p class="justify-text">Er is niet echt een officiële definitie van legacy code; meestal spreekt men van het gebruik van niet langer ondersteunde technologie, moeilijk te onderhouden, of simpelweg &#8220;code die je van iemand anders erft&#8221;. Het gaat uiteraard altijd wel om code die nog in gebruik, en dus belangrijk is. Ironisch genoeg, zijn het vaak de meest kritische toepassingen, die al jaren meegaan en waar men al jaren &#8220;op vertrouwt&#8221;, maar dan zonder ze goed te onderhouden.</p>



<p class="justify-text">AI kan ons helpen bij het onderhoud van eender welke code, dus we zullen een spectrum demonstreren dat van de oudste, ergste legacy code gaat, tot code van projecten die slechts een kleine update nodig heeft. Aan de ene kant van het spectrum heb je programma&#8217;s, geschreven in ouderwetse programmeertalen, volgens een achterhaalde architectuur, gebruik makend van databases die niet meer van deze tijd zijn, en draaiende op servers met niet langer ondersteunde besturingssystemen: bij deze mastodonten moet men vaak bang zijn dat ze kritisch zullen falen bij de kleinste verkeerde wijziging. Helemaal aan de andere kant heb je vrij goed onderhouden software, waarin een softwarebibliotheek wordt gebruikt die niet meer de meest recente versie is: meestal een koud kunstje om ze weer helemaal up-to-date te krijgen. Ergens in het midden vind je, ten slotte, toepassingen terug waarbij de meeste developers nog niet meteen het woord Legacy in de mond zullen nemen, maar waar wel moeilijke migraties dienen te gebeuren, met b.v. een verouderd framework of twee dat zou moeten worden vervangen.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-scaled.png"><img loading="lazy" decoding="async" width="1024" height="506" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-1024x506.png" alt="" class="wp-image-27634" style="width:1301px;height:auto"/></a></figure>



<p class="justify-text">Wat kunnen we hier nu mee? Bieden LLMs ons andere mogelijkheden naargelang de plaats van het project op dit spectrum? Ons onderzoek heeft zich tot nu toe op de linkerkant van dit spectrum gefocust, dus het vervolg van deze blogpost zal veeleer over de mogelijkheden gaan om &#8220;échte&#8221; Legacy aan te pakken. Later dit jaar gaan we ook verder uitdiepen wat we met migraties en updates kunnen doen.</p>



<h2 class="wp-block-heading">Gebruik van LLMs op Legacy Codebases</h2>



<p class="justify-text">Het is duidelijk dat de eenvoudige prompt &#8220;herschrijf mij dit programma volgens moderne standaarden&#8221; niet zal werken (al beweren sommige vendors dat dit eraan zit te komen). We zullen iets concretere zaken gaan vragen, en het werk ook enigszins in stukjes moeten kappen. Verder zijn er eigenlijk twee zaken die we kunnen gaan doen met onze legacy code: ze herschrijven en ze documenteren.</p>



<h3 class="wp-block-heading">Herschrijven van Legacy Code</h3>



<p class="justify-text">Als we beginnen met code herschrijven, zullen we er vaak rekening mee moeten houden dat een heel groot project voldoende goed herbouwen een te moeilijke opgave is. We kunnen &#8220;quick wins&#8221; behalen door strategisch een aantal zaken te gaan herschrijven van een project, en die stukken dan te gebruiken in een ruimere context, waarbij een team van mensen en AI de toepassing opnieuw bouwen volgens de regels van de kunst. Bij onze experimenten stelden we vast dat het een brug te ver was om van het AI te verwachten een volledig nieuwe architectuur te gebruiken, tegelijk met het vertalen van oude code naar nieuwe. Wat wel mogelijk is, is om heel wat van de typische scaffolding van een nieuw project te vibe coden, en daar dan gericht een aantal stukken code in te injecteren die vertalingen zijn van stukjes van een legacy project. Als mens is het onze taak om duidelijk aan te geven welke architectuur we verwachten, en wat de kwaliteitsregels zijn van de nieuw geschreven code.</p>



<p class="justify-text">Eén van de grotere uitdagingen bij het herschrijven van code met behulp van AI, is het testen van de correctheid van de vertaling: doet de code nog wat ze vroeger deed (los van het feit of dit wenselijk is, want zelfs de business case kan soms te verouderd zijn in geval van Legacy)? Bij redelijk nieuwe projecten zullen er reeds heel wat testen bestaan die we kunnen uitvoeren om de correctheid na te gaan, maar bij legacy hebben we vaak het probleem dat de toepassing eenvoudigweg wordt getest in productie, of op zijn minst met productiedata: er zijn geen specifieke tests of zelfs maar veilig bruikbare testdata. In dat geval komt het erop neer een omgeving te creëren waarin we de nieuwe code op een veilige manier kunnen testen, wat meestal ad hoc werk is en enige creativiteit vraagt. We mogen namelijk geen productiedata naar de Cloud sturen, dus we moeten ervoor zorgen dat het LLM deze niet kan lezen. Het zou eenvoudiger zijn als we lokaal draaiende LLMs zouden kunnen gebruiken, maar voorlopig zijn deze nog niet krachtig genoeg (als ze al beschikbaar zijn) om dergelijke complexe taken uit te voeren met legacy code.</p>



<p class="justify-text">Een andere uitdaging is de gebruikersinterface: bij oudere projecten is deze vaak achterhaald en moet er, vanaf de grond, een nieuwe GUI (Graphical User Interface) worden opgebouwd. Dat geeft echter het probleem dat je geen basis meer hebt in het oude project om mee te vergelijken: de nieuwe interface zal doorgaans manueel door mensen moeten worden getest. Ik verwacht echter dat we op dit vlak nog vorderingen zullen zien in de nabije toekomst, wat de mogelijkheden van het AI betreft. We zien namelijk al systemen opduiken die je volledige computer kunnen besturen (zoals <a href="https://openclawd.ai/">OpenClawd</a> of het <a href="https://www.anthropic.com/news/3-5-models-and-computer-use">&#8220;Computer Use&#8221; van Anthropic</a>), en ook integratie met meer traditionele raamwerken voor het testen van een GUI behoort tot de mogelijkheden.</p>



<p class="justify-text">Waar we, ten slotte, ook quick wins mee kunnen halen, zijn kleinere Legacy projecten. Als we een klein tot matig groot legacy programma gebruiken, met bepertke functionaliteit en een eenvoudige GUI of een duidelijke input en output in geval van batch processing, en geen business case om deze te integreren in een andere manier van werken, dan kunnen we een rechttoe rechtaan aanpak proberen om een moderne versie in een nieuwe programmeertaal te bouwen met AI. We moeten dan nog altijd goed testen en een gestructureerde aanpak hebben met bijsturingen door menselijke developers, maar het wordt wel feasible om dit voor niet-kritische toepassingen te gaan uitproberen. Een intern gebruikte toepassing is bijvoorbeeld een typische goede eerste kandidaat.</p>



<h3 class="wp-block-heading">Documenteren van Legacy Code</h3>



<p class="justify-text">Soms is herschrijven van Legacy met AI net iets te ambitieus, óf we hebben meer informatie nodig voor we er ons aan wagen. In dat geval kan het interessant zijn om eerst richting documentatie te kijken: het AI kan ons ook helpen om het verkennen van een legacy codebase net iets minder op archeologie voor gevorderden te doen lijken.</p>



<p class="justify-text">Van een klein tot matig stuk code uitleggen en er de business logica uithalen, of een groter stuk analyseren en de opbouw en architectuur uitleggen: dat kan met de huidige grote taalmodellen zonder meer. We kunnen echter verder gaan: we kunnen het AI tools laten bouwen om zichzelf te helpen de codebase te verkennen, en b.v. diagrammen te voorzien van de afhankelijkheden tussen de stukken code. Of we kunnen het scripts laten maken om de bevindingen na elk stuk analyse netjes te structureren in een tekstbestand voor zichzelf en een pdf voor de menselijke gebruiker.</p>



<p class="justify-text">We kunnen ook hiërarchisch werken: eerst een verkenning van de codebase doen, en dan telkens dieper duiken in de verschillende modules, om meer en meer detail te verkrijgen en de analyse aan te vullen. Dat is de top-down aanpak, die we echter kunnen aanvullen met een bottom-up versie: eens we tot in de diepte zijn gegaan, kunnen we weer zaken laten samenvatten om van het grotere plaatje een beter geïnformeerde uiteenzetting op te bouwen.</p>



<p class="justify-text">Hier is het wel van belang dat we van tevoren weten wat we precies willen bereiken. Een algemene analyse van een codebase door het AI kan interessant zijn wanneer de menselijke gebruikers het systeem nog totaal niet kennen en aanknopingspunten willen hebben om zaken te leren, maar biedt meestal weinig extra aan mensen die de codebase reeds beheersen.</p>



<p class="justify-text">Maar wanneer het doel is om de codebase te kunnen onderhouden, kunnen we eventueel een systeem opbouwen waarbij we een chatbot aanbieden die de specifieke context en bijzonderheden van het legacy project kent, en daar heel gerichte vragen over kan beantwoorden. Dit kan b.v. in <a href="https://adoption.microsoft.com/en-us/ai-agents/copilot-studio/">CoPilot Studio</a>. Wanneer dat niet goed genoeg werkt, kunnen we nog overwegen om manueel een knowledge base op te bouwen, gebruik makend van het AI, die dan weer door het AI kan worden gebruikt om vragen te beantwoorden.</p>



<p class="justify-text">Nog een andere optie bestaat eruit dat we specifieke informatie uit de codebase willen extraheren, zoals de business logica per afzonderlijke module, of pseudocode die menselijke developers kan helpen om de logica in een ander project te herimplementeren. (En uiteraard kan bij die tweede stap ook weer een AI worden ingezet.)</p>



<p class="justify-text">Kortom, met een beetje creativiteit kunnen we voor de meeste ad hoc analyses een betere aanpak verzinnen dan &#8220;analyseer er maar gewoon op los&#8221;. En het documenteren van een legacy systeem kan ook gewoon een eerste opstap zijn naar het herschrijven.</p>



<p></p>



<h2 class="wp-block-heading" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)">Besluit: vakmannen gevraagd</h2>



<figure class="wp-block-image alignright size-large is-resized is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-scaled.png"><img loading="lazy" decoding="async" width="1024" height="559" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1024x559.png" alt="" class="wp-image-27699" style="aspect-ratio:1.8333516399024625;object-fit:contain;width:546px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1024x559.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-300x164.png 300w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-768x419.png 768w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1536x838.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-2048x1117.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text no-top-margin">Zoals we hebben aan-gekaart, bieden LLMs ons stilaan erg krachtige mogelijkheden om onze Legacy Codebases aan te pakken, zéker wanneer we toegang hebben tot de grote en krachtige modellen die vandaag beschikbaar zijn. We zien echter ook dat het eigenlijk een heel goed gevulde gereedschapskoffer is, met een aantal krachtige &#8220;power tools&#8221;, en dat we moeten weten <em>wat </em>we ermee willen bereiken en <em>hoe </em>we deze best kunnen gebruiken.</p>



<p class="justify-text">We zitten nog niet op het punt dat alles automatisch gaat: we zullen dus nog steeds goede <em>vakmannen </em>nodig hebben om optimaal van dit gereedschap gebruik te maken. Onze raad aan developers is om zeker niet bang te zijn van AI en er geregeld gebruik van te maken bij de analyse en ontwikkeling van software: ervaring is de beste leerschool om de goede vakmannen die we hiervoor nodig hebben, op te leiden.</p>



<p class="justify-text">Voorlopig is dus het besluit: voor legacy code is AI geen wondermiddel, maar een handige gereedschapskist die je best kan uitproberen als deel van een bredere aanpak. Zoals gezegd kijken we later dit jaar eerder naar het midden en de rechterkant van het spectrum van legacy. Wij vermoeden dat hier meer mogelijkheden zijn tot automatisering van een aantal workflows, zeker als we ook dieper gebruik gaan maken van agents. Mogelijks kunnen we, voor iets eenvoudigere en repetitievere projecten, dus toch van &#8220;vakman&#8221; naar &#8220;fabriek&#8221; evolueren.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Made by Smals Research – Croisement des données à caractère personnel dans le respect de la vie privée</title>
		<link>https://www.smalsresearch.be/innovationsmals-croisement-des-donnees-a-caractere-personnel-dans-le-respect-de-la-vie-privee/</link>
		
		<dc:creator><![CDATA[Kristof Verslype]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 06:30:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Privacy by design]]></category>
		<category><![CDATA[privacy-enhancing technologies]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://staging.smalsresearch.be/?p=26246</guid>

					<description><![CDATA[En collaboration avec des universités de renommée internationale, Smals a travaillé sur un prototype visant à simplifier considérablement la pseudonymisation et le croisement des données personnelles à des fins secondaires grâce à la cryptographie avancée.]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar&nbsp;in het&nbsp;<a href="/innovatiesmals-privacyvriendelijk-kruisen-van-persoonsgegevevens/" data-type="post" data-id="21119">Nederlands</a>.</em></p>



<p>Les données personnelles numériques constituent une source d&#8217;informations qui favorise l&#8217;innovation, le bien-être et la formulation de politiques. Ces données personnelles se trouvent dispersées dans de nombreuses organisations&nbsp;: l&#8217;une détient des données sur le cancer, une autre sur la consommation de médicaments et une autre encore sur les revenus. Dans la pratique, les données personnelles provenant de différentes organisations sont régulièrement regroupées afin de répondre à des questions spécifiques posées par des chercheurs et des décideurs politiques.</p>



<p>Les processus actuels garantissent que le respect de la vie privée dans ce contexte. Il s&#8217;agit malheureusement trop souvent d&#8217;une opération complexe, coûteuse et chronophage. En collaboration avec des universités de renommée internationale, Smals Research a donc travaillé à l&#8217;élaboration d&#8217;un prototype visant à simplifier considérablement ces processus à l&#8217;aide d&#8217;une cryptographie avancée.</p>



<h1 class="wp-block-heading">Problématique basée sur un cas concret</h1>



<p>Nous sommes partis d&#8217;une <a href="https://www.ehealth.fgov.be/ehealthplatform/file/cc73d96153bbd5448a56f19d925d05b1379c7f21/5749691d1687866fa0e6852fe4536cb54f2bf4ad/20-020-n042-behandeling-herstellende-multiple-sclerose.pdf">question de recherche concrète</a>&nbsp;:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Les patients atteints de SEP (sclérose en plaques) sous traitement à base de molécules de tériflunomide ou d&#8217;alemtuzumab courent-ils un risque accru de cancer par rapport aux patients atteints de SEP traités avec d&#8217;autres médicaments&nbsp;?</em></p>
</blockquote>



<p>Pour répondre à cette question, simple en soi, il est nécessaire de croiser les données médicales relatives aux patients atteints de SEP provenant de deux organisations, à savoir le <a href="https://kankerregister.org/fr">Registre belge du cancer (BCR)</a> et l&#8217;<a href="https://www.ima-aim.be/">Agence InterMutualiste (AIM)</a>.</p>



<p>Les deux organisations gèrent les données sous des pseudonymes distincts pour plus de confidentialité ; des codes uniques remplacent les numéros de registre national.</p>



<ul class="wp-block-list">
<li>Le BCR gère les données relatives au cancer concernant les personnes qui ont reçu un diagnostic de cancer. Le BCR ne sait pas quels enregistrements concernent des patients atteints de SEP.</li>



<li>L&#8217;AIM dispose de données relatives aux médicaments prescrits et peut sélectionner les enregistrements des patients atteints de SEP.</li>
</ul>



<p>Les chercheurs doivent avoir accès, dans un environnement sécurisé (<a href="https://www.european-health-data-space.com/European_Health_Data_Space_Article_50_(Proposal_3.5.2022).html">SPE = Secure Processing Environment</a>), aux données provenant du BCR et de l&#8217;AIM concernant tous les patients atteints de SEP. Les données relatives à un même patient mais issues de sources différentes doivent pouvoir être reliées entre elles sur la base d&#8217;un pseudonyme unique utilisé uniquement dans le cadre de cette question de recherche spécifique. Ceci est représenté dans l&#8217;illustration 1.</p>



<figure class="wp-block-image aligncenter wp-image-24710"><a href="https://staging.smalsresearch.be/wp-content/uploads/2025/12/set.png"><img loading="lazy" decoding="async" width="598" height="154" src="https://staging.smalsresearch.be/wp-content/uploads/2025/12/set.png" alt="" class="wp-image-24710" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/set.png 598w, https://www.smalsresearch.be/wp-content/uploads/2025/12/set-300x77.png 300w" sizes="auto, (max-width: 598px) 100vw, 598px" /></a><figcaption class="wp-element-caption">Illustration 1&nbsp;: à gauche, l&#8217;ensemble des patients atteints de SEP, à droite, l&#8217;ensemble des citoyens ayant reçu un diagnostic de cancer. Seules les données relatives aux citoyens des deux régions vertes peuvent être divulguées sous forme pseudonymisée à l&#8217;environnement sécurisé.</figcaption></figure>



<p>La question centrale est la suivante&nbsp;:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Comment le BCR peut-il fournir uniquement des enregistrements sur les patients atteints de SEP à l&#8217;environnement sécurisé sans savoir qui est atteint de SEP ou quels enregistrements qu&#8217;il gère concernent des patients atteints de SEP&nbsp;?</em></p>
</blockquote>



<p>Dans une approche classique, soit le BCR enverra trop d&#8217;informations à l&#8217;environnement sécurisé – notamment des données sur chaque patient atteint d&#8217;un cancer –, soit des informations seront divulguées au BCR – qui découvrira alors quels enregistrements concernent des patients atteints de SEP. Une dernière possibilité consiste à faire appel à une entité centrale de confiance qui, certes, aura connaissance des données à caractère personnel, mais à qui l&#8217;on peut faire confiance pour ne pas en faire un usage illicite.</p>



<p>Aucune de ces approches n&#8217;est idéale. Aujourd&#8217;hui, tant au niveau national qu&#8217;international, on fait appel à des intermédiaires centraux fortement réglementés ou on opte pour des solutions sur mesure coûteuses et lentes, dans lesquelles un nouveau flux est défini, validé et mis en œuvre pour chaque question de recherche afin de protéger au maximum la vie privée.</p>



<p>De plus, le chercheur a généralement besoin d&#8217;accéder aux données brutes, ce qui rend les solutions basées sur le <a href="/secure-multiparty-computation-collectieve-berekeningen-op-verspreide-gevoelige-gegevens/">secure multi-party computation</a> inadaptées.&nbsp;</p>



<h1 class="wp-block-heading">Notre proposition de solution</h1>



<p>Partons d&#8217;un scénario fictif dans lequel nous travaillons avec un intermédiaire de confiance et où, pour simplifier, l&#8217;AIM et le BCR ne gèrent pas les données à caractère personnel sous des pseudonymes, mais sous des numéros de registre national. L&#8217;AIM et le BCR envoient tous deux toutes les données potentiellement pertinentes à l&#8217;intermédiaire de confiance.</p>



<p>Le BCR envoie à l&#8217;intermédiaire les données identifiées relatives au cancer de tous les citoyens qui ont reçu un diagnostic de cancer, ce qui est bien sûr beaucoup plus que ce dont le chercheur a besoin. L&#8217;intermédiaire reçoit également toutes les données identifiées relatives aux médicaments prescrits aux patients atteints de SEP de l&#8217;AIM et sait ainsi, sur cette base. </p>



<p><!--StartFragment --><span class="cf0">L&#8217;intermédiaire reçoit également toutes les données identifiées relatives aux médicaments prescrits aux patients atteints de SEP de l&#8217;AIM. Il sait ainsi quels enregistrements fournis par le BCR concernent des patients atteints de SEP et donc quels enregistrements sont pertinents dans le cadre de la question de recherche</span>. L&#8217;intermédiaire entreprend alors les étapes suivantes&nbsp;:</p>



<ol class="wp-block-list">
<li>Il supprime les enregistrements non pertinents, c&#8217;est-à-dire les enregistrements concernant tous les citoyens qui ont reçu un diagnostic de cancer mais qui ne sont pas atteints de SEP.</li>



<li>Il fusionne les enregistrements concernant les mêmes citoyens et remplace les numéros de registre national par des pseudonymes uniques dans les enregistrements fusionnés.</li>



<li>Il envoie le résultat – uniquement les enregistrements fusionnés – vers l&#8217;environnement sécurisé.</li>



<li>Il supprime toutes les données reçues et dérivées.</li>
</ol>



<p>Dans ce scénario, il n&#8217;y a pas de fuite involontaire de données vers les sources de données et l&#8217;environnement sécurisé ne reçoit que les données personnelles pseudonymisées minimales nécessaires.</p>



<p>Notre prototype fait exactement cela, mais <strong>sans l&#8217;intermédiaire de confiance</strong>. Le rôle de l&#8217;intermédiaire de confiance est distribué&nbsp;: les détenteurs de données – dans ce cas, l&#8217;AIM et le BCR – et un collecteur de données – dans ce cas, l&#8217;environnement sécurisé – interagissent pour assumer ensemble le rôle de l&#8217;intermédiaire de confiance. Les caractéristiques de sécurité mentionnées dans le paragraphe précédent sont conservées ; aucune information n&#8217;est donc divulguée involontairement aux détenteurs de données et le collecteur de données ne prend connaissance que des données pseudonymisées strictement nécessaires. La solution reste néanmoins pratique et efficace. Tout cela est possible grâce à une cryptographie avancée.</p>



<p>Comme nous l&#8217;avons mentionné précédemment, l&#8217;AIM et le BCR conservent les données sous des pseudonymes. Il existe des procédures permettant de les convertir de manière contrôlée en numéros de registre national. L&#8217;entité qui gère les données n&#8217;a jamais connaissance des registres nationaux et l&#8217;entité qui peut associer les pseudonymes aux numéros de registre national n&#8217;a à aucun moment accès aux données à caractère personnel proprement dites. Par souci de simplicité et pour la suite de cet article, nous partons du principe que les détenteurs de données connaissent les données identifiées par les numéros de registre national plutôt que par les pseudonymes. Notre concept peut également s&#8217;appliquer de manière sécurisée à des situations plus réalistes où ce n&#8217;est pas le cas.</p>



<h1 class="wp-block-heading">Dans la pratique</h1>



<p><a href="/wp-content/uploads/2025/12/Wilhelm_Wandschneider_-_Lethe_Modell.jpg"><img loading="lazy" decoding="async" width="150" height="106" class="alignright size-medium wp-image-23397" src="/wp-content/uploads/2025/12/Wilhelm_Wandschneider_-_Lethe_Modell.jpg" alt=""></a>Smals Research a développé ce concept en collaboration avec des partenaires universitaires. Initialement baptisé Oblivious Join, il a été renommé <em>LetheLink</em> dans le contexte universitaire.&nbsp;<a href="https://fr.wikipedia.org/wiki/L%C3%A9th%C3%A9">Lethe</a> (Λήθη) est, dans la mythologie grecque, la déesse de l&#8217;oubli et l&#8217;un des cinq fleuves des enfers, au bord duquel les morts s&#8217;abreuvent pour oublier leur vie terrestre. Malgré cet oubli – ou plutôt ce manque de connaissance –, les entités en interaction parviennent à relier entre elles les données nécessaires. La convivialité et l&#8217;efficacité ont été au cœur du développement de ce concept.</p>



<p>Smals Research a développé un prototype démontrable qui donne déjà un aperçu du fonctionnement d&#8217;une solution entreprise-ready. L&#8217;utilisation du prototype est présentée dans l&#8217;illustration 2 et comprend les étapes suivantes&nbsp;:</p>



<ol class="wp-block-list">
<li><strong>Création d&#8217;un fichier JSON.</strong> Une organisation pouvant servir de point de contact (par exemple, la <a href="https://www.hda.belgium.be/fr">HDA</a> ou la <a href="https://www.ksz-bcss.fgov.be/fr">BCSS</a>) reçoit une demande d&#8217;un chercheur. Lorsque la base juridique pour ce traitement de données existe, cette organisation établit un fichier JSON signé numériquement. Ce fichier JSON contient, sous une forme structurée, toutes les informations nécessaires à l&#8217;exécution correcte du protocole pour le croisement sécurisé des données des détenteurs de données&nbsp;: les données de connexion des clients des détenteurs de données et du collecteur de données, les paramètres cryptographiques, les clés publiques, les informations sur les données que chaque détenteur de données doit fournir, etc. Dans la pratique, on partira de templates à partir desquels on pourra dériver des fichiers JSON avec un minimum d&#8217;effort.</li>



<li><strong>Distribution du fichier JSON.</strong> Ce fichier JSON est envoyé à la fois au collecteur de données et aux détenteurs de données. Tous vérifient la signature numérique. Toutes les entités concernées savent désormais comment exécuter le protocole et comment contacter les autres entités concernées en toute sécurité.</li>



<li><strong>Téléchargement du client.</strong> Si ce n&#8217;est pas déjà fait, le collecteur de données et les détenteurs de données téléchargent le client LetheLink.</li>



<li><strong>Création de fichiers CSV.</strong> Sur la base du fichier JSON, chaque détenteur de données génère un fichier CSV contenant toutes les données identifiées potentiellement pertinentes. Dans le scénario décrit précédemment, cela inclurait, pour le BCR, toutes les informations identifiées demandées concernant tous les citoyens ayant reçu un diagnostic de cancer. La création de ce fichier ne relève pas du champ d&#8217;application de LetheLink. Notre prototype ne prend en charge que les fichiers CSV, mais cette fonctionnalité peut être étendue.</li>



<li><strong>Importation du client.</strong> Chaque participant fournit le fichier JSON à son client LetheLink local. Les détenteurs de données fournissent également leur fichier CSV généré localement à leur client. Les données sont livrées en clair et le client se charge du chiffrement.</li>



<li><strong>Exécution du protocole.</strong> Le protocole est exécuté. Du côté du collecteur (SPE) des données, cela donne un fichier CSV qui ne contient que les données pseudonymisées et minimales nécessaires.</li>
</ol>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/12/gebruik-1.png"><img loading="lazy" decoding="async" width="1024" height="572" src="/wp-content/uploads/2025/12/gebruik-1-1024x572.png" alt="" class="wp-image-24742" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-1024x572.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-300x168.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-768x429.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-1536x858.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-2048x1144.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Illustration 2. Aperçu de l&#8217;utilisation de LetheLink dans la pratique</figcaption></figure>



<p>L&#8217;avantage de cette approche réside dans sa flexibilité d&#8217;utilisation. Certains détenteurs de données ne sont impliqués que très occasionnellement dans de tels projets croisés et tous les détenteurs de données ne disposent pas des mêmes ressources. Grâce à l&#8217;approche LetheLink, nul besoin de réaliser d&#8217;importants investissements ou préparatifs. Il suffit d&#8217;installer le client et de créer le fichier CSV.</p>



<p>L&#8217;illustration 3 présente un exemple fictif de tels fichiers CSV. En haut figurent des extraits de fichiers CSV que les détenteurs de données (trois dans le cas présent) fournissent chacun en entrée à leur client LetheLink. Au bas de l&#8217;illustration, un extrait du fichier CSV généré en sortie par le client du collecteur de données à la suite de l&#8217;exécution du protocole est présenté. Dans notre exemple fictif, le chercheur s&#8217;intéresse uniquement aux données transversales, c&#8217;est-à-dire aux données relatives aux 50&nbsp;000 patients atteints de SEP qui ont reçu un diagnostic de cancer et présentent un profil de risque élevé. La personne dont le numéro de registre national est 60.01.05-045.05 appartient à ce groupe. Le collecteur de données voit les informations combinées sur ce citoyen, non pas sous ce numéro de registre national, mais sous le pseudonyme &#8220;153807&#8230;&#8221;.</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/12/fictional_data-1.png"><img loading="lazy" decoding="async" width="1024" height="574" src="/wp-content/uploads/2025/12/fictional_data-1-1024x574.png" alt="" class="wp-image-24717" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-1024x574.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-300x168.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-768x430.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-1536x860.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-2048x1147.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Illustration 3. Exemple fictif avec des extraits de trois fichiers CSV d&#8217;entrée (en haut) et le fichier de sortie résultant (en bas)</figcaption></figure>



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



<p>Dans le cadre de la collaboration académique, la performance a été considérablement améliorée au cours de plusieurs itérations, tant au niveau de l&#8217;algorithme qu&#8217;au niveau de la mise en œuvre. Les principaux résultats des tests sont présentés dans le tableau 1. Quelques précisions&nbsp;:</p>



<ul class="wp-block-list">
<li>Les tests ont été effectués sur des machines virtuelles AWS EC2 r7i.8xlarge, avec 32 vCPU (Intel Xeon Platinum 8588C @ 3,2 GHz) et 256 Go de RAM.</li>



<li>Une distinction est opérée entre une exécution sur un LAN à une vitesse de 1 Gbps et sur un WAN à une vitesse de 150 Mbps.</li>



<li>La variable <em>m</em> représente le nombre d&#8217;enregistrements fournis par chacune des sources de données. Dans nos tests, elle est comprise entre un minimum de 2<sup>16</sup>= 65.536 et maximum de 2<sup>24</sup>= 16.777.216. En réalité, le nombre d&#8217;enregistrements varie bien sûr selon la source de données, mais ces résultats fournissent déjà une limite supérieure.</li>



<li>La variable κ (kappa) représente le niveau de sécurité computationnel. Une sécurité de 128 bits est suffisante aujourd&#8217;hui, mais une sécurité de 192 ou même de 256 bits est recommandée pour les données qui restent sensibles pendant une longue période. La variable λ (lambda) représente le paramètre de sécurité statique correspondant.&nbsp;</li>



<li>La variable <em>n</em> représente le nombre de détenteurs de données. Nous avons effectué des tests avec 3, 5 et 7 détenteurs de données, mais il n&#8217;y a aucune limitation technique pour un nombre beaucoup plus important.</li>
</ul>



<figure class="wp-block-image alignnone"><a href="/wp-content/uploads/2025/12/results.png"><img loading="lazy" decoding="async" width="1024" height="255" src="/wp-content/uploads/2025/12/results-1024x255.png" alt="" class="wp-image-24718" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/results-1024x255.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/results-300x75.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/results-768x191.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/results-1536x382.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/12/results.png 1713w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Résultats de performance (en secondes) du prototype LetheLink</figcaption></figure>



<p>Maintenant que nous savons comment interpréter ce tableau, nous constatons par exemple qu&#8217;il faut 25 secondes pour exécuter le protocole lorsque trois sources de données fournissent chacune 1 million (2<sup>20</sup>) d&#8217;enregistrements sur un WAN. La quantité de données fournies a également un impact sur le temps d&#8217;exécution, mais pour cela, nous vous renvoyons au tableau 3 de notre <a href="https://arxiv.org/abs/2512.08558">publication</a> commune.&nbsp;<strong>En résumé, tant le protocole que sa mise en œuvre sont particulièrement efficaces.&nbsp;</strong>Pour conclure, l&#8217;illustration 4 donne une idée générale de la réalisation des tests.</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/12/1000014576-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="611" src="/wp-content/uploads/2025/12/1000014576-1024x611.jpg" alt="" class="wp-image-24721" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-1024x611.jpg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-768x459.jpg 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-2048x1223.jpg 2048w, https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-300x179.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-1536x917.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Illustration 4. Illustration de l&#8217;exécution des tests</figcaption></figure>



<h1 class="wp-block-heading">Relation avec le service de pseudonymisation à l&#8217;aveugle d&#8217;eHealth</h1>



<p>Smals Research a développé le <a href="/basisprincipes-voor-een-moderne-pseudonimiseringsdienst-2/">service de pseudonymisation à l&#8217;aveugle pour eHealth</a> au cours de la période 2021-2022. Ce service permet de convertir les numéros de registre national en pseudonymes (codes uniques) et vice versa. Cette conversion est effectuée par un service de pseudonymisation qui est toutefois aveugle&nbsp;: il ne voit ni les numéros de registre national ni les pseudonymes. Ce service peut <a href="/kruisen-van-persoonsgegevens-met-ehealths-blinde-pseudonimiseringsdienst/">également</a> être utilisé pour pseudonymiser et croiser des données. Quelles sont les différences&nbsp;?</p>



<ul class="wp-block-list">
<li><strong>Statut.</strong>&nbsp;Le service de pseudonymisation à l&#8217;aveugle est déjà en production, tandis que LetheLink n&#8217;est qu&#8217;un prototype.</li>



<li><strong>Fuite de données.</strong>&nbsp;Pour les projets de recoupement plus complexes, tels que ceux évoqués dans cet article, le service de pseudonymisation à l&#8217;aveugle ne pourra pas toujours empêcher les fuites de données. Il y aura notamment des fuites de données lorsqu&#8217;une source de données ne peut pas déterminer de manière autonome quels enregistrements sont pertinents pour répondre à la question de recherche. Selon le use case, il peut s&#8217;agir d&#8217;une fuite de données résiduelle acceptable ou de fuites de données plus substantielles, qui portent effectivement atteinte à la vie privée des personnes concernées. D&#8217;autre part, LetheLink présente des risques lorsqu&#8217;une seule entité est à la fois détentrice et collectrice de données.</li>



<li><strong>Rapidité.</strong> Le service de pseudonymisation à l&#8217;aveugle d&#8217;eHealth est certes très rapide &#8211; il peut effectuer des milliers de conversions par seconde -, mais LetheLink est ultra-rapide &#8211; il effectue des dizaines de milliers de conversions par seconde et, dans certaines circonstances, peut dépasser les cent mille. Tout dépendra bien sûr de l&#8217;infrastructure utilisée.</li>



<li><strong>Infrastructure.</strong> Le service de pseudonymisation à l&#8217;aveugle d&#8217;eHealth est dans tous les cas une entité centrale qui doit disposer d&#8217;une capacité suffisante. LetheLink, en revanche, est distribué, ce qui rend inutile une telle entité centrale&nbsp;: il suffit que chaque entité exécute le client LetheLink sur ses machines existantes. Il peut même s&#8217;agir d&#8217;ordinateurs portables classiques.</li>



<li><strong>Intégration.</strong>&nbsp;Afin d&#8217;utiliser le service de pseudonymisation à l&#8217;aveugle, une organisation doit intégrer une logique dans son application client. Nous savons par expérience que cela est relativement simple, mais cela reste néanmoins un investissement. LetheLink est un client autonome et ne nécessite donc aucun processus d&#8217;intégration.</li>



<li><strong>Types de demandes.</strong> Le service de pseudonymisation à l&#8217;aveugle d&#8217;eHealth peut traiter tant les demandes en batch que les demandes qui doivent être traitées en temps réel. LetheLink ne prend en charge que les traitements en batch.</li>
</ul>



<p>Ce positionnement respectif de LetheLink et du service de pseudonymisation à l&#8217;aveugle d&#8217;eHealth devrait aider les organisations à déterminer la technologie la plus adaptée à leurs use cases.</p>



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



<p>Un certain nombre d&#8217;extensions de LetheLink seront nécessaires pour pouvoir l&#8217;utiliser dans la pratique. Toutes les extensions proposées sont déjà conceptuellement possibles, mais ne sont pas toujours intégrées dans le prototype.&nbsp;<strong>Cela ne se fera que si une demande concrète est formulée.</strong></p>



<ul class="wp-block-list">
<li><strong>Taille minimale de l&#8217;ensemble de résultats.</strong>&nbsp;Si l&#8217;ensemble de résultats pseudonymisés pour le collecteur de données ne contient pas suffisamment d&#8217;enregistrements, il existe un risque pour la vie privée des personnes concernées et il est impossible de mener des recherches statistiquement pertinentes. C&#8217;est pourquoi le prototype prend déjà en charge la possibilité d&#8217;indiquer une taille minimale dans le fichier JSON.</li>



<li><strong>Réidentification contrôlée.</strong>&nbsp;Si les chercheurs constatent qu&#8217;un citoyen donné présente un risque élevé de développer une certaine maladie, il doit être possible d&#8217;en informer ce citoyen. De même, lorsqu&#8217;une enquête sur une fraude révèle une forte suspicion de fraude de la part de certains citoyens, il doit être possible d&#8217;en informer l&#8217;autorité compétente. Il doit donc être possible, dans des situations exceptionnelles, de vérifier l&#8217;identité d&#8217;un citoyen de manière contrôlée.</li>



<li><strong>Pseudonymes des détenteurs de données.</strong>&nbsp;Comme indiqué précédemment dans cet article, les détenteurs de données n&#8217;ont souvent pas eux-mêmes accès au numéro de registre national des citoyens dont ils gèrent les données. Dans de tels cas également, le protocole doit pouvoir être mis en œuvre efficacement.</li>



<li><strong>Divulgation sélective.</strong>&nbsp;Actuellement, le prototype se concentre sur des moyennes&nbsp;; ce n&#8217;est que si <em>tous</em> les détenteurs de données fournissent des enregistrements sur un même citoyen que l&#8217;enregistrement composite devient visible pour le collecteur de données. Dans la pratique, une plus grande flexibilité est requise, comme l&#8217;indique l&#8217;illustration 5. Dans le cas d&#8217;utilisation présenté en introduction de cet article, le chercheur avait besoin de données pseudonymisées sur tous les patients atteints de SEP, alors que notre prototype ne fournit actuellement que des données pseudonymisées sur tous les patients atteints de SEP ayant également reçu un diagnostic de cancer.</li>



<li><strong>Transfert multi-batch.</strong>&nbsp;Dans certains cas, les détenteurs de données doivent fournir des données à plusieurs reprises au collecteur de données, par exemple dans le cadre d&#8217;une étude longitudinale. Le collecteur de données doit être capable de relier entre elles les données relatives à un même citoyen au fil du temps.</li>



<li><strong>Communication simplifiée.</strong>&nbsp;Dans le prototype, tous les détenteurs de données concernés communiquent entre eux, puis envoient individuellement des données cryptées au collecteur de données. Dans un protocole adapté, les détenteurs de données n&#8217;échangeraient des données qu&#8217;avec et via le collecteur de données, par exemple via une interface REST. Dans la pratique, cette approche est plus souhaitable.</li>
</ul>



<p>Veuillez nous faire part de toute autre extension utile que vous pourriez envisager.</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/12/selective_disclosure.png"><img loading="lazy" decoding="async" width="1024" height="570" src="/wp-content/uploads/2025/12/selective_disclosure-1024x570.png" alt="" class="wp-image-24754" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-1024x570.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-300x167.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-768x428.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-1536x855.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure.png 1882w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Illustration 5. Une possible extension, dans laquelle l&#8217;ensemble des résultats peut être plus que les simples enregistrements sur les citoyens pour lesquels chaque détenteur de données concerné fournit des informations</figcaption></figure>



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



<p>Le concept initial ainsi que le prototype et les tests de performance ont été réalisés par Smals Research. Les partenaires universitaires, notamment le groupe <a href="https://www.esat.kuleuven.be/cosic/">COSIC</a> et le groupe <a href="https://distrinet.cs.kuleuven.be/">DistriNet</a> de la KU Leuven, ainsi que le groupe <a href="https://crysp.uwaterloo.ca/">CrySP</a> de l&#8217;université de Waterloo au Canada, se sont concentrés sur l&#8217;élaboration théorique. Cela a donné lieu à deux publications en 2025&nbsp;:</p>



<ul class="wp-block-list">
<li><a href="https://eur06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flink.springer.com%2Fchapter%2F10.1007%2F978-3-031-84748-6_6&amp;data=05%7C02%7Ckristof.verslype%40smals.be%7C68b705fdb22f4881110008de3bb9eb83%7C578bcd46a26646edac84b52b4ebacd22%7C0%7C0%7C639013866892057810%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;sdata=Yo%2F02a8KKrOvYRkjqLNpVqlXRrS%2BP8W95v6yVUBBrsQ%3D&amp;reserved=0">Publication de Springer&nbsp;:Privacy-By-Design in the Belgian Public Sector</a> Ce document accessible traite de deux solutions innovantes conçues par Smals Research pour la pseudonymisation et le croisement des données à caractère personnel&nbsp;: Lethelink et <a href="/kruisen-van-persoonsgegevens-met-ehealths-blinde-pseudonimiseringsdienst/">le service de pseudonymisation à l&#8217;aveugle d&#8217;eHealth</a>.</li>



<li><a href="https://eur06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flink.springer.com%2Fchapter%2F10.1007%2F978-3-031-84748-6_6&amp;data=05%7C02%7Ckristof.verslype%40smals.be%7C68b705fdb22f4881110008de3bb9eb83%7C578bcd46a26646edac84b52b4ebacd22%7C0%7C0%7C639013866892057810%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;sdata=Yo%2F02a8KKrOvYRkjqLNpVqlXRrS%2BP8W95v6yVUBBrsQ%3D&amp;reserved=0">Publication de Springer&nbsp;:Privacy-By-Design in the Belgian Public Sector</a> Ce document accessible traite de deux solutions innovantes conçues par Smals Research pour la pseudonymisation et le croisement des données à caractère personnel&nbsp;: Lethelink et <a href="/kruisen-van-persoonsgegevens-met-ehealths-blinde-pseudonimiseringsdienst/">le service de pseudonymisation à l&#8217;aveugle d&#8217;eHealth</a>.</li>
</ul>



<p>Je vous invite également à consulter ma <a href="https://www.youtube.com/watch?v=-mx9vmdezL4">contribution à la conférence Devoxx</a> et mon <a href="https://www.smalsresearch.be/download/presentations/20240606_webinar_pseudonimisatie_PRINT.pdf">webinaire</a> de 2024 intitulé <em>&#8220;Privacy in Practice with Smart Pseudonymisation&#8221;.</em> LetheLink/Oblivious Join est l&#8217;une des trois techniques de pseudonymisation que j&#8217;y aborde.</p>



<p>Enfin, des <a href="/wp-content/uploads/2025/12/OJ-simple.pptx">slides</a> sont disponibles pour ceux qui souhaitent se faire rapidement une idée intuitive des principes de base de l&#8217;Oblivious Join. Les notes correspondantes fournissent des explications supplémentaires.</p>



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



<p>L&#8217;utilisation secondaire des données à caractère personnel peut nous fournir de nombreuses informations qui soutiennent l&#8217;élaboration des politiques et stimulent la recherche scientifique. Pour exploiter ces informations, les données provenant de différentes sources doivent pouvoir être collectées de manière efficace, dans le respect de la vie privée. Cela signifie que seules les données à caractère personnel nécessaires sont pseudonymisées et croisées et que les autres entités participant à ce processus n&#8217;ont pas accès aux données à caractère personnel. Dans la pratique, cela était loin d&#8217;être évident.</p>



<p>En collaboration avec des universités de renommée internationale, Smals Research a donc élaboré un concept qui, grâce à une cryptographie avancée, permet de le faire de manière efficace. Un prototype démontrable a également été construit, ce qui constitue une première étape vers une mise en œuvre effective dans la pratique.</p>



<p>Au cours des dernières années, nous avons rencontré de nombreuses entités. Tout le monde considère qu&#8217;il s&#8217;agit d&#8217;un outil très utile, mais nous ne disposons pour l&#8217;instant pas de l&#8217;engagement de nos partenaires pour le mettre en pratique.</p>



<p><strong>Le défi principal aujourd&#8217;hui est donc de rendre cette solution prête à la production. N&#8217;hésitez pas à nous contacter si cette solution vous intéresse et si vous souhaitez éventuellement y contribuer.</strong></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Made by Smals Research &#8211; Privacyvriendelijk Kruisen van Persoonsgegevens</title>
		<link>https://www.smalsresearch.be/innovatiesmals-privacyvriendelijk-kruisen-van-persoonsgegevevens/</link>
		
		<dc:creator><![CDATA[Kristof Verslype]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 06:30:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Privacy by design]]></category>
		<category><![CDATA[privacy-enhancing technologies]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://staging.smalsresearch.be/?p=26251</guid>

					<description><![CDATA[In samenwerking met internationaal toonaangevende universiteiten werkte Smals aan een prototype om met behulp van geavanceerde cryptografie het pseudonimiseren en kruisen van persoonsgegevens voor secundaire doeleinden aanzienlijk te vereenvoudigen.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible&nbsp;en&nbsp;<a href="/innovationsmals-croisement-des-donnees-a-caractere-personnel-dans-le-respect-de-la-vie-privee/">français</a>.</em></p>



<p>Digitale persoonsgegevens vormen <span data-olk-copy-source="MessageBody">binnen een overheidscontext</span> een bron van inzichten die innovatie, welzijn en beleidsvorming ten goede komen. Die persoonsgegevens zijn over heel wat organisaties verspreid; de ene organisatie heeft informatie over kanker, de andere over medicijngebruik en nog een andere bewaart inkomensgegevens. In de praktijk worden geregeld persoonsgegevens afkomstig van verschillende organisaties samengevoegd om op specifieke vragen van onderzoekers en beleidsmakers te kunnen antwoorden.</p>



<p>De huidige processen garanderen dat dit met respect voor de privacy gebeurt. Helaas is het – mede daardoor – ook te vaak een complexe, dure en tijdrovende aangelegenheid. In samenwerking met internationaal toonaangevende universiteiten werkte Smals Research daarom aan een prototype om met behulp van geavanceerde cryptografie deze processen aanzienlijk te vereenvoudigen.</p>



<h1 class="wp-block-heading">Probleemstellig op basis van concrete case</h1>



<p>We vertrokken van een <a href="https://www.ehealth.fgov.be/ehealthplatform/file/cc73d96153bbd5448a56f19d925d05b1379c7f21/5749691d1687866fa0e6852fe4536cb54f2bf4ad/20-020-n042-behandeling-herstellende-multiple-sclerose.pdf">concrete onderzoeksvraag</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Lopen MS-patiënten die medicijnen met de moleculen teriflunomide of alemtuzumab gebruiken een verhoogd risico op kanker in vergelijking met MS-patiënten die met andere medicijnen worden behandeld?</p>
</blockquote>



<p>Om die – op zich eenvoudige – vraag te kunnen beantwoorden moeten medische gegevens over MS-patiënten afkomstig van twee organisaties, met name het <a href="https://kankerregister.org/nl">Belgisch Kankerregister (BCR)</a> en het <a href="https://www.ima-aim.be/">InterMutualistisch Agentschap (IMA)</a> gekruist worden.</p>



<p>Beide organisaties beheren de gegevens onder aparte pseudoniemen voor meer privacy; unieke codes ter vervanging van rijksregisternummers.</p>



<ul class="wp-block-list">
<li>Het BCR beheert gegevens met betrekking tot kanker over mensen die een kankerdiagnose kregen. Het BCR weet niet welke records betrekking hebben op MS-patiënten.</li>



<li>Het IMA kent gegevens m.b.t. voorgeschreven medicijnen en kan de records selecteren van MS-patiënten.</li>
</ul>



<p>De onderzoekers dienen in een beveiligde omgeving (<a href="https://www.european-health-data-space.com/European_Health_Data_Space_Article_50_(Proposal_3.5.2022).html">SPE = Secure Processing Environment</a>) toegang te krijgen tot gegevens afkomstig van het BCR en het IMA, over alle MS-patiënten. Gegevens over dezelfde patiënt maar afkomstig van verschillende bronnen moeten aan elkaar gekoppeld kunnen worden op basis van een uniek pseudoniem dat enkel gebruikt wordt in het kader van die specifieke onderzoeksvraag. Dit wordt geïllustreerd in figuur 1.</p>



<figure class="wp-block-image aligncenter wp-image-24710"><a href="https://staging.smalsresearch.be/wp-content/uploads/2025/12/set.png"><img loading="lazy" decoding="async" width="598" height="154" src="https://staging.smalsresearch.be/wp-content/uploads/2025/12/set.png" alt="" class="wp-image-24710" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/set.png 598w, https://www.smalsresearch.be/wp-content/uploads/2025/12/set-300x77.png 300w" sizes="auto, (max-width: 598px) 100vw, 598px" /></a><figcaption class="wp-element-caption">Figuur 1: Links de verzameling van MS-patiënten, rechts de verzameling van burgers die de kankerdiagnose kregen. Enkel gegevens over burgers in de twee groene regio&#8217;s mogen aan de beveiligde omgeving gepseudonimiseerd prijsgegeven worden.&nbsp;</figcaption></figure>



<p>De centrale vraag luidt als volgt:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Hoe kan het BCR <u>enkel </u>records over MS-patiënten aanleveren aan de beveiligde omgeving zonder te weten te komen wie MS heeft of welke records die het beheert betrekking hebben op MS-patiënten?</em></p>
</blockquote>



<p>In een klassieke benadering zal ofwel het BCR te veel informatie naar de beveiligde omgeving sturen – met name gegevens over elke kankerpatiënt – ofwel lekt er informatie naar het BCR – waarbij het BCR te weten komt welke records betrekking hebben op MS-patiënten. Een laatste mogelijkheid is het inschakelen van een vertrouwde centrale partij die weliswaar persoonsgegevens te weten komt, maar vertrouwd wordt daar niets onrechtmatigs mee te doen.</p>



<p>Geen van deze aanpakken is ideaal. Vandaag wordt in binnen- en buitenland ofwel beroep gedaan op – sterk gereguleerde – centrale partijen ofwel is duur en traag maatwerk vereist, waarbij voor elke onderzoeksvraag een nieuwe flow uitgetekend, gevalideerd en uitgevoerd wordt om de privacy maximaal te beschermen.</p>



<p>We geven nog mee dat de onderzoeker doorgaans toegang nodig heeft tot de ruwe data, waardoor oplossingen gebaseerd op <a href="https://www.smalsresearch.be/secure-multiparty-computation-collectieve-berekeningen-op-verspreide-gevoelige-gegevens/">secure multi-party computation</a> ongeschikt zijn.&nbsp;</p>



<h1 class="wp-block-heading">Ons voorstel tot oplossing</h1>



<p>Laat ons even vertrekken van een fictief scenario waarbij gewerkt wordt met een vertrouwde intermediaire partij en het – voor de eenvoud – IMA en BCR de persoonsgegevens niet onder pseudoniemen beheren, maar onder rijksregisternummers. IMA en BCR sturen beiden alle gegevens die potentieel relevant zijn naar de vertrouwde tussenpartij. </p>



<p>Het BCR stuurt naar de intermediaire partij geïdentificeerde kankergegevens over <em>alle</em> burgers die de kankerdiagnose kregen, wat uiteraard veel meer is dan nodig voor de onderzoeker. De intermediaire partij krijgt ook alle geïdentificeerde medicatiegegevens over MS-patiënten van het IMA en weet op basis daarvan welke door het BCR aangeleverde records betrekking hebben op MS-patiënten en dus relevant zijn in het kader van de onderzoeksvraag. De intermediaire partij voert nu de volgende stappen uit:</p>



<ol class="wp-block-list">
<li>Het verwijdert de niet relevante records, dus de records over alle burgers die de kankerdiagnose kregen maar geen MS hebben.</li>



<li>Het voegt records over dezelfde burgers samen en vervangt in de samengevoegde records de rijksregisternummers door unieke pseudoniemen</li>



<li>Het stuurt het resultaat &#8211; enkel samengevoegde records &#8211; naar de <a href="https://www.european-health-data-space.com/European_Health_Data_Space_Article_50_(Proposal_3.5.2022).html">beveiligde omgeving</a>.</li>



<li>Het verwijdert alle ontvangen en afgeleide gegevens.</li>
</ol>



<p>In dit scenario zijn er geen onbedoelde datalekken naar de databronnen en ontvangt de beveiligde omgeving enkel de minimaal noodzakelijke, gepseudonimiseerde persoonsgegevens.</p>



<p>Ons prototype doet exact dit, maar dan <strong>zonder de vertrouwde partij</strong>. De rol van de vertrouwde partij wordt gedistribueerd: <em>Data holders</em> &#8211; in dit geval het IMA en het BCR &#8211; en een <em>data collector</em> &#8211; in dit geval de beveiligde omgeving &#8211; interageren met elkaar om samen de rol van de vertrouwde partij over te nemen. Daarbij worden de veiligheidseigenschappen uit de vorige paragraaf behouden; er lekt dus niet onbedoeld informatie naar de data holders en de data collector komt enkel de minimaal noodzakelijke gepseudonimiseerde gegevens te weten. De oplossing blijft niettemin praktisch en efficiënt. Dit alles is mogelijk dankzij geavanceerde cryptografie.</p>



<p>We schreven eerder dat het IMA en het BCR de data bewaren onder pseudoniemen. Er bestaan procedures om die op een gecontroleerde wijze om te zetten in rijksregisternummers. De partij die data beheert komt daarbij nooit rijksregisternummers te weten en de partij die pseudoniemen kan koppelen aan rijksregisternummers heeft op geen enkel moment toegang tot de eigenlijke persoonsgegevens. Om redenen van eenvoud gaan we er de rest van dit artikel vanuit dat de data holders de data kennen onder rijksregisternummers. Ons concept kan ook op een veilige manier overweg weg met de meer realistische situaties waarbij dit niet het geval is.</p>



<h1 class="wp-block-heading">In de praktijk</h1>



<p><a href="https://www.smalsresearch.be/wp-content/uploads/2025/12/Wilhelm_Wandschneider_-_Lethe_Modell.jpg"><img loading="lazy" decoding="async" width="150" height="106" class="alignright size-medium wp-image-23397" src="https://www.smalsresearch.be/wp-content/uploads/2025/12/Wilhelm_Wandschneider_-_Lethe_Modell.jpg" alt=""></a>Smals Research werkte samen met academische partners het concept uit. Initieel luisterde het naar de naam <em>Oblivious Join</em>, maar in academische context werd het herdoopt naar <em>LetheLink</em>. <a href="https://nl.wikipedia.org/wiki/Lethe_(mythologie)">Lethe</a> (Λήθη) is in de Griekse mythologie de godin van de vergetelheid en een van de vijf rivieren in de onderwereld, waaruit de doden drinken om hun aardse leven te vergeten. Ondanks die vergetelheid &#8211; of beter, gebrek aan kennis &#8211; slagen de interagerende partijen er toch in de noodzakelijke data aan elkaar te linken. Centraal in de ontwikkeling van dit concept stonden gebruiksvriendelijkheid en efficiëntie.</p>



<p>Smals Research heeft een demonstreerbaar prototype uitgewerkt dat alvast een zicht geeft op hoe een enterprise-ready oplossing zou kunnen werken. Het gebruik van het prototype wordt geïllustreerd in figuur 2 en bestaat uit de volgende stappen:</p>



<ol class="wp-block-list">
<li><strong>Creatie JSON-bestand.</strong> Een organisatie die als aanspreekpunt kan dienen (vb, de <a href="https://www.hda.belgium.be/nl">HDA</a> of de <a href="https://www.ksz-bcss.fgov.be/nl">KSZ</a>) krijgt een vraag binnen van een onderzoeker. Wanneer de juridische basis voor deze gegevensverwerking er is, stelt deze organisatie een digitaal ondertekend JSON-bestand op. Dat bestand bevat in een gestructureerde vorm alle informatie om het protocol voor het beveiligd kruisen van de gegevens van de data holders op een correcte manier uit te kunnen voeren: connectiegegevens van de clients van zowel data holders als de data collector, de cryptografische parameters, publieke sleutels, informatie over welke data holder welke data moet aanleveren, etc. In de praktijk zal men vertrekken van templates, van waaruit met een minimale inspanning JSON-bestanden afgeleid kunnen worden.</li>



<li><strong>Distributie JSON-bestand.</strong> Dit JSON-bestand wordt bezorgd aan zowel de data collector als de data holders. Allen verifiëren de digitale handtekening. Alle betrokken partijen weten nu hoe ze het protocol moeten uitvoeren en hoe ze de andere betrokken partijen veilig kunnen contacteren.</li>



<li><strong>Downloaden client.</strong> Indien dit nog niet gebeurd is, downloaden de data collector en data holders de LetheLink client.</li>



<li><strong>Creatie CSV-bestanden.</strong> Op basis van het JSON-bestand genereert elke data holder een CSV-bestand die alle potentieel relevante geïdentificeerde data bevat. In de eerder geschetste use case zou dit voor het SKR alle gevraagde geïdentificeerde informatie bevatten over alle burgers die de kankerdiagnose kregen. De creatie van dit bestand valt buiten de scope van LetheLink. In ons prototype worden enkel CSV-bestanden ondersteund, maar dit kan uitgebreid worden.</li>



<li><strong>Invoer client.</strong> Elke participant geeft het JSON-bestand als invoer aan zijn lokale LetheLink client. De data holders geven daarnaast ook hun lokaal gegenereerde CSV-bestand aan hun client. Data worden in klaar aangeleverd en de client neemt de versleuteling op zich.</li>



<li><strong>Uitvoering protocol.</strong> Het protocol wordt uitgevoerd. Dit resulteert aan de kant van de data collector (SPE) in een CSV bestand dat enkel de gepseudonimiseerde, minimaal noodzakelijke gegevens bevat. &nbsp;</li>
</ol>



<figure class="wp-block-image aligncenter"><a href="https://staging.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1.png"><img loading="lazy" decoding="async" width="1024" height="572" src="https://staging.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-1024x572.png" alt="" class="wp-image-24742" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-1024x572.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-300x168.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-768x429.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-1536x858.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/12/gebruik-1-2048x1144.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Figuur 2. Overzicht van het gebruik van LetheLink in de praktijk</figcaption></figure>



<p>Het voordeel van deze benadering is de flexibele inzetbaarheid. Er zijn data holders die maar heel af en toe in dergelijke kruisingsprojecten betrokken zijn en niet alle data holders beschikken over evenveel middelen. Dankzij de LetheLink benadering zijn geen grote investeringen of voorbereidingen nodig. De installatie van de client en creatie van de CSV file volstaan.</p>



<p>Figuur 3 geeft een fictief voorbeeld van dergelijke CSV bestanden. Bovenaan staan extracten van CSV bestanden&nbsp; die de – in dit geval drie – data holders elk als invoer aan hun LetheLink client geven. Onderaan de figuur is een extract te zien van het CSV bestand dat de client van de data collector als output genereert als resultaat van de protocoluitvoering. In ons fictieve voorbeeld is de onderzoeker enkel geïnteresseerd in data in de doorsnede; dus in data over de 50 000 MS-patiënten die de kankerdiagnose kregen en een hoog risicoprofiel hebben. De persoon met rijksregisternummer 60.01.05-045.05 behoort tot die groep. De data collector ziet de gecombineerde informatie over deze burger, niet onder dit rijksregisternummer, maar onder het pseudoniem “153807…”.</p>



<figure class="wp-block-image aligncenter"><a href="https://staging.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1.png"><img loading="lazy" decoding="async" width="1024" height="574" src="https://staging.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-1024x574.png" alt="" class="wp-image-24717" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-1024x574.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-300x168.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-768x430.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-1536x860.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/12/fictional_data-1-2048x1147.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Figuur 3. Fictief voorbeeld met exctracten van drie input CSV bestanden (boven) en het resulterende output bestand (onder)</figcaption></figure>



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



<p>In het kader van de academische samenwerking werd de performantie in meerdere iteraties grondig verbeterd, zowel op het niveau van het algoritme, als op het niveau van de implementatie. De voornaamste testresultaten zijn weergegeven in tabel 1. Een beetje duiding:</p>



<ul class="wp-block-list">
<li>De testen werden uitgevoerd op op AWS EC2 r7i.8xlarge VMs, met 32 vCPU&#8217;s (Intel Xeon Platinum 8588C @ 3.2 GHz) en 256 GB RAM.</li>



<li>Er wordt een onderscheid gemaakt tussen een uitvoering op een LAN aan een snelheid van 1 Gbps en op een WAN aan een snelheid van 150 Mbps.</li>



<li>De variable <em>m</em> representeert het aantal records dat door elk van de databronnen meegegeven wordt. Het is in onze testen minimaal 2<sup>16</sup> = 65 536 en maximaal 2<sup>24</sup> = 16 777 216. In werkelijkheid is het aantal records uiteraard verschillend per databron, maar deze resultaten geven alvast een bovengrens.</li>



<li>De variable κ (kappa) representeert het computationele veiligheidsniveau. 128 bit security volstaat vandaag, al wordt voor data die lange tijd gevoelig blijft toch 192 of zelfs 256 bit security aanbevolen. De variable λ (lambda) representeert de corresponderende statistische veiligheidsparameter.&nbsp;</li>



<li>De variabele <em>n</em> representeert het aantal data holders. We deden testen met 3, 5 en 7 data holders, maar er zijn geen technische beperkingen voor een veel groter aantal.</li>
</ul>



<figure class="wp-block-image aligncenter"><a href="https://www.smalsresearch.be/wp-content/uploads/2025/12/results.png"><img loading="lazy" decoding="async" width="1024" height="255" src="https://www.smalsresearch.be/wp-content/uploads/2025/12/results-1024x255.png" alt="" class="wp-image-24718" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/results-1024x255.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/results-300x75.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/results-768x191.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/results-1536x382.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/12/results.png 1713w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><em>Performantieresultaten (in seconden) van het LetheLink prototype</em></figcaption></figure>



<p>Nu we weten hoe deze tabel te interpreteren, zien we dat er bijvoorbeeld 25 seconden nodig zijn om het protocol uit te voeren waarbij drie databronnen elk 1 miljoen (2<sup>20</sup>) records aanleveren over een WAN, met een veiligheidsniveau van 256 bits. De hoeveelheid meegeleverde data heeft eveneens impact op de uitvoeringstijd, maar daarvoor verwijzen we naar tabel 3 in onze gemeenschappelijke <a href="https://arxiv.org/abs/2512.08558">publicatie</a>. <strong>Samengevat zijn zowel het protocol als de implementatie ervan bijzonder efficiënt. </strong>Figuur 4 geeft, ter afronding, een sfeerbeeld van het uitvoeren van de testen.</p>



<figure class="wp-block-image aligncenter"><a href="https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="611" src="https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-1024x611.jpg" alt="" class="wp-image-24721" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-1024x611.jpg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-768x459.jpg 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-2048x1223.jpg 2048w, https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-300x179.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/1000014576-1536x917.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Figuur 4. Sfeerbeeld bij het uitvoeren van de testen</figcaption></figure>



<h1 class="wp-block-heading">Verhouding tot eHealths Blinde Pseudonimiseringsdienst</h1>



<p>Smals Research ontwikkelde in de periode 2021-2022 de <a href="https://www.smalsresearch.be/basisprincipes-voor-een-moderne-pseudonimiseringsdienst/">blinde pseudonimiseringsdienst voor eHealth</a>. Daarmee kunnen rijksregisternummers omgezet worden in pseudoniemen – unieke codes – en vice versa. Die omzetting gebeurt door een pseudonimiseringsdienst die echter blind is: het ziet rijksregisternummers noch pseudoniemen. Deze dienst kan <a href="https://www.smalsresearch.be/kruisen-van-persoonsgegevens-met-ehealths-blinde-pseudonimiseringsdienst-2/">eveneens</a> gebruikt worden om gegevens te pseudonimiseren én te kruisen. Wat zijn dan de verschillen?</p>



<ul class="wp-block-list">
<li><strong>Status.</strong> De blinde pseudonimiseringsdienst staat reeds in productie, terwijl LetheLink slechts een prototype is.</li>



<li><strong>Datalekkage.</strong> Voor complexere kruisingsprojecten, zoals diegene waar in dit artikel van vertrokken wordt, zal de blinde pseudonimiseringsdienst niet altijd kunnen verhinderen dat er datalekken optreden. Met name zal er sprake zijn van gegevenslekkage wanneer een databron niet autonoom kan bepalen welke records relevant zijn om de onderzoeksvraag te kunnen beantwoorden. Afhankelijk van de use case kan dit gaan om een aanvaardbaar residuele datalekkage, of het kan gaan over meer substantiële datalekken, die effectief de privacy van betrokkenen aantasten. Anderzijds ontstaan er bij LetheLink risico&#8217;s wanneer één entiteit zowel data holder als data collector is.</li>



<li><strong>Snelheid.</strong> eHealths blinde pseudonimiseringsdienst is weliswaar erg snel – het kan duizenden conversies per seconde aan -, maar LetheLink is bliksemsnel – het doet tienduizenden conversies per seconde en onder bepaalde omstandigheden kan het over de honderduizend gaan. Veel zal natuurlijk afhangen van de gebruikte infrastructuur.</li>



<li><strong>Infrastructuur.</strong> eHealths blinde pseudonimiseringsdienst is sowieso een centrale entiteit die over voldoende capaciteit moet beschikken. LetheLink daarentegen is gedistribueerd, waardoor een dergelijke centrale partij niet langer vereist is: het volstaat dat elke partij de LetheLink client draait op zijn bestaande machines. Dat kunnen zelfs reguliere laptops zijn.</li>



<li><strong>Integratie.</strong> Om gebruik te maken van de blinde pseudonimiseringsdienst moet een organisatie logica integreren in zijn clienttoepassing. Uit ervaring weten we dat dit gelukkig relatief eenvoudig is, maar het blijft niettemin een investering. LetheLink is een standalone client en dus is er geen integratietraject nodig.</li>



<li><strong>Type aanvragen.</strong> eHealths blinde pseudonimiseringsdienst kan overweg met zowel batch aanvragen als met aanvragen die in real-time afgehandeld moeten worden. LetheLink kan enkel overweg met verwerkingen in batch.</li>
</ul>



<p>Deze positionering van LetheLink en eHealths blinde pseudonimiseringsdienst ten opzichte van elkaar zou organisaties moeten helpen om te bepalen welke technologie het meest geschikt is voor hun use cases.</p>



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



<p>Er zullen een aantal uitbreidingen van LetheLink nodig zijn om het ook daadwerkelijk in de praktijk te kunnen inzetten. Alle voorgestelde uitbreidingen zijn conceptueel alvast mogelijk, maar niet steeds in het prototype geïntegreerd. <strong>Dit zal enkel gebeuren indien er een concrete vraag komt.</strong></p>



<ul class="wp-block-list">
<li><strong>Minimale grootte resultaatset.</strong> Indien de gepseudonimiseerde resultaatset voor de data collector onvoldoende records bevat is er een risico voor de privacy van de betrokkenen en is het onmogelijk om statistisch relevant onderzoek te doen. Daarom ondersteunt het prototype vandaag reeds de mogelijkheid om een minimale grootte mee te geven in het JSON bestand.</li>



<li><strong>Gecontroleerde re-identificatie.</strong> Indien onderzoekers merken dat een bepaalde burger een hoog risico heeft om een bepaalde ziekte te ontwikkelen, moet het mogelijk zijn deze burger daarvan op de hoogte te stellen. Ook wanneer bij een fraudeonderzoek er een sterk vermoeden van fraude is door bepaalde burgers, moet het mogelijk zijn de bevoegde instantie op de hoogte te brengen. <span data-olk-copy-source="MessageBody">Er moet dus&nbsp;</span>in een mogelijkheid voorzien worden om in uitzonderlijke situaties op gecontroleerde wijze de identiteit van een burger te achterhalen.</li>



<li><strong>Data holder pseudoniemen.</strong> Zoals eerder in dit artikel aangegeven, hebben data holders vaak zelf geen toegang tot het rijksregisternummer van de burgers waarover ze data beheren. Ook in dergelijk gevallen moet het protocol efficiënt uit te voeren zijn.</li>



<li><strong>Selectieve prijsgave.</strong> Momenteel focust het prototype op doorsnedes; enkel indien <em>alle</em> data holders records over eenzelfde burger aanleveren, wordt het samengestelde record zichtbaar voor de data collector. In de praktijk is er meer flexibiliteit nodig, zoals aangegeven in figuur 5. In de use case waarmee we dit artikel begonnen had de onderzoeker gepseudonimiseerde gegevens nodig over alle MS-patiënten, terwijl ons protoype op dit moment enkel gepseudonimiseerde gegevens aanlevert over alle MS-patiënten die <em>ook</em> de kankerdiagnose kregen.&nbsp;</li>



<li><strong>Multi-batch transfer.</strong> In sommige gevallen moeten data holders meermaals data aanleveren aan de data collector, bijvoorbeeld in het kader van longitudinaal onderzoek. De data collector moet in staat zijn doorheen de tijd data over eenzelfde burger aan elkaar te koppelen.</li>



<li><strong>Vereenvoudigde communicatie.</strong> In het prototype communiceren alle betrokken data holders met elkaar, om vervolgens individueel vercijferde data naar de data collector te sturen. In een aangepast protocol zouden data holders enkel data uitwisselen met en via de data collector, bijvoorbeeld via een REST-interface. In de praktijk is dit de meer wenselijke benadering.</li>
</ul>



<p>Laat ons weten indien u andere nuttige uitbreidingen ziet.</p>



<figure class="wp-block-image aligncenter"><a href="https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure.png"><img loading="lazy" decoding="async" width="1024" height="570" src="https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-1024x570.png" alt="" class="wp-image-24754" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-1024x570.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-300x167.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-768x428.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure-1536x855.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/12/selective_disclosure.png 1882w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Figuur 5. Een mogelijke uibreiding, waarbij de resultaatset meer kan zijn dan enkel de records over burgers waar elke betrokken data holder informatie over aanlevert</figcaption></figure>



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



<p>Het initiële concept alsook het prototype en de performantietesten werden uitgevoerd door Smals Research. De academische partners, met name de <a href="https://www.esat.kuleuven.be/cosic/">COSIC</a> groep en de <a href="https://distrinet.cs.kuleuven.be/">DistriNet</a> groep aan de KU Leuven, alsook de <a href="https://crysp.uwaterloo.ca/">CrySP</a> groep aan Waterloo University in Canada, focusten zich op de theoretische uitwerking. Dit resulteerde in 2025 in twee publicaties:</p>



<ul class="wp-block-list">
<li><a href="https://eur06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flink.springer.com%2Fchapter%2F10.1007%2F978-3-031-84748-6_6&amp;data=05%7C02%7Ckristof.verslype%40smals.be%7C68b705fdb22f4881110008de3bb9eb83%7C578bcd46a26646edac84b52b4ebacd22%7C0%7C0%7C639013866892057810%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;sdata=Yo%2F02a8KKrOvYRkjqLNpVqlXRrS%2BP8W95v6yVUBBrsQ%3D&amp;reserved=0">Springer publicatie &#8211; Privacy-By-Design in the Belgian Public Sector</a>. Dit toegankelijke document bespreekt twee innovatieve oplossingen bedacht door Smals Research voor het pseudonimiseren en kruisen van persoonsgegevens; Lethelink en<a href="https://www.smalsresearch.be/kruisen-van-persoonsgegevens-met-ehealths-blinde-pseudonimiseringsdienst-2/"> eHealths blinde pseudonimiseringsdienst</a>.</li>



<li><a href="https://eur06.safelinks.protection.outlook.com/?url=https%3A%2F%2Farxiv.org%2Fabs%2F2512.08558&amp;data=05%7C02%7Ckristof.verslype%40smals.be%7C68b705fdb22f4881110008de3bb9eb83%7C578bcd46a26646edac84b52b4ebacd22%7C0%7C0%7C639013866892083584%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;sdata=Bom%2Fw3Um684o6Y4kJ9Gf8AT3UgIPUwjOVxBZUBQ3oC8%3D&amp;reserved=0">Arxiv publicatie &#8211; Labeled Delegated PSI and its Applications in the Public Sector</a>.&nbsp; Dit academisch artikel beschijft formeel LetheLink, bewijst de correctheid, bespreekt de performantie en positioneert het werkt t.o.v. bestaand academisch werk.</li>
</ul>



<p>Daarnaast verwijs ik graag naar mijn <a href="https://www.youtube.com/watch?v=-mx9vmdezL4">Devoxx talk</a> en <a href="https://www.smalsresearch.be/download/presentations/20240606_webinar_pseudonimisatie_PRINT.pdf">Webinar</a> uit 2024 getiteld “<em>Privacy in Practice with Smart Pseudonymisation</em>”. LetheLink/Oblivious Join is één van de drie pseudonimiseringstechnieken die ik er bespreek.</p>



<p>Ten slotte zijn er nog <a href="/wp-content/uploads/2025/12/OJ-simple.pptx">slides</a> beschikbaar voor diegenen die graag snel een intuïtief beeld ontwikkelen over de basisprincipes van Oblivious Join. De bijhorende nota’s geven extra uitleg.</p>



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



<p>Secundair gebruik van persoonsgegevens kan ons heel wat inzichten verschaffen die beleidsvorming ondersteunen en wetenschappelijk onderzoek stimuleren. Om die inzichten te ontsluiten moeten gegevens afkomstig van verschillende bronnen op een efficiënte wijze verzameld kunnen worden, met respect voor de privacy. Dat wil zeggen dat enkel de noodzakelijke persoonsgegevens gepseudonimiseerd en gekruist worden en dat participerende partijen in dit proces geen persoonsgegevens te weten komen. Dit was in de praktijk verre van evident.</p>



<p>In samenwerking met internationaal toonaangevende universiteiten werkte Smals Research daarom een concept uit dat met behulp van geavanceerde cryptografie dit op een efficiënte wijze mogelijk maakt. Verder werd een demonstreerbaar prototype gebouwd, wat een eerste stap is om dit effectief in de praktijk te kunnen gaan inzetten.</p>



<p>We hebben de voorbije jaren met heel wat partijen samen gezeten. Iedereen vindt het een zeer nuttige tool, maar vooralsnog missen we de commitment van onze partners om dit in de praktijk om te zetten.</p>



<p><strong>De voornaamste uitdaging vandaag is dan ook het productieklaar krijgen van deze oplossing. Neem dus zeker contact met ons op indien u interesse heeft in deze oplossing en eventueel mee uw schouders hieronder wil zetten.</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Confidentialité et évolutivité grâce à divulgation nulle de connaissance  </title>
		<link>https://www.smalsresearch.be/privacy-en-schaalbaarheid-met-zero-knowledge-bewijzen-2/</link>
		
		<dc:creator><![CDATA[Kristof Verslype]]></dc:creator>
		<pubDate>Thu, 08 Jan 2026 06:00:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[blockchain]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=23410</guid>

					<description><![CDATA[Les preuves zero-knowledge contribuent à améliorer la confidentialité et l'évolutivité dans le contexte de la blockchain. De quoi s'agit-il, quels sont les défis et sont-elles déjà mises en œuvre ?]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar&nbsp;in het <a href="/privacy-en-schaalbaarheid-met-zero-knowledge-bewijzen/" data-type="post" data-id="21119">Nederlands</a>.</em></p>



<figure class="wp-block-image alignright"><a href="/wp-content/uploads/2025/12/MartinHandfordWallyFriends.png"><img loading="lazy" decoding="async" width="244" height="300" src="/wp-content/uploads/2025/12/MartinHandfordWallyFriends-244x300.png" alt="" class="wp-image-24630" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/MartinHandfordWallyFriends-244x300.png 244w, https://www.smalsresearch.be/wp-content/uploads/2025/12/MartinHandfordWallyFriends.png 250w" sizes="auto, (max-width: 244px) 100vw, 244px" /></a></figure>



<p><a href="https://fr.wikipedia.org/wiki/O%C3%B9_est_Charlie_%3F">Où est Charlie&nbsp;?</a> est un jeu bien connu qui consiste à trouver un personnage spécifique &#8211; appelé Charlie &#8211; dans un dessin très détaillé où figurent de nombreux autres personnages. Comment Paula (fournisseur de preuve ou prouveur) peut-elle prouver à Victor (vérificateur) qu&#8217;elle sait où se trouve Charlie sans révéler de détails sur sa position dans l&#8217;image&nbsp;? Paula peut se servir d&#8217;un cache dont la hauteur et la largeur sont deux fois plus grandes que celles de l&#8217;image dans laquelle est caché Charlie. Au centre du cache se trouve un trou de la taille de Charlie. En positionnant le cache de manière à ce que le trou laisse entrevoir Charlie uniquement, Paula prouve à Victor qu&#8217;elle a localisé Charlie sans révéler d&#8217;informations sur son emplacement.</p>



<p>Il s&#8217;agit là d&#8217;un exemple de <em>preuve à divulgation nulle de connaissance</em> (en anglais <em>zero-knowledge proof</em>), ou <em>preuve ZK</em>, qui permet à une partie de prouver une affirmation à une autre partie sans divulguer plus de détails sur cette affirmation. À strictement parler, l&#8217;exemple de Charlie n&#8217;est pas tout à fait sans divulgation de connaissance, car des informations sur la posture et l&#8217;expression faciale de Charlie sont également divulguées, ce qui peut aider à le retrouver.</p>



<p>Un autre <a href="https://eprint.iacr.org/2018/046.pdf">exemple</a>, pour lequel une preuve de concept a été élaborée, permettrait de prouver au public que l&#8217;ADN d&#8217;un candidat à la présidence n&#8217;est pas répertorié dans une base de données ADN médico-légale. La police exécuterait un code accessible au public sur des données qui resteraient cachées au public&nbsp;: la base de données ADN et le profil ADN du candidat à la présidence. Le résultat pourrait être &#8220;<em>aucune correspondance</em>&#8220;, &#8220;<em>correspondance partielle</em>&#8221; ou &#8220;<em>correspondance complète</em>&#8220;. Le public – du moins les cryptographes parmi eux – serait alors convaincu que le résultat est l&#8217;exécution correcte du code sur les données confidentielles. L&#8217;affirmation prouvée ici à l&#8217;aide d&#8217;une preuve ZK concerne l&#8217;intégrité des <u>calculs sur des données confidentielles </u>.</p>



<p>Les titres numériques anonymes, abordés dans un <a href="_wp_link_placeholder" data-wplink-edit="true">précédent article,</a> permettent en revanche aux citoyens de prouver de manière sélective certaines <u>caractéristiques</u> les concernant, telles que leur majorité, leur nationalité ou la détention d&#8217;un permis de conduire valide. Les titres numériques anonymes recourent intensivement aux preuves ZK. Comme nous le verrons plus loin dans cet article, les ZKP peuvent également être utilisés pour la divulgation sélective de données à caractère personnel.</p>



<p>En résumé, les preuves ZK permettent à une partie, le prouveur, de prouver des affirmations à une autre partie, le vérificateur, sans intermédiaire de confiance. Ces affirmations peuvent donc porter sur des calculs sur des données confidentielles, mais aussi sur des caractéristiques (attributs) d&#8217;un citoyen (ou même d&#8217;un animal ou d&#8217;un objet).</p>



<p>Formellement, une preuve ZK doit répondre à trois critères&nbsp;:</p>



<ol class="wp-block-list">
<li><strong>Complétude (<em>completeness</em>).</strong> Si l&#8217;affirmation est vraie, un vérificateur en sera convaincu.</li>



<li><strong>Robustesse (<em>soundness</em>).</strong> Si l&#8217;affirmation est fausse, le prouveur ne peut pas, dans la pratique, convaincre à tort le vérificateur du contraire.</li>



<li><strong>Zéro-connaissance (<em>zero-knowledge</em>). </strong>Si l&#8217;affirmation est vraie, le vérificateur n&#8217;apprend rien de plus que cette affirmation.</li>
</ol>



<p>Cet article aborde deux cas d&#8217;utilisation importants pour les ZKP&nbsp;: l&#8217;amélioration de l&#8217;évolutivité et de la confidentialité des applications blockchain d&#8217;une part, et la gestion de l&#8217;identité des citoyens dans le respect de la vie privée d&#8217;autre part.</p>



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



<figure class="wp-block-image alignright"><a href="/wp-content/uploads/2025/09/chain-7071730_1280.jpg"><img loading="lazy" decoding="async" width="300" height="212" src="/wp-content/uploads/2025/09/chain-7071730_1280-300x212.jpg" alt="" class="wp-image-23397" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/09/chain-7071730_1280-300x212.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/09/chain-7071730_1280-768x542.jpg 768w, https://www.smalsresearch.be/wp-content/uploads/2025/09/chain-7071730_1280-1024x723.jpg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/09/chain-7071730_1280.jpg 1280w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<p>De nombreux <a href="https://onlinelibrary.wiley.com/doi/full/10.1002/spy2.401">cas d’usage potentiels</a> ont déjà été définis dans la littérature, même si, à ce jour, seul un nombre limité d&#8217;entre eux ont été mis en pratique. L&#8217;un des principaux domaines d&#8217;application est celui de la <strong><em>blockchain</em> et des monnaies virtuelles (cryptomonnaies)</strong>.</p>



<p>Les preuves ZK y sont utilisées pour améliorer la confidentialité des transactions. Dans le Bitcoin et quelques autres monnaies virtuelles, l&#8217;adresse (le numéro de compte) de l&#8217;expéditeur, l&#8217;adresse du destinataire et le montant transféré sont visibles par tous pour chaque transaction&nbsp;; tout est publié sur la blockchain. Une situation loin d&#8217;être idéale sur le plan de la confidentialité&#8230;</p>



<p>La monnaie virtuelle <a href="https://z.cash/learn/what-are-zk-snarks/"><em>Zcash</em></a> permet aux utilisateurs de dissimuler ces trois éléments à l&#8217;aide de preuves ZK. Pour ce faire, elle recourt aux <em>zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)</em>, développés en 2012 et appliqués pour la première fois par <a href="https://z.cash/learn/what-are-zk-snarks/"><em>Zcash</em></a>. Le S dans zk-SNARKs signifie &#8220;<em>succint</em>&#8220;, soit &#8220;<em>concis</em>&#8221; en français. Les preuves ZK dans Zcash peuvent &#8220;<em>être vérifiées en quelques millisecondes et ne font que quelques centaines d&#8217;octets&#8221;</em>.</p>



<p>Outre la confidentialité, les preuves ZK sont également utilisées pour augmenter l&#8217;évolutivité des <em>blockchains</em>. La capacité limitée des <em>blockchains</em> a incité la communauté à rechercher activement des moyens d&#8217;améliorer l&#8217;évolutivité sans compromettre la sécurité ou la vitesse. Une meilleure évolutivité signifie qu&#8217;une transaction nécessite moins de ressources avec, à la clé, une baisse des coûts de transaction. L&#8217;une des approches les plus prometteuses est celle des <em>zk-rollups</em>, utilisés sur la <em>blockchain</em> Ethereum par <a href="https://www.alchemy.com/starknet"><em>Starknet</em></a><em>, </em><a href="https://www.zksync.io/"><em>ZKsync</em></a><em> et</em> <a href="https://polygon.technology/"><em>Polygon</em></a> entre autres. Au lieu de placer chaque transaction séparément sur la <em>blockchain</em>, celles-ci sont regroupées hors chaîne, exécutées et seul le résultat, accompagné d&#8217;une preuve ZK de bonne exécution, est placé sur la <em>blockchain</em>. Cela permet de réduire le nombre d&#8217;octets écrits sur la <em>blockchain</em>, et la vérification de la preuve ZK est plus rapide que la vérification de toutes les transactions individuelles. Un espace de stockage et une puissance de calcul moindres sont donc requis.</p>



<p>Parallèlement, des preuves ZK sont en cours d&#8217;élaboration pour démontrer qu&#8217;un <em>smart contrat</em> (code) a été correctement exécuté. Là encore, la raison est l&#8217;évolutivité&nbsp;: chaque fois qu&#8217;une fonction d&#8217;un <em>smart contract</em> (code sur la <em>blockchain</em>) est appelée aujourd&#8217;hui, chaque nœud de la <em>blockchain</em> exécute exactement le même code. L&#8217;idée est qu&#8217;un seul nœud exécute le <em>smart contract</em> et prouve sa bonne exécution. Les autres nœuds vérifient la preuve. Si une preuve ZK est plus efficace que l&#8217;exécution du <em>smart contract</em>, on augmente l&#8217;évolutivité.</p>



<h1 class="wp-block-heading"><strong>Gestion de l&#8217;identité</strong></h1>



<figure class="wp-block-image alignright"><a href="/wp-content/uploads/2025/12/eid-be.png"><img loading="lazy" decoding="async" width="300" height="189" src="/wp-content/uploads/2025/12/eid-be-300x189.png" alt="" class="wp-image-24638" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/eid-be-300x189.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/eid-be-768x484.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/eid-be.png 900w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<p></p>



<p>Les <a href="/controle-over-uw-digitale-identiteit-met-anonieme-credentials/">titres numériques anonymes</a> &#8211; qui font appel aux preuves à divulgation nulle de connaissance (zero knowledge proof – ZKP) – permettent à un citoyen de divulguer de manière sélective des informations le concernant, par exemple sa majorité. Dans la réalité, malheureusement, aucun pays ou région n&#8217;a massivement adopté les titres numériques anonymes dans les documents d&#8217;identité. Aussi des recherches plus récentes se sont-elles penchées sur d&#8217;autres pistes, à savoir la génération d&#8217;une ZKP sur la base d&#8217;un document d&#8217;identité existant. Des travaux académiques récents se sont concentrés sur le <a href="https://eprint.iacr.org/2022/878.pdf">passeport</a>&nbsp;et le <a href="https://eprint.iacr.org/2024/2010.pdf">permis de conduire</a> aux États-unis.</p>



<p>Durant l’été 2025, la VUB&nbsp;a <a href="https://eprint.iacr.org/2025/1266">publié</a>&nbsp;une étude consacrée à la carte d&#8217;identité belge.<br>Cette étude s&#8217;inscrit dans le cadre du projet&nbsp;<a href="https://sdm.brussels/">SDM</a> financé par&nbsp;<a href="https://www.innoviris.brussels/">Innoviris</a>. S&#8217;il s&#8217;agit d&#8217;un travail prometteur, il comporte toutefois divers défis. Un premier défi concerne la faible efficacité&nbsp;: il faut 22 secondes à un ordinateur portable pour générer une preuve, délai qui sera encore plus long sur un téléphone. La révocation représente un deuxième défi&nbsp;: lorsqu&#8217;une carte eID est perdue ou volée et que les certificats sur la carte sont révoqués en conséquence, il ne doit plus être possible de générer des ZKP. &nbsp;</p>



<p>La VUB souhaite aller encore plus loin, à savoir utiliser les ZKP pour démontrer qu&#8217;un citoyen dispose de certains droits, sans divulguer d&#8217;autres données à caractère personnel. À l&#8217;avenir, un citoyen pourrait ainsi prouver qu&#8217;il remplit les conditions pour bénéficier d&#8217;un&nbsp;<a href="https://www.vlaanderen.be/bouwen-wonen-en-energie/huren-en-verhuren/geconventioneerde-verhuur-en-huur-budgethuren/budgethuren-geconventioneerd-huren">loyer modéré</a>, sans avoir à donner de plus amples informations à ce sujet.</p>



<p>Itsme a récemment annoncé son <a href="https://www.itsme-id.com/en-BE/business/services/qualification">Itsme Qualify</a>, qui autorise une divulgation sélective de données à caractère personnel au moyen de ZKP. Actuellement, seule la vérification de l&#8217;âge est prise en charge, mais itsme prévoit d&#8217;étendre cette fonctionnalité. Malheureusement, votre auteur n&#8217;a pas pu trouver de détails accessibles au public sur cette fonctionnalité et n&#8217;est pas parvenu à obtenir plus d&#8217;informations auprès d&#8217;itsme. Il est à espérer que ce manque de transparence ne soit que temporaire, car les ZKP, comme toute autre cryptographie, sont plus sûrs lorsque tous les détails sont publics et peuvent être validés par des experts.</p>



<p>Enfin, sachez qu&#8217;il existe des solutions de gestion d&#8217;identité qui combinent la «&nbsp;blockchain&nbsp;» et les ZKP.&nbsp;<a href="https://www.privado.id/"><em>Privado ID</em></a>&nbsp;est l&#8217;une des initiatives les plus visibles qui était jusqu&#8217;à récemment connue sous le nom de <em>Polygon ID</em>. Un émetteur y confirme les attributs personnels d&#8217;un citoyen – par exemple la date de naissance – en plaçant une valeur de hachage spécialement formée à partir de l&#8217;ensemble des attributs sur un réseau blockchain comme Ethereum. Le citoyen peut alors s&#8217;en servir pour prouver de manière sélective à un tiers des informations à caractère personnel le concernant, telles que sa majorité. Notez que tous les ZKP qui utilisent la même valeur de hachage comme base peuvent être liés entre eux.&nbsp;</p>



<h1 class="wp-block-heading">Résistance quantique</h1>



<figure class="wp-block-image alignright"><a href="/wp-content/uploads/2025/12/physics-3864569_640.jpg"><img loading="lazy" decoding="async" width="300" height="200" src="/wp-content/uploads/2025/12/physics-3864569_640-300x200.jpg" alt="" class="wp-image-24635" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/physics-3864569_640-300x200.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/physics-3864569_640.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<p>Comme déjà expliqué en détail dans des <a href="/tag/quantum-computing/">articles</a> précédents de Smals Research, il existe un risque que de puissants ordinateurs quantiques puissent à l&#8217;avenir briser la cryptographie moderne à clé publique.</p>



<p>Les technologies telles que zk-SNARK et <a href="https://eprint.iacr.org/2017/1066.pdf">Bulletproofs</a>, qui permettent de prouver l&#8217;exactitude des calculs, ne sont <u>pas</u> résistantes aux ordinateurs quantiques. C&#8217;est notamment pour cette raison que les <a href="https://eprint.iacr.org/2018/046.pdf"><em>zk-STARKs</em></a> (Z<em>ero-Knowledge Scalable Transparent Arguments of Knowledge</em>) ont vu le jour en 2018. Comme l&#8217;illustre la figure ci-dessous, l&#8217;efficacité computationnelle reste élevée, mais les preuves sont beaucoup plus volumineuses. Néanmoins, elles sont déjà utilisées à des fins d&#8217;évolutivité et de confidentialité entre autres par <a href="https://www.starknet.io/">StarkNet</a> et <a href="https://starkware.co/starkex/">StarkEx</a>, qui sont tous deux des solutions d&#8217;évolutivité pour Ethereum.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>&nbsp;</td><td class="has-text-align-center" data-align="center">
<p><strong>Résistant à l&#8217;informatique quantique</strong></p>
</td><td class="has-text-align-center" data-align="center">
<p><strong>Temps prouveur</strong></p>
</td><td class="has-text-align-center" data-align="center">
<p><strong>Temps vérificateur</strong></p>
</td><td class="has-text-align-center" data-align="center">
<p><strong>Taille preuve</strong></p>
</td></tr><tr><td>
<p><em>Zk-SNARKs</em></p>
</td><td class="has-text-align-center" data-align="center">
<p>Non</p>
</td><td class="has-text-align-center" data-align="center">
<p>2,3 S</p>
</td><td class="has-text-align-center" data-align="center">
<p>10 ms</p>
</td><td class="has-text-align-center" data-align="center">
<p>&nbsp;288 B</p>
</td></tr><tr><td>
<p><em>Bulletproofs</em></p>
</td><td class="has-text-align-center" data-align="center">
<p>Non</p>
</td><td class="has-text-align-center" data-align="center">
<p>30 S</p>
</td><td class="has-text-align-center" data-align="center">
<p>1100 ms</p>
</td><td class="has-text-align-center" data-align="center">
<p>1,3 KB</p>
</td></tr><tr><td>
<p><em>Zk-STARKs</em></p>
</td><td class="has-text-align-center" data-align="center">
<p>Oui</p>
</td><td class="has-text-align-center" data-align="center">
<p>1,6 S</p>
</td><td class="has-text-align-center" data-align="center">
<p>16 ms</p>
</td><td class="has-text-align-center" data-align="center">
<p>&gt; 40 KB</p>
</td></tr></tbody></table></figure>



<p class="has-text-align-center"><em>Comparaison de trois solutions ZK pour prouver des calculs (<a href="https://technorely.com/insights/the-role-of-bulletproofs-in-ensuring-privacy-for-smart-contracts">source</a>)</em></p>



<p>Des preuves ZK résistantes à l&#8217;informatique quantique pour les calculs sont donc possibles, même si les preuves deviennent beaucoup plus volumineuses. Leur adoption par la communauté <em>blockchain</em> reste pour l&#8217;instant limitée&nbsp;; les zk-SNARKs demeurent la technologie ZK dominante dans le contexte de la <em>blockchain</em>. Le travail de la VUB sur la gestion d&#8217;identité utilise également aujourd&#8217;hui les zk-SNARKs.</p>



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



<p>Les preuves à divulgation nulle de connaissance existent depuis plusieurs décennies et ont déjà fait l&#8217;objet de nombreux développements et recherches. Dans cet article, nous avons identifié les deux principaux cas d&#8217;utilisation&nbsp;:</p>



<ul class="wp-block-list">
<li><strong>Confidentialité et évolutivité sur les réseaux blockchain.</strong> La technologie ZKP permet de prouver qu&#8217;un calcul sur des données confidentielles a été effectué correctement. Ceci peut se faire relativement rapidement et contribue à accroître l&#8217;évolutivité des réseaux blockchain. Bien qu&#8217;elle puisse en théorie être appliquée en dehors de la blockchain, on n&#8217;y assiste pas (encore&nbsp;?) dans la pratique. Travailler avec des parties centrales et la législation est aujourd&#8217;hui plus facile à mettre en œuvre et à expliquer.</li>



<li><strong>Gestion d&#8217;identité dans le respect de la vie privée.</strong> La technologie ZKP permet de divulguer de manière sélective des données à caractère personnel vous concernant. Cela peut se faire sur la base de documents d&#8217;identité classiques, tels que la carte d&#8217;identité électronique belge. De même, des documents d&#8217;identité peuvent être délivrés sous la forme de titres numériques anonymes. Les ZKP peuvent être très lourds sur le plan computationnel, surtout lorsque l&#8217;on utilise une technologie résistante à l&#8217;informatique quantique et que l&#8217;on part de documents d&#8217;identité officiels existants. </li>
</ul>



<p>L&#8217;utilisation de la technologie pour les ZKP et les titres numériques anonymes pour améliorer la confidentialité pose un certain nombre de <a href="https://brave.com/blog/zkp-age-verification-limits/">défis</a>. Nous avons déjà évoqué la performance, la résistance à l&#8217;informatique quantique et la révocation. Il faut également tenir compte de l&#8217;absence de normes, du risque que des informations contextuelles, telles qu&#8217;une adresse IP, compromettent la confidentialité, ainsi que de l&#8217;impact potentiel sur l&#8217;expérience utilisateur pour le citoyen, qui doit passer par une fenêtre supplémentaire.</p>



<p>C&#8217;est peut-être en partie pour cette raison que Gartner a déclaré en 2024 que la technologie ZKP était obsolète<span style="font-size: revert; color: initial;">, ce qui a suscité une certaine </span><a style="font-size: revert;" href="https://www.linkedin.com/posts/nigel-smart-3196b85_gartners-latest-privacy-hype-cycle-has-a-activity-7226536073517015041-Apu1/">indignation</a><span style="font-size: revert; color: initial;"> parmi les cryptographes. Malgré l&#8217;utilisation des preuves ZK dans Web3 (blockchain) et un nombre limité de configurations pour l&#8217;identité numérique, l&#8217;intérêt pour cette technologie stagne selon Gartner. Cela a été confirmé plus tôt cette année lorsque </span><a style="font-size: revert;" href="https://sovrin.org/">Sovrin</a><span style="font-size: revert; color: initial;"> a supprimé son réseau d’identité auto-souveraine (SSI &#8211; </span><em style="font-size: revert; color: initial;">self-sovereign identity</em><span style="font-size: revert; color: initial;">). L&#8217;avenir nous dira si Gartner a raison. Ce serait tragique, compte tenu de la puissance et de la polyvalence de cette technologie, sur laquelle les chercheurs travaillent depuis plusieurs décennies et qui devrait pourtant avoir un potentiel considérable dans le secteur public.</span></p>



<p><strong>N&#8217;hésitez pas à nous contacter si vous êtes intéressé&nbsp;!</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Privacy en schaalbaarheid met zero-knowledge proofs</title>
		<link>https://www.smalsresearch.be/privacy-en-schaalbaarheid-met-zero-knowledge-bewijzen/</link>
		
		<dc:creator><![CDATA[Kristof Verslype]]></dc:creator>
		<pubDate>Thu, 08 Jan 2026 06:00:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[blockchain]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=23409</guid>

					<description><![CDATA[Zero-knowledge bewijzen helpen in blockchain context om zowel privacy als schaalbaarheid te verbeteren. Wat is het, wat zijn de uitdagingen en worden ze reeds toegepast?]]></description>
										<content:encoded><![CDATA[<p><em>Cet article est aussi disponible en <a href="/?p=23410">français</a>.</em></p>
<p data-wp-editing="1"><a href="/wp-content/uploads/2025/12/MartinHandfordWallyFriends.png"><img loading="lazy" decoding="async" class="size-medium wp-image-24630 alignright" src="/wp-content/uploads/2025/12/MartinHandfordWallyFriends-244x300.png" alt="" width="244" height="300" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/MartinHandfordWallyFriends-244x300.png 244w, https://www.smalsresearch.be/wp-content/uploads/2025/12/MartinHandfordWallyFriends.png 250w" sizes="auto, (max-width: 244px) 100vw, 244px" /></a><a href="https://en.wikipedia.org/wiki/Where%27s_Wally%3F">Where is Wally</a> is een bekend spel waarbij een specifiek personage – genaamd Wally – gezocht dient te worden in een tekening met veel details en andere personages. Hoe kan Paula (de <em>prover</em> ofwel de <em>bewijzer</em>) aan Victor (de <em>verifier</em> ofwel de <em>verifieerder</em>) bewijzen dat ze weet waar Wally is, zonder details over zijn positie in de figuur weer te geven? Paula kan een ondoorzichtige plaat nemen die zowel in de hoogte als in de breedte dubbel zo groot is als de figuur waarin Wally verborgen is. In het midden van de plaat is een gaatje ter grootte van Wally. Door de plaat zo te positioneren dat het gaatje enkel Wally toont, bewijst Paula aan Victor dat ze Wally gelokaliseerd heeft, zonder informatie over Wally’s locatie prijs te geven.</p>
<p>Dit is een voorbeeld van een <em>zero-knowledge proof</em>, of kortweg <em>ZKP, </em>wat een partij toelaat een bewering aan een andere partij te bewijzen zonder verder details over die bewering prijs te geven. Strikt genomen is het Wally-voorbeeld niet helemaal zero-knowledge, gezien ook informatie over de lichaamshouding en gezichtsexpressie van Wally prijsgegeven worden, wat kan helpen om hem te vinden.</p>
<p>Een ander <a href="https://eprint.iacr.org/2018/046.pdf">voorbeeld</a>, waarvoor een proof of concept gebouwd werd, bewijst aan het publiek dat het DNA van een presidentskandidaat niet voorkomt in een forensische DNA-database. De politie voert publiek beschikbare code uit op inputs die verborgen blijven voor het publiek: de DNA-database en het DNA-profiel van de presidentskandidaat. De output is “<em>geen match</em>”, “<em>gedeeltelijke match</em>” of “<em>volledige match</em>”. Het publiek – althans de cryptografen onder hen – is ervan overtuigd dat het resultaat de correcte uitvoering is van de code op de confidentiële inputs. De bewering die hier bewezen wordt m.b.v. een ZKP heeft betrekking tot de integriteit van <u>berekeningen op confidentiële data</u>.</p>
<p><em>Anonieme credentials, die in een <a href="/?p=23233">vorig artikel</a> besproken werden,</em> laten daarentegen burgers toe om  <u>eigenschappen</u> over henzelf selectief te bewijzen, zoals meerderjarigheid, nationaliteit of bezit van een geldig rijbewijs. Anonieme credentials maken intensief gebruik van ZKPs. Ook ZKP&#8217;s op zich kunnen, zoals we verder in dit artikel zullen zien, aangewend worden voor selectieve prijsgave van persoonsgegevens.</p>
<p>Samengevat stellen ZKPs een partij, de <em>prover</em>, in staat om zonder een vertrouwde tussenpartij, aan een andere partij, de <em>verifier</em>, beweringen te bewijzen. Deze beweringen kunnen betrekking hebben op berekeningen op confidentiële data, maar ook op eigenschappen (attributen) van een burger (of zelfs een dier of object).</p>
<p>Formeel worden drie criteria gedefinieerd waar een ZKP aan moet voldoen:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li><strong>Volledigheid (completeness).</strong> Als de bewering waar is, dan zal een verifier hiervan overtuigd worden.</li>
<li><strong>Degelijkheid (soundness).</strong> Als de bewering onwaar is, dan kan de prover de verifier in de praktijk niet ten onrechte overtuigen van het tegendeel.</li>
<li><strong>Nulkennis (Zero-knowledge). </strong>Als de bewering waar is, dan leert de verifier niets meer dan die bewering.</li>
</ol>
</li>
</ol>
<p>Dit artikel bespreekt twee belangrijke use cases voor ZKPs: het verbeteren van schaalbaarheid en privacy van blockchaintoepassingen, en privacy-vriendelijk identiteitsbeheer van burgers.</p>


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


<p><a href="/wp-content/uploads/2025/09/chain-7071730_1280.jpg"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-23397" src="/wp-content/uploads/2025/09/chain-7071730_1280-300x212.jpg" alt="" width="300" height="212" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/09/chain-7071730_1280-300x212.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/09/chain-7071730_1280-768x542.jpg 768w, https://www.smalsresearch.be/wp-content/uploads/2025/09/chain-7071730_1280-1024x723.jpg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/09/chain-7071730_1280.jpg 1280w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>In de literatuur werden reeds heel wat <a href="https://onlinelibrary.wiley.com/doi/full/10.1002/spy2.401">potentiële use cases</a> gedefinieerd voor ZKPs, hoewel vandaag maar een beperkt aantal zich ook in de praktijk gerealiseerd heeft. Eén van de grote toepassingsdomeinen is <strong>Blockchain en virtuele munten (cryptocurrencies).</strong></p>


<p>ZKPs worden er gebruikt om de privacy van transacties te verbeteren. In Bitcoin en enkele andere virtuele munten zijn voor elke transactie zowel het adres (het rekeningnummer) van de zender, het adres van de ontvanger, en het getransfereerd bedrag voor iedereen zichtbaar; alles wordt op de blockchain gepubliceerd. Dit is verre van ideaal vanuit privacy-perspectief.</p>


<p>De virtuele munt <a href="https://z.cash/learn/what-are-zk-snarks/"><em>Zcash</em></a> geeft gebruikers de mogelijkheid om m.b.v. ZKPs die drie zaken te verbergen. Daarvoor gebruikt het <em>zk-SNARKs</em> (<em>Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge</em>), die in 2012 ontwikkeld werden en voor het eerst toegepast werden in <a href="https://z.cash/learn/what-are-zk-snarks/"><em>Zcash</em></a>. De S in zk-SNARKs staat voor ‘<em>succint</em>’, oftewel ‘<em>beknopt</em>’. ZKPs in Zcash kunnen &#8216;<em>binnen enkele milliseconden worden geverifieerd en zijn slechts een paar honderd bytes lang’</em>.</p>


<p>Naast privacy worden ZKP ook gebruikt om de schaalbaarheid van blockchains te verhogen. De beperkte capaciteit van blockchains stimuleerde de community om intensief op zoek te gaan naar manieren om beter te schalen, zonder aan veiligheid of snelheid in te boeten. Betere schaalbaarheid betekent dat een transactie minder resources vereist en dus dat de transactiekosten verlagen. Een van de meest veelbelovende aanpakken zijn <em>zk-rollups, </em>die op de Ethereum blockchain gebruikt worden door onder meer <a href="https://www.alchemy.com/starknet"><em>Starknet</em></a><em>, </em><a href="https://www.zksync.io/"><em>ZKsync</em></a><em> </em>en <a href="https://polygon.technology/"><em>Polygon</em></a>. In plaats van elke transactie afzonderlijk op de blockchain te plaatsen, worden ze off-chain gebundeld, uitgevoerd, en wordt enkel het resultaat, samen met een ZKP van correcte uitvoering, op de blockchain geplaatst. Er worden daarbij minder bytes naar de blockchain geschreven, en het verifiëren van het ZKP gaat sneller dan het verifiëren van alle individuele transacties. Er is dus zowel minder opslag als rekenkracht vereist.</p>


<p>Daarnaast wordt gewerkt aan ZKP om te bewijzen dat een smart contract (code) correct uitgevoerd werd. Ook hier is de reden schaalbaarheid; telkens wanneer een functie van een smart contract (code op de blockchain) vandaag aangeroepen wordt, voert elke blockchain node exact dezelfde code uit. Het idee is dat één node het smart contract uitvoert en de correcte uitvoering bewijst. De andere nodes verifiëren het bewijs. Indien dit efficiënter kan dan het uitvoeren van een smart contract, verhogen we de schaalbaarheid.</p>
<h1>Identiteitsbeheer</h1>
<p><a href="/wp-content/uploads/2025/12/eid-be.png"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-24638" src="/wp-content/uploads/2025/12/eid-be-300x189.png" alt="" width="300" height="189" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/eid-be-300x189.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/eid-be-768x484.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/12/eid-be.png 900w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>Met behulp van <a href="/controle-over-uw-digitale-identiteit-met-anonieme-credentials-2/">anonieme credentials</a> – die beroep doen op ZKPs – kan een burger selectief eigenschappen over haarzelf prijsgeven, bijvoorbeeld meerderjarigheid. De realiteit is helaas dat anonieme credentials door geen enkel land of regio op grote schaal geadopteerd werden in identiteitsdocumenten. Recenter onderzoek verlegt daarom de focus: op basis van een bestaand identiteitsdocument wordt een ZKP gegenereerd. Recent academisch werkt focuste op het Amerikaanse <a href="https://eprint.iacr.org/2022/878.pdf">paspoort</a> en <a href="https://eprint.iacr.org/2024/2010.pdf">rijbewijs</a>.</p>


<p>De VUB <a href="https://eprint.iacr.org/2025/1266">publiceerde</a> eerder dit jaar onderzoek dat zich richtte op de Belgische identiteitskaart. Het onderzoek gebeurde in het kader van het door <a href="https://www.innoviris.brussels/">Innoviris</a> gefinancierde <a href="https://sdm.brussels/">SDM</a> project. Het is een veelbelovend werk dat weliswaar nog een aantal uitdagingen voor de boeg heeft. Een eerste is de lage efficiëntie; het duurt op een laptop 22 seconden om een bewijs te genereren, wat verder zal toenemen op een smartphone. Een tweede uitdaging is revokatie; wanneer een eID kaart verloren gaat of gestolen wordt en als gevolg daarvan de certificaten op de kaart gerevokeerd worden, mag men niet langer in staat zijn ZKPs te genereren. &nbsp;</p>



<p>De VUB wil nog een stap verder gaan; ZKPs gebruiken om aan te tonen dat een burger bepaalde rechten heeft, zonder verdere persoonsgegevens prijs te geven. Zo zou een burger in de toekomst kunnen bewijzen aan de voorwaarden van <a href="https://www.vlaanderen.be/bouwen-wonen-en-energie/huren-en-verhuren/geconventioneerde-verhuur-en-huur-budgethuren/budgethuren-geconventioneerd-huren">budgethuren</a> te voldoen, zonder verdere details over het waarom prijs te geven.</p>


<p>Itsme kondigde recent haar <a href="https://www.itsme-id.com/en-BE/business/services/qualification">Itsme Qualify</a> aan, waarbij selectief persoonsgegevens prijsgegeven worden m.b.v. ZKPs. Momenteel wordt enkel leeftijdsverificatie ondersteund, maar Itsme is van plan dit verder uit te breiden. Uw auteur kon helaas geen publiek beschikbare details vinden over de werking en slaagde er niet in meer informatie van Itsme te bekomen. Hopelijk is dit gebrek aan transparantie slechts een tijdelijk gegeven, want ZKPs, net zoals alle andere cryptografie, is het veiligst indien alle details publiek zijn en door experten gevalideerd kunnen worden.</p>
<p><a href="/wp-content/uploads/2025/11/image-2.png"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-24559" src="/wp-content/uploads/2025/11/image-2-253x300.png" alt="" width="253" height="300" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/image-2-253x300.png 253w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-2.png 691w" sizes="auto, (max-width: 253px) 100vw, 253px" /></a>Ten slotte geven we nog mee dat er oplossingen zijn voor identiteitsbeheer die blockchain en ZKPs combineren. <a href="https://www.privado.id/"><em>Privado ID</em></a> is een van de meer zichtbare initiatieven en was tot voor kort gekend onder da naam <em>Polygon ID</em>. Een issuer bevestigt er persoonlijke attributen van een prover &#8211; waaronder bijvoorbeeld de geboortedatum &#8211; door een speciaal gevormde hashwaarde van de set van attributen op een blockchain netwerk zoals Ethereum te plaatsen. De prover kan nu aan de hand daarvan aan een verifier selectief persoonsgegevens &#8211; zoals meerderjarigheid &#8211; over haarzelf bewijzen. Bemerk dat alle ZKPs die dezelfde hashwaarde als basis gebruiken aan elkaar gelinkt kunnen worden. </p>
<h1>Kwantumresistentie</h1>
<p><a href="/wp-content/uploads/2025/12/physics-3864569_640.jpg"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-24635" src="/wp-content/uploads/2025/12/physics-3864569_640-300x200.jpg" alt="" width="300" height="200" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/12/physics-3864569_640-300x200.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/12/physics-3864569_640.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>Zoals reeds uitvoerig in eerdere Smals Research <a href="/tag/quantum-computing/">artikels</a> toegelicht, is er het gevaar dat krachtige kwantumcomputers in de toekomst moderne publieke sleutelcryptografie zouden kunnen breken.</p>
<p>Technologieën zoals zk-SNARKs en <a href="https://eprint.iacr.org/2017/1066.pdf">Bulletproofs</a>, die toelaten de correctheid van berekeningen te bewijzen, zijn alvast <u>niet</u> kwantumresistent. Onder meer daarom werden in 2018 <a href="https://eprint.iacr.org/2018/046.pdf"><em>zk-STARKs</em></a> ( <em>Zero-Knowledge Scalable Transparent Arguments of Knowledge</em>) geïntroduceerd. Zoals geïllustreerd in onderstaande figuur, blijft de computationele efficiëntie hoog, maar worden de bewijzen wel vele malen groter. Niettemin worden ze reeds gebruikt voor schaalbaarheid en privacy door onder meer <a href="https://www.starknet.io/">StarkNet</a> and <a href="https://starkware.co/starkex/">StarkEx</a>, wat beiden schalingsoplossingen voor Ethereum zijn.</p>
<table>
<tbody>
<tr>
<td width="99">
<p> </p>
</td>
<td style="text-align: center;" width="89">
<p><strong>Kwantum-resistent</strong></p>
</td>
<td style="text-align: center;" width="88">
<p><strong>Tijd prover</strong></p>
</td>
<td style="text-align: center;" width="88">
<p><strong>Tijd verifier</strong></p>
</td>
<td style="text-align: center;" width="88">
<p><strong>Grootte bewijs</strong></p>
</td>
</tr>
<tr>
<td width="99">
<p><em>Zk-SNARKs</em></p>
</td>
<td style="text-align: center;" width="89">
<p>Nee</p>
</td>
<td style="text-align: center;" width="88">
<p>2,3 s</p>
</td>
<td style="text-align: center;" width="88">
<p>10 ms</p>
</td>
<td style="text-align: center;" width="88">
<p> 288 B</p>
</td>
</tr>
<tr>
<td width="99">
<p><em>Bulletproofs</em></p>
</td>
<td style="text-align: center;" width="89">
<p>Nee</p>
</td>
<td style="text-align: center;" width="88">
<p>30 s</p>
</td>
<td style="text-align: center;" width="88">
<p>1100 ms</p>
</td>
<td style="text-align: center;" width="88">
<p>1,3 KB</p>
</td>
</tr>
<tr>
<td width="99">
<p><em>Zk-STARKs</em></p>
</td>
<td style="text-align: center;" width="89">
<p>Ja</p>
</td>
<td style="text-align: center;" width="88">
<p>1,6 s</p>
</td>
<td style="text-align: center;" width="88">
<p>16 ms</p>
</td>
<td style="text-align: center;" width="88">
<p>&gt; 40 KB</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: center;"><em>Vergelijking van drie ZKP oplossingen voor het bewijzen van berekeningen (<a href="https://technorely.com/insights/the-role-of-bulletproofs-in-ensuring-privacy-for-smart-contracts">bron</a>)</em></p>
<p>Kwantumresistente ZKPs voor berekeningen zijn dus mogelijk, al worden de bewijzen een pak groter. Hun uptake door de blockchain community blijft vooralsnog beperkt; zk-SNARKs zijn nog steeds de dominante ZKP-technologie in blockchain context. Ook het werk van de VUB rond identiteitsbeheer maakt vandaag gebruik van zk-SNARKs.</p>
<h1>Conclusie</h1>
<p>Zero-knowledge proofs bestaan al enkele decennia en er is sindsdien heel wat onderzoek en ontwikkeling gebeurd. We identificeerden in dit artikel de twee voornaamste use cases:</p>
<ul>
<li><strong>Privacy en schaalbaarheid op blockchain netwerken.</strong> ZKP technologie laat toe te bewijzen dat een berekening op confidentiële data correct uitgevoerd is. Dit kan relatief snel gebeuren en helpt om blockchainnetwerken schaalbaarder te maken. Hoewel het in theorie ook buiten blockchain toegepast kan worden, zien we dit (nog?) niet in de praktijk. Werken met centrale partijen en wetgeving is vandaag eenvoudiger toe te passen en makkelijker uit te leggen.</li>
<li><strong>Privacy-vriendelijk identiteitsbeheer.</strong> ZKP technologie laat toe om selectief persoonsgegevens over jezelf prijs te geven. Dit kan op basis van klassieke identiteitsdocumenten, zoals de Belgische eID kaart, ofwel kunnen identiteitsdocumenten uitgegeven worden onder de vorm van anonieme credentials. De ZKPs kunnen computationeel erg zwaar worden, zeker wanneer we gebruik maken van kwantumresistente technologie en wanneer van bestaande, officiële identiteitsdocumenten vertrokken wordt. </li>
</ul>
<p>Het gebruik van technologie voor ZKPs en anonieme credentials om de privacy te verbeteren komt met een aantal <a href="https://brave.com/blog/zkp-age-verification-limits/">uitdagingen</a>. We hadden het reeds over efficiëntie, kwantumresistentie en revocatie. Verder moet rekening gehouden worden met het gebrek aan standaarden, het risico dat contextinformatie, zoals een IP adres, de privacy alsnog teniet doet, en de mogelijke impact op de gebruikservaring voor de burger doordat die met een extra venster moet afrekenen.</p>
<p>Wellicht onder meer daardoor stelde Gartner in 2024 dat ZKP-technologie verouderd (<em>“obsolete”</em>) is, wat onder cryptografen tot enige <a href="https://www.linkedin.com/posts/nigel-smart-3196b85_gartners-latest-privacy-hype-cycle-has-a-activity-7226536073517015041-Apu1/">verontwaardiging</a> leidde. Gartner verwijderde de technologie nadien uit hun <a href="https://en.wikipedia.org/wiki/Gartner_hype_cycle">hype cycles</a>. Ondanks het gebruik van ZKPs in Web3 (blockchain) en een beperkt aantal setups voor digitale identiteit, stagneert volgens Gartner de interesse in de technologie. Dit werd eerder dit jaar bevestigd toen <a href="https://sovrin.org/">Sovrin</a> haar blockchain netwerk voor SSI (self-sovereign identity) uitdoofde. De toekomst zal uitwijzen of Gartner gelijk krijgt. Dit zou tragisch zijn, gezien de kracht en veelzijdigheid van deze technologie, waar onderzoekers reeds meerdere decennia aan werken en die nochthans heel wat potentieel zou moeten hebben in de publieke sector.</p>
<p><strong>Aarzel niet ons te contacteren bij interesse!</strong></p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>L’IA pour améliorer la sécurité du code ? (Partie 1 : sécurité du code généré)</title>
		<link>https://www.smalsresearch.be/ia-pour-ameliorer-securite-du-code-1/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 14:30:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[assistants]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">/?p=23159</guid>

					<description><![CDATA[L’IAGén permet-elle d’écrire du code informatique plus sécurisé ?]]></description>
										<content:encoded><![CDATA[
<p><a href="/ai-om-de-veiligheid-van-de-code-te-verbeteren-deel-1-veiligheid-van-de-gegenereerde-code/"><em>Nederlandstalige versie</em></a></p>



<p>La communication intense autour de l’intelligence artificielle générative (IAGén) et l’augmentation de son utilisation – au moins en phase de test – que cela soit par peur de rater quelque chose ou pour apporter une réelle valeur ajoutée, conduit à se poser la question de son utilité dans beaucoup de domaines, et, pourquoi pas, afin d’améliorer la sécurité du code. En particulier, l’IAGén permet-elle d’écrire du code informatique plus sécurisé&nbsp;? Peut-elle aider à détecter des vulnérabilités dans du code existant&nbsp;?</p>



<p>Dans cette première partie nous apporterons des éléments de réponse à la première question. Nous traiterons la seconde question dans un autre article.</p>



<h1 class="wp-block-heading">Aspects humains</h1>



<p>Commençons par considérer l’aspect humain du recours à l’utilisation de l’IAGén. Dans une analyse détaillée, dont je recommande vivement la lecture, Simkute <i>et al.</i>&nbsp;<a href="#_ref1">[1]</a> expliquent les raisons pouvant conduire à une perte de productivité des programmeurs ayant recours à l’IAGén. Les chercheurs citent notamment&nbsp;: un glissement du rôle des programmeurs de la production à l’évaluation, une restructuration inutile des flux de travail, des interruptions, et une tendance de l’IAGén à rendre les tâches faciles plus faciles et les tâches difficiles plus difficiles. On s’étonne alors moins des résultats d’une étude de Perry <i>et al.</i>&nbsp;<a href="#_ref2">[2]</a>, de l’université de Stanford. Ceux-ci montrent que les participants ayant accès à un assistant basé sur un modèle d’IA écrivent un code significativement moins sécurisé que ceux sans accès. Pire, les participants avec un accès à l’assistant étaient plus enclins à croire qu’ils écrivaient du code sécurisé, que ceux sans l’assistant. Cette observation de Perry <i>et al.</i> est corroborée par le travail de Klemmer <i>et al.</i>&nbsp;<a href="#_ref3">[3]</a>&nbsp;: l’équipe de chercheurs a interrogé des programmeurs professionnels, et bien que ces derniers se méfient des suggestions des assistants d’IA, il apparait qu’ils surestiment aussi leur propre capacité à examiner les suggestions de ces assistants. L’adoption d’assistants impose donc la mise en place de pratiques de revue de code et d’analyse statique systématiques&nbsp;<a href="#_ref4">[4]</a>.</p>



<h1 class="wp-block-heading">Fiabilité des propositions</h1>



<p>Considérant maintenant la qualité des suggestions de l’IAGén, bien que celle-ci produise en général du code fonctionnellement correct, elle introduit également des problèmes de sécurité&nbsp;<a href="#_ref5">[5]</a>,&nbsp;<a href="#_ref6">[6]</a>. Khoury <i>et al.</i>&nbsp;<a href="#_ref7">[7]</a> ont montré à travers plusieurs exemples que <a href="https://chatgpt.com/" type="link" id="https://chatgpt.com/" target="_blank" rel="noreferrer noopener">ChatGPT 3.5</a> génère souvent du code qui présente des problèmes de sécurité&nbsp;: seuls 5 des 21 cas d’utilisation que les auteurs ont étudiés étaient initialement sécurisés. ChatGPT 3.5 n’a été en mesure de produire du code sécurisé que dans 7 autres cas, et ce, seulement après que les auteurs lui ont explicitement demandé de corriger le code.</p>



<p>Plus récemment, Sivana <i>et al.</i>&nbsp;<a href="#_ref8">[8]</a> concluaient leurs expérimentations en soulignant que ChatGPT, en tant que plateforme, générait plus de vulnérabilités de type <a href="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" data-type="link" data-id="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE</a> que le site StackOverflow. Indépendamment, Fu <i>et al.</i>&nbsp;<a href="#_ref9">[9]</a> ont montré à travers plusieurs centaines d’échantillons de codes générés par <a href="https://github.com/features/copilot" data-type="link" data-id="https://github.com/features/copilot" target="_blank" rel="noreferrer noopener">Co-Pilot</a> et trouvés sur GitHub, qu’environ un tiers contient des vulnérabilités communes <a href="https://cwe.mitre.org/" data-type="link" data-id="https://cwe.mitre.org/" target="_blank" rel="noreferrer noopener">répertoriées par l’organisme MITRE</a> (certaines faisant partie des 25 plus importantes). Les auteurs recommandent donc aux programmeurs de suivre les meilleures pratiques d’utilisation des outils de génération de code et de toujours vérifier les suggestions de code générées. Des résultats similaires avaient déjà été trouvés par Pearce <i>et al.</i>&nbsp;<a href="#_ref10">[10]</a> deux ans plus tôt.</p>



<p>On pourrait multiplier les références à des résultats similaires. C’est ce qu’ont fait Basic et Giaretta&nbsp;<a href="#_ref11">[11]</a> dans une étude systématique extensive de la littérature académique sur les IAGén et la sécurité du code informatique. Les modèles concernés sont divers et incluent notamment ChatGPT 3.5, GPT 4-Turbo, Copilot, Claude, Sonnet et Gemini Pro. Les auteurs confirment que plusieurs vulnérabilités clés, telles que les injections SQL et les dépassements de mémoire tampon, peuvent être trouvées dans le code généré par les IAGén. Ils signalent aussi que les risques d’empoisonnement des données d’entraînement peuvent non seulement conduire à une génération de code non sécurisé, mais aussi compromettre la détection des vulnérabilités.</p>



<h1 class="wp-block-heading">Empoisonnement de l’IA</h1>



<p>L’empoisonnement d’un modèle génératif de complétion de code consiste à compromettre l’intégrité de ce modèle en intégrant des échantillons de code malicieux dans les données d’entrainement du modèle. Les attaques par porte dérobée, quant à elles, tentent de dissimuler des déclencheurs à l’intérieur du réseau neuronal profond du modèle pendant la phase d’apprentissage, provoquant la génération de résultats choisis par l’adversaire.</p>



<p>Malgré des progrès importants des modèles de complétion de code, ceux-ci restent vulnérables à ce type d’attaques comme l’ont montré Yan <i>et al.</i>&nbsp;<a href="#_ref12">[12]</a> avec CodeBreaker. Pour leur attaque, il n’est pas nécessaire de compromettre un modèle massif pré-entrainé comme <a href="https://github.com/google-research/bert" data-type="link" data-id="https://github.com/google-research/bert" target="_blank" rel="noreferrer noopener">BERT</a> ou <a href="https://github.com/openai/gpt-3" data-type="link" data-id="https://github.com/openai/gpt-3" target="_blank" rel="noreferrer noopener">GPT</a>. En effet ces modèles sont souvent utilisés comme fondation que les victimes règlent finement pour des tâches particulières en utilisant des données spécifiques souvent disponibles publiquement. Il suffit donc alors à l’adversaire de compromettre ces données de réglage fin, ou de téléverser son propre ensemble de données polluées générées avec CodeBreaker. Le code empoisonné généré après l’utilisation de CodeBreaker n’est pas détectable avec des outils de détection de vulnérabilités basés sur des analyses statiques traditionnelles ou des IAGén.</p>



<p>Même si ce type d’attaques est peu probable il pose la question de la provenance de l’outil d’IAGén utilisé et s’inscrit dans la problématique inhérente à l’IAGén actuelle d’obtenir des modèles à la fois sécurisés et exactes&nbsp;<a href="#_ref13">[13]</a>.</p>



<h1 class="wp-block-heading">Importance de la requête</h1>



<p>Tout n’est pas si noir cependant et il faut souligner l’importance du choix des incitations («&nbsp;prompt&nbsp;» en anglais) données à l’IAGén afin d’éviter la génération de code avec des faiblesses potentielles. Götz <i>et al.</i>&nbsp;<a href="#_ref14">[14]</a> montrent qu’alors que 65% du code initialement généré par divers outils d’IAGén est considéré comme non sécurisé par un ingénieur qualifié, ces mêmes outils génèrent du code sécurisé lorsqu’ils sont guidés manuellement. Les auteurs concluent qu’une expertise technique, en particulier dans le domaine de la sécurité est requise pour générer du code sécurisé en utilisant des assistants de codage.</p>



<p>Afin d’obtenir les meilleurs résultats possibles il faut donc que la requête envoyée à l’IAGén soit à la fois précise et clairement interprétable par le modèle. Autrement-dit, le programmeur a tout intérêt à se plier aux exigences de la machine et fournir avec le plus de détails possibles, non seulement la tâche que le modèle doit exécuter, mais aussi le contexte qui décrit cette tâche, ainsi que les données d’entrée et les données de sortie attendues. Cela peut se faire en seule fois ou sous forme de chaîne de pensée suivant un raisonnement particulier.</p>



<p>Il n’existe cependant pas de méthode idéale, mais Bruni <i>et al</i>.&nbsp;<a href="#_ref15">[15]</a> donnent plusieurs exemples simples d’amélioration des incitations. Selon leurs expérimentations la méthode la plus efficace est, après une première requête, de demander à l’IAGén de revoir le code qu’elle a déjà suggéré pour des vulnérabilités potentielles, et enfin de proposer des corrections. Par exemple&nbsp;:</p>



<ul class="wp-block-list">
<li>Requête 1&nbsp;: Génère du code Java pour …</li>



<li>Requête 2&nbsp;: Examine le code suivant et trouve les problèmes de sécurité&nbsp;: <code>&lt;réponse fournie à la requête 1&gt;</code></li>



<li>Requête 3&nbsp;: À partir des problèmes suivants&nbsp;: <code>&lt;problèmes signalés par la requête 2&gt;</code>, améliore le code suivant&nbsp;: <code>&lt;réponse fournie à la requête 1&gt;</code></li>
</ul>



<p>Cette façon de faire suppose bien évidemment que l’IAGén est capable de détecter des vulnérabilités, mais comme nous le verrons dans l’article suivant ce n’est pas encore le cas aujourd’hui.</p>



<h1 class="wp-block-heading">Outils spécialisés</h1>



<p>Nous pouvons néanmoins nous attendre à l’arrivée de nouveaux outils qui pourraient permettre aux programmeurs d’éviter les écueils de sécurité créés par l’IAGén.</p>



<p>Par exemple l’outil <a href="https://github.com/eth-sri/SafeCoder" data-type="link" data-id="https://github.com/eth-sri/SafeCoder" target="_blank" rel="noreferrer noopener">SafeCoder</a> d’ETH Zurich <a href="#_ref16">[16]</a> propose un cadre permettant d’améliorer la sécurité du code généré par une IAGén sans sacrifier la fonctionnalité de ce code. L’outil combine le réglage standard des instructions avec un réglage fin – spécifique à la sécurité, en utilisant des exemples de code sûrs et non-sûrs. Pour créer un ensemble de données de qualité, les auteurs ont mis en place un processus automatisé qui extrait les corrections de vulnérabilités vérifiées à partir des modifications de code enregistrées sur GitHub à l’aide d’un filtrage heuristique et d’une analyse statique basée sur l’outil <a href="/publications/document/?docid=293" data-type="link" data-id="/publications/document/?docid=293" target="_blank" rel="noreferrer noopener">CodeQL</a>. Les résultats montrent que SafeCoder améliore la sécurité du code d’environ 30 % tout en conservant son utilité dans des étalons tels que <a href="https://github.com/openai/human-eval" data-type="link" data-id="https://github.com/openai/human-eval" target="_blank" rel="noreferrer noopener">HumanEval</a> et <a href="https://github.com/hendrycks/test" data-type="link" data-id="https://github.com/hendrycks/test" target="_blank" rel="noreferrer noopener">MMLU</a>. Les auteurs admettent cependant que l’outil n’améliore pas la sécurité de code contenant des vulnérabilités pour lesquelles il n’a pas été entrainé.</p>



<p>En attendant, une façon de procéder pourrait être de combiner un outil d’analyse statique « classique » avec une IAGén en demandant d’abord à l’IAGén de générer le code souhaité, puis en utilisant l’outil d’analyse statique pour analyser ce code. En cas de problème identifié par l’outil, si la correction n’est pas évidente, on peut demander à l’IAGén de modifier celui-ci en indiquant à celle-ci l’erreur précédemment identifiée. On peut recommencer la boucle jusqu’à ce qu’aucun problème ne soit identifié par l’outil d’analyse. Bien évidemment cette procédure fastidieuse pourrait être automatisée dans un cycle de développement logiciel habituel..</p>



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



<p>La première partie de cet article était dédiée à l’impact de l’IAGén sur la qualité du code en termes de sécurité. En l’état actuel des choses, force est de constater que malgré la capacité étonnante des outils d’IAGén à générer du code informatique, ce code peut souvent présenter des problèmes de sécurité – et ce quelque-soit le modèle choisi. Il convient donc d’être très vigilent avant d’utiliser du code généré par des outils d’IAGén. De plus, même si les IAGén peuvent faciliter certaines tâches de programmation, il n’en reste pas moins qu’elles ne portent pas la responsabilité des conséquences potentiellement négatives de leur «&nbsp;travail&nbsp;», responsabilité qui échoit au programmeur et à son employeur.</p>



<p>Les compétences et connaissances en matière de sécurité des programmeurs – dont la tâche évoluera progressivement de créateur de code à contrôleur de code – restent un atout essentiel. L’arrivée de l’IAGén dans le cycle de développement est peut-être une bonne occasion de renforcer la collaboration entre les équipes de sécurité et de développement en établissant (ou renforçant) des groupes de travail dans lesquels sont alignés des objectifs communs afin d’améliorer la sécurité.</p>



<p>Dans la seconde partie nous nous focaliserons sur l’utilisation de l’IAGén pour la détection de vulnérabilités dans le code.</p>



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



<p><a name="_ref1">[1]</a> A. Simkute, L. Tankelevitch, V. Kewenig, A. E. Scott, A. Sellen, et S. Rintel, «&nbsp;Ironies of generative AI: Understanding and mitigating productivity loss in human-AI interactions&nbsp;», 17 février 2024, <i>arXiv</i>: arXiv:2402.11364. doi: <a href="https://doi.org/10.48550/arXiv.2402.11364" target="_blank" rel="noopener">10.48550/arXiv.2402.11364</a>.</p>



<p><a name="_ref2">[2]</a> N. Perry, M. Srivastava, D. Kumar, et D. Boneh, «&nbsp;Do users write more insecure code with AI assistants?&nbsp;», 16 décembre 2022, <i>arXiv</i>: arXiv:2211.03622. Consulté le: 3 octobre 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2211.03622" target="_blank" rel="noopnener">http://arxiv.org/abs/2211.03622</a></p>



<p><a name="_ref3">[3]</a> J. H. Klemmer <i>et al.</i>, «&nbsp;Using AI assistants in software development: A qualitative study on security practices and concerns&nbsp;», 14 octobre 2024. doi: <a href="https://doi.org/10.1145/3658644.3690283" target="_blank" rel="noopener">10.1145/3658644.3690283</a>.</p>



<p><a name="_ref4">[4]</a> J. Ganseman, «&nbsp;LLM pour code&nbsp;: the good, the bad and the ugly&nbsp;», Smals Research Blog. Consulté le: 18 octobre 2023. [En ligne]. Disponible sur: <a href="/llms-pour-code/" target="_blank" rel="noopnener">/llms-pour-code/</a></p>



<p><a name="_ref5">[5]</a> A. Chowdhery <i>et al.</i>, «&nbsp;PaLM: scaling language modeling with pathways&nbsp;», 5 octobre 2022, <i>arXiv</i>: arXiv:2204.02311. doi: <a href="https://doi.org/10.48550/arXiv.2204.02311" target="_blank" rel="noopener">10.48550/arXiv.2204.02311</a>.</p>



<p><a name="_ref6">[6]</a> M. Chen <i>et al.</i>, «&nbsp;Evaluating large language models trained on code&nbsp;», 14 juillet 2021, <i>arXiv</i>: arXiv:2107.03374. doi: <a href="https://doi.org/10.48550/arXiv.2107.03374" target="_blank" rel="noopener">10.48550/arXiv.2107.03374</a>.</p>



<p><a name="_ref7">[7]</a> R. Khoury, A. R. Avila, J. Brunelle, et B. M. Camara, «&nbsp;How secure is code generated by ChatGPT?&nbsp;», 19 avril 2023, <i>arXiv</i>: arXiv:2304.09655. doi: <a href="https://doi.org/10.48550/arXiv.2304.09655" target="_blank" rel="noopener">10.48550/arXiv.2304.09655</a>.</p>



<p><a name="_ref8">[8]</a> S. Hamer, M. d’Amorim, et L. Williams, «&nbsp;Just another copy and paste? Comparing the security vulnerabilities of ChatGPT generated code and StackOverflow answers&nbsp;», 22 mars 2024, <i>arXiv</i>: arXiv:2403.15600. doi: <a href="https://doi.org/10.48550/arXiv.2403.15600" target="_blank" rel="noopener">10.48550/arXiv.2403.15600</a>.</p>



<p><a name="_ref9">[9]</a> Y. Fu <i>et al.</i>, «&nbsp;Security weaknesses of copilot generated code in GitHub&nbsp;», 4 avril 2024, <i>arXiv</i>: arXiv:2310.02059. doi: <a href="https://doi.org/10.48550/arXiv.2310.02059" target="_blank" rel="noopener">10.48550/arXiv.2310.02059</a>.</p>



<p><a name="_ref10">[10]</a> H. Pearce, B. Ahmad, B. Tan, B. Dolan-Gavitt, et R. Karri, «&nbsp;Asleep at the keyboard? Assessing the security of GitHub Copilot’s code contributions&nbsp;», in <i>2022 IEEE Symposium on Security and Privacy (SP)</i>, San Francisco, CA, USA: IEEE, mai 2022, p. 754‑768. doi: <a href="https://doi.org/10.1109/sp46214.2022.9833571" target="_blank" rel="noopener">10.1109/sp46214.2022.9833571</a>.</p>



<p><a name="_ref11">[11]</a> E. Basic et A. Giaretta, «&nbsp;Large language models and code security: A systematic literature review&nbsp;», 19 décembre 2024, <i>arXiv</i>: arXiv:2412.15004. doi: <a href="https://doi.org/10.48550/arXiv.2412.15004" target="_blank" rel="noopener">10.48550/arXiv.2412.15004</a>.</p>



<p><a name="_ref12">[12]</a> S. Yan <i>et al.</i>, «&nbsp;An LLM-assisted easy-to-trigger backdoor attack on code completion models: Injecting disguised vulnerabilities against strong detection&nbsp;», présenté à 33rd USENIX Security Symposium, Philadelphia, PA, USA, août 2024.</p>



<p><a name="_ref13">[13]</a> E.-M. El-Mhamdi <i>et al.</i>, «&nbsp;On the impossible safety of large AI models&nbsp;», 9 mai 2023, <i>arXiv</i>: arXiv:2209.15259. Consulté le: 17 octobre 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2209.15259" target="_blank" rel="noopnener">http://arxiv.org/abs/2209.15259</a></p>



<p><a name="_ref14">[14]</a> S. Götz et A. Schaad, «&nbsp;“You still have to study” &#8211; On the security of LLM generated code&nbsp;», août 2024, [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2408.07106" target="_blank" rel="noopnener">https://arxiv.org/abs/2408.07106</a></p>



<p><a name="_ref15">[15]</a> M. Bruni, F. Gabrielli, M. Ghafari, et M. Kropp, «&nbsp;Benchmarking prompt engineering rechniques for secure code generation with GPT models&nbsp;», 9 février 2025, <i>arXiv</i>: arXiv:2502.06039. doi: <a href="https://doi.org/10.48550/arXiv.2502.06039" target="_blank" rel="noopener">10.48550/arXiv.2502.06039</a>.</p>



<p><a name="_ref16">[16]</a> J. He, M. Vero, G. Krasnopolska, et M. Vechev, «&nbsp;Instruction tuning for secure code generation&nbsp;», 12 juillet 2024, <i>arXiv</i>: arXiv:2402.09497. doi: <a href="https://doi.org/10.48550/arXiv.2402.09497" target="_blank" rel="noopener">10.48550/arXiv.2402.09497</a>.</p>



<p>_________________________<br><br><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>
					
		
		
			</item>
		<item>
		<title>AI om de veiligheid van de code te verbeteren? (Deel 1: veiligheid van de gegenereerde code)</title>
		<link>https://www.smalsresearch.be/ai-om-de-veiligheid-van-de-code-te-verbeteren-deel-1-veiligheid-van-de-gegenereerde-code/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 14:30:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[assistants]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">/?p=23190</guid>

					<description><![CDATA[Kan GenAI worden gebruikt om veiligere computercode te schrijven?]]></description>
										<content:encoded><![CDATA[
<p><em><a href="/ia-pour-ameliorer-securite-du-code-1/" data-type="link" data-id="/ia-pour-ameliorer-securite-du-code-1/">Version en français</a></em></p>



<p>De uitgebreide communicatie rond generatieve artificiële intelligentie (GenAI) en het toenemende gebruik ervan – althans in de testfase – uit angst om iets te missen of om een echte meerwaarde te bieden, roept de vraag op of het in veel domeinen nuttig is, en waarom niet, om de veiligheid van code te verbeteren. Meer bepaald: kan GenAI worden gebruikt om veiligere computercode te schrijven? Kan het helpen bij het opsporen van kwetsbaarheden in bestaande code?</p>



<p>In dit eerste deel geven we een antwoord op de eerste vraag. De tweede vraag komt in een ander artikel aan bod.</p>



<h1 class="wp-block-heading">Menselijke aspecten</h1>



<p>Laten we beginnen met het menselijke aspect van het gebruik van GenAI. In een gedetailleerde analyse, die ik ten zeerste aanbeveel, leggen Simkute <i>et al.</i>&nbsp;<a href="#_ref1">[1]</a> de redenen uit die kunnen leiden tot een productiviteitsverlies van programmeurs die een beroep doen op GenAI. Onderzoekers hebben het onder andere over: een verglijding van de programmeurrol van productie naar evaluatie, een onnuttige herstructurering van werkstromen, onderbrekingen en de neiging van GenAI om makkelijke taken nog gemakkelijker en moeilijke taken nog moeilijker te maken. De resultaten van een studie van Perry <i>et al</i>.&nbsp;<a href="#_ref2">[2]</a>, van Stanford University verbazen ons dan minder. Deze tonen aan dat deelnemers die toegang hebben tot een codeerassistent op basis van een AI-model aanzienlijk minder veilige code schrijven dan deelnemers zonder toegang. Erger nog, deelnemers met toegang tot de assistent geloofden vaker dat ze veilige code schreven dan deelnemers zonder toegang. Deze observatie van Perry <i>et al.</i> wordt bevestigd door het werk van Klemmer <i>et al.</i>&nbsp;<a href="#_ref3">[3]</a>: het onderzoeksteam ondervroeg professionele programmeurs, en hoewel zij wantrouwig staan tegenover suggesties van AI-codeerassistenten, blijkt dat zij ook hun eigen vermogen om de suggesties van deze codeerassistenten te beoordelen overschatten. Het gebruik van codeerassistenten vereist daarom de implementatie van systematische codecontrole en statische analyse&nbsp;<a href="#_ref4">[4]</a>.</p>



<h1 class="wp-block-heading">Betrouwbaarheid van de
voorstellen</h1>



<p>Wat betreft de kwaliteit van de suggesties van GenAI: hoewel het over het algemeen functioneel correcte code oplevert, introduceert het ook veiligheidsproblemen&nbsp;<a href="#_ref5">[5]</a>,&nbsp;<a href="#_ref6">[6]</a>. Khoury <i>et al.</i>&nbsp;<a href="#_ref7">[7]</a> hebben met behulp van meerdere voorbeelden aangetoond dat <a href="https://chatgpt.com/" target="_blank" rel="noreferrer noopener">ChatGPT 3.5</a> vaak code genereert die voor veiligheidsproblemen kan zorgen&nbsp;: slechts 5 van de 21 use cases die de auteurs bestudeerd hebben waren aanvankelijk beveiligd. ChatGPT 3.5 was in staat om beveiligde code aan te maken voor slechts 7 gevallen en dit was pas mogelijk nadat de auteurs expliciet vroegen om de code te verbeteren.</p>



<p>Meer recentelijk concludeerden Sivana<i> et al</i>.&nbsp;<a href="#_ref8">[8]</a> dat ChatGPT als platform meer <a href="https://nl.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE-kwetsbaarheden</a> genereerde dan de website StackOverflow. Onafhankelijk daarvan hebben Fu <i>et al</i>.&nbsp;<a href="#_ref9">[9]</a> aan de hand van honderden door <a href="https://github.com/features/copilot" target="_blank" rel="noreferrer noopener">Copilot</a> gegenereerde codevoorbeelden die op GitHub zijn gevonden, aangetoond dat ongeveer een derde daarvan veelvoorkomende kwetsbaarheden bevat die door de organisatie <a href="https://cwe.mitre.org/" target="_blank" rel="noreferrer noopener">MITRE</a> zijn geïnventariseerd (waarvan sommige tot de 25 belangrijkste behoren). De auteurs raden programmeurs daarom aan om de beste praktijken voor het gebruik van codegeneratietools te volgen en de gegenereerde codesuggesties altijd te controleren. Soortgelijke resultaten waren al gevonden door Pearce <i>et al.</i>&nbsp;<a href="#_ref10">[10]</a> twee jaar eerder.</p>



<p>Er zijn nog veel meer voorbeelden van soortgelijke resultaten. Dat hebben Basic en Giaretta&nbsp;<a href="#_ref11">[11]</a> gedaan in een uitgebreide systematische studie van de academische literatuur over GenAI en de veiligheid van computercode. De betrokken modellen zijn divers en omvatten onder meer ChatGPT 3.5, GPT 4-Turbo, Copilot, Claude, Sonnet en Gemini Pro. De auteurs bevestigen dat verschillende belangrijke kwetsbaarheden, zoals SQL-injecties en bufferoverflows, kunnen worden aangetroffen in de code die door GenAI wordt gegenereerd. Ze wijzen er ook op dat het risico van vergiftiging van trainingsgegevens niet alleen kan leiden tot het genereren van onveilige code, maar ook de detectie van kwetsbaarheden in gevaar kan brengen.</p>



<h1 class="wp-block-heading">Vergiftiging van AI</h1>



<p>Het vergiftigen van een generatief model voor codeaanvulling bestaat uit het compromitteren van de integriteit van dit model door kwaadaardige codevoorbeelden in de trainingsgegevens van het model te integreren. Backdoor-aanvallen proberen tijdens de trainingsfase triggers te verbergen in het diepe neurale netwerk van het model, waardoor resultaten worden gegenereerd die door de tegenstander zijn gekozen.</p>



<p>Ondanks aanzienlijke vooruitgang op het gebied van codeaanvullingsmodellen blijven deze kwetsbaar voor dit soort aanvallen, zoals Yan <i>et al</i>.&nbsp;<a href="#_ref12">[12]</a> met CodeBreaker hebben aangetoond. Voor hun aanval is het niet nodig om een vooraf getraind groot model zoals <a href="https://github.com/google-research/bert">BERT</a> of <a href="https://github.com/openai/gpt-3">GPT</a> te compromitteren. Deze modellen worden namelijk vaak gebruikt als basis die slachtoffers nauwkeurig afstemmen op specifieke taken met behulp van specifieke gegevens die vaak openbaar beschikbaar zijn. De tegenstander hoeft dus alleen maar deze finetuning data te compromitteren of zijn eigen set vervuilde data, gegenereerd met CodeBreaker, te uploaden. De vergiftigde code die na gebruik van CodeBreaker wordt gegenereerd, is niet detecteerbaar met kwetsbaarheidsdetectietools op basis van traditionele statische analyses of GenAI.</p>



<p>Hoewel dit soort aanvallen onwaarschijnlijk is, rijst de vraag waar de gebruikte GenAI-tool vandaan komt en past dit in de problematiek die inherent is aan de huidige GenAI om zowel veilige als nauwkeurige modellen te verkrijgen&nbsp;<a href="#_ref13">[13]</a>.</p>



<h1 class="wp-block-heading">Belang van de prompt</h1>



<p>Het is echter niet allemaal kommer en kwel en het belang van de keuze van de prompts die aan GenAI worden gegeven om het genereren van code met potentiële zwakke punten te voorkomen, moet worden benadrukt. Götz <i>et al</i>.&nbsp;<a href="#_ref14">[14]</a> tonen aan dat, terwijl 65% van de code die oorspronkelijk door verschillende GenAI-tools werd gegenereerd, door een gekwalificeerde ingenieur als onveilig wordt beschouwd, dezelfde tools veilige code genereren wanneer ze handmatig worden aangestuurd. De auteurs concluderen dat technische expertise, met name op het gebied van beveiliging, vereist is om veilige code te genereren met behulp van code AI-codeerassistenten.</p>



<p>Om de best mogelijke resultaten te verkrijgen, moet de prompt die aan GenAI wordt gegeven zowel nauwkeurig als duidelijk interpreteerbaar zijn voor het model. Met andere woorden: de programmeur heeft er alle belang bij om zich aan de eisen van de machine te houden en zo gedetailleerd mogelijk niet alleen de taak die het model moet uitvoeren, maar ook de context waarin deze taak plaatsvindt en de verwachte invoer- en uitvoergegevens te specificeren. Dit kan in één keer gebeuren of in de vorm van een chain-of-thoughts volgens een bepaalde redenering.</p>



<p>Er bestaat echter geen ideale methode, maar Bruni <i>et al.</i>&nbsp;<a href="#_ref15">[15]</a> geven verschillende eenvoudige voorbeelden van verbetering van prompts. Volgens hun experimenten is de meest effectieve methode om, na een eerste prompt, GenAI te vragen de code die het al heeft voorgesteld op mogelijke kwetsbaarheden te herzien en vervolgens correcties voor te stellen. Bijvoorbeeld:</p>



<ul class="wp-block-list">
<li>Prompt 1: genereer Java-code voor &#8230;</li>



<li>Prompt 2: analyseer de volgende code en vind de beveiligingsproblemen: <code>&lt;antwoord op prompt 1&gt;</code></li>



<li>Prompt 3: op basis van de volgende problemen: <code>&lt;problemen gemeld door prompt 2&gt;</code>, verbeter de volgende code: <code>&lt;antwoord gegeven op prompt 1&gt;</code></li>
</ul>



<p>Deze werkwijze veronderstelt uiteraard dat GenAI in staat is om kwetsbaarheden op te sporen, maar zoals we in het volgende artikel zullen zien, is dat vandaag nog niet het geval.</p>



<h1 class="wp-block-heading">Gespecialiseerde tools</h1>



<p>We kunnen echter nieuwe tools verwachten die programmeurs in staat zullen stellen om de veiligheidsrisico&#8217;s van GenAI te vermijden.</p>



<p>Zo biedt de tool <a href="https://github.com/eth-sri/SafeCoder" target="_blank" rel="noreferrer noopener">SafeCoder</a> van ETH Zürich&nbsp;<a href="#_ref16">[16]</a> een kader om de veiligheid van door GenAI gegenereerde code te verbeteren zonder de functionaliteit van die code in het gedrang te brengen. De tool combineert de standaardinstellingen van instructies met een veiligheidsgerichte finetuning aan de hand van veilige en onveilige codevoorbeelden. Om een dataset van hoge kwaliteit te creëren, hebben de auteurs een geautomatiseerd proces opgezet dat geverifieerde kwetsbaarheidscorrecties uit de op GitHub geregistreerde codewijzigingen haalt met behulp van heuristische filtering en statische analyse op basis van de <a href="/publications/document/?docid=293" target="_blank" rel="noreferrer noopener">CodeQL-tool</a>. De resultaten tonen aan dat SafeCoder de codeveiligheid met ongeveer 30% verbetert, terwijl de bruikbaarheid in benchmarks zoals <a href="https://github.com/openai/human-eval" target="_blank" rel="noreferrer noopener">HumanEval</a> en <a href="https://github.com/hendrycks/test" target="_blank" rel="noreferrer noopener">MMLU</a> behouden blijft. De auteurs geven echter toe dat de tool de veiligheid van code met kwetsbaarheden waarvoor hij niet is getraind, niet verbetert.</p>



<p>In de tussentijd kan een manier zijn om een traditionele statische analyse te combineren met GenAI door eerst de GenAI te vragen de gewenste code te genereren en vervolgens de statische analyse te gebruiken om deze code te analyseren. Als de tool een probleem identificeert en de correctie niet voor de hand ligt, kan men de GenAI vragen om de code aan te passen, waarbij de eerder geïdentificeerde fout wordt aangegeven. De lus kan worden herhaald totdat er geen probleem meer wordt geïdentificeerd door het analyse tool. Natuurlijk kan deze omslachtige procedure worden geautomatiseerd in een normale softwareontwikkelingscyclus.</p>



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



<p>Het eerste deel van dit artikel ging over de impact van GenAI op de kwaliteit van code in termen van beveiliging. In de huidige situatie moet worden vastgesteld dat, ondanks het verbazingwekkende vermogen van GenAI-tools om computercode te genereren, deze code vaak veiligheidsproblemen kan opleveren, ongeacht het gekozen model. Het is daarom raadzaam om zeer waakzaam te zijn vooraleer we code gebruiken die door GenAI-tools is gegenereerd. Bovendien kunnen GenAI-tools bepaalde programmeertaken vergemakkelijken, maar dat neemt niet weg dat zij niet verantwoordelijk zijn voor de mogelijke negatieve gevolgen van hun “werk”. Die verantwoordelijkheid ligt bij de programmeur en zijn werkgever.</p>



<p>De vaardigheden en kennis op het gebied van veiligheid van programmeurs – wier taak geleidelijk zal evolueren van codeschrijver naar codecontroleur – blijven een essentiële troef. De komst van GenAI in de ontwikkelcyclus is misschien een goede gelegenheid om de samenwerking tussen beveiligings- en ontwikkelingsteams te versterken door werkgroepen op te richten (of te versterken) waarin gemeenschappelijke doelstellingen worden afgestemd om de beveiliging te verbeteren.</p>



<p>In het tweede deel zullen we ons concentreren op het gebruik van GenAI voor het opsporen van kwetsbaarheden in code.</p>



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



<p><a name="_ref1">[1]</a> A. Simkute, L. Tankelevitch, V. Kewenig, A. E. Scott, A. Sellen, et S. Rintel, « Ironies of generative AI: Understanding and mitigating productivity loss in human-AI interactions », 17 février 2024, <i>arXiv</i>: arXiv:2402.11364. doi: <a href="https://doi.org/10.48550/arXiv.2402.11364" target="_blank" rel="noopener">10.48550/arXiv.2402.11364</a>.</p>



<p><a name="_ref2">[2]</a> N. Perry, M. Srivastava, D. Kumar, et D. Boneh, « Do users write more insecure code with AI assistants? », 16 décembre 2022, <i>arXiv</i>: arXiv:2211.03622. Consulté le: 3 octobre 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2211.03622" target="_blank" rel="noopnener">http://arxiv.org/abs/2211.03622</a></p>



<p><a name="_ref3">[3]</a> J. H. Klemmer <i>et al.</i>, « Using AI assistants in software development: A qualitative study on security practices and concerns », 14 octobre 2024. doi: <a href="https://doi.org/10.1145/3658644.3690283" target="_blank" rel="noopener">10.1145/3658644.3690283</a>.</p>



<p><a name="_ref4">[4]</a> J. Ganseman, « LLM pour code&nbsp;: the good, the bad and the ugly », Smals Research Blog. Consulté le: 18 octobre 2023. [En ligne]. Disponible sur: <a href="/llms-pour-code/" target="_blank" rel="noopnener">/llms-pour-code/</a></p>



<p><a name="_ref5">[5]</a> A. Chowdhery <i>et al.</i>, « PaLM: scaling language modeling with pathways », 5 octobre 2022, <i>arXiv</i>: arXiv:2204.02311. doi: <a href="https://doi.org/10.48550/arXiv.2204.02311" target="_blank" rel="noopener">10.48550/arXiv.2204.02311</a>.</p>



<p><a name="_ref6">[6]</a> M. Chen <i>et al.</i>, « Evaluating large language models trained on code », 14 juillet 2021, <i>arXiv</i>: arXiv:2107.03374. doi: <a href="https://doi.org/10.48550/arXiv.2107.03374" target="_blank" rel="noopener">10.48550/arXiv.2107.03374</a>.</p>



<p><a name="_ref7">[7]</a> R. Khoury, A. R. Avila, J. Brunelle, et B. M. Camara, « How secure is code generated by ChatGPT? », 19 avril 2023, <i>arXiv</i>: arXiv:2304.09655. doi: <a href="https://doi.org/10.48550/arXiv.2304.09655" target="_blank" rel="noopener">10.48550/arXiv.2304.09655</a>.</p>



<p><a name="_ref8">[8]</a> S. Hamer, M. d’Amorim, et L. Williams, « Just another copy and paste? Comparing the security vulnerabilities of ChatGPT generated code and StackOverflow answers », 22 mars 2024, <i>arXiv</i>: arXiv:2403.15600. doi: <a href="https://doi.org/10.48550/arXiv.2403.15600" target="_blank" rel="noopener">10.48550/arXiv.2403.15600</a>.</p>



<p><a name="_ref9">[9]</a> Y. Fu <i>et al.</i>, « Security weaknesses of copilot generated code in GitHub », 4 avril 2024, <i>arXiv</i>: arXiv:2310.02059. doi: <a href="https://doi.org/10.48550/arXiv.2310.02059" target="_blank" rel="noopener">10.48550/arXiv.2310.02059</a>.</p>



<p><a name="_ref10">[10]</a> H. Pearce, B. Ahmad, B. Tan, B. Dolan-Gavitt, et R. Karri, « Asleep at the keyboard? Assessing the security of GitHub Copilot’s code contributions », in <i>2022 IEEE Symposium on Security and Privacy (SP)</i>, San Francisco, CA, USA: IEEE, mai 2022, p. 754‑768. doi: <a href="https://doi.org/10.1109/sp46214.2022.9833571" target="_blank" rel="noopener">10.1109/sp46214.2022.9833571</a>.</p>



<p><a name="_ref11">[11]</a> E. Basic et A. Giaretta, « Large language models and code security: A systematic literature review », 19 décembre 2024, <i>arXiv</i>: arXiv:2412.15004. doi: <a href="https://doi.org/10.48550/arXiv.2412.15004" target="_blank" rel="noopener">10.48550/arXiv.2412.15004</a>.</p>



<p><a name="_ref12">[12]</a> S. Yan <i>et al.</i>, « An LLM-assisted easy-to-trigger backdoor attack on code completion models: Injecting disguised vulnerabilities against strong detection », présenté à 33rd USENIX Security Symposium, Philadelphia, PA, USA, août 2024.</p>



<p><a name="_ref13">[13]</a> E.-M. El-Mhamdi <i>et al.</i>, « On the impossible safety of large AI models », 9 mai 2023, <i>arXiv</i>: arXiv:2209.15259. Consulté le: 17 octobre 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2209.15259" target="_blank" rel="noopnener">http://arxiv.org/abs/2209.15259</a></p>



<p><a name="_ref14">[14]</a> S. Götz et A. Schaad, « “You still have to study” &#8211; On the security of LLM generated code », août 2024, [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2408.07106" target="_blank" rel="noopnener">https://arxiv.org/abs/2408.07106</a></p>



<p><a name="_ref15">[15]</a> M. Bruni, F. Gabrielli, M. Ghafari, et M. Kropp, « Benchmarking Prompt Engineering Techniques for Secure Code Generation with GPT Models », 9 février 2025, <i>arXiv</i>: arXiv:2502.06039. doi: <a href="https://doi.org/10.48550/arXiv.2502.06039" target="_blank" rel="noopener">10.48550/arXiv.2502.06039</a>.</p>



<p><a name="_ref16">[16]</a> J. He, M. Vero, G. Krasnopolska, et M. Vechev, « Instruction tuning for secure code generation », 12 juillet 2024, <i>arXiv</i>: arXiv:2402.09497. doi: <a href="https://doi.org/10.48550/arXiv.2402.09497" target="_blank" rel="noopener">10.48550/arXiv.2402.09497</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI Agents</title>
		<link>https://www.smalsresearch.be/talk-ai-agents/</link>
		
		<dc:creator><![CDATA[Smals Research]]></dc:creator>
		<pubDate>Tue, 27 May 2025 15:14:43 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Research talks]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=22792</guid>

					<description><![CDATA[De tweede Research Talk is live!   
Interview met Bert Vanhalst, researcher bij Smals Research, over AI Agents.]]></description>
										<content:encoded><![CDATA[
<p><strong>(NL)</strong> Interview met <a href="/author/vanhalst/" target="_blank" rel="noopener">Bert Vanhalst</a> van Smals Research over AI Agents. Interessant gesprek over de laatste evolutie in artificiële intelligentie, maar met de voeten op de grond, los van de hype.   Tweede gesprek in een reeks van Research talks, met de medewerking van Smals Academy.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>(FR)</strong> Entretien en Néerlandais (sous-titres disponibles) avec <a href="/author/vanhalst/" target="_blank" rel="noreferrer noopener">Bert Vanhalst</a> de Smals Research sur les agents IA. Conversation intéressante sur la dernière évolution de l&#8217;intelligence artificielle, mais avec les deux pieds sur terre, loin du battage médiatique. Deuxième entretien d&#8217;une série de Research talks, avec la coopération de Smals Academy.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>(EN)</strong> Interview in Dutch (subtitles available) with <a href="/author/vanhalst/" target="_blank" rel="noreferrer noopener">Bert Vanhalst</a> from Smals Research about AI Agents. Interesting conversation about the latest evolution in artificial intelligence, but with both feet on the ground, away from the hype. Second conversation in a series of Research talks, with the cooperation of Smals Academy.</p>



<figure class="wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="ResearchTalk - AI Agents" width="500" height="281" src="https://www.youtube.com/embed/ber0aoci8oM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Towards automatic compliance with cryptographic recommendations</title>
		<link>https://www.smalsresearch.be/towards-automatic-compliance-with-cryptographic-recommendations/</link>
		
		<dc:creator><![CDATA[Kristof Verslype]]></dc:creator>
		<pubDate>Thu, 15 May 2025 05:00:00 +0000</pubDate>
				<category><![CDATA[[EN]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[quantum computing]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[standards]]></category>
		<guid isPermaLink="false">/?p=22354</guid>

					<description><![CDATA[Expressing cryptographic recommendations as code increases automation, insight, and cryptographic maturity.]]></description>
										<content:encoded><![CDATA[<pre><span style="color: #808080;"><em>Dit artikel is ook beschikbaar in het <a style="color: #808080;" href="/naar-automatische-naleving-van-cryptografische-aanbevelingen/" data-type="post" data-id="21119">Nederlands</a>.<br />Cet article est aussi disponible en <a style="color: #808080;" href="/vers-une-observation-automatique-des-recommandations-cryptographiques/">français</a>.</em></span></pre>
<p>Cryptography is essential in our society to secure sensitive communications and financial transactions, among other things. Cryptographic recommendations help organisations and teams decide when certain cryptography in their systems should be phased out and replaced. Expressing such cryptographic recommendations as a code has advantages, such as an increased degree of automation and increased insight, and is a logical step towards cryptographic maturity.</p>
<h1>Cryptographic recommendations</h1>
<p>The recommended algorithms and parameters, including key lengths, for authentication, digital signatures, cryptographic hash functions and symmetric encryption, among other things, change regularly. Algorithms that were once recommended are now insecure. The same applies to cipher suites in communication protocols such as TLS. Cipher suites are combinations of cryptographic algorithms and parameters agreed upon by the communicating parties. On this basis, a secure channel is then set up.</p>
<p>In many countries, including our neighbours <a href="https://www.bsi.bund.de/EN/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/Technische-Richtlinien/TR-nach-Thema-sortiert/tr02102/tr02102_node.html">Germany</a>, <a href="https://cyber.gouv.fr/sites/default/files/2021/03/anssi-guide-selection_crypto-1.0.pdf">France</a> and <a href="https://www.ncsc.nl/binaries/ncsc/documenten/publicaties/2021/januari/19/ict-beveiligingsrichtlijnen-voor-transport-layer-security-2.1/ICT-beveiligingsrichtlijnen+voor+Transport+Layer+Security+v2.1.pdf">the Netherlands</a>, the national information security agencies publish detailed recommendations on the use of cryptography. Usually a distinction is made between cryptography that is recommended, cryptography that is not recommended but is still considered secure, cryptography that we should phase out and, finally, cryptography that is insecure. Those recommendations are regularly updated. The German <a href="https://www.bsi.bund.de/">BSI</a> does this on an annual basis, for example.</p>
<p>We still lack such recommendations in Belgium. These should ideally be formulated at European level, by <a href="https://www.enisa.europa.eu/">ENISA</a>, the European Union Agency for Cybersecurity, for example. Unfortunately, we are not there yet. At the same time, Smals and the Belgian public sector certainly have a concrete need for them today, which is why Smals Research took the initiative a few years ago to formulate its own internal recommendations. These are based on the recommendations of the German BSI, as it is the leading and best subsidised cyber security agency in Europe.  </p>
<h1>Recommendations as code</h1>
<p>As with all other cryptographic recommendations, these are currently expressed in a way that is legible to humans, but not sufficiently structured to allow processing by machines. The latter would allow a higher degree of automation and could improve security.</p>
<ul>
<li>It could allow to automatically generate the cryptographic part of the configuration files for communication protocols such as TLS and OpenSSH. As a result, updates could be implemented faster, with less manpower and less risk of human error. Smals uses hundreds, if not thousands, of machines that must be able to communicate securely.</li>
<li>This would allow us to unlock the cryptographic recommendations interactively. A project team would be able to quickly consult the most recent cryptographic recommendations relevant to them via a web interface. Once the application is live, a project team would automatically be kept up to date on changes relevant to them.</li>
</ul>
<p>The closest thing available today is the website CipherSuite. While this is a commendable initiative, we would prefer to proceed with Smals for several reasons. After all, we do not necessarily follow these recommendations, which are also limited to the TLS communication protocol. We also want something that is CBOM compatible.</p>
<h1>Cryptography Bill of Materials (CBOM)</h1>
<p>In the context of the threat posed by powerful quantum computers, another major crypto migration is becoming increasingly urgent. In order to prepare for this and other future migrations, organisations would be wise to start building an overview of which cryptography is being used where. This would allow them to draw up a well-founded migration plan and will also make the migration itself run more quickly and smoothly. This inventory quickly becomes very complex and is therefore ideally expressed as code to facilitate automatic updating and processing by machines.</p>
<p>To this end, IBM developed CBOM (Cryptography Bill of Materials), which allows cryptographic components such as algorithms, parameters, protocols and libraries and their dependencies to be expressed in JSON. It is an OWASP CycloneDX standard, which means that it is compatible with SBOM (Software Bill Of Materials), among other things. CBOM allows us to take the management of cryptographic assets (algorithms, protocols, libraries, keys, certificates, &#8230;) to the next level.<br />The illustration below is a CBOM fragment that shows where RSA-2048 is used in the scanned source code of an application.</p>
<p><a href="/wp-content/uploads/2025/03/cbom_ex.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-22020" src="/wp-content/uploads/2025/03/cbom_ex.png" alt="" width="1864" height="933" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/03/cbom_ex.png 1864w, https://www.smalsresearch.be/wp-content/uploads/2025/03/cbom_ex-300x150.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/03/cbom_ex-768x384.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/03/cbom_ex-1024x513.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/03/cbom_ex-1536x769.png 1536w" sizes="auto, (max-width: 1864px) 100vw, 1864px" /></a></p>
<p>Suppose an organisation expresses its cryptographic assets as CBOM, and has cryptographic recommendations in code compatible with it. That organisation could then very quickly determine where and to what extent it complies with the cryptographic recommendations, or not. This insight could be particularly useful when taking steps to make the organisation and the data it protects more secure. An organisation could then quickly find out where it is most vulnerable to powerful quantum computers. The organisation can also quickly provide exact information during audits, for example in the form of an automatically generated report in PDF or Excel format, in response to specific questions from the auditor.</p>
<h1>Deviations as code</h1>
<p>Aside from the recommendations and the cryptographic assets, there is a third element that can be expressed as machine-readable code: the deviations from those recommendations.</p>
<p>In an ideal world, Smals would systematically and solely use the recommended and secure cryptography in its systems. This is not always possible, given that it would de facto make services unavailable to the users of those systems. We cannot expect doctors, pharmacists, physiotherapists, Public Welfare Centres, etc. to support only the latest secure cryptography at any given time. Smals must therefore show a certain degree of tolerance whereby it continues to support sub-optimal cryptography for a limited period of time. This should be done in a structured manner, with a limited tolerance period and with the risks clearly assessed by security services and approved by management.</p>
<p>This too is best expressed in a way that allows automatic processing. Combined with the recommendations and inventory, this allows us to see immediately where we deviate from the recommendations, both documented and undocumented. This approach also provides insight into the cumulative risk, which helps increase safety in the organisation. This, too, can be useful in audits.</p>
<h1>Conclusion</h1>
<p>A few years back, Smals Research made a proposition for cryptographic recommendations, which was adopted by Smals and is updated at least annually. Smals Research believes the time is ripe for the next step and is currently converting these recommendations into a structured form with a maximal compatibility with CBOM. The same is done for deviations from those recommendations.</p>
<p>CBOM and Smals&#8217; ambitions to express cryptographic assets, recommendations, as well as deviations in a machine readable format fit into the broader trend of <a href="https://www.techtarget.com/searchitoperations/tip/What-it-means-to-do-everything-as-code-in-IT-operations">Everything as code</a>, a philosophy that results in an increased degree of automation of processes and management. This gives us more insight and allows us to better anticipate and intervene if necessary. Moreover, it results in increased consistency and scalability thanks to reduced human intervention.</p>
<p>Applying Everything as Code to cryptography is, in our opinion, an important step in increasing cryptographic maturity. We therefore see CBOM as a necessary standard that we expect to see increasingly supported in tools for development, information security and post-quantum migration in the coming years. Consequently, we expect vendors to increasingly provide a CBOM with their software, hardware or services.</p>
<p>We expect the triumvirate of cryptographic assets as code, recommendations as code and deviations as code to unlock new possibilities and opportunities for insight and automation. One idea is to perform graph analytics (<a href="/een-graph-database-verkennen/">graph analytics</a>) on this data, ideally using a graph database supplemented with an interactive visualisation tool.</p>
<p><strong>To be continued. Please do not hesitate to contact us if you are interested.</strong></p>
<hr />
<p><em>This contribution was submitted by Kristof Verslype, cryptographer at Smals Research. It was written in his own name and does not represent Smals&#8217; position.</em></p>
<p> </p>
<p> </p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
