Focus in Quantum Communications

Un nuovo tipo di comunicazione è in arrivo: comunicheremo caricando i bit sui singoli fotoni.

Un nuovo tipo di comunicazione è in arrivo: comunicheremo caricando i bit sulle singole particelle

Questa primavera mi sono divertito a muovere i primi passi nella Comunicazione del prossimo futuro, le Quantum Communications (QC), e nell’informatica del prossimo futuro, la Quantum Information (QI).

E’ un argomento che avevo lasciato nel cassetto dopo aver letto all’inizio degli anni 2000 un articolo su una introduzione panoramica a questo nuovo paradigma, scritto nel 1997.

Le QI e QC basano la trasmissione delle informazioni e il loro trattamento su un nuovo tipo di approccio: l’interpretazione e la codifica / decodifica dei dati non è affidata a stream di fotoni come avviene da Marconi ad oggi, ma allo stato di un singolo sistema quantistico, che può essere un singolo fotone, un singolo elettrone o un singolo atomo, ad esempio.

L’informazione viene veicolata così dai bit quantici o qubit, nei quali la codifica binaria {0,1} non è presenza o assenza di un segnale, ma lo stato quantistico ad esempio di un fotone: polarizzato verticalmente o orizzontalmente, oppure con lo spin up o down di un elettrone.

Per cominciare ad approfondire l’argomento ho seguito il corso (e superato l’esame) di Elettronica Quantistica del prof. Paolo Villoresi presso il Dipartimento di Ingegneria dell’Informazione (che per ragioni storiche ha però come acronimo DEI) dell’Università di Padova.

È un esame che avevo già superato all’epoca dei miei studi ma che nel tempo si è arricchito di molti argomenti nuovi come la generazione di impulsi giganti tramite mode-locking o Q-switching, e, la parte che mi interessava di più, anche di Informazione e Comunicazione Quantistica.

Oltre alla botta di gioventù che si riceve quando si varca la soglia delle Università, ho avuto l’opportunità di entrare nei laboratori per poter anche effettuare degli esperimenti su argomenti inerenti il corso, come il riconoscimento e la classificazione delle sorgenti coerenti, la caratterizzazione di fasci gaussiani e la misura dell’efficienza di estrazione dei laser.

Il contatto con l’Università mi permette di cominciare a sfruttare nel mio ambito la tecnologia nascente dei generatori a singolo fotone, allo sfruttamento del fenomeno dell’entaglement, alla generazione di numeri casuali puri.

 

Stay tuned, stay foolish! 🙂

 

Panono, fotocamera “a 360 gradi”

 

Questa locuzione geometrica (“360 gradi”) è una delle espressioni più odiosamente abusate, sembra che molte persone non sappiano nemmeno cosa significhi (e, a volte, in modo veramente grottesco, sbagliano anche l’angolo, dividendolo per 4), ma questo oggettino proveniente dalla Germania fa proprio questo, anzi ad essere più precisi ancora riprende immagini a 4 pigreco steradianti, ovvero in tutta la sfera.

Curioso, simpatico, farà strada.

http://www.panono.com

 

TetraQUARK: una particella esotica con 4 quark.

TetraQuark: LHCb-Z4430 una particella con 4 quark
Quark: Il quadrato della distribuzione di massa per il mesone B 25.200 decade nella coppia ψ ‘π trovata da LHCb nel loro set di dati completo. I punti neri rappresentano i dati, la curva rossa il risultato della simulazione quando viene inclusa la presenza dello stato Z (4430). La curva marrone a tratti al di sotto mostra che la simulazione non riesce a riprodurre i dati se nessun contributo da Z (4430) è incluso, stabilendo la chiara presenza di questa particella con 13.9σ (cioè, il segnale è 13,9 volte più forte di tutti i possibili fluttuazioni statistiche combinate. Queste sono le barre di errore rappresentate dalla piccola linea verticale attaccata ad ogni punto).
[Fonte: Quantumdiaries.org]
I quark, le particelle elementari che sono forse le ultime costituenti della materia pesante si presentano normalmente i aggregati di tre (adroni), ma LHC non finisce di stupirci producendo particelle rarissime, i cosiddetti stati esotici, in cui questi mattoncini fondamentali della materia pesante sembrano aggragegarsi in modo non convenzionale. In questo articolo la fisica americana Pauline Gagnon ci racconta di cosa si tratta.

Una particella esotica con 4 quark.

Il progetto LHCb al CERN ha appena confermato l’osservazione non ambigua di uno stato molto esotico, qualcosa che sembra stranamente essere composto di quattro quark. Per quanto inconsueto possa apparire, questa particella TetraQuark è stata volgarmente chiamata Z(4430), che vuol dire che la sua massa a 4430 MeV, circa quattro volte più pesante  di un protone, e con una carica elettrica negativa. La lettera Z mostra che essa appartiene ad un strana serie di particelle che sono denominate come stati XYZ.

Quindi, che cos’hanno di strano questi stati? Il modello quark convenzionale afferma che ci sono sei differenti tipi di quark, ognuno di essi accompagnato dalla sua antiparticella. Tutte queste particelle formano stati legati combinando due o più di essi. I protoni e i neutroni per esempio sono costituiti di tre quark. Tutti gli stati costituiti di tre quark sono detti barioni, Altre particelle come i π e i k, che sono spesso osservate nei processi di decadimento di particelle più pesanti, sono composta da un quark ed un antiquark. Queste formano la categoria dei mesoni. Fino al 2003, le centinaia di particelle osservate erano classificate come mesoni oppure barioni.

E quindi ecco la grande sorpresa: nel 2003, l’esperimento BELLE trovò uno stato che assomigliava ad uno stato legato di quattro quark. Da allora sono stati osservati molti altri stati singolari. Essi spesso assomigliano a stati di tipo charmonium o bottomonium, che contengono un quark charm e un antiquark charm, un quark bottom ed un antiquark bottom. La scorsa primavera, il progetto BESIII di Pechino confermò l’osservazione dello stato Zc(3900)+ osservato anche da BELLE.

L’8 aprile l’esperimento LHCb ha dichiarato di aver trovato la Z(4430)  con 10 volte più eventi di quanto rilevato precedentemente da tutti gli altri gruppi. Il campione di dati è così grande che ha permesso a LHCb di misurare alcune sue proprietà in modo non ambiguo. Determinare i numeri quantici esatti di una particella è come ottenerne la sua impronta digitale: ciò consente ai fisici di stabilire esattamente di quale tipo di particella si tratta. Dunque lo stato  sembra essere costituito da un quark charm, da un anti-charm, da un down e da un anti-up. La loro misura esclude molte altre possibilità.

I teorici sono già al lavoro cercando di creare un modello che descriva questi nuovi stati. È un tetraquark assolutamente inedito, uno stato legato composto da 4 quark, o qualche strana combinazione di mesoni (mesoni che contengono almeno un quark charm)? La domanda è tuttora aperta.

Leggi l’articolo originale di Pauline Gagnon@Quantumdiaries.org

Link esterni

La collaborazione LHCb @ CERN

Pi day

Oggi è il 14 marzo. Ovvero il 14/3 o, per gli anglosassoni, il 3/14. Da qui al

Pi number

il passo è breve. Qualcuno ha istituito addirittura un Pi day in onore del numero dei numeri. Pensate che ne parla anche la Bibbia, nel Primo Libro dei Re: c’è un passo in cui si descrive Salomone che fa costruire la sua reggia e si dice che pigreco = 3:

Fece un bacino di metallo fuso di dieci cubiti da un orlo all’altro, rotondo; la sua altezza era di cinque cubiti e la sua circonferenza di trenta cubiti.

I Re, 7, 23

Quindi diametro 10 cubiti e circonferenza 30 cubiti, quindi pigreco = 3. Una approssimazione, certo, ma dal punto di vista pratico era sufficiente.

Leggo dal Corriere che la festa è nata a San Francisco, CA nel 1988.

Scopri molto altro su pi greco nel suo sito personale.

Paradossi 1 – il paradosso di Zenone

Achille e la tartaruga. Tempo fa ho scritto questo articoletto per levarmi un “prurito”, quello di andare a fondo di questo celebre paradosso.

Buona lettura.

Ancora pillole di crittografia

Antipodes -- EnglishIl funzionamento della crittografia classica su internet è questo:

  • il server genera un sua coppia di chiavi ASIMMETRICHE (RSA) certificate da una Authority;
  • quando il client contatta il server, come prima cosa il server gli manda la chiave pubblica. Essendo pubblica, per definizione è una chiave che può venire in possesso di chiunque, anche ad un man-in-the-middle;
  • appena il cIlent la riceve, genera una chiave SIMMETRICA (con algoritmi di tipo DES, TripleDES, Blowfish, …), la cifra con la chiave pubblica che ha ricevuto dal server e la spedisce al server;
  • un man-in-the-middle non può decifrare la chiave simmetrica in transito non avendo la chiave privata;
  • invece il server usando la sua chiave privata decifra il pacchetto ed estrae la chiave simmetrica e da quel momento entrambi gli endpoint cifrano e decifrano lo stream utilizzando la chiave simmetrica condivisa.

OpenSSL again

Come decifrare i messaggi di errore?

Ho questo messaggio che catturo con la funzione php openssl_error_string()

error:0906D06C:PEM routines:func(109):reason(108)

Uso la funzione da linea di comando openssl errstr citando il codice di errore (quello in grassetto):

$ openssl errstr 0906D06C
error:0906D06C:PEM routines:PEM_read_bio:no start line

 

 

Esempio di cifratura a chiave asimmetrica con PHP. Parte 2.

Lucchetto indiano con meccanismo segreto azionato da quattro chiaviVediamo un secondo semplice esempio di sequenza di operazioni per cifrare un messaggio e successivamente decifrarlo, con lo scopo di scrivere un messaggio segreto che il destinatario può attribuire inequivocabilmente ad un solo mittente (nel primo esempio ci assicuravamo che solo il destinatario potesse leggere il messaggio). Lo scenario è il classico Bob scrive ad Alice, L’attenzione, più che sul codice, è posta sulla corretta sequenza di operazioni e su quali sono i parametri giusti da utilizzare.

Come prima cosa Bob si procura una coppia di chiavi RSA

Bob genera le chiavi con openssl

Chiave privata

marcob@js:~$ openssl genrsa -des3 -out privatekey 1024 
Generating RSA private key, 1024 bit long modulus 
..........++++++ 
..............++++++ 
e is 65537 (0x10001) 
Enter pass phrase for privatekey: 
Verifying - Enter pass phrase for privatekey: 
marcob@js:~$ ll 
totale 132 
drwxrwxr-x 2 marcob marcob  4096 feb 10 09:37 ./ 
drwxrwxr-x 8 marcob marcob  4096 feb  7 15:56 ../ 
-rw-rw-r-- 1 marcob marcob   963 feb 10 09:38 privatekey

Certificato della chiave privata:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,4FA0F44C01DF5F3F

J6zb3OI9oCN/31VvhRRlzAxiv5AilIlFy0dTgmySi3G+ffYzalIm5lrgx7sSgOPa
TgR4djJUPHg24J4ZceicYN+J3rwQQR02okTBGdMwx9uN+dwtJI7eg7s6cYm5Ulu9
+hT72rvSejlQNh8qCb0+291USpWHYID6X6Hef5SH7GUTaJT76MGEOpzp3VU+0oB6
yTdJzA43qDsME4OwvenQyLbdKpM/iXGHn9h/OLaSuJIrLNUDOvP3mCqBBa7RvFIQ
FsDSF7L0zdozjpxM/Lr6oa3A7dLHyqWTuDKg+S3Z3ETdzlV34FvBSnjYtltE2OZB
WFpB7lip5wVPOxA4sUZ0RXlRaWytC5CROjhc5VnR3kd6XwMmdmbTKkdOYy00OUIq
bNfLYeVsOr4HyIVXxOYbMB41EoN4FzyXSosW9baXUxQ2L29lzJY1bIRmljIiF4Q7
Qk5/qLwU58y3EmtE0itMWlC3Iix0HY3UUZlxfc9JapsuT/6lVEzrFNIVaDYZilZb
KHQS39ZAWP2PI2LQuC5KGDme1rwDfLvKEYisZbLUTgIJIzfOf9ETpqtDR9Pot1uz
G9rMabMsA5BOzUyqXkd5I+ilZQD71BlruwBgQ7d1zwyi4mN4jwsRghuoEuTMwWZP
lasIJVy1LS6gE7zIGDiJItCan9Cm1DuZwlE6lXtlf1aahK4rUz3MvgRCV2cs2S8Z
mjzFg8JqHu5Q09U/J61i2xzWiyLsVCsSpoupDqoQtoluS6f9HUYfZZbpBJTKm0IY
Y6Aypggbxqq52L1XPpj+aF5H5uzBHQoDpXqmKNp3rV2T6AYMlzRVog==
-----END RSA PRIVATE KEY-----

Chiave pubblica

marcob@js:~$ openssl rsa -in privatekey -pubout -out publickey 
Enter pass phrase for privatekey: 
writing RSA key 
marcob@js:~$

Certificato della chiave pubblica =>

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCkg9z7E2Mh0nNDHy8/C3tRtqXQ
sePXpMg+FXxf5EHxzMPfX+AbL2e9v6gUX8BHekiKvWoopl5OtPb2nubHAW2lIDnB
Ku1DEWcVGAaIbG/aC6804I0oWEOHCN6Wp0Z/En9Fw5DiuRdfQULPvhjD4Oy5g0UQ
6GkjYCiv4GnJRbpENwIDAQAB
-----END PUBLIC KEY-----

Bob può inviare la sua chiave pubblica ad Alice, oppure può metterla nel suo sito, in modo che chiunque possa scaricarla.

Cifratura e decifratura di un messaggio

Ora Bob cifra un messaggio con la sua sua chiave privata; Alice lo potrà aprire solo utilizzando la chiave pubblica di Bob. In questo modo ho la certezza del mittente.

Cifratura (Bob)

  1. Dato in chiaro =>NEL MEZZO DEL CAMMIN DI NOSTRA VITA
  2. Estraggo la chiave privata dal certificato con la funzione openssl_pkey_get_private =>Resource id #4
  3. Cifro il dato (nota che alla funzione openssl_private_encrypt passo la RISORSA (Resource id #4) come chiave, NON il certificato):
  4. Dato in scuro =>
    Å/ŽðgwÆ{brذ-¼C3Ü„Éèbyðto¥ìKtY3ï	}Ù«ˆ`Î9‡"ØßDšão;4¾–Ô6œ›W¨>5
    ¿4ÉË2amà
    n•hLÅ5Öþ(nìz >Œ$U[:‘¥
    ¨¬,uð;‚4´99¬}hyJ„˜ájB
  5. Dato in scuro b64encoded =>
    DMUvgY4c8Gd3xntictiwLbxDM9yEyehiHHkS8HRvpexLdFkz7wl92X+riGDOOYci2N9EFprjbzs0vpbUNp
    ybF1eoPjUNvzTJyzIeFWFt4A1ulWhMxTXW/ihu7HogAT6MJFUbWzqRpQqoAqwsdQLwO4I0tDk5rH1oeQtK
    hJjhakI=

Invio il dato ad Alice

Decifratura (Alice)

  1. Alice estrae la chiave pubblica dal certificato con openssl_pkey_get_public: => Resource id #6
  2. Decifra il dato oscuro (nota che alla funzione openssl_public_decrypt passo la RISORSA (Resource id #6) ritornata dalla openssl_get_privatekey, NON il certificato):
  3. Finalmente, il testo nuovamente in chiaro =>
    NEL MEZZO DEL CAMMIN DI NOSTRA VITA

Riassunto.

  1. In trasmissione
  2. openssl_pkey_get_private
  3. openssl_private_encrypt
  4. In ricezione
  5. openssl_pkey_get_public
  6. openssl_public_decrypt

Con questa sequenza Alice è certa che solo Bob potrà essere colui che ha le inviato il messaggio. Ma essendo pubblica la chiave pubblica di Bob, Alice non potrà essere certa di essere l’unica che lo può leggere.

Fine.

Esempio di cifratura a chiave asimmetrica con PHP

Lucchetto indiano con segreto aperto con quattro chiavi

Oggi vediamo un semplice esempio di sequenza di operazioni per cifrare un messaggio e successivamente decifrarlo, con lo scopo di scrivere un messaggio segreto che solo il destinatario può decifrare. Lo scenario è il classico Alice scrive a Bob un messaggio che solo lui può leggere, utilizzando la crittografia asimmetrica ideata negli anni 70 da Rivest, Adleman e Shamir, nella quale si cifra un messaggio con una chiave (pubblica) e si decifra con una seconda chiave, accoppiata però alla prima (privata).

L’attenzione, più che sul codice, è posta sulla corretta sequenza di operazioni e su quali sono i parametri giusti da utilizzare.

Bob genera le chiavi con openssl

Come prima cosa Bob si procura una coppia di chiavi RSA

Chiave privata

marcob@js:~$ openssl genrsa -des3 -out privatekey 1024 
Generating RSA private key, 1024 bit long modulus 
..........++++++ 
..............++++++ 
e is 65537 (0x10001) 
Enter pass phrase for privatekey: 
Verifying - Enter pass phrase for privatekey: 
marcob@js:~$ ll 
totale 132 
drwxrwxr-x 2 marcob marcob  4096 feb 10 09:37 ./ 
drwxrwxr-x 8 marcob marcob  4096 feb  7 15:56 ../ 
-rw-rw-r-- 1 marcob marcob   963 feb 10 09:38 privatekey

Certificato della chiave privata:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,4FA0F44C01DF5F3F

J6zb3OI9oCN/31VvhRRlzAxiv5AilIlFy0dTgmySi3G+ffYzalIm5lrgx7sSgOPa
TgR4djJUPHg24J4ZceicYN+J3rwQQR02okTBGdMwx9uN+dwtJI7eg7s6cYm5Ulu9
+hT72rvSejlQNh8qCb0+291USpWHYID6X6Hef5SH7GUTaJT76MGEOpzp3VU+0oB6
yTdJzA43qDsME4OwvenQyLbdKpM/iXGHn9h/OLaSuJIrLNUDOvP3mCqBBa7RvFIQ
FsDSF7L0zdozjpxM/Lr6oa3A7dLHyqWTuDKg+S3Z3ETdzlV34FvBSnjYtltE2OZB
WFpB7lip5wVPOxA4sUZ0RXlRaWytC5CROjhc5VnR3kd6XwMmdmbTKkdOYy00OUIq
bNfLYeVsOr4HyIVXxOYbMB41EoN4FzyXSosW9baXUxQ2L29lzJY1bIRmljIiF4Q7
Qk5/qLwU58y3EmtE0itMWlC3Iix0HY3UUZlxfc9JapsuT/6lVEzrFNIVaDYZilZb
KHQS39ZAWP2PI2LQuC5KGDme1rwDfLvKEYisZbLUTgIJIzfOf9ETpqtDR9Pot1uz
G9rMabMsA5BOzUyqXkd5I+ilZQD71BlruwBgQ7d1zwyi4mN4jwsRghuoEuTMwWZP
lasIJVy1LS6gE7zIGDiJItCan9Cm1DuZwlE6lXtlf1aahK4rUz3MvgRCV2cs2S8Z
mjzFg8JqHu5Q09U/J61i2xzWiyLsVCsSpoupDqoQtoluS6f9HUYfZZbpBJTKm0IY
Y6Aypggbxqq52L1XPpj+aF5H5uzBHQoDpXqmKNp3rV2T6AYMlzRVog==
-----END RSA PRIVATE KEY-----

Chiave pubblica

marcob@js:~$ openssl rsa -in privatekey -pubout -out publickey 
Enter pass phrase for privatekey: 
writing RSA key 
marcob@js:~$

Certificato della chiave pubblica =>

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCkg9z7E2Mh0nNDHy8/C3tRtqXQ
sePXpMg+FXxf5EHxzMPfX+AbL2e9v6gUX8BHekiKvWoopl5OtPb2nubHAW2lIDnB
Ku1DEWcVGAaIbG/aC6804I0oWEOHCN6Wp0Z/En9Fw5DiuRdfQULPvhjD4Oy5g0UQ
6GkjYCiv4GnJRbpENwIDAQAB
-----END PUBLIC KEY-----

Bob può inviare la sua chiave pubblica ad Alice, oppure può metterla nel suo sito, in modo che chiunque possa scaricarla.

Cifratura e decifratura di un messaggio

Ora Alice cifra un messaggio con la chiave pubblica di Bob; lui (e solo lui) potrà leggere il messaggio utilizzando la sua chiave privata. In questo modo ho la certezza del destinatario.

Cifratura (Alice)

  1. Dato in chiaro =>NEL MEZZO DEL CAMMIN DI NOSTRA VITA
  2. Estraggo la chiave pubblica dal certificato con la funzione openssl_pkey_get_public =>Resource id #4
  3. Cifro il dato (nota che alla funzione openssl_public_encrypt passo la RISORSA (Resource id #4) come chiave, NON il certificato):
  4. Dato in scuro =>
    ™ÍB÷ œtΧÖà6õÖ]R¹â¸'à/KPqÙ°Æ…Òȁ·õ3^†3ëwV®úó±èn¾Z_•ìÒÌZùÑ‘PKæ]ÖUI‰
    ?ÆJ7OŠ}=È(ë·QZ«® ý¥£cF&š¹pkw{0fszµnÔ8‹SÊ\1€$>s
  5. Dato in scuro b64encoded =>
    mRfNQvcgnHTOp9bgNvXWXRdSueK4J+AvS1Bx2bDGhdLIgbf1jRozXoYz63dWrvqd87HoBm6+Wl+
    V7NLMAVr5E9GRUEvmXdYRVUmJCho/xko3T4oYfT3IKOu3UVqrrh0g/aWjY0YDJpq5cGt3ezBmc3
    q1bgTUOItTf8pcMYAkPnM=

Invio il dato a Bob

Decifratura (Bob)

  1. Estraggo la chiave privata dal certificato con openssl_pkey_get_private: => Resource id #6
  2. Decifro il dato oscuro (nota che alla funzione openssl_private_decrypt passo la RISORSA Resource id #6 ritornata dalla openssl_get_privatekey, NON il certificato):
  3. Finalmente, il testo nuovamente in chiaro =>
    NEL MEZZO DEL CAMMIN DI NOSTRA VITA

Riassunto.

  1. In trasmissione, Alice:
  2. openssl_pkey_get_public
  3. openssl_public_encrypt
  4. In ricezione, Bob:
  5. openssl_pkey_get_private
  6. openssl_private_decrypt

Con questa sequenza solo Alice è certa che solo il destinatario Bob potrà leggere il suo messaggio. Ma essendo pubblica la chiave pubblica di Bob, Bob non potrà essere certo di chi ne sia il mittente.

Fine.

Come testare se un intero è un numero primo

La Macchina Enigma

La Macchina Enigma – fu usata dai tedeschi per le comunicazioni cifrate. I codici da essa prodotti furono decifrati, assieme al funzionamento della macchina, da Alan Turing durante la II Guerra Monidiale, a Bletchley Park.

OpenSSL è un toolkit free software / open source per gestire la crittografia.

A tutt’oggi la crittografia commerciale si basa sul fatto che se è facile eseguire n * m = p, fattorizzare p in fattori primi invece è un problema difficile, incredibilmente difficile soprattutto quando n e m sono numeri primi “grandi”.

OpenSSL usa questa aritmetica per calcolare crittografie di dati e non c’è quindi da stupirsi se possiamo usarlo per stabilire se un certo numero intero è primo oppure no (nota che implicitamente OpenSSL converte il numero in esadecimale):

marcob@js:~$ openssl prime 119054759245460753
1A6F7AC39A53511 is not prime

Proviamo un po’ più avanti:

marcob@js:~$ openssl prime 119054759245460761
1A6F7AC39A53519 is prime