Newsgroup: it.comp.sicurezza.crittografia
Titolo: Re: funzione rand

 S.O. e all'HW della macchina.
Direi che è impossibile!
Quello che stiamo dicendo sembra aver poco a che fare con it.comp.lang.c,
per cui vorrei consigliare di spostarci su it.comp.sicurezza.crittografia.
Cristiano

 per cui vorrei consigliare di spostarci su it.comp.sicurezza.crittografia.
Direi che la generazione di numeri casuali o pseudo tali interessa
anche lang.c
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 anche lang.c
Sì, ma leggendo i post di 3 o 4 anni fa, direi che qui stiamo più
tranquilli. :-)
C:\>ristiano

 migliore di quello sotto Linux, tanto per fare il modesto. :-)
La domanda sorge spontanea, che mi puoi fornire i sorgenti?
In attesa di accumulare le conoscenze necessarie per scriverne uno io, mi
piacerebbe dargli un'occhiata :p
Grazie
        Manuel


Certo! :-) Pensavo di pubblicarlo nel mio sito, ma poi avrei dovuto perdere
un sacco di tempo in dimostrazioni matematiche e altre pippe teoriche... Per
ora non se ne parla.
Ti posso anticipare che è un generatore di bit casuali per winzozz basato
sullo schema M-M a 1024 bit, AMLS-unbiased, con hash aperto, retro-azionato
a velocità costante, auto-collassante (decimato), con recupero d'entropia
(tanto per fare un po' di scena :-) ).
Cristiano

 C:\>ristiano
Hei non copiarmi...
C:\>iao Angelo

 la compatibilta' della passwd con Lan Manager.
Sì, sì, chiamalo "brute force un po' piu' raffinato"... 10 secondi per
craccare un sistema crittografico... Dimmi tu se non è una porcata! :-)
Con un giga e mezzo di roba pre-calcolata un sistema serio nemmeno ci si
lava i piedi! :-)
Cristiano

 lava i piedi! :-)
In un giga e mezzo di dizionario ci puoi memorizzare gli hash di tutto
il  vocabolario  della lingua  italiana  e di  un  paio  di altri:  se
l'utente  ha usato  come chiave  una  delle parole  contenute in  quei
vocabolari, il tempo massimo  per violare la  chiave e' pari  al tempo
massimo  necessario  per   leggere  il  dizionario,  indipendentemente
dall'algoritmo usato per creare gli hash (fosse anche Rijdael) :-).
E la  gente tende ad usare  come chiavi cose che  riesce a ricordarsi,
ovvero quelle  che quasi sicuramente finiscono in  un dizionario usato
da un sistema di crack delle passwd.
C:\>iao Angelo

 da un sistema di crack delle passwd.
Purtroppo questa è una tendenza che posso ultra-confermare, ma, come dicevo,
il sistema serio fa in modo che questo non rappresenti un problema proprio
banalissimo, mentre un sistema crittografico giocattolo (EFS) ha bisogno di
password avanzate (!?) da 7 o 14 caratteri per poter essere craccato in ben
10 secondi! :-)
Cristiano

 Di Linux ne so poco (quasi niente) per cui mi fido ciecamente. :-)
Mi intrometto in questa interessantissima discussione solo per una piccola 
e puntualizzazione.
Per fare in modo che lilo non faccia partire in modalità amministratore il 
sistema, se non quando è strettamente ncecessario, si può aggiungere una 
password che sarà richiesta solo nel caso si passi dei parametri al boot 
loader.
Ovviamente la sicurezza, senza file system crittografati, viene meno con 
qualsiasi sistema operativo nel momento in cui si ha l'accesso fisico al 
computer. 
Bye, Giubbe

 fisico al computer.
D'accordo, ma come dicevo, secondo me non ha molto senso dare un concetto
assoluto di sicurezza, trovo che sia più sensato riferirla all'uso a cui è
destinato il sistema da mettere in sicurezza.
Cristiano

 il coraggio. :-)
"One Time Password" c'e' gia'...
C:\>iao Angelo

 loader.
Si puo' anche evitare che si possa accedere senza dare una passwd, ma la
cosa si aggira comunque con un banale floppy o con un live cd.
C:\>iao Angelo

 cosa si aggira comunque con un banale floppy o con un live cd.
Mai detto il contrario. Anche se, volendo, puoi togliere dalla sequenza
di boot i dipositivi diversi dall'hardisk principale e poi proteggere il
setup del bios con una password.
Ovvio che non sei sicuro ugualmente. Se hai l'accesso fisico alla macchina
non si può parlare di sicurezza, non per nulla esistno i file system
crittografati.
Bye

 possibilita', non e' una debolezza del sistema.
Non so se l'attacco di cui parliamo sia veramente un brute force (leggendo
il documento non sembra tale), ma tu hai perfettamente ragione, ho usato
"brute force" con troppa leggerezza; al posto di "cracca il sistema
crittografico" avrei dovuto dire "trova la password", che poi è quello che
avevi scritto tu. :-)
Quello che volevo mettere in evidenza è il tempo necessario irrisorio per
trovare la password; in un sistema serio un brute force dovrebbe richiedere
decine di anni, non decine di secondi!
E` per questo che mi sento di definire l'EFS come un'ennesima porcata (a
prescindere dal tipo di attacco applicabile).
Cristiano

 (leggendo il documento non sembra tale), [...]
Rileggendo "Oech03.pdf", è evidente che non si tratta di un brute force
perché ha successo "solo" nel 99,9% dei casi (mentre un brute force ha
sempre successo, proprio perché esaustivo).
Già nella prefazione si legge che è un vero e proprio craccaggio che
utilizza la crittanalisi con 1,4 GB di dati pre-calcolati.
Cristiano

 altre parole, se scrivo rand(), Linux cosa fa? [...]
A completamento, aggiungo che da una discussione su sci.math è venuto fuori
che gcc (largamente usato sotto Linux), se non diversamente specificato
dall'utente, utilizza questo generatore:
http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=A096553
che è un LCG di massimo periodo (pari a 2^31).
Cristiano

 che č un LCG di massimo periodo (pari a 2^31).
Estratto da 
http://ftp.gnu.org/gnu/glibc/glibc-2.3.3.tar.gz
<CODE>
/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.
   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */
#include <stdlib.h>
#undef	rand
/* Return a random integer between 0 and RAND_MAX.  */
int
rand ()
{
  return (int) __random ();
}
</CODE>
__random() e' una funzione del kernel.
rand_r(), random() e random_r() utilizzano algoritmi, ma (a quanto pare)
rand() si appoggia direttamente sul kernel.
