Posts

Showing posts from February, 2025

Comprendre l'autorité ambiante et les capabilités objet en sécurité informatique

Autorité Ambiante vs Capabilités Objet en Sécurité Informatique L’autorité ambiante est un modèle de sécurité problématique où des privilèges sont accessibles de manière implicite. À l’inverse, les capabilités objet garantissent une gestion explicite des accès, réduisant ainsi les vulnérabilités. Cet article illustre ces concepts avec du C++ . Comprendre l’Autorité Ambiante Définition : Une autorité est dite ambiante lorsqu'un programme peut accéder à une ressource sans passer par un mécanisme explicite d’autorisation. Problème : Ce modèle entraîne des failles de sécurité , comme : Problème du député confus/' Confused deputy problem ' : Un programme peut, involontairement être manipulé pour effectuer des actions malveillantes en utilisant son autorité implicite. Mauvaise gestion des accès : Les privilèges sont trop largement distribués, ce qui complique le contrôle et la surveillance. Exemple en C++ : Mauvaise pratique Dans l’exemple suivant, l...

Interopérabilité des Services Mobile Money au Togo: 'Une réduction de l’entropie économique'

Image
Philosophie & Entropie du Système monétaire Mobile L’argent est souvent perçu comme un simple moyen d’échange, mais il est avant tout un vecteur d’information structurant les interactions humaines. Dans un système mobile interopérable, chaque transaction n’est pas seulement un échange de valeur, mais une transmission d’ordre à travers l’entropie économique. La non-interopérabilité actuelle entre services comme Yas (Mixx) et Moov (Flooz) au Togo génère une dissipation d’énergie économique : les coûts de conversion, le temps d’attente et la nécessité d’intermédiaires sont autant d’entropies inutiles. Cet article explore comment un système unifié pourrait réduire cette entropie en permettant des transferts inter-opérateurs via une seule numérotation téléphonique, en s’appuyant sur les technologies télécoms et les systèmes de transfert d’argent mobile. Analyse du Diagramme de Transfert d’Argent Mobile L’article "Bridges to cash: Channelling agency in monile money" du ...

Entropie Logicielle : Vers une Dégénérescence Algorithmique

L'ingénierie logicielle, jadis un bastion de l'optimisation et de la précision, s'est transformée en un  labyrinthe de complexité  où l'entropie règne en maître. Cette évolution reflète une tendance à accumuler des couches d’abstraction inutiles, à ignorer les principes fondamentaux de l’optimisation algorithmique, et à rendre chaque mise à jour exponentiellement plus coûteuse. 1. La Complexité Algorithmique et l’Explosion Combinatoire Dans un système logiciel, la  complexité algorithmique   C ( n )  dépend du nombre de composants et de leurs interactions. Elle tend à croître de manière exponentielle lorsqu’on empile des dépendances : C ( n ) = O ( 2 n ) Si nous modélisons un  graphe de dépendances  comme un graphe  G = ( V , E )  où  V  représente les modules et  E  les dépendances entre eux, alors chaque modification exige de résoudre un  problème NP-complet  de couverture de sommets. Exemple en C++ :  R...

Les expressions régulières gourmandes & non gourmandes en C++

Image
Les expressions régulières sont essentielles pour extraire des informations dans du texte structuré, notamment en HTML. Cependant, la manière dont elles capturent les données peut varier selon qu'elles sont gourmandes ( greedy ) ou non gourmandes ( non - greedy ). Dans cet article, nous allons explorer ces concepts en C++ et présenter deux solutions valides pour extraire des liens (étiquettes  <a href> ), tout en discutant des cas d'utilisation et de la maintenance du programme. 1. Qu'est-ce qu'une expression régulière gourmande ? Une expression régulière gourmande ( greedy regex ) tente de capturer le plus de texte possible. Cela peut poser problème lorsque nous cherchons à extraire une partie bien définie d'un texte, comme une URL contenue dans une balise HTML. Exemple de problème avec une regex gourmande #include <iostream> #include <fstream> #include <string> #include <regex> int main(int argc, char* argv[]) { if (argc < ...

Refactorisation de Code avec les 10 Règles de la NASA

Vous pensez pouvoir gérer la complexité comme si vous aviez affaire à un simple xénomorphe ? Réfléchissez encore. Les Règles du Pouvoir de Dix de la NASA sont votre armure dans l'espace sombre du code critique. Ces règles , issues du JPL par Gerard J. Holzmann , sont votre bouclier dans les environnements où chaque ligne de code peut être une question de vie ou de mort. J'ai affronté le chaos des calculs financiers: ' European   interest rate option ' & ' currency option ' en appliquant ces règles. Voici comment elles ont transformé le code :  1. Option de Taux d’Intérêt Européen (C++ conforme aux règles de la NASA) Le calcul du profit ou de la perte d’une option de taux d'intérêt suit l’équation suivante : P = Principal × ( Taux r e ˊ el − Taux d’exercice ) × ( Dur e ˊ e Jours dans l’ann e ˊ e ) '''cpp # include <iostream> # include <cassert> // Règle 8 : Utilisation de constantes au lieu de macros constexpr double ...