Modèle de sécurité de la signature et du chiffrement
Cette page décrit le modèle de sécurité des deux surfaces cryptographiques exposées par le moteur principal : le chiffrement de document (AES-256) et la signature de document (CMS/PAdES). Elle précise ce que chaque mécanisme protège, ce qu’il ne protège pas, et où se situe la frontière de confiance.
Frontière. La prise en charge d’un mécanisme cryptographique ne garantit pas sa sécurité dans ton déploiement. La robustesse d’un document chiffré dépend du mot de passe et de la garde de clé que tu choisis. Le sens d’une signature dépend du certificat, de l’ancre de confiance, de l’autorité d’horodatage et de la politique du vérificateur. Le certificat, l’ancre de confiance, l’autorité d’horodatage et la politique du vérificateur existent tous en dehors de cette bibliothèque. Cette page décrit le mécanisme ; elle ne certifie pas le résultat.
Installation
Section intitulée « Installation »composer require nextpdf/core:^3ext-openssl est requis pour les chemins de signature et CMS.
Vue d’ensemble conceptuelle
Section intitulée « Vue d’ensemble conceptuelle »Le chiffrement dans le moteur principal correspond au gestionnaire de sécurité AES-256 de la §7.6 d’ISO 32000-2 (AESV3, révision 6) (iso32000_2_sec7#x1.x65.p29). Il assure la confidentialité : une partie qui ne dispose pas du mot de passe ne peut pas lire le contenu des chaînes et des flux. Il n’assure pas l’intégrité ni l’authenticité. Un texte chiffré peut toujours être tronqué ou remplacé. Détecter un texte chiffré tronqué ou remplacé relève d’une signature ou d’un MAC de document, pas du gestionnaire de chiffrement.
Les permissions (impression, copie, modification) sont un concept distinct et un piège de confiance courant. Les indicateurs de permission d’ISO 32000-2 relèvent de la coopération du lecteur (iso32000_2_sec7#x1.x71.p27). Un lecteur conforme les respecte, mais il s’agit de métadonnées indicatives, et non d’un contrôle d’accès cryptographique. Un outil non coopérant peut les ignorer. Le moteur les émet fidèlement ; il ne peut pas les imposer.
La signature est une structure CMS SignedData intégrée conformément à la §12.8 d’ISO 32000-2. La plage d’octets signée est un objet direct et l’empreinte exclut délibérément la valeur Contents de la signature (iso32000_2_sec12#x1.x121.p45), de sorte que la signature couvre le document, mais pas elle-même.
Surface d’API
Section intitulée « Surface d’API »Cette page ne documente pas à nouveau les signatures. Les points d’entrée du chiffrement et l’orchestrateur de signature sont décrits dans /modules/core/security/ et /modules/core/security/signing/. Le modèle présenté ici concerne la signification et la frontière de confiance, et non la forme des méthodes.
Exemple de code — Démarrage rapide
Section intitulée « Exemple de code — Démarrage rapide »Le chiffrement protège la confidentialité vis-à-vis des parties qui ne disposent pas du mot de passe — et rien de plus :
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = new Document();// AES-256 (AESV3 R6). The owner/user passwords gate read access only.// Permission flags below are advisory: a conforming reader honors them.$doc->encrypt( userPassword: 'open-secret', ownerPassword: 'owner-secret',);$doc->save('confidential.pdf');Exemple de code — Production
Section intitulée « Exemple de code — Production »Un flux de signature en production applique une signature de base CMS/PAdES avec une clé détenue côté logiciel. L’édition Core produit le niveau PAdES B-B. Avec une autorité d’horodatage configurée, l’édition Core produit PAdES B-T, soit B-B plus un seul attribut non signé RFC 3161 signature-time-stamp :
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;use NextPDF\Security\Signature\CertificateInfo;use NextPDF\Security\Signature\SignatureLevel;
$cert = CertificateInfo::fromPkcs12('signer.p12', 'pin');
$doc = new Document();// B-B is the default. B-T adds a trusted timestamp over the signature value.$doc->setSignature($cert, SignatureLevel::PAdES_B_B);$doc->save('signed.pdf');PAdES B-T correspond exactement à B-B plus un attribut non signé RFC 3161 signature-time-stamp porté dans le CMS SignerInfo (rfc5652#p603). L’horodatage lie la valeur de la signature à une heure de confiance obtenue auprès d’une autorité d’horodatage (rfc3161#p208). Il n’ajoute ni dictionnaire de données de validation, ni structure d’informations de révocation, ni boucle d’horodatage d’archive. Il s’agit de niveaux à long terme distincts, au périmètre séparé, qui ne font pas partie de la surface B-B/B-T et restent hors du périmètre de cette page.
U-1. NextPDF ne revendique aucune certification indépendante ETSI EN 319 142-1 pour PAdES B-T. EN 319 142-1 ne figure pas dans le corpus de vérification utilisé ici. L’exigence de B-T signature-time-stamp est vérifiée au regard de la §5.3 d’ETSI EN 319 122-1 — la base CAdES que la famille EN 319 142 PAdES importe par référence (
etsi_en_319_122_1#6.x40.p96) — avec RFC 3161, RFC 5652 et ISO 32000-2 §12.8. La prise en charge du profil B-T ne constitue pas une certification de conformité ni de validité juridique. C’est à un validateur indépendant d’établir cette détermination.
Cas limites & pièges
Section intitulée « Cas limites & pièges »- Chiffrement ≠ intégrité. Un lecteur capable d’ouvrir le document peut tout de même afficher une copie altérée. Seule une signature (ou un MAC de document) détecte cela. « Inviolable » n’est pas une propriété fournie par le gestionnaire de chiffrement, et le terme n’est pas employé comme une affirmation produit.
- La présence d’une signature n’est pas sa validité. Le fait qu’un document porte un dictionnaire de signature n’indique pas si le certificat est de confiance, non expiré ou non révoqué. Établir la validité est une opération côté vérificateur régie par la politique de la partie utilisatrice, et non par le signataire.
- La confiance dans l’horodatage est externe. Un horodatage B-T n’a de valeur que dans la mesure où le vérificateur fait confiance à l’autorité d’horodatage qui l’a émis. La bibliothèque obtient et intègre le jeton. Elle ne se porte pas garante de la TSA.
- La posture FIPS est environnementale. S’exécuter sur un module cryptographique validé FIPS est une propriété de l’environnement d’exploitation et du module (
fips_140_3#x12), et non quelque chose qu’une bibliothèque PHP peut affirmer au nom de son appelant.
Performance
Section intitulée « Performance »Le chemin de signature calcule l’empreinte d’une plage d’octets et une structure CMS. L’extension B-T ajoute un aller-retour synchrone vers l’autorité d’horodatage. Le chiffrement est une opération symétrique per-string/per-stream. Aucune de ces deux opérations ne domine un rendu typique. L’aller-retour réseau pour B-T est le coût variable et dépend du choix de TSA de l’appelant.
Notes de sécurité
Section intitulée « Notes de sécurité »Énoncés de frontière, reformulés en règles applicables pour un relecteur :
- Confidentialité uniquement. Le chiffrement AES-256 protège le contenu contre les parties qui ne disposent pas du mot de passe. Il ne fournit ni intégrité, ni authenticité, ni contrôle d’accès (
iso32000_2_sec7#x1.x65.p29). - Les permissions sont indicatives. Les indicateurs de permission relèvent de la coopération du lecteur et ne sont pas imposés cryptographiquement (
iso32000_2_sec7#x1.x71.p27). Aucune formulation produit ne prétend qu’ils empêchent une action. - B-B et B-T uniquement sur cette page. La surface de signature core/Pro documentée ici couvre B-B et son extension d’horodatage B-T, chaque mention de B-T étant associée à la mise en garde U-1 ci-dessus. Les niveaux d’archivage à long terme constituent une surface distincte, en édition payante, et ne sont volontairement pas décrits ici. Aucune capacité de données de validation, d’informations de révocation ou d’horodatage d’archive n’est affirmée sur cette page.
- Aucune affirmation de validité juridique. Une signature produite est un artefact cryptographique. Qu’elle soit juridiquement valide dépend de la juridiction, de la politique de certificat et de la partie utilisatrice — et non de cette bibliothèque.
Conformité
Section intitulée « Conformité »La prise en charge n’est pas la conformité. Le moteur produit une sortie qui utilise les constructions citées dans ISO 32000-2, RFC 3161, RFC 5652 et ETSI EN 319 122-1. Le moteur n’affirme pas de conformité PAdES, CAdES ou eIDAS. La validation FIPS 140-3 est une propriété du module/environment (fips_140_3#x12), et non une affirmation de la bibliothèque. Un validateur ou un évaluateur indépendant établit toute détermination de conformité ou de validité juridique.