{"id":12841,"date":"2017-12-06T15:46:50","date_gmt":"2017-12-06T14:46:50","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12841"},"modified":"2017-12-06T15:46:50","modified_gmt":"2017-12-06T14:46:50","slug":"crittografia-concetti-di-base-per-ogni-uso","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/crittografia-concetti-di-base-per-ogni-uso\/","title":{"rendered":"Crittografia: concetti di base per ogni uso"},"content":{"rendered":"<p>Per crittografia si intende l&#8217;insieme delle tecniche finalizzate a codificare in maniera indecifrabile messaggi con la possibilit\u00e0 di riportarli &#8220;in chiaro&#8221;. Esiste da millenni ed \u00e8 sempre stata utilizzata\u00a0per lo pi\u00f9 da militari, spie e diplomatici. Negli ultimi decenni, \u00e8 entrata nelle nostre vite proteggendo connessioni Internet in https, home banking, e-commerce, app mobile e altro ancora.<\/p>\n<p>Incontriamo e incontreremo spesso nei nostri articoli la crittografia pertanto vogliamo esporne in questo post alcuni concetti fondamentali di utilit\u00e0 generale ed infine proporre un piccolo esperimento da riga di comando.<\/p>\n<p>La <strong>crittografia<\/strong> pu\u00f2 essere per lo pi\u00f9 di due tipi:<\/p>\n<ul>\n<li><strong>simmetrica<\/strong>, dove con una stessa password si pu\u00f2 cifrare e decifrare un messaggio. Il suo utilizzo \u00e8 molto pratico in locale ma si scontra con grandi difficolt\u00e0 nell&#8217;utilizzo in remoto:\u00a0quando si deve inviare un messaggio cifrato attraverso la rete \u00e8 piuttosto complesso condividere in maniera sicura la password che metterebbe il destinatario in condizione di leggerne il contenuto;<\/li>\n<li><strong>asimmetrica<\/strong> o a chiave pubblica, si basa sull&#8217;uso di due chiavi: una pubblica per cifrare ed una privata per decifrare. Chi invia il messaggio cifra i dati con la chiave pubblica del destinatario il quale li potr\u00e0 decifrare con quella privata. Su questo tipo di crittografia si basano certificati digitali e protocolli di rete &#8220;sicurizzati&#8221;.<\/li>\n<\/ul>\n<p>In base al tipo di crittografia che si vuole utilizzare si potr\u00e0 scegliere l&#8217;<strong>algoritmo<\/strong> che si preferisce specificando nella maggior parte dei casi il numero di bit che comporranno la chiave di cifratura. Nel caso di crittografia simmetrica, uno degli algoritmi pi\u00f9 utilizzati attualmente \u00e8 <strong>AES<\/strong>, possibilmente fissando la chiave ad una lunghezza di 256 bit.<\/p>\n<p>Possiamo sperimentare un p\u00f2 di crittografia utilizzando vari software. Qui prenderemo in considerazione <a href=\"https:\/\/www.openssl.org\/\" target=\"_blank\" rel=\"noopener\">openssl<\/a><strong>,<\/strong> solitamente disponibile nelle installazioni Linux.<\/p>\n<p>Scriviamo un file di testo in cui mettiamo alcune frasi di esempio. Il nostro conterr\u00e0:<\/p>\n<pre class=\"lang:sh decode:true\">Frasi di esempio.\r\nQuesto testo sar\u00e0 cifrato<\/pre>\n<p>Decidiamo di nominarlo<em> in.txt<\/em>, il seguente comando ne produrr\u00e0 una versione cifrata:<\/p>\n<pre class=\"lang:sh decode:true\">&gt; openssl enc -aes-256-cbc -salt -in in.txt -out in.txt.enc<\/pre>\n<p>La password per la cifratura simmetrica sar\u00e0 scelta al momento: openssl ci chieder\u00e0 di fornirla e di confermarla.\u00a0Vedremo cos\u00ec apparire nella cartella di lavoro il file <em>in.txt.enc<\/em> il cui contenuto non sar\u00e0 pi\u00f9 leggibile.<\/p>\n<p>E&#8217; stato utilizzato <strong>AES con chiave a 256 bit con CBC<\/strong> (modalit\u00e0 per cui si evita che blocchi uguali in chiaro vengano cifrati alla stessa maniera). L&#8217;opzione -salt \u00a0richiede che venga applicato il meccanismo del <strong>Salt<\/strong> che impone di aggiungere dei caratteri casuali alla password prima della cifratura al fine di rendere pi\u00f9 difficile attacchi alla sicurezza del testo cifrato. Per decifrare il contenuto del file <em>in.txt.enc<\/em>, potremo utilizzare la seguente invocazione di openssl:<\/p>\n<pre class=\"lang:sh decode:true\">&gt; openssl enc -aes-256-cbc -salt -d -in in.txt.enc<\/pre>\n<p>Ci verr\u00e0 chiesta la password che abbiamo usato per la cifratura e vedremo in output il contenuto iniziale del file. Notare che il comando utilizzato \u00e8 sempre enc ma \u00e8 l&#8217;opzione -d che ordina di riportare in chiaro il messaggio.<\/p>\n<p>La crittografia \u00e8 una tematica vastissima e spesso complessa, una scienza al confine tra informatica e matematica, ma conoscerne le basi \u00e8 molto utile sia per utilizzarla come protezione di\u00a0dati sensibili utili al nostro lavoro sia per padroneggiare meglio argomenti come certificati digitali, https e sistemi di protezione vari.<\/p>\n<p>Alla prossima!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Per crittografia si intende l&#8217;insieme delle tecniche finalizzate a codificare in maniera indecifrabile messaggi con la possibilit\u00e0&#8230;<\/p>\n","protected":false},"author":561,"featured_media":13344,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[1889,1890,1886,1888,1887,1663],"class_list":["post-12841","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-pratici","tag-aes","tag-certificati-digitali","tag-crittografia","tag-crittografia-asimmetrica","tag-crittografia-simmetrica","tag-openssl"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=12841"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12841\/revisions"}],"predecessor-version":[{"id":13345,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12841\/revisions\/13345"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/13344"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}