RESEARCH
Research
Research notes and published papers from Ironproof. Every figure traces to a cited source, and each note states what it does not show.
PUBLISHED PAPERS · ARXIV
arXiv:2610.11073
IRONPROOF: COBOL-to-Python Transpilation with SMT-Based Equivalence Checking
arXiv:2610.10992
The Hint Weight of ML-DSA Signatures Is Key-Dependent: An Empirical Study across the Three FIPS 204 Parameter Sets
arXiv:2604.06712
Broken Quantum: A Systematic Formal Verification Study of Security Vulnerabilities Across the Open-Source Quantum Computing Simulator Ecosystem
arXiv:2604.05292
Broken by Default: A Formal Verification Study of Security Vulnerabilities in AI-Generated Code
RESEARCH NOTES
· Ironproof Research
What our proofs do not prove
A verification verdict is only as strong as the question it was asked. For each thing Ironproof checks: what we guarantee, what holds only within bounds, and what is still open.
· Ironproof Research
Zero barriers, one reviewer
Four 2026 agent containment failures, aggregated. The detection window in one was 5.5× longer than the time a comparable agent needed to fully compromise a production estate in another.
ÉTAT DU MOTEUR
Ce qui fonctionne aujourd’hui. Ce qui est en cours. Ce qui reste ouvert.
Les trois états que nous donnons à chaque résultat, appliqués à nous-mêmes. Chaque ligne dit comment la vérifier.
État au
FONCTIONNE AUJOURD’HUI
Traduction de code, vérifiée par preuve
Un module Python de quatre fonctions avec boucles, traduit en Rust. L’équivalence est prouvée pour toute série d’au plus six valeurs, et les boucles sont prouvées pour n’importe quel calcul à chaque pas. Au-delà de six valeurs, 100 000 essais au hasard n’ont trouvé aucune différence. Les fichiers du test sont disponibles sur demande pour un examen.
MISRA C sur du code traduit
La traduction C d’une fonction de traitement de signal passe le vérificateur libre MISRA C:2012 (cppcheck) sur le programme complet, et son équivalence avec l’original Python est reprouvée. C’est un outil libre qui couvre une partie des règles, pas une certification.
Autorisation des actions critiques
Chaque demande qui passe par Ironproof est vérifiée contre vos règles avant de s’exécuter. Permise, elle s’exécute. Interdite, elle ne s’exécute jamais. Dans les deux cas, la décision est scellée. Ouvrez une décision scellée et vérifiez-la vous-même, dans votre navigateur, sans serveur ni compte.
VÉRIFIER UNE TRACE SCELLÉEEssayez de passer la barrière
Quatre attaques contre la politique de paiement scellée de l’exemple, calculées dans votre navigateur. Certaines passent, et la page dit exactement pourquoi.
OUVRIR LE LABO
EN COURS
Modernisation des systèmes hérités
Les programmes d’assurance GenApp d’IBM, vérifiés sous un modèle CICS que nous écrivons nous-mêmes et confrontés à un vrai CICS. Une exécution sur z/OS et une reprise par un tiers restent à faire. Les réponses « même comportement » de notre vérificateur de traductions sont suspendues : des audits ont reproduit des dizaines de fausses réponses, sur des cas écrits pour attaquer l’outil.
LIRE LA RECHERCHESécurité du logiciel C
Vérifier qu’un correctif de sécurité ferme vraiment la faille, sur de vrais correctifs de projets open source. Le vérificateur est en reconstruction ; les résultats antérieurs ne sont pas présentés comme des preuves complètes.
LIRE LA RECHERCHECorrectif de sécurité en Rust
Une faille publiée d’une librairie Rust (RUSTSEC-2017-0004). Le code d’origine et un faux correctif plausible sont tous deux attrapés. Le vrai correctif est prouvé sur le code réel pour les longueurs de ligne standard, et pour toute longueur sur un modèle écrit à la main, dont le lien avec le code n’est pas encore vérifié par une machine.
PROBLÈMES OUVERTS
La fidélité
Montrer que la logique que nous vérifions dit la même chose que la politique, le code ou le programme d’origine. Une preuve ne vaut pas plus que cette étape.
Les correctifs écrits par des modèles de langage
Prouver qu’un correctif C proposé par un modèle ferme la faille, pas seulement qu’il passe les tests.
Le COBOL qui lit de vraies données
L’équivalence pour toutes les entrées qu’un programme peut recevoir, pas pour une seule exécution.
Vous travaillez sur l’un de ces problèmes ? Nous voulons les attaquer avec des chercheurs universitaires. ÉCRIVEZ-NOUS