{"id":1371,"date":"2014-01-10T00:44:15","date_gmt":"2014-01-09T22:44:15","guid":{"rendered":"http:\/\/blog.nebule.org\/?p=1371"},"modified":"2016-03-29T19:02:16","modified_gmt":"2016-03-29T17:02:16","slug":"openssl-et-la-cryptographie-suite","status":"publish","type":"post","link":"https:\/\/blog.nebule.org\/?p=1371","title":{"rendered":"OpenSSL et la cryptographie &#8211; suite"},"content":{"rendered":"<p style=\"text-align: justify;\">Voici la suite sur les probl\u00e8mes d&rsquo;impl\u00e9mentations de la cryptographie sym\u00e9trique tel que d\u00e9cris dans <a title=\"OpenSSL et la cryptographie\" href=\"http:\/\/blog.nebule.org\/?p=1331\">OpenSSL et la cryptographie<\/a> et <a title=\"Interop\u00e9rabilit\u00e9 du chiffrement\" href=\"http:\/\/blog.sylabe.org\/?p=304\" target=\"_blank\">Interop\u00e9rabilit\u00e9 du chiffrement<\/a>(blog sylabe).<br \/>\nApr\u00e8s quelques tests sur le chiffrement sym\u00e9trique avec la commande <em>openssl<\/em> et son \u00e9quivalent en <em>php<\/em>, j&rsquo;ai trouv\u00e9 les bonnes impl\u00e9mentations pour obtenir le m\u00eame chiffre \u00e0 partir des m\u00eames valeurs en entr\u00e9.<\/p>\n<p style=\"text-align: justify;\">Il y a \u00e0 la fois une erreur dans l&rsquo;impl\u00e9mentation de <em>openssl<\/em> dans <em>nebule<\/em> en <em>bash<\/em>, et une autre erreur d&rsquo;impl\u00e9mentation de <em>openssl<\/em> dans <em>sylabe<\/em> en <em>php<\/em>.<\/p>\n<h2 style=\"text-align: justify;\">BASH<\/h2>\n<p style=\"text-align: justify;\">En <em>bash<\/em>, la commande <code>openssl enc<\/code> \u00e9tait appel\u00e9e avec l&rsquo;option <code>-kfile<\/code> alors qu&rsquo;il faut utiliser l&rsquo;option <code>-K<\/code>.<br \/>\nIl faut en plus utiliser l&rsquo;option <code>-nosalt<\/code> pour ne pas ajouter de sel et donc notamment avoir un objet chiffr\u00e9 de taille strictement identique \u00e0 l&rsquo;objet en clair.<\/p>\n<p style=\"text-align: justify;\">Voici une courte impl\u00e9mentation qui marche, <span style=\"color: #ff0000;\">dans le cadre d&#8217;emploi de nebule <span style=\"text-decoration: underline;\">exclusivement<\/span><\/span> :<\/p>\n<pre style=\"text-align: justify;\">#!\/bin\/bash\nnebule_symalgo=\"aes-256-ctr\"\niv='00000000000000000000000000000000'\necho -n \"477fd3f3a32dc5de70cf13d1e46d8663f5f23873826572ea8359064b6d63c60c2d76f29a5e34fac2aebb157975517ef23110f4a5e415d9d0408f6fe7b9fe17bdd6bbb2df3fb819ecbd5216835ecccc559e7eb84e0517e92538d9a81fec333498a64b90df3429abe857ba1666fc93b24509e63d05fd619da9eef12c8d70dbacca\" &gt; \/tmp\/bdata\nkey='8fdf208b4a79cef62f4e610ef7d409c110cb5d20b0148b9770cad5130106b6a1'\nopenssl enc -e -$nebule_symalgo -in \"\/tmp\/bdata\" -out \"\/tmp\/bcode\" -K $key -iv $iv -nosalt -p\nsha256sum \/tmp\/bcode<\/pre>\n<h2 style=\"text-align: justify;\">PHP<\/h2>\n<p style=\"text-align: justify;\">En <em>php<\/em>, la commande <code>openssl_encrypt<\/code> recevait la cl\u00e9 de chiffrement hexad\u00e9cimale alors qu&rsquo;il faut la transmettre sous forme binaire.<br \/>\nPar d\u00e9faut, aucun sel n&rsquo;est utilis\u00e9.<br \/>\nEnfin, l&rsquo;<em>IV<\/em> peut avoir une valeur nulle contrairement \u00e0 ce qu&rsquo;affirme la documentation. Ce doit \u00eatre une erreur de traduction. La valeur de doit pas avoir une taille nulle.<\/p>\n<p style=\"text-align: justify;\">Voici une courte impl\u00e9mentation qui marche, <span style=\"color: #ff0000;\">dans le cadre d&#8217;emploi de nebule <span style=\"text-decoration: underline;\">exclusivement<\/span><\/span> :<\/p>\n<pre>&lt;?php\n$nebule_symalgo = 'aes-256-ctr';\n$data=\"477fd3f3a32dc5de70cf13d1e46d8663f5f23873826572ea8359064b6d63c60c2d76f29a5e34fac2aebb157975517ef23110f4a5e415d9d0408f6fe7b9fe17bdd6bbb2df3fb819ecbd5216835ecccc559e7eb84e0517e92538d9a81fec333498a64b90df3429abe857ba1666fc93b24509e63d05fd619da9eef12c8d70dbacca\";\n$hiv='00000000000000000000000000000000';\n$iv=pack(\"H*\", $hiv);\n$hkey=\"8fdf208b4a79cef62f4e610ef7d409c110cb5d20b0148b9770cad5130106b6a1\";\n$key=pack(\"H*\", $hkey);\n$cryptobj=openssl_encrypt($data, $nebule_symalgo, $key, OPENSSL_RAW_DATA, $iv);\n$hashcryptobj=hash('sha256', $cryptobj);\necho \"E=$hashcryptobjn\";\n?&gt;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Voici la suite sur les probl\u00e8mes d&rsquo;impl\u00e9mentations de la cryptographie sym\u00e9trique tel que d\u00e9cris dans OpenSSL et la cryptographie et Interop\u00e9rabilit\u00e9 du chiffrement(blog sylabe). Apr\u00e8s quelques tests sur le chiffrement sym\u00e9trique avec la commande openssl et son \u00e9quivalent en php, j&rsquo;ai trouv\u00e9 les bonnes impl\u00e9mentations pour obtenir le m\u00eame chiffre \u00e0 partir des m\u00eames valeurs &hellip; <a href=\"https:\/\/blog.nebule.org\/?p=1371\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">OpenSSL et la cryptographie &#8211; suite<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[64,73,3,7,20,24,39,40],"tags":[204,212,249,294,295,299,338],"_links":{"self":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/1371"}],"collection":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1371"}],"version-history":[{"count":1,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/1371\/revisions"}],"predecessor-version":[{"id":2225,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=\/wp\/v2\/posts\/1371\/revisions\/2225"}],"wp:attachment":[{"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nebule.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}