Aller au contenu

Sécurité et confiance dans l'IA

Comment Kliper protège l'intégrité des preuves, détecte les logiciels malveillants et garantit un usage responsable de l'IA.

Mis à jour le Voir en Markdown

Kliper manipule des preuves de conformité sensibles : configurations de pare-feu, politiques de contrôle d’accès, schémas réseau, documentation des flux de données de titulaires de carte. La plateforme applique un pipeline de sécurité multicouche à chaque fichier téléversé et fixe des limites claires à la manière dont l’IA traite vos données.

Intégrité des fichiers — hachage SHA-256

Chaque fichier téléversé dans Kliper est haché cryptographiquement en SHA-256 au moment du téléversement, avant d’être écrit dans le stockage.

Fonctionnement

  1. Le contenu du fichier est reçu en mémoire par le point de terminaison de téléversement.
  2. Un hachage SHA-256 est immédiatement calculé avec crypto.createHash('sha256') de Node.js.
  3. Le condensé hexadécimal de 64 caractères en minuscules est stocké avec l’enregistrement du fichier dans la base de données (colonne hash_sha256).
  4. Le fichier est ensuite écrit dans Supabase Storage, auto-hébergé.

Vérification d’intégrité à la demande

À tout moment après le téléversement, un utilisateur autorisé peut déclencher une vérification d’intégrité via l’action Vérifier. La plateforme :

  1. Retélécharge le fichier depuis le stockage.
  2. Recalcule le hachage SHA-256 du contenu téléchargé.
  3. Compare le hachage recalculé à l’original stocké.
  4. Enregistre le résultat (verified ou tampered) avec un horodatage dans les métadonnées du fichier.

Cela garantit que les preuves n’ont pas été altérées dans le stockage, une exigence essentielle pour la crédibilité de la piste d’audit lors des évaluations PCI DSS.

Ce que voit l’évaluateur

Champ Valeur
Hachage stocké a3f2b8c1d4e5... (64 caractères hexadécimaux)
Hachage actuel Recalculé lors de la vérification
Statut d’intégrité Verified ou Tampered
Vérifié le Horodatage ISO 8601

Analyse anti-malware — pipeline à double moteur

Chaque fichier traverse un pipeline d’analyse anti-malware à double moteur avant d’être accepté dans la plateforme. Aucun fichier n’atteint le plan de travail d’un évaluateur sans avoir été analysé.

Pipeline d’analyse

Le pipeline enchaîne trois contrôles, dont deux analyseurs exécutés en parallèle :

Analyse statique

Avant toute analyse, le fichier passe une validation statique :

  • Contrôle du type MIME : les types bloqués incluent les exécutables (.exe, .dll), les scripts (.bat, .sh, .ps1), les archives Java (.jar, .class) et plus de 30 autres types MIME dangereux.
  • Contrôle de l’extension : plus de 40 extensions bloquées, dont .exe, .dll, .bat, .cmd, .vbs, .ps1, .msi, .scr, .lnk, .hta et d’autres.
  • Inspection des octets magiques : les premiers octets du fichier sont comparés aux signatures d’exécutables connues (en-têtes PE/MZ, binaires ELF, binaires Mach-O, fichiers de classe Java). Cela intercepte les fichiers renommés avec une extension inoffensive mais contenant du code exécutable.
  • Détection d’incohérence MIME : avertit lorsque le type MIME déclaré ne correspond pas à la signature réelle du contenu.

Les fichiers qui échouent à l’analyse statique sont immédiatement rejetés avec un statut 422 et un statut d’analyse quarantined. Ils ne sont jamais écrits dans le stockage.

Analyse antivirus ClamAV

Le fichier est écrit dans un emplacement temporaire sécurisé et analysé par ClamAV (clamdscan) avec un délai maximal de 30 secondes. ClamAV est un moteur antivirus open source dont les définitions sont régulièrement mises à jour.

  • Résultat sain : aucune menace détectée.
  • Résultat infecté : une ou plusieurs signatures virales identifiées. Les noms précis des virus sont capturés et stockés.
  • Résultat en erreur : analyseur indisponible (journalisé comme avertissement). Si un analyseur requis ne peut pas terminer, le fichier est retenu en statut pending plutôt qu’accepté : une défaillance de ClamAV n’est jamais silencieusement considérée comme un résultat sain.

Consultation du hachage sur VirusTotal

En parallèle de ClamAV, le hachage SHA-256 du fichier est vérifié dans la base VirusTotal via son API. Cela confronte le fichier à plus de 70 moteurs antivirus sans téléverser le fichier lui-même : seul le hachage est envoyé.

  • Résultat sain : 0/N moteurs ont signalé le hachage.
  • Résultat infecté : un ou plusieurs moteurs ont signalé le hachage. Le nombre de détections, les noms des moteurs et les noms des menaces sont enregistrés.
  • Inconnu : hachage absent de la base VirusTotal (le fichier n’a jamais été analysé au niveau mondial). Ce cas est traité comme sain : l’absence de preuve n’est pas une preuve de malveillance.

Statuts d’analyse

Statut Signification
clean Le fichier a passé tous les moteurs d’analyse sans détection.
quarantined Le fichier a été bloqué par l’analyse statique ou signalé par un ou plusieurs moteurs. Il est rejeté et non stocké.
pending Une analyse n’a pas pu se terminer (par ex. analyseur indisponible). Le fichier est retenu dans cet état : il n’est pas considéré comme sain.

Stockage des résultats d’analyse

Les résultats complets sont conservés dans la colonne JSON scan_result de l’enregistrement du fichier. Le résultat de chaque moteur est stocké individuellement :

{
  "engines": [
    {
      "name": "ClamAV",
      "status": "clean",
      "detail": "No threats detected"
    },
    {
      "name": "VirusTotal",
      "status": "clean",
      "detail": "0/72 engines flagged",
      "permalink": "https://www.virustotal.com/gui/file/a3f2b8c1...",
      "detections": 0,
      "totalEngines": 72
    }
  ],
  "scanned_at": "2026-02-28T14:30:00.000Z"
}

Les évaluateurs peuvent consulter les résultats par moteur directement dans le panneau Pièces jointes du plan de travail d’évaluation.

Restrictions sur les types de fichiers

Kliper accepte les types de fichiers de preuve courants et bloque tout ce qui pourrait exécuter du code :

  • Documents : PDF, DOCX, DOC, XLSX, XLS, PPTX, PPT, VSDX
  • Images : PNG, JPG, JPEG, GIF, BMP, TIFF, SVG, WebP
  • Texte : TXT, CSV, JSON, XML, YAML, LOG, MD, HTML, SQL, CONF, INI
  • Certificats : PEM, CRT, CER, KEY, PUB, CSR, P12, PFX
  • Archives : ZIP (inspectées à la recherche d’archives Java)
  • Journaux : EVTX (journaux d’événements Windows)
  • Exécutables : .exe, .dll, .com, .scr, .pif, .so, .dylib
  • Scripts : .bat, .cmd, .vbs, .vbe, .js, .jse, .ps1, .sh, .bash, .csh
  • Système Windows : .msi, .msp, .mst, .cpl, .hta, .inf, .reg, .scf, .lnk
  • Java : .jar, .class
  • Shell : .ws, .wsf, .wsc, .wsh

Extraction automatique des métadonnées

Au téléversement, Kliper extrait automatiquement les métadonnées des types de fichiers pris en charge pour offrir aux évaluateurs un aperçu avant d’ouvrir le fichier :

Type de fichier Métadonnées extraites
PDF Nombre de pages, nombre de mots, aperçu du texte (500 premiers caractères), métadonnées du document
Word (DOCX/DOC) Nombre de mots, aperçu du texte
Excel (XLSX/XLS) Noms des feuilles, nombre de lignes et de colonnes, noms des en-têtes
PowerPoint (PPTX) Nombre de diapositives, aperçu du texte de la première diapositive
Visio (VSDX) Nombre de pages, libellés extraits des éléments du schéma
CSV En-têtes de colonnes, nombre de lignes, 3 premières lignes en aperçu
Images Format, taille du fichier
Fichiers texte et de configuration Nombre de lignes, nombre de mots, aperçu du texte
Certificats (PEM) Type de certificat (certificat, clé privée, clé publique, CSR)

Ces métadonnées sont stockées avec l’enregistrement du fichier et affichées dans le panneau Pièces jointes, ce qui donne aux évaluateurs un contexte immédiat sur les preuves téléversées sans télécharger chaque fichier.

Cortex AI — confidentialité et traitement des données

Cortex est l’assistant IA intégré à Kliper. Son agent conversationnel et son extraction documentaire s’exécutent sur OpenAI (famille GPT-5), de même que le remplissage automatique, la validation documentaire et les résumés de fichiers. Avant tout envoi de texte au fournisseur, une couche de caviardage des données personnelles supprime les adresses IP, les e-mails, les numéros de carte de paiement (validés par l’algorithme de Luhn), les numéros de téléphone et les numéros de sécurité sociale : aucune donnée de titulaire de carte ni identifiant personnel n’atteint le modèle. Les organisations Enterprise peuvent en plus exécuter Cortex sous leur propre accord OpenAI (clé fournie par le client) ou sur leur propre point de terminaison de modèle auto-hébergé ; voir Choisir votre fournisseur d’IA. Un profil de plateforme auto-hébergé reste également disponible pour les déploiements soumis à des exigences strictes de résidence des données.

À quoi Cortex a accès

Cortex opère dans des limites strictes :

  • Contexte de l’évaluation uniquement : Cortex ne voit que les données de l’évaluation sur laquelle l’utilisateur travaille. Il ne peut accéder ni à d’autres évaluations, ni à d’autres clients, ni à d’autres organisations.
  • Périmètre de l’exigence : lorsqu’il est invoqué sur une procédure de test précise, Cortex ne reçoit que les instructions de rédaction pertinentes, les réponses déjà saisies par l’évaluateur pour cette exigence et les noms des fichiers de preuve rattachés à cette exigence.
  • Pas de contenu brut des fichiers par défaut : Cortex reçoit les noms des fichiers et des résumés générés par IA de leur contenu, pas le contenu brut. La seule exception est la validation documentaire, qui envoie le texte extrait (jusqu’à 30 000 caractères) à l’IA pour une validation selon des critères.

Ce que Cortex ne peut pas faire

  • Accéder aux données d’autres organisations : l’isolation des tenants est appliquée au niveau de l’API.
  • Stocker vos données ou apprendre à partir d’elles : les données de l’API OpenAI ne servent pas à entraîner les modèles (confidentialité entreprise), et Kliper n’envoie les prompts qu’après caviardage des données personnelles.
  • Prendre des décisions d’évaluation : Cortex produit des brouillons de texte et des résultats de validation. L’évaluateur conserve la maîtrise complète de toutes les constatations, des statuts choisis et du contenu final du rapport.
  • Modifier directement les réponses de l’évaluation : tout contenu généré par l’IA est présenté comme une suggestion que l’évaluateur doit explicitement accepter ou modifier.

Flux de données

1
Assessor invokes Cortex
On a requirement, for example 3.4.1.
2. Prompt assembled in your tenant
Reporting instructions for the requirementPCI DSS guidance: purpose, good practice, definitionsYour existing responsesEvidence file names and AI summariesSelected finding status and methods
3
PII redaction
IP addresses, emails, card numbers, phone numbers and SSNs are removed before anything leaves.
4. Configured AI provider
OpenAI, GPT-5 family
API data is not used for training. Processed and discarded per provider policy.
Self-hosted profile
Optional, for deployments with strict data-residency needs.
5
Response returned to the assessor
Reviewed, edited, accepted or discarded. Cortex never decides.

Transparence de l’IA

Chaque sortie générée par l’IA dans Kliper comprend :

  • Des avertissements : si des données manquent (par ex. aucune réponse de l’évaluateur, aucun fichier de preuve), Cortex signale explicitement ce qui est incomplet plutôt que d’inventer du contenu.
  • Des espaces réservés : pour les données qui n’existent pas encore, Cortex utilise des marqueurs [PENDING_RESPONSE] ou [TAG] au lieu de générer un texte plausible mais non vérifié.
  • L’attribution du modèle : le modèle d’IA utilisé et le nombre de jetons sont enregistrés pour chaque opération de validation et de remplissage automatique.
  • La traçabilité du raisonnement : chaque réponse de Cortex ayant consulté vos données expose une trace « Comment cette réponse a été produite », listant exactement les exigences, preuves et sources de la base de connaissances lues avant la rédaction. Les relecteurs peuvent vérifier le cheminement de l’IA, pas seulement son résultat.

Déclaration d’usage de l’IA

Kliper fournit à chaque évaluateur une déclaration standard d’usage de l’IA à partager avec l’entité évaluée : elle apparaît dans la lettre de mission et le portail client, et elle est énoncée clairement ici. Elle est alignée sur les lignes directrices du PCI SSC « Integrating AI in PCI Assessments » :

Sécurité des sessions

Le modèle de session de Kliper suit le profil NIST SP 800-63B AAL2 :

  • Sessions glissantes de 8 heures avec une granularité de rafraîchissement de 1 heure
  • Plafond absolu de 12 heures : une session ne peut pas être prolongée au-delà de 12 heures sans réauthentification
  • Expiration après 30 minutes d’inactivité : les sessions inactives sont déconnectées

Les sessions reposent sur des cookies (HTTP-only, sécurisés) ; les jetons ne sont jamais stockés dans localStorage.

Isolation multi-tenant

Kliper applique une isolation stricte des tenants à chaque couche :

  • Base de données : chaque requête est rattachée à l’organisation courante de l’utilisateur via la clé étrangère org_id. Aucun mécanisme ne permet d’interroger plusieurs organisations à la fois.
  • Stockage : les chemins des fichiers sont préfixés par l’identifiant de l’organisation. Les URL de téléchargement signées sont limitées à une organisation.
  • API : l’en-tête x-organization est validé sur chaque requête authentifiée. Les requêtes sans contexte d’organisation valide sont rejetées.
  • RBAC : des rôles (Admin, Manager, Assessor, QA, Viewer) avec des permissions fines par type de ressource et par action.

Piste d’audit

Chaque changement d’état dans Kliper est enregistré dans le journal d’audit :

  • Qui : identifiant, nom et e-mail de l’utilisateur.
  • Quoi : type d’action (création, modification, suppression, revue, approbation).
  • Quand : horodatage ISO 8601.
  • : adresse IP, chaîne user agent.
  • Détail : instantanés de l’ancienne et de la nouvelle valeur pour les modifications de données.

Les journaux d’audit sont immuables et consultables depuis le tableau de bord d’administration. Ils sont conçus pour résister à la revue par les pairs QSA et aux demandes d’assurance qualité du PCI Council.

Cette page vous a-t-elle aidé ?

Signaler un problème sur cette page
Navigation

Tapez pour rechercher…

↑↓ naviguer↵ sélectionnerÉchap fermer