<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ECC on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/ecc/</link>
        <description>Recent content in ECC on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 08 Sep 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/ecc/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Crittografia asimmetrica: RSA ed ECC</title>
        <link>https://www.matteobianchi.eu/p/crittografia-asimmetrica/</link>
        <pubDate>Tue, 08 Sep 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/crittografia-asimmetrica/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/crittografia-asimmetrica/cover.png" alt="Featured image of post Crittografia asimmetrica: RSA ed ECC" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Tutta la serie finora ha usato &lt;strong&gt;chiavi condivise&lt;/strong&gt;: per cifrare, verificare o autenticare, le due
parti dovevano già possedere lo stesso segreto. Ma come fai a condividere quel segreto con un server
che non hai mai contattato, su una rete ostile, &lt;em&gt;prima&lt;/em&gt; di avere un canale sicuro? È il problema della
distribuzione delle chiavi, e per decenni non ha avuto soluzione pratica. La
&lt;strong&gt;crittografia asimmetrica&lt;/strong&gt; (a chiave pubblica) lo risolve con un&amp;rsquo;idea rivoluzionaria: due chiavi
diverse ma legate.&lt;/p&gt;
&lt;h2 id=&#34;due-chiavi-una-coppia&#34;&gt;Due chiavi, una coppia
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart LR
    GEN[Generazione] --&amp;gt; PUB[Chiave pubblica&amp;lt;br/&amp;gt;la distribuisci a tutti]
    GEN --&amp;gt; PRIV[Chiave privata&amp;lt;br/&amp;gt;la custodisci, segreta]
    PUB --&amp;gt;|cifra / verifica firma| OP[Operazioni]
    PRIV --&amp;gt;|decifra / firma| OP
    style PRIV fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;Le due chiavi sono matematicamente legate ma non si deducono l&amp;rsquo;una dall&amp;rsquo;altra in pratica. Due usi
speculari:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cifratura&lt;/strong&gt;: chiunque cifra con la tua chiave &lt;em&gt;pubblica&lt;/em&gt;; solo tu, con la &lt;em&gt;privata&lt;/em&gt;, decifri.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firma&lt;/strong&gt;: tu firmi con la &lt;em&gt;privata&lt;/em&gt;; chiunque verifica con la &lt;em&gt;pubblica&lt;/em&gt;. (Il capitolo sulle firme
lo approfondisce.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La chiave pubblica può stare su un cartellone: la sicurezza sta tutta nel tenere segreta la privata.&lt;/p&gt;
&lt;h2 id=&#34;la-funzione-trapdoor&#34;&gt;La funzione trapdoor
&lt;/h2&gt;&lt;p&gt;Il cuore matematico è una &lt;strong&gt;funzione trapdoor&lt;/strong&gt;: facile da calcolare in un verso, infattibile
all&amp;rsquo;inverso &lt;em&gt;a meno che&lt;/em&gt; tu non abbia un&amp;rsquo;informazione segreta (la chiave privata). RSA la costruisce
sulla fattorizzazione:&lt;/p&gt;
&lt;p&gt;$$ n = p \times q $$&lt;/p&gt;
&lt;p&gt;Moltiplicare due primi grandi $p$ e $q$ è banale; &lt;strong&gt;fattorizzare&lt;/strong&gt; $n$ per ritrovarli è infattibile se
$n$ è abbastanza grande. La chiave pubblica usa $n$; la privata sfrutta la conoscenza di $p$ e $q$. ECC
usa invece la difficoltà del &lt;em&gt;logaritmo discreto su curve ellittiche&lt;/em&gt; — problema diverso, stessa idea:
facile avanti, infattibile indietro.&lt;/p&gt;
&lt;h2 id=&#34;rsa-contro-ecc&#34;&gt;RSA contro ECC
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sicurezza equivalente a ~128 bit simmetrici:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  RSA  → chiave di ~3072 bit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ECC  → chiave di ~256 bit   (curva P-256, o Curve25519)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ ECC ottiene la stessa sicurezza con chiavi molto più piccole: meno banda, meno CPU.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;A parità di sicurezza, ECC usa chiavi &lt;em&gt;molto&lt;/em&gt; più corte: operazioni più veloci, meno dati da
trasmettere, ideale per mobile e per il traffico di rete. Per questo i sistemi moderni preferiscono le
curve ellittiche (Curve25519, P-256), riservando RSA ai contesti dove è già radicato. In entrambi i
casi: usa dimensioni adeguate (RSA ≥ 3072 bit, curve note e sicure) e librerie affermate.&lt;/p&gt;
&lt;h2 id=&#34;lasimmetrica-non-sostituisce-la-simmetrica&#34;&gt;L&amp;rsquo;asimmetrica NON sostituisce la simmetrica
&lt;/h2&gt;&lt;p&gt;Un equivoco diffuso. La crittografia asimmetrica è &lt;strong&gt;lenta&lt;/strong&gt; e adatta solo a piccoli dati, e nessuno
cifra un file o un flusso TLS con RSA. Nella pratica si usa un modello &lt;strong&gt;ibrido&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Modello ibrido (quello reale, es. TLS):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  1. asimmetrica → concorda/consegna una CHIAVE di sessione simmetrica (piccolo dato)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  2. simmetrica  → cifra tutti i dati veri con AES-GCM (veloce)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ l&amp;#39;asimmetrica risolve la distribuzione della chiave, la simmetrica fa il lavoro pesante.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;L&amp;rsquo;asimmetrica serve a stabilire il segreto condiviso; poi lavora la simmetrica. I due mondi sono
complementari, non in competizione — ed è esattamente così che funziona il
&lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/tls-deep-dive/&#34; &gt;TLS&lt;/a&gt;.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; se la chiave pubblica basta per cifrare, come fa chi la riceve a essere sicuro che sia davvero la mia e non quella di un impostore nel mezzo?&lt;/summary&gt;
&lt;p&gt;Hai messo il dito sul vero limite della crittografia a chiave pubblica: risolve brillantemente la
&lt;em&gt;distribuzione&lt;/em&gt; del segreto, ma da sola non risolve l&#39;&lt;em&gt;autenticità&lt;/em&gt; della chiave pubblica
stessa, e senza quella l&#39;intera costruzione è vulnerabile a un attacco man-in-the-middle. Lo scenario è
esattamente quello che descrivi: vuoi cifrare per me, ma su una rete ostile un attaccante intercetta la
comunicazione e ti consegna la &lt;em&gt;sua&lt;/em&gt; chiave pubblica spacciandola per la mia. Tu cifri felicemente
con quella, lui decifra con la propria privata, legge (o altera) il messaggio, lo ri-cifra con la mia
vera chiave pubblica e me lo inoltra: nessuno dei due si accorge di nulla. La matematica asimmetrica ha
funzionato perfettamente — ha solo protetto un dialogo con la persona sbagliata. Il problema, nota, non è
crittografico ma di &lt;em&gt;fiducia&lt;/em&gt;: come lego una chiave pubblica a un&#39;identità reale di cui mi fido?
Esistono due famiglie di risposte, ed entrambe sono argomenti di capitoli successivi di questa serie.
La prima è la &lt;strong&gt;PKI&lt;/strong&gt; (public key infrastructure): una terza parte fidata, la Certificate
Authority, firma un certificato che attesta &#34;questa chiave pubblica appartiene a questo dominio/identità&#34;;
tu ti fidi della chiave perché ti fidi della CA che l&#39;ha firmata, e la catena di fiducia risale fino a
radici che il tuo sistema conosce già. È il modello del web e del TLS. La seconda è la verifica
&lt;em&gt;fuori banda&lt;/em&gt; o su base di fiducia distribuita: confrontare manualmente l&#39;impronta (fingerprint)
della chiave attraverso un canale indipendente — come fai, anche senza saperlo, accettando la fingerprint
di un host SSH al primo accesso — oppure modelli a ragnatela di fiducia come quello storico di PGP. In
ogni caso il punto da portare a casa è che la crittografia asimmetrica sposta il problema dalla
&#34;condivisione di un segreto&#34; alla &#34;autenticazione di una chiave pubblica&#34;, che è un problema più
gestibile ma non banale, e va risolto esplicitamente con la PKI o con la verifica dell&#39;impronta. Una
chiave pubblica di cui non puoi verificare l&#39;origine non è ancora sicurezza: è sicurezza in attesa di
un&#39;identità fidata a cui agganciarsi.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;La crittografia asimmetrica usa due chiavi legate da una funzione trapdoor (RSA sulla fattorizzazione,
ECC sul logaritmo discreto): risolve la distribuzione del segreto, con ECC preferibile per le chiavi
più corte, e si usa in modello ibrido perché è lenta. Ma cifrare con la chiave pubblica non è il modo
migliore di concordare un segreto condiviso: esiste un meccanismo più elegante, che dà anche una
proprietà preziosa chiamata forward secrecy. È lo scambio di chiavi, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
