{"id":1838,"date":"2014-10-21T23:10:54","date_gmt":"2014-10-21T21:10:54","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=1838"},"modified":"2016-03-29T19:00:25","modified_gmt":"2016-03-29T17:00:25","slug":"memorisation-de-liens-et-acceleration-des-traitements","status":"publish","type":"post","link":"http:\/\/blog.nebule.org\/?p=1838","title":{"rendered":"M\u00e9morisation de liens et acc\u00e9l\u00e9ration des traitements"},"content":{"rendered":"<p style=\"text-align: justify;\">Par d\u00e9faut, \u00e0 chaque chargement d&rsquo;un objet pour traitement ou pour son affichage, chaque liens sont lus et v\u00e9rifi\u00e9s, puis relus et rev\u00e9rifi\u00e9s. Parce que cette v\u00e9rification implique des\u00c2\u00a0algorithmes cryptographiques de prise d&#8217;empreinte et des algorithmes cryptographiques asym\u00e9trique (\u00e0 cl\u00e9s priv\u00e9es), le traitement cumul\u00e9 de chaque v\u00e9rifications devient vite une quantit\u00e9 non n\u00e9gligeable. Bref, le temps de calcul se ressent dans le traitement.<\/p>\n<p style=\"text-align: justify;\">Il est possible d&rsquo;acc\u00e9l\u00e9rer ce fonctionnement avec la m\u00e9morisation des v\u00e9rifications d\u00e9j\u00e0 faites.<\/p>\n<p style=\"text-align: justify;\">Pour commencer, on peut consid\u00e9rer en premi\u00e8re approximation que la plus grande partie du temps de traitement est imputable \u00e0 la cryptographie asym\u00e9trique. On consid\u00e8re donc par d\u00e9faut que les autres traitements sont, temporellement, quantit\u00e9s n\u00e9gligeables. cette approximation est v\u00e9rifi\u00e9e en pratique dans <a title=\"Projet sylabe\" href=\"http:\/\/www.sylabe.org\/\" target=\"_blank\">sylabe<\/a> lorsque l&rsquo;on d\u00e9sactive la v\u00e9rification des signatures.<\/p>\n<p style=\"text-align: justify;\">Pour des raisons de s\u00e9curit\u00e9, les liens qui ont \u00e9t\u00e9 v\u00e9rifi\u00e9s, et que l&rsquo;on souhaite m\u00e9moriser, doivent \u00eatre m\u00e9moris\u00e9s en int\u00e9gralit\u00e9. Il <span style=\"text-decoration: underline;\">ne faut pas<\/span> garder uniquement la\u00c2\u00a0signature du lien. Il est pr\u00e9f\u00e9rable de conserver l&rsquo;int\u00e9gralit\u00e9 du lien. Tout au plus peut-on supprimer le champs signature. Ces liens pr\u00e9-v\u00e9rifi\u00e9s doivent \u00eatre conserv\u00e9s en lieu s\u00fcr, non modifiable par une autre entit\u00e9 ou un autre processus.<br \/>\nDans ce cas, la v\u00e9rification d&rsquo;un lien va commencer par le parcours des liens d\u00e9j\u00e0 v\u00e9rifi\u00e9s, puis en dernier recours \u00e0 v\u00e9rifier le lien. Au del\u00e0 d&rsquo;un certain nombre de liens m\u00e9moris\u00e9s, il est possible que le b\u00e9n\u00e9fice de la m\u00e9morisation soit n\u00e9gatif vis-\u00e0-vis de la v\u00e9rification direct des signatures des liens. Il faudra montrer exp\u00e9rimentalement l&rsquo;ordre de grandeur de la table des liens m\u00e9moris\u00e9s. Qui dit table de m\u00e9morisation limit\u00e9 dit aussi gestion de la quantit\u00e9 de liens m\u00e9moris\u00e9s et donc du remplacement de certains liens par d&rsquo;autres. Ce remplacement peut se faire en boucle, sans calcul, ou au contraire en tenant compte du temps de dernier usage des liens m\u00e9moris\u00e9s. Bref, il y a du travail d&rsquo;optimisation en perspective.<\/p>\n<p style=\"text-align: justify;\">Comme on l&rsquo;a vu avec une table de m\u00e9morisation limit\u00e9e, le temps de m\u00e9morisation des liens peut \u00eatre variable. De m\u00eame, une autre p\u00e9riode de r\u00e9tention peut exister. La table de m\u00e9morisation peut n&rsquo;\u00eatre valable que pour le temps de chargement d&rsquo;une page (web). Ou au contraire la table de m\u00e9morisation peut \u00eatre valable le temps de la session, c&rsquo;est \u00e0 dire tout le temps ou l&rsquo;entit\u00e9 est d\u00e9verrouill\u00e9e. Dans le cas de navigations sur <em>sylabe<\/em>, et en \u00e9tant non-d\u00e9verrouill\u00e9e, la m\u00e9morisation peut \u00eatre li\u00e9e \u00e0 la session <em>php<\/em>, et donc expirer avec celle-ci.<\/p>\n<p style=\"text-align: justify;\">Imaginons maintenant un peu le futur. Imaginons que chaque entit\u00e9, chaque humain dispose de sa cl\u00e9 priv\u00e9e en permanence dans un p\u00e9riph\u00e9rique, ou plut\u00f4t une proth\u00e8se. Empact\u00e9e dans du mat\u00e9riel, la cl\u00e9 priv\u00e9e serait beaucoup mieux prot\u00e9g\u00e9e. De fait, corrompre la table de m\u00e9morisation des liens v\u00e9rifi\u00e9s deviendra un moyen plus facile pour modifier le comportement d&rsquo;une entit\u00e9. Il doit donc \u00eatre maintenu la possibilit\u00e9 de fonctionner en mode parano\u00efaque en v\u00e9rifiant \u00e0 chaque utilisation les liens.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Par d\u00e9faut, \u00e0 chaque chargement d&rsquo;un objet pour traitement ou pour son affichage, chaque liens sont lus et v\u00e9rifi\u00e9s, puis relus et rev\u00e9rifi\u00e9s. Parce que cette v\u00e9rification implique des\u00c2\u00a0algorithmes cryptographiques de prise d&#8217;empreinte et des algorithmes cryptographiques asym\u00e9trique (\u00e0 cl\u00e9s priv\u00e9es), le traitement cumul\u00e9 de chaque v\u00e9rifications devient vite une quantit\u00e9 non n\u00e9gligeable. Bref, le &hellip; <a href=\"http:\/\/blog.nebule.org\/?p=1838\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">M\u00e9morisation de liens et acc\u00e9l\u00e9ration des traitements<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[58,3,4,7,20,39],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/1838"}],"collection":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1838"}],"version-history":[{"count":1,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/1838\/revisions"}],"predecessor-version":[{"id":2156,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/1838\/revisions\/2156"}],"wp:attachment":[{"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1838"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}