Newsgroup: it.comp.sicurezza.crittografia
Titolo: [forse OT] watermarking / steganografia / ridondanza

Salve a tutti,
chiedo scusa in anticipo se la domanda che stò per porvi non riguarda 
propriamente questo Ng (e vi chiedo nel caso di indicarmi dove potrei porla 
per trovare qualche riscontro).
Questa sera chiacchierando con un amico su watermarking e steganografia  è 
venuto fuori questo spunto...
data una stringa di caratteri (diciamo 1000) è possibile marcarlo con un 
messaggio (ad esempio di 3 caratteri), che sarà poi possibile ricostruire 
prendendo solo un certo numero di lettere a caso della stringa?
faccio un esempio più pratico...
Ho un messaggio tipo "ABC"
genero una stringa casuale di 1000 caratteri che marco in modo ridondante 
con questo mio messaggio
quando pero devo tornare al messaggio iniziale non vorrei dover fornire 
l'intera stringa, ma vorrei poter fornire solo una serie di caratteri (non 
sequenziali) rispetto alla loro posizione nella stringa marcata...
A vostro avviso è possibile?
Giuseppe

 A vostro avviso è possibile?
Da quello che ho capito, basta che comprimi la stringa risultante. Ma non è 
da escludere che non abbia capito niente. :-)
Cristiano 

 Cristiano
E' molto più probabilme che io non mi sia spiegato in modo cristiano (e se 
continuo a scrivere dopo notti insonni non penso di riuscire a farlo :-P )
forse è meglio fare un esempio pratico...
Avendo :
Messaggio da codificare = "123"
Stringa di partenza = "abcdefghilmnopqrstuz"
Vorrei trovare un metodo per codificare (in modo ridondante?!?!) il mio 
messaggio all'interno della stringa di testo (la lunghezza di entrambi non 
mi interessa al momento) e di poterlo in un secondo momento decodificare 
accedendo solo ad un numero ristretto di caratteri a caso (ad esempio il : 
primo,quarto,settimo,decimo e dodicesimo)
Giuseppe
p.s. Il numero di caratteri presi a caso (rispetto alle posizioni) potrebbe 
essere variabile...

 forse č meglio fare un esempio pratico...
Ho letto l'esempio; purtroppo non so come aiutarti. Sembra una cosa da 
steganografi. :-)
Cristiano 

 primo,quarto,settimo,decimo e dodicesimo)
Se ho capito bene, vorresti combinare gli elementi del primo insieme
con gli elementi del secondo insieme, secondo una sequenza non
prevedibile.
Potresti, per esempio, usare una funzione crittografica come l'RC4 o
AES-CTR per generare una sequenza pseudorandom determinata da una
password, leggere il primo output "x1" della sequenza pseudorandom ed
andare a combinare in carattere 1 dell'input con il carattere x1 del
file "ospite" (la seconda stringa del tuo esempio), poi combinare il
2° carattere dell'input con il carattere x1+x2 dell'ospite e così
via.
In questo modo, nota la password, è possibile sia nascondere il file
che poi andarlo arecuperare.
Il problema è che così facendo ti servirebbe un ospite molto più
grande del file che vuoi steganografare, ad esempio se ti limiti ad
estrapolare un solo byte come output dalla funzione pseudorandom ti
servirebbe un file ospite grande fino a 256 volte tanto, anche
ammettendo di combinare un byte di input con un byte dell'ospite, cosa
sconsigliabile perchè produrrebbe modificazioni piuttosto evidenti,
sarebbe più consigliabile prendere un bit alla volta dall'input e
combinarlo con almeno un byte (8 bit) o meglio ancora strutture più
grandi (word da 16 bit, dword da 32 bit ecc) dell'ospite.
Di solito i software di steganografia basano il loro funzionamento
sulla struttura del file ospite, ad esempio se è una immagina RGB
bitmap o TIFF il programma steganografico salterà l'header del file e
poi comincerà, ad esempio, a sovrascrivere il bit meno significativo
di ciascun byte dei tre colori fondamentali, nascondendo 3 bit
dell'input in 1 pixel dell'ospite producendo variazioni che sono:
- difficilmente percepibili ad occhio;
- sovrapposte al bit che contiene la maggiore quantità di rumore
dell'immagine, quindi difficilmente analizzabile anche con supporti
informatici.
In effetti lo scopo della steganografia non è rendere il messaggio
illeggibile, ma solo di nascondere la *presenza* del messaggio, per cui
di solito si tende ad applicare una cifratura classica del messaggio
prima di steganografarlo; in questo modo nei bit meno significativi del
messaggio ospite si troverà un flusso pseudorandom (il messaggio
criptato) perfettamente in linea con quanto atteso analizzando ad
esempio i bit meno significativi di una foto, o di una registrazione
audio ecc... che per natura contengono parecchio rumore.

Ti ringrazio della risposta, avevo valutato anche io una serie di 
considerazioni simili.
Il mio scopo sarebbe in realtà di creare un sistema che dato un file di 
testo in cui è steganografata una password
mi dia la possibilà di riconoscere questa password prendendo solo un tot di 
caratteri a caso dal file.
(per farla breve in questo modo anche se la trasmissione viene sniffata e 
decriptata chi sniffà avrà solo una parte del file e non tutto)
Idee in merito ?!?!?
Giuseppe 

 decriptata chi sniffà avrà solo una parte del file e non tutto)
Non riesco a capire questa parte, comunemente si assume l'intruso
dovrebbe trovarsi nelle stesse condizioni del legittimo destinatario a
parte la mancanza di conoscenza della password, quindi in questo caso
se l'intruso intercetta la trasmissione solo la mancata conoscenza
della master password gli impedisce di recuperare tutto il contenuto
della trasmissione.