Newsgroup: it.comp.sicurezza.crittografia
Titolo: Mi é venuta un idea...

Ciao a tutti.
Vorrei sottoporre al vostro parere di crittografi un'idea che mi é 
appena venuta in mente. Si tratta di una specie di chiave hardware (non 
so se si tratti della definizione giusta, leggete avanti e ditemi).
Potrei scrivere un programma in grado di scrivere un file di grosse 
dimensioni (personalizzabile, ma parlo di parecchi MB, fino ad un max di 
700) contenente caratteri casuali (creati con una funzione random 
incorporata al linguaggio utilizzato, magari passando come semi casuali 
le coordinate dei movimenti del mouse) da scrivere su un supporto 
rimovibile. Questo file verrebbe utilizzato come chiave, in questo modo:
prendo uno ad uno i byte dei file da crittare, insieme ai corrispondenti 
  della chiave e li sommo così
DATA  1  2  3  4  5  ...
KEY   2  7  5  3  6  ...
ENC   3  9  8  7 11  ...
I valori verrebbero ovviamente trattati con uno Xor 256, in modo da non 
far oltrepassare il limite di 255.
Per assicurarsi che la copia sia quella corretta potrei utilizare una 
password da utilizzare in qualche modo durante il processo.
Quanto sarebbe sicuro un sistema del genere?
Vale la pena trasformare l'idea in qualcosa di concreto?
Ricky

 Vale la pena trasformare l'idea in qualcosa di concreto?
No, è un sistema poco pratico e nei fatti inutilizzabile tranne casi
MOLTO particolari.
("voci" dicono che era il sistema usato per la linea rossa USA-URSS,
però ogni volta che il "nastro" finiva una spia doveva farsi 20mila Km
per portarne uno nuovo...)
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGGE90ACgkQaJiCLMjyUvun7QCgzhFeDXVpqxQ5Ds9uKKBZ8eRL
7bkAoPvzzioGenfAZkCenGtMcXODWEs0
=vDWH
-----END PGP SIGNATURE-----

 
http://it.wikipedia.org/wiki/One_Time_Pad
Ho letto tutti gli argomenti collegati sul link che mi hai fornito.
In pratica avendo a disposizione più di un file crittato con lo stesso 
pezzo di chiave, è possibile attacarlo con facilità.
Questo non lo avevo considerato. In pratica, considerando un blocco di 
chiave di lunghezza N, posso considerare il testo come una serie di 
blocchi di cesare con i caratteri intervallati da altri  N-1 caratteri, 
tutti a loro volta facenti parte di un altro blocco di cesare.
Per decifrarlo basta applicare cesare ad ogni blocco finché non ottengo 
un file valido. Ho capito bene? Ma se é così, comunque ho da fare 
parecchi tentativi con cesare prima di ottenere una soluzione, o sbaglio?
Ricky

 parecchi tentativi con cesare prima di ottenere una soluzione, o sbaglio?
Il numero di tentativi non è un problema, quando esiste un algoritmo
certo per trovare una soluzione che abbia una complessità minore (e, in
questo caso, parecchio minore) del caso peggiore di provare tutte le
possibili chiavi.
Il punto essenziale è che l'OTP è perfetto finché è usato alla
perfezione, appena si esce anche di poco da questa situazione di
idealità le sua struttura si rompe in modo disastroso.
A quel punto la domanda non è più "cosa c'è di male ni questo metodo",
la domanda diventa: cosa c'è di male neglil altri?
Ovvero: perché "sbattersi tanto" quando queste cose c'è chi le ha già
pensate/testate/inventate ed esistono fior fior di algoritmi
crittografici abbastanza sicuri da non essere mai il punto debole della
famigerata catena?
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGGStEACgkQaJiCLMjyUvv1xgCaA/mCQHd0JQU1KkbJpbkuEEFU
DbYAoKeMwaP/irkLioRONfHDjX7XFjR+
=qsrd
-----END PGP SIGNATURE-----

 Questo lo so, ma é l'unico metodo che conosco...
Mi attacco a questo thread, perchè proprio stamattina pensavo a una cosa
simile: mi chiedevo se esistesse un programma, possibilmente gratis e
necessariamente con codice aperto, per la crittazione OTP.
In teoria il codice dovrebbe essere semplicissimo.
L'unico problema è la generazione casuale della chiave, ma mi sembra di aver
sentito parlare di generatori hardware che contengono elementi blandamente
radioattivi (tipo quelli usati nelle lancette degli orologi). Esistono? E'
facile trovarli in commercio? Costano cari? Eventualmente, è possibile
autocostruirli?
Ciao,
Gio

 autocostruirli?
La risposta principale è che a fini crittografici sono quasi inutili:
anche senza hardware dedicato un demone "raccogli entropia" ben fatto
può raccoglierne a sufficenza per la infrequente generazione di chiavi
"normali" (ed è così che BSD e Linux fanno per ottenere /dev/random).
Questi metodi "senza hardware dedicato", sono però piuttosto lenti e non
sarebbero applicabili per la chiave di un OTP.
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGGZDgACgkQaJiCLMjyUvuJ4wCfRKKLnkNGVevbobPzPJzMyxzJ
cbsAoLSaZU3dc/0r3U1v7kv9O8AqNWxf
=oozp
-----END PGP SIGNATURE-----

 famigerata catena?
Beh, nel mio caso la risposta é semplice: io programmo queste cose per 
divertirmi, quindi quello che per te significa 'sbattersi tanto' per me 
è un passatempo. Anche se so di non poter raggiungere il livello dei 
sistemi di oggi, cerco di fare comunque del mio meglio.
Ovviamente quando voglio cose serie non utilizzo sistemi fai-da-te.
Ricky

 interni di alcune CPU x86...
E quindi? Il ferramenta sotto  casa ce l'ha per dieci euri o devo ordinarlo su
un sito clandestino russo al costo di 10.000 dolla?


- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGHSSsACgkQaJiCLMjyUvtAqwCgpmoUHa6Uf93xuV8B+A/2kqhQ
2+oAn0QmS+hUx7STjlrQCOOargeRdiPo
=LVmF
-----END PGP SIGNATURE-----

 Ovviamente quando voglio cose serie non utilizzo sistemi fai-da-te.
Questa è sicuramente l'ottica corretta, volevo solo accertarmi che fosse
così, ma niq eusto caso non posso che farti i miei milgiori auguri =)
(anche io ho fatto un SACCO di cose "inutiil" e "già fatte" per
divertirmi e imparare, non credere ^_^""")
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGHRn4ACgkQaJiCLMjyUvv1YQCgzqxyj2bBmLh9YxkaM2Bhmgw8
I0YAoJmbMzuaxe0Dc1xwX47o+HJqYocv
=tb7/
-----END PGP SIGNATURE-----

 Non credo di esserne all'altezza.
Fondamentalmente l'idea è di trovare delle "fonti" di entropia già
accessibili al PC e poi "smanettare" un pochino su queste per cercare di
rendere il rumore "più bianco possibile".
(a prescindere dalla sua casualità un rumore può avere uno spettro di
frequenza assolutamente NON bianco ed è proprio così per la maggior
parte delle fonti di entropia che si trovano in un normale PC)
Su come "smanettarle" ci sono varie teoria... io francamente preferisco
l'uso di un CSPRNG "serio" (che ne so, "Fortuna" di Schneier/Fergusson)
e utilizzare queste fonti come "seed"... però questo sistema ha come
"requisito" che SHAd-256 e AES-256 non vengano "rotti" (però solo se le
fonti di entropia sono molto più lente dell'entropia estratta: se sono
veloci il sistema nno dipende più dalle proprietà delle primitive
crittografiche usate).
Altri approcci preferiscono che la generazioni di numeri casuali sia
TOTALMENTE indipendente dalla crittografia e ti consiglierà tecniche
completamente diverse.
Per come la vedo io un buon software che abbia bisogno di numeri casuali
deve COMUNQUE utilizzare al suo interno un CSPRNG (poi Fortuna è così
facile da implementare che sarebbe un peccato non farlo) e sfruttare
eventuali *vere* sorgenti di entropia per "dargliele in pasto".
Questo è un buon comportamento perché aiuta a "disaccoppiare" i dati
casuali in uscita dalla "non sicura" qualità delle sorgenti.
Comunque a questo riguardo si ptorebbero scrivere interi libri... ma se
proprio vuoi approfondire inizia a leggerti tutti i thread passati, che
già sono una buona quantità ;-)
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGHS6YACgkQaJiCLMjyUvtk0ACg2PYseTBLGmMbGF3JPQZ2QoHJ
absAoMxQlJEnTsxNI9KshULa7IbL/9Oh
=hn2E
-----END PGP SIGNATURE-----

 così, ma niq eusto caso non posso che farti i miei milgiori auguri =)
Grazie
Ricky

Lapo Luchini ha scritto:

Non appena avrò abbastanza tempo lo farò sicuramente, grazie
Ricky

 google "acceleratore crittografico".
Secondo te, posso essere sicuro di /dev/random o è meglio procurarsi uno di
questi acceleratori crittografici? Considera che lo scenario di utilizzo del
sistema OTP che sto studiando permette di preventivare un budget
sufficientemente alto (sì, anche l'omino con la ventiquattrore sigillata che
prende l'aereo).
Ciao,
Gio

 questi acceleratori crittografici?
Ah, di /dev/random puoi essere abbastanza sicuro (almeno in linux e
freebsd, dove oramai da tempo usa Yarrow, che è un ottimo CSPRNG), ma
anche lui è "molto lento", proprio come dicevo... più che sufficente per
generare delle chiavi RSA, per esempio, ma non per crittare in OTP un
file da 100Mb.
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGOOQMACgkQaJiCLMjyUvv4JACgsMMWdlJ/8rtcDQAT6uVn7eXk
wPsAoNYu20z15STTw/2Jc84JbVIgsLbu
=9VaO
-----END PGP SIGNATURE-----

scusa, ma se usi un rimovibile (un CD credo, viste le dimensioni), devi
quindi consegnarlo "a mano" al destinatario.
A questo punto tanto vale copiare i tuoi dati su tale cd e consegnarli a lui
in totale sicurezza!!
:D

 in totale sicurezza!!
E se prima della consegna va in mani sbagliate (furto, rapina,
smarrimento)?
-- 
Ciao, MasviL
PGP Key ID: 0x3AF7DD61
ICQ# 5364346

 smarrimento)?
Problema che neanche l'OTP risolve del tutto: è sì vero che puoi "prima
consegnare il verme" e poi consegnare i dati crittati solo a posteriori
della conferma di ricezione del verme, ma devi comunque fidarti
ciecamente del tuo "corriere" per sapere che ha consegnato il verme
senza farne una copia.
Oppure devi farlo sempre e solo di persona.
Comunque non stavamo arlando di usarlo per backup locali?
Per consegne "a terzi" direi che non è neanche da pensare qualcosa di
diverso dalla crittografia a doppia chiave, ora che l'hanno inventata...
nulla batte la comodità di dover verificare la chiave solo una tantum e
poter fare tutte le successive comunicazioni su un canale non sicuro...
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGcSaIACgkQaJiCLMjyUvvEmQCdEa3/TZUkP3z+jWoCvALd+STE
Bo8AoLNRSyWfZB1bSRq7XFFxcUGYUzs4
=d0i+
-----END PGP SIGNATURE-----

 poter fare tutte le successive comunicazioni su un canale non sicuro...
Volevi dire "canale sicuro" o sei stato un po' ironico-laconico? :-)


 Volevi dire "canale sicuro" o sei stato un po' ironico-laconico? :-)
No, volevo proprio dire "non sicuro", ma non intendevo il "canale
virtuale" creato tramite la crittogragfia a chiave pubblica, parlavo del
canale "fisico" sottostante, che per l'appunto può essere non sicuro,
perché alla sicurezza ci pensa lo "strato" superiore...
Lapo
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkHJ090ACgkQaJiCLMjyUvuSiwCgmh/RXwQwfe9kU6+5Oz7yd7Ap
xxIAni2rTJ+2RVhdK83mu6mu6K8do0KJ
=QkRK
-----END PGP SIGNATURE-----