03a — Atlas mondial des normes, partie 1 : cœur, codecs, texte, couleur, sécurité, signatures, cartes à puce
Chaque ligne : la norme (avec son édition), ce qu'elle régit, l'oracle (implémentation
de référence, validateur officiel, suite de conformité ou fichiers de test qui ne
partagent aucun code avec nous), notre statut tiré du registre, et le palier dans
04-feature-tiers.md. « Ésotérique » n'est pas ici un rejet : c'est la liste de ce que
les concurrents laissent de côté.
A. Format cœur et ses extensions
| Norme | Régit | Oracle | Statut | Palier |
|---|---|---|---|---|
| ISO 32000-2:2020 + Errata Collection 3 (sponsorisé, lu) ; ISO 32000-2:2020/Amd 1 (les 92 premiers errata, publié) ; DAmd 1.2 en développement | PDF 2.0 | qpdf, mutool, poppler, pdf.js, Arlington TestGrammar, pdf20examples | 252/293 lignes implémentées | T0 |
| ISO 32000-1:2008 + suppléments Adobe ExtLevel 3 (2008) et 5 (2009) | PDF 1.7 + AES-256 R5, /Extensions, portfolios |
qpdf --force-R5, fichiers du corpus Acrobat |
✅ lecture/écriture R5 | — |
| PDF Reference 1.0–1.6, errata Adobe, addendum des modes de fusion, notes d'implémentation | producteurs historiques (1993–2006) | corpus de fichiers d'époque (pdf.js, pdfium) | ✅ lecture | — |
| ISO/TS 32001:2022 (SHA-3/SHAKE), 32002:2022 (courbes ECC, EdDSA), 32003:2023 (AES-GCM), 32004:2024 (intégrité/MAC), 32005:2023 (inclusion hiérarchique) | extensions PDF 2.0 | pyHanko (32004), veraPDF (32005), OpenSSL | 32003 ✅, 32005 ✅, écriture de 32001/32002/32004 bloquée sur russl-pades | T3 F-036 |
Registre d'extensions de la PDF Association (pdfa.org/extensions, schéma JSON) : Brotli (préfixe PDFa, ExtensionLevel 1, révision 2026, RFC 7932 + fenêtre large RFC 9841), structures de métadonnées personnalisées, emplacements des métadonnées d'objet (AN003), fichiers associés (AN002), compensation du point noir (AN001), PDF Declarations, WTPDF, Deriving HTML |
extensions enregistrées | brotli(1), veraPDF, prototype pdf.js | Brotli partiel (fenêtre large), AN001–003 ✅/partiel | T3 |
Extensions éditeurs à préfixe enregistré : ADBE (Adobe : AES-256, portfolios, géospatial, 3D, média enrichi, XFA), GTS_PDFX, ISO_, MSFT ? (MIP), ESIC (ETSI ?), PTEX (pdfTeX), BDIA ? |
dictionnaires d'extensions développeur §7.12 | table Extensions d'Arlington, recensement sur le corpus |
extensions-dictionary ✅ |
— |
| Arlington PDF Model (pdf-association, Apache-2.0) | modèle d'objets lisible par machine, SinceVersion/Deprecated |
TestGrammar (moteurs pdfium/pdfix) | 🔬 branché ; 288/288 paires de version | — |
RFC 8118 (application/pdf, identifiants de fragment #page=, #nameddest=, #zoom=, #search=), « PDF Open Parameters » d'Adobe |
fragments d'URL, comportement du visualiseur | pdf.js, Acrobat | ✅ fragments ; visualiseur T5 | T5 |
| Linéarisation (ISO 32000-2 annexe F), tables d'indices, chargement HTTP par plages progressif | affichage web rapide | qpdf --check-linearization, chargeur par plages de pdf.js |
✅ écriture ; lecture progressive T1 F-012 | T1 |
| XFA 3.3 (Adobe, déprécié en 2.0 mais omniprésent : SAP ADS, AEM Forms, IRS, cerfa), empaquetage XDP | formulaires dynamiques/statiques | build XFA de pdfium, Acrobat (manuel), formulaires d'exemple SAP | paquets/données/aplatissement ✅ ; rendu 📋 | T3 F-035 |
| FDF (ISO 32000-2 §12.7.8), XFDF 3.0 (Adobe) → ISO 19444-1:2019 (non acquis) | échange de données de formulaire | pdftk, xmllint + xfdf.xsd, export Acrobat |
absent → Phase 0 AI | T0 |
OGC GeoPDF (OGC 08-139r3) et géospatial Adobe (/Measure /GEO, /GPTS, /LPTS) |
PDF géoréférencés | pilote PDF de GDAL (gdalinfo, gdal_translate), QGIS, TerraGo |
📋 | T4 F-047 |
Portfolios/collections PDF (§12.3.5), schémas /Collection, navigateurs |
PDF portfolio (Acrobat) | Acrobat, vue des pièces jointes de pdf.js | lecture ✅ ; navigateur 🚫 (ère Flash) | — |
Média enrichi (§13.6, /RichMedia, Flash/HTML5), multimédia (§13.2 /Movie, /Sound historique), 3D (§13.6.5 PRC/U3D) |
média incorporé | structurel seulement ; fichiers veraPDF 4e | en-têtes 3D ✅ structurel ; lecture du média 🚫 | — |
| Web Capture (§14.10, déprécié), OPI (§14.11.7, déprécié), réseaux de recouvrement (§14.11.6), intentions de sortie (§14.11.5), boîtes de prépresse (§14.11.2), DPart (§14.12) | prépresse | qpdf --json, gs, Cal Poly | ✅ sauf OPI (déprécié, lecture seule) | — |
B. Compression et codecs d'image (tous via RUSSL/CODECS)
| Norme | Filtre / usage | Oracle | Statut | Palier |
|---|---|---|---|---|
| RFC 1950/1951 (zlib/Deflate) | /FlateDecode, prédicteurs (PNG RFC 2083 §6, TIFF 6.0 §14) |
zlib de CPython (infcover 33/38), pypng, libtiff, gs |
✅ (prédicteurs partiels : cas limites sous l'octet) | — |
| RFC 7932 Brotli, RFC 9841 (fenêtre large) | /BrotliDecode (extension PDFa) |
brotli(1) 1.2 | partiel (fenêtre large dans russl-brotli) |
T3 |
| RFC 8878 Zstandard | pas un filtre PDF aujourd'hui — extension candidate | zstd(1) | 📋 proposer via le préfixe ASKL (07 §6) |
T6 |
LZW (TIFF 6.0 §13, EarlyChange), ASCII85/ASCIIHex, RunLength (§7.4) |
filtres historiques | qpdf, mutool | ✅ | — |
| ITU-T T.4 (MH/MR 1D/2D), T.6 (MMR/G4) | /CCITTFaxDecode |
fax2tiff/tiffcp de libtiff, poppler, mupdf |
✅ (dépasse poppler/mupdf sur testfax4) |
— |
| ITU-T T.81 / ISO/IEC 10918-1 (JPEG de base, étendu, progressif, arithmétique, 12 bits), APP14 Adobe (YCCK/CMJN), JFIF, EXIF | /DCTDecode |
djpeg de libjpeg-turbo + djcmyk.c, pdfimages |
✅ décodage ; peinture du préfixe DCT tronqué 📋 ; échelle de qualité de l'encodeur 📋 | T0/T4 |
| ISO/IEC 15444-1 (JPEG 2000 partie 1), 15444-2 (extensions de la partie 2 utilisées dans JPX : MCT, ondelettes arbitraires — rarement), 15444-4 (conformité), 15444-15 HTJ2K (haut débit, 2019) | /JPXDecode, boîtes JP2/JPX, SMaskInData, palettes, cdef |
opj_decompress d'OpenJPEG, Kakadu (commercial, si disponible), codestreams 15444-4 |
✅ 23/23 partie 1 ; fonctionnalités de la partie 2 et HTJ2K 📋 en amont | T4 |
| ITU-T T.88 / ISO/IEC 14492 (JBIG2), régions générique/raffinement/symbole/texte/demi-teinte/MMR, Huffman B.1–B.15, embarqué (annexe D.4) vs organisation fichier | /JBIG2Decode, /JBIG2Globals |
jbig2dec, jbig2.wasm de pdf.js, suite UBC, vecteurs ITU, PBM de l'auteur |
✅ 96/96 ; encodeur (générique + symbole) 📋 pour le MRC | T4 F-046 |
| ISO/IEC 18181 JPEG XL | filtre candidat futur (aucune extension encore enregistrée) | djxl de libjxl |
📋 à suivre ; proposer une extension via le préfixe ASKL | T6 |
| PNG (ISO/IEC 15948) via les prédicteurs, TIFF 6.0 / TIFF/IT (ISO 12639) / TIFF-FX (RFC 3949) comme sources d'import, PDF/raster 1.0 (PDF Association) | import/export d'image | libtiff, pypng, tiffsep de gs |
import ✅ (PNG/TIFF/JPEG dans l'écrivain) ; PDF/raster absent | T3 F-037 |
Images en ligne (§8.9.7), masques d'image, masques pochoir, /SMask, /Matte, /Decode, 16 bits, /Interpolate, /Alternates |
modèle d'image | pdftoppm, mutool, gs | ✅ (Interpolate comme les visualiseurs : bilinéaire) | — |
| Demi-teintes (§10.6, types 1/5/6/10/16 du LanguageLevel 3 PostScript), fonctions de transfert (§10.5), aplatissement/lissage | paramètres de rendu au niveau du périphérique | gs (seul oracle qui les applique) | /HT lu, non appliqué (rendu écran) ; mode RIP 📋 |
T4 F-041 |
C. Polices, texte, internationalisation
| Norme | Régit | Oracle | Statut | Palier |
|---|---|---|---|---|
ISO/IEC 14496-22:2019 (OpenType / OFF), TrueType (Apple/MS), formats cmap 0/2/4/6/12/13/14 (8/10 rares), post, hmtx/vmtx, OS/2, glyf/loca, CFF/CFF2, GSUB/GPOS (façonnage), COLR/CPAL/SVG/sbix/CBDT (polices couleur), fvar (variable) |
polices incorporées et système | fontTools/ttx (1,4 M d'avances, 516 k entrées cmap identiques), FreeType (rendu), HarfBuzz (hb-shape) pour le façonnage |
✅ analyse/métriques/glyphes ; façonnage à l'écriture 📋 (ADR) ; polices couleur → aplatir 📋 ; variable → instancier 📋 | T3 F-030 |
| Type 1 Adobe (spec T1, PFA/PFB, eexec, seac), CFF (TN #5176), charstrings Type 2 (TN #5177), polices à clé CID (TN #5014), Type 3 (§9.6.4), Multiple Master (déprécié) | programmes de police incorporés | T2CharStringPen de fontTools, FreeType |
✅ y compris seac, FontMatrix, loca abîmée (règle FreeType), PFB coupé |
— |
CMaps (TN #5099), CMaps prédéfinies (§9.7.5.2 table 116), Adobe-Japan1/GB1/CNS1/KR (Korea1 → KR), Identity, usecmap, ToUnicode (TN #5411), CMaps UCS2 (cmap-resources, mapping-resources-pdf) |
polices composites, encodages CJK historiques (Shift-JIS, EUC-JP, GBK/GB18030, Big5, EUC-KR, UHC) | pdftotext, mutool, pdf.js, cmap-resources | ✅ | — |
| Polices Standard 14 et métriques AFM (Adobe Core 14), URW Base 35 / Core 35 (OFL 1.1 lue à la source), drapeaux de substitution de police (§9.8.2) | polices latines non incorporées | largeurs AFM (4 107/4 172 égales, 53 listées), pdftoppm/mutool avec les mêmes fichiers URW | ✅ livrées (apdf-fonts-std14) |
— |
| Repli CJK : Noto CJK / Source Han (OFL), ordre des collections Adobe → Unicode | CJK non incorporé (17 documents du corpus) | pdftoppm avec Noto système | 🧭 D-3 | T4 |
| Unicode : UAX #9 (bidi), UAX #14 (coupure de ligne), UAX #29 (segmentation), UAX #24 (écritures), UAX #15 (normalisation), UTS #46 (IDNA, pour les URI), CLDR (exceptions de césure, réglages de coupure de ligne locaux), TR9-51 (UCD 17.0) | extraction et écriture de texte | BidiTest/BidiCharacterTest de l'UCD (100 %), fribidi, ICU (icu4c ubrk), motifs de césure LibreOffice/TeX (Hunspell hyph_*.dic, LGPL/MIT par langue — licence par fichier) |
bidi ✅ ; UAX #14/#29 📋 (écrivain) ; ADR de césure en attente | T3 |
Encodages : StandardEncoding, WinAnsiEncoding, MacRomanEncoding, MacExpertEncoding, PDFDocEncoding, Symbol, ZapfDingbats (annexe D), AGL (4 281 noms) + AGLFN, grammaire des noms de glyphe (uniXXXX, uXXXXX, gNN, cidNN) |
polices simples | codecs de CPython, agl de fontTools (4 681/4 681) |
✅ | — |
Chaînes de texte : PDFDocEncoding, BOM UTF-16BE, BOM UTF-8 (2.0), échappements, /Lang (BCP 47), /ActualText, /Alt, /E (développement) |
chaînes et texte de structure | qpdf --json, pdf.js | ✅ | — |
Écriture verticale (WMode 1, /W2, /DW2), ruby (structure RB/RT/RP), vertical mongol/ouïghour, tate-chū-yoko japonais (mise en page) |
mise en page CJK | pdftoppm (vertical_text.pdf 401/407 px) | ✅ rendu ; écrivain 📋 | T3 |
MathML 3/4 (ISO/IEC 40314) dans le PDF 2.0 balisé (espace de noms /Math http://www.w3.org/1998/Math/MathML), source MathML /AF |
mathématiques accessibles | fichiers ua2 de veraPDF, sortie LaTeX+tagpdf |
lecture ✅ (espaces de noms de structure) ; écriture 📋 | T3 |
D. Couleur
| Norme | Régit | Oracle | Statut | Palier |
|---|---|---|---|---|
| ICC.1:2022 (ISO 15076-1, v4.4), ICC v2, iccMAX (ISO 20677) | /ICCBased, intentions de sortie, profils livrés |
transicc de LittleCMS (804 conversions Δ1 max), gs, profils colord (CC0) |
✅ v2/v4 ; iccMAX 🚫 (aucun usage PDF) | — |
| IEC 61966-2-1 (sRGB) (aperçu seulement), Adobe RGB (1998) (profil CC0 compatible livré), Display P3, Rec.709/2020 (profil BT.709 livré) | espaces de travail RVB | transicc | ✅ | — |
| ISO 12647-2/-3/-4/-6 (offset, journal, héliogravure, flexo — aperçus seulement), données de caractérisation FOGRA (FOGRA27–59), SWOP/GRACoL (CGATS TR001–TR006), Japan Color 2011 (licence X-Rite — exclu), Chine : GB/T 7705 / données nationales façon CGATS (à étudier) | conditions d'impression CMJN | profils CC0 de colord (36), profils libres ECI (17) ; FOGRA39L par défaut à Δ1 de ISOcoated_v2 | ✅ livré ; ECI ISOcoated_v2/PSOcoated_v3 🧭 D-4 | — |
Espaces CIE (§8.6.5 : CalGray, CalRGB, Lab avec /Range), /Indexed, /Separation, /DeviceN (+ /NChannel, /Colorants, /Process), /Pattern |
modèle de couleur | transicc, gs, mutool | ✅ (gs décode les images Lab sur ±100 quel que soit /Range — documenté) |
— |
Intentions de rendu, compensation du point noir (ISO 18619, AN001, /UseBlackPtComp), /DefaultGray|RGB|CMYK (§8.6.5.6), surimpression (/OP, /op, /OPM), groupes knockout, fusion de transparence (§11) dans l'espace du groupe |
apparence colorimétrique | gs, mutool, poppler (chacun avec des écarts documentés) | ✅ (fusion dans l'espace du groupe pour CMJN/Gris ; les groupes ICC-RVB restent en sRGB) | — |
Bibliothèques de tons directs : Pantone (propriétaire — noms seulement), HKS, Toyo, DIC, RAL ; CxF/X-4 (données spectrales ISO 17972-4), profils N-colorant (nCLR), gamme étendue (ECG 7 couleurs) |
gestion des tons directs en prépresse | Esko/Pantone Live (commercial), fichiers d'exemple CxF | noms ✅ ; lecture CxF 📋 ; nCLR 📋 (aucun profil libre → PDF/X-5n/6n absents) | T4 |
Couverture d'encre / TAC, séparations (tiffsep), recouvrement (§14.11.6), trames (§10.6) |
sorties RIP | tiffsep de gs, -dUsePDFX3Profile |
séparations ✅ ; TAC/recouvrement 📋 | T4 F-041 |
E. Chiffrement, permissions, gestionnaires de DRM
| Norme | Régit | Oracle | Statut | Palier |
|---|---|---|---|---|
ISO 32000-2 §7.6 : gestionnaire de sécurité standard R2/R3/R4/R5/R6 (RC4 40/128, AES-128 CBC, AES-256, mots de passe Unicode via SASLprep RFC 4013 / stringprep RFC 3454), /EFF (pièces jointes seulement), /EncryptMetadata, permissions /P (sémantique du bit 10 en R6 confirmée par qpdf) |
chiffrement par mot de passe | qpdf, mutool, pdf.js, stringprep de CPython | ✅ | — |
ISO/TS 32003 (AES-256-GCM, /AESV4 ?) — tel que publié |
chiffrement authentifié | pyHanko | ✅ | — |
Gestionnaire de sécurité à clé publique (§7.6.5, /Adobe.PubSec), CMS EnvelopedData (RFC 5652), KeyTransRecipientInfo (RSA PKCS#1 v1.5 / OAEP RFC 8017), KeyAgreeRecipientInfo (ECDH, RFC 5753), chiffres de contenu AES/3DES/RC2, PKCS#12 (RFC 7292 : PBES1 RC2-40/3DES, PBES2 RFC 8018), PKCS#8 |
chiffrement par certificat | pyHanko, openssl cms -decrypt, pkcs12 -legacy, keytool |
✅ RSA + AES ; ECDH et contenu 3DES/RC2 📋 (russl-cms en amont) | T3 |
Gestionnaires historiques/propriétaires à détecter et nommer (jamais à contourner) : Adobe LiveCycle Rights Management (/Adobe.APS), FileOpen (/FOPN_foweb, /FOPN_fLock), Adobe ADEPT (/EBX_HANDLER), Microsoft IRM/MIP (/MicrosoftIRMServices, .ppdf), Locklizard, Vitrium, gestionnaires IBM/Xerox, /Adobe.PPKMS, /Entrust.PPKEF |
DRM | SDK éditeurs seulement | 📋 détection + diagnostics (apdf info nomme le gestionnaire, apdf lint explique) |
T2 |
Étiquettes Microsoft Information Protection dans le XMP (MSIP_Label_<GUID>_Enabled/SiteId/Owner/SetDate/Name/ContentBits/Method) et propriétés de document personnalisées |
étiquetage DLP d'entreprise | affichage Acrobat/Foxit/Edge ; Purview | 📋 lecture/écriture (F-025) | T2 |
Caviardage (§12.5.6.23 /Redact, /RO, /OverlayText), suppression réelle du contenu, « Redacting with Confidence » de la NSA, guides NIST/DoJ, masquage PAN PCI DSS |
caviardage prouvable | qpdf --json + pdftotext après (plus rien) , pdfimages | annotation ✅ ; application du caviardage avec rapport de destruction 📋 | T2/T4 F-045 |
| Assainissement : « Inspection and Sanitization Guidance for PDF » (IAD/NSA), « Safely importing data » (NCSC), promesses des éditeurs de CDR | sécurité inter-domaines | corpus UNSAFE-DOCS, échantillons VirusTotal (interne) | 📋 apdf scrub --rebuild |
T2 F-025 |
Littérature d'attaque : PDFex (CCS 2019 : exfiltration directe, gadgets CBC), Shadow Attacks (NDSS 2021 : cacher/remplacer/cacher-puis-remplacer après signature), contournements de signature USF/ISA/SWA (S&P/NDSS 2019), « Processing Dangerous Paths » (2021), évasions de bac à sable JS, JBIG2 FORCEDENTRY (CVE-2021-30860), historique -dSAFER de Ghostscript, flux de CVE pdfium/poppler |
modèle de menace | PoC publiés (pdf-insecurity.org), PoC de CVE | 📋 le rapport de durcissement rejoue chaque classe (F-025) | T2 |
| FIPS 140-3 (modules crypto), ETSI TS 119 312 (algorithmes et tailles de clé), mécanismes agréés SOG-IS, RGS B1 de l'ANSSI, BSI TR-02102, NIST SP 800-131A (transitions), CNSA 2.0 (calendrier PQC) | politique d'algorithmes | tables de politique | 📋 apdf sign --policy sogis|nist|cnsa2 sélectionnant les suites autorisées ; RUSSL fournit les primitives |
T3 |
F. Signatures numériques et régimes de confiance (dans le monde)
F.1 Formats de signature à l'intérieur du PDF
| Format | Spécification | Oracle | Statut |
|---|---|---|---|
adbe.x509.rsa_sha1 (PKCS#1, historique), adbe.pkcs7.sha1, adbe.pkcs7.detached (CMS RFC 5652) |
ISO 32000-2 §12.8.3 | pdfsig, pyHanko, Acrobat | ✅ |
ETSI.CAdES.detached (PAdES : ETSI EN 319 142-1/-2, CAdES EN 319 122-1/-2), niveaux B-B/B-T/B-LT/B-LTA, /DSS, /VRI, /DocTimeStamp (ETSI.RFC3161), TSA RFC 3161/5816 |
PAdES | pyHanko, DSS, pdfsig | ✅ B-B…B-LTA ; oracle DSS à ajouter |
Gestionnaires de signature /Filter : Adobe.PPKLite, Adobe.PPKMS, Entrust.PPKEF, CICI.SignIt, VeriSign.PPKVS (§12.8.1) |
noms de gestionnaire | corpus | ✅ lecture ; écriture PPKLite |
MDP : certification (/DocMDP P=1/2/3), FieldMDP (/Lock, /SV), droits d'usage UR3 (/UR3, extensions Reader — propriétaire Adobe), transformations /Reference |
détection de modification | pyHanko, Acrobat | ✅ DocMDP/FieldMDP ; UR3 lecture seule (clé Adobe) |
Valeurs germe (/SV : /Cert, /Reasons, /MDP, /TimeStamp, /LegalAttestation, /DigestMethod, /AddRevInfo), attestations légales de contenu (§12.8.5 /Legal) |
contraintes de signature | pyHanko (plante sur /DigestMethod [/SHA256] en 0.37) |
✅ sauf /Cert |
| Long terme : ERS (RFC 4998 / XML RFC 6283), ETSI TS 119 511/512 (services de préservation), BSI TR-ESOR (TR-03125) | enregistrements de preuve pour l'archivage | DSS, suite de test TR-ESOR (BSI) | 📋 T4 F-042 |
Post-quantique : RFC 9882 (ML-DSA dans CMS, FIPS 204), SLH-DSA dans CMS (RFC 9814 ?), ML-DSA composite (brouillons IETF LAMPS draft-ietf-lamps-pq-composite-sigs), ETSI TR 119 619 (migration PQC pour AdES, en cours), calendrier NIST IR 8547 |
signatures PQ dans PAdES | OpenSSL 3.5 (ML-DSA), Bouncy Castle 1.79+, liboqs | 📋 premier arrivé (F-033) — via RUSSL uniquement |
Suites cryptographiques nationales : GOST R 34.10-2012 / 34.11-2012 (RFC 7091/7836 ; plugin PDF CryptoPro, adbe.pkcs7.detached avec OID GOST), SM2/SM3 (GM/T 0003/0004, RFC 8998 pour TLS ; GM/T 0010 CMS SM2 ; cachet électronique GB/T 38540-2020, GM/T 0031), DSTU 4145 (Ukraine), KCDSA/EC-KCDSA (Corée), ECGDSA (BSI allemand), Brainpool (RFC 5639, courant dans les eID européens) |
algorithmes hors NIST | outils de test CryptoPro, GmSSL (CLI gmssl), outils ukrainiens IIT, vecteurs de test KISA |
Brainpool ✅ (russl-brainpool) ; GOST/SM2/DSTU/KCDSA 🧭 disponibilité amont RUSSL à mesurer |
Signatures visibles : flux d'apparence, couches /n0…/n2 (historique Adobe), codes QR de vérification, cachets (電子印鑑 japonais, cachet électronique chinois image + signature selon GB/T 38540, 전자인감 coréen) |
apparence | rendu Acrobat, visualiseurs nationaux | ✅ apparence ; profils de cachet 📋 |
F.2 Régimes juridiques et profils nationaux (ce qu'un PDF signé doit satisfaire, et où)
| Juridiction | Base légale / profil | PKI et jetons nationaux | Oracle / matériel de test | Retenu |
|---|---|---|---|---|
| UE/EEE | règlement eIDAS 910/2014 + eIDAS 2.0 règlement 2024/1183 (EUDI Wallet), DEC 2015/1506 (formats AdES), ETSI EN 319 102/122/132/142/162/172, TS 119 182 (JAdES), EUTL/LOTL | eID nationales (ci-dessous), QSCD selon CEN EN 419211, QSCD à distance EN 419241, API CSC | DSS (validateur de référence), plugtests ETSI (événements d'interopérabilité signature à distance/PAdES), LOTL | = AdES complet, magasin de confiance LOTL, oracle DSS, client CSC |
| Allemagne | VDG (Vertrauensdienstegesetz), BSI TR-03110 (eID), TR-03112 (eCard-API), TR-03116, TR-03125 (TR-ESOR), TR-03138 (RESISCAN), GoBD (tenue des registres fiscaux) | nPA (AusweisApp, pas de signature par défaut), sign-me D-Trust/Bundesdruckerei, Telesec, HBA/SMC-B (TI gematik), certificats ELSTER (.pfx) |
SDK AusweisApp, exemple de Konnektor gematik, suite de test BSI TR-ESOR | = PKCS#11/PC-SC générique ; pfx ELSTER (PKCS#12) ✅ |
| France | code civil 1366–1367, décret 2017-1416, RGS v2 (, *), qualifications ANSSI, RGI, NF Z42-013 / Z42-020, référentiel Pro Santé Connect | CNIe/France Identité de l'ANTS, CPS/CPE/e-CPS (IAS-ECC), Certigna/Certinomis/Docaposte/ChamberSign | libcps-rs (ASKLERA), Cryptolib CPS, cartes de test ANTS, DSS | = module de profil IAS-ECC ; CPS comme un module parmi d'autres |
| Italie | CAD (D.Lgs. 82/2005), règles AgID, PAdES-BES/T avec /Filter /Adobe.PPKLite + ETSI.CAdES.detached, firma digitale remota, SPID/CIE 3.0, TS-CNS (carte santé = carte à puce), conservazione (UNI 11386 SInCRO), FatturaPA |
Aruba, InfoCert, Namirial, Actalis ; intergiciel CIE 3.0, TS-CNS | vérificateur AgID (verificafirma), DSS |
= modules CNS/CIE, métadonnées SInCRO (§I) |
| Espagne | Ley 6/2020, ENI (Esquema Nacional de Interoperabilidad : document/dossier électronique NTI — PDF/A obligatoire, XAdES/PAdES), Cl@ve, DNIe 3.0/4.0, FNMT-RCM | DNIe (PKCS#11 via OpenSC/officiel), FNMT | @firma/AutoFirma (open source, oracle !), VALIDe |
= module DNIe ; XML de métadonnées ENI (§I) |
| Belgique | eID (BELPIC, PKCS#11 beid-pkcs11), itsme (à distance) |
intergiciel BEID (open source) | cartes de test eID, DSS | = module BELPIC |
| Pays-Bas | PKIoverheid, DigiD, UZI-pas (carte à puce santé), NEN 2082/7513 | UZI (PKCS#11) | cartes de test UZI | = module UZI |
| Estonie / Lettonie / Lituanie | conteneurs ASiC-E/BDOC/ADOC (EN 319 162), Web eID, DigiDoc4/libdigidocpp, Smart-ID (à distance) | EstEID (PKCS#11 via OpenSC), eParaksts | libdigidocpp (LGPL, oracle), démo Smart-ID | = conteneurs ASiC enveloppant un PDF (§F.3) ; module EstEID |
| Autriche | ID Austria/Handy-Signatur (à distance, A-Trust), Bürgerkarte (historique), carte santé ELGA | A-Trust | MOA-SP/SS (open source, oracle) | = |
| Suisse | ZertES, SuisseID (historique), Swisscom AIS (à distance, façon CSC), swisssign | SwissSign | bac à sable Swisscom AIS | = client à distance |
| Royaume-Uni | eIDAS (conservé, liste de confiance UK), Electronic Communications Act 2000, cartes NHS Care Identity | cartes NHS (PKCS#11 Oberthur/IDEMIA) | — | = PKCS#11 générique |
| Pays nordiques | BankID (SE/NO — à distance, pas de carte), MitID (DK), FINeID (FI, PKCS#11 mPollux), Buypass (cartes NO) |
FINeID, Buypass | cartes de test DVV finlandaises | = |
| Pologne / Tchéquie / Slovaquie / Hongrie / Roumanie / Bulgarie / Croatie / Slovénie | AC qualifiées nationales (KIR, Certum, PostSignum, I.CA, Disig, NetLock, certSIGN, B-Trust, Fina, SIGEN-CA), eID nationales (e-Dowód, eObčanka, eID SK) | intergiciels PKCS#11 | DSS + validateurs nationaux (ex. « weryfikator » polonais) | = générique |
| Portugal | Cartão de Cidadão (pteid, PKCS#11), Chave Móvel Digital (à distance), ATCUD/QR sur les factures | intergiciel pteid (open source, oracle) | SDK pteid | = |
| Luxembourg | LuxTrust (cartes et à distance) | intergiciel LuxTrust | — | = |
| Ukraine / Kazakhstan / Russie / Biélorussie | DSTU 4145 (UA), Diia ; NCA RK (GOST KZ/KZ) ; GOST (RU, CryptoPro/ViPNet, loi fédérale 63-FZ) ; STB (BY) | CSP nationaux | IIT (UA), outils de test NCA, test CryptoPro | 🧭 algorithmes en amont ; revue sanctions/conformité avant tout support RU |
| Turquie | loi 5070, KamuSM/TÜBİTAK, e-imza, e-Fatura (UBL-TR) | jetons e-imza (PKCS#11) | test KamuSM | = |
| États-Unis | ESIGN Act, UETA, 21 CFR Part 11 (pharma/FDA : pistes d'audit, manifestations de signature), FIPS 201-3 (PIV), CAC du DoD, NIST SP 800-63-3/-4, HIPAA, NARA, règles PDF/A du CM/ECF des tribunaux, eNote FHFA/Fannie (MISMO SMART Doc), AATL (Adobe Approved Trust List) | PIV/PIV-I/CAC (PKCS#11 via OpenSC/ActivClient, minipilote CNG), DigiCert/IdenTrust/Entrust (AATL) | OpenSC PIV, piv-tool, cartes de test PIV du NIST (SP 800-85A), validateur AATL d'Acrobat |
= module PIV/CAC, profil de manifestation Part 11, magasin de confiance AATL |
| Canada | LPRPDE, Secure Electronic Signature Regulations, PKI du gouvernement fédéral | cartes GC Entrust | — | = générique |
| Brésil | MP 2.200-2/2001, Lei 14.063/2020, ICP-Brasil DOC-ICP-15 (profils PAdES-BR AD-RB/RT/RC/RV/RA), e-CPF/e-CNPJ A1 (PKCS#12) / A3 (jetons), assinatura Gov.br | jetons Serpro/Certisign/Soluti (PKCS#11) | ITI Verificador de Conformidade (validateur officiel, oracle), Assinador SERPRO | = attributs de politique PAdES-BR (OID signature-policy-identifier) |
| Mexique | NOM-151-SCFI-2016 (constancia de conservación : hachage horodaté), FIEL/e.firma (SAT, PKCS#12 .cer/.key), CFDI 4.0 (XML + représentation PDF) |
e.firma du SAT | validateurs SAT | = profil d'horodatage NOM-151 ; représentation PDF CFDI (§H) |
| Argentine / Chili / Colombie / Pérou / Uruguay | Ley 25.506 (AR), Ley 19.799 (CL), Ley 527/1999 + Decreto 2364 (CO), Ley 27.269 (PE) ; AC nationales (ONTI, SII, ONAC/Certicámara, INDECOPI) | jetons (PKCS#11) | validateurs nationaux | = générique + représentations de facture électronique (§H) |
| Inde | IT Act 2000 (annexe II eSign), CCA India, Aadhaar eSign (API ASP/ESP), jetons DSC classe 3 (ePass 2003, ProxKey), documents émis par DigiLocker, QR IRN de facture électronique GST | AC licenciées CCA (eMudhra, Sify, (n)Code) | bac à sable eSign (CDAC), jetons de test DSC, validateur NIC | = client Aadhaar eSign (hachage → CMS), QR IRN |
| Chine | loi sur la signature électronique (2004/2019), cachet électronique GB/T 38540-2020, GM/T 0031, GM/T 0010, OFD (GB/T 33190), CFCA, UKey (PKCS#11 via SKF — API SKF GM/T 0016, pas PKCS#11 !) | UKeys (SKF), certificats CFCA | GmSSL, vérificateurs nationaux de cachet électronique | = adaptateur API SKF (GM/T 0016) à côté de PKCS#11 ; SM2 en amont 🧭 ; OFD ↔ PDF (§S) |
| Japon | loi sur les signatures électroniques (2000), JPKI (My Number Card), 電子帳簿保存法 (loi de conservation des livres électroniques : horodatage des documents scannés, certification JIIMA), 電子印鑑 | JPKI (PKCS#11 via client JPKI), Cybertrust/SECOM/GlobalSign JP | environnement de test JPKI, test JIIMA | = module JPKI, profil d'horodatage e-Books (RFC 3161 + politique TSA japonaise) |
| Corée | loi sur la signature numérique (réforme 2020 : 공동인증서), KISA, loi fondamentale sur les documents et transactions électroniques (autorité de document électronique certifié) | certificats NPKI (PKCS#12 .p12/format de dossier NPKI), jetons HSM |
outils de test KISA | = import NPKI |
| Taïwan / Hong Kong / Singapour / Malaisie | certificat numérique citoyen MOICA (TW, PKCS#11), Hong Kong ETO + Smart ID, Singapour ETA + SingPass/Sign with SingPass (à distance), Malaisie DSA 1997 + MyKad/Pos Digicert | PKCS#11 / API à distance | test national | = |
| Moyen-Orient / Afrique | décret fédéral 46/2021 des EAU + UAE PASS (à distance), loi saoudienne sur la signature numérique + Nafath + cachets cryptographiques ZATCA (§H), loi israélienne sur la signature électronique 2001, Égypte ITIDA, Afrique du Sud ECTA 2002 (SAPO), Kenya, Nigeria NITDA, Maroc loi 43-20 (Barid eSign) | jetons / à distance | SDK ZATCA (open source), bac à sable UAE PASS | = clients à distance ; cachet ZATCA (ECDSA secp256k1 dans CMS — à vérifier) |
| Australie / NZ | Electronic Transactions Act 1999, myGovID/Digital ID Act 2024, PKI Gatekeeper ; NZ ETA 2002, RealMe | certificats Gatekeeper | — | = générique |
| International | loi type de la CNUDCI (1996/2001), e-Apostille HCCH (e-APP) : apostilles comme PDF signés numériquement avec e-Register | autorités nationales d'apostille | exemples d'e-Apostilles (HCCH) | = profil e-Apostille (§M) |
F.3 Conteneurs et formats apparentés
| Format | Spécification | Retenu |
|---|---|---|
ASiC-S/ASiC-E (ETSI EN 319 162-1/-2), BDOC 2.1 (EE), ADOC (LT), eDoc (LV), .p7m (enveloppe CAdES, Italie), .sig détaché |
conteneurs signés enveloppant des PDF | = créer/vérifier les conteneurs (libdigidocpp, oracles DSS) |
| XAdES (EN 319 132) pour les pièces jointes XML (XML Factur-X, ENI, FatturaPA), JAdES (TS 119 182) pour le JSON (EUDI) | charges utiles non-PDF transportées par des PDF | = XAdES via RUSSL (russl-xades ? 🧭 à mesurer) |
| S/MIME (RFC 8551) pour les PDF en courrier, REM/PEC (ETSI EN 319 522, PEC italien) | transport de courrier | synergie avec asklera-mail |
C2PA 2.4 (manifeste en fichier associé, exclusions data.hash pour cohabiter avec PAdES) |
provenance du contenu | = F-032, oracle c2patool |
G. Cartes à puce, jetons, HSM, signataires à distance (architecture générique d'abord)
| Couche | Norme / API | Cible de couverture | Oracle |
|---|---|---|---|
| Transport carte | PC/SC (winscard.h ; pcsc-lite sous Linux/macOS), ISO/IEC 7816-3/-4 (APDU, T=0/T=1), CCID (USB), NFC (ISO 14443, pour les eID) | une crate de transport (ADR : crate pcsc ou équivalent RUSSL) |
opensc-tool -a, pcsc_scan |
| Applications carte | ISO/IEC 7816-15 / PKCS#15 (découverte d'objets), IAS-ECC v1.0.1 (eID FR/UE, CPS), CEN EN 14890-1/-2 (interface d'application SSCD), NIST SP 800-73-4/-5 (PIV), CAC du DoD (NIST + DMDC), BSI TR-03110 (eID EAC/PACE), ICAO 9303 (passeport électronique, lecture seule), carte OpenPGP 3.4, FIDO2/CTAP (authentification seulement), GlobalPlatform (gestion, hors périmètre), applets Java Card (éditeur) | modules de profil au-dessus du transport : piv, cac, ias-ecc (CPS = configuration), pkcs15-generic, estonia, belpic, dnie, cns, jpki, openpgp |
pilotes OpenSC comme oracle comportemental (pkcs15-tool --list-keys, pkcs11-tool --sign) |
| API d'intergiciel | PKCS#11 v2.40/v3.1 (OASIS) — la voie universelle (OpenSC, SafeNet, YubiKey, HSM, Cryptolib CPS, gematik, BEID…), CNG KSP / CryptoAPI CSP / minipilote carte à puce de Microsoft, CryptoTokenKit d'Apple, p11-kit sous Linux, SKF GM/T 0016 (UKeys chinois), Java KeyStore/JCE (via la liaison JVM), Android Keystore/StrongBox, Secure Enclave iOS, TPM 2.0 (tpm2-pkcs11) |
trait signataire externe d'apdf-sign : sign_hash(algorithme, empreinte) -> signature, certificates(), rappels pin ; adaptateurs : PKCS#11 (en premier), CNG, CTK, SKF, profils PC/SC natifs, KMS cloud, CSC |
--p11-module de pyHanko, pkcs11-tool, SoftHSM2 (oracle sans matériel), YubiKey PIV, cartes de test PIV du NIST |
| HSM / KMS | PKCS#11 (Thales Luna, nShield, Utimaco, AWS CloudHSM, YubiHSM), AWS KMS / Azure Key Vault et Managed HSM / GCP Cloud KMS (REST, signature d'empreinte), HashiCorp Vault Transit, Fortanix DSM | adaptateurs par le même trait | SoftHSM2, LocalStack KMS, émulateur Azure (aucun) → bacs à sable réels |
| Signature à distance / cloud | CSC API v2.2 (OAuth2, credentials/info, signatures/signHash), ARF EUDI Wallet (QES via portefeuille), Swisscom AIS, API Adobe Sign/DocuSign (signatures de plateforme, pas les nôtres), Aadhaar eSign (IN), Sign with SingPass (SG), UAE PASS, Gov.br |
adaptateur csc + flux de portefeuille |
fournisseurs de bac à sable CSC (Namirial, InfoCert, Intesi), DSS |
| Magasins de confiance | LOTL/TSL UE (ETSI TS 119 612), AATL (Adobe), racines Microsoft/Apple/Mozilla (validation façon TLS), listes nationales (AC-Raiz ICP-Brasil, CCA India, KamuSM, JPKI), CA/B Forum, OCSP (RFC 6960) / CRL (RFC 5280) / SCVP | politiques de confiance configurables, lots hors ligne avec provenance | DSS, openssl verify, pdfsig -trust |
| Famille des cartes santé (comme une seule famille de profils, pas un cas particulier français) | CPS (FR, IAS-ECC), HBA/SMC-B (DE, gematik), UZI (NL), TS-CNS (IT), NHS (UK), e-card (AT), HIN (CH), HPI (AU) — toutes PKCS#11 ou IAS-ECC/PKCS#15 | couvertes par les modules génériques + des fichiers de configuration par carte (AID, politiques de PIN, emplacements de certificat) | cartes de test éditeur ; libcps-rs pour l'interne de la CPS |