Fattorizzazione di numeri interi con Java RMI

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Fattorizzazione di numeri interi con Java RMI"

Transcript

1 Università degli Studi di Salerno Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di laurea Magistrale in Informatica Corso di SISTEMI OPERATIVI II Fattorizzazione di numeri interi con Java RMI Studenti: Valerio Cinque Francesco Testorio Domenico Viscito Docente: Prof. G. Cattaneo Anno Accademico 2010/2011

2 INDICE 1. INTRODUZIONE CRITTOGRAFIA RSA ALGORITMI DI FATTORIZZAZIONE IL CRIVELLO QUADRATICO JAVA RMI ARCHITETTURA DI RMI RMI: IL PROCESSO DI CREAZIONE IMPLEMENTARE UN COMPUTE SERVER IMPLEMENTAZIONE DEL CRIVELLO QUADRATICO IN JAVA RMI ESEMPIO DI ESECUZIONE DEL CRIVELLO QUADRATICO TEST FATTORIZZAZIONE CON IL CRIVELLO QUADRATICO IN JAVA RMI CONFIGURAZIONE AMBIENTE SCELTA DEGLI INTERI DA FATTORIZZARE GRANULARITÀ DIMENSIONE SIEVE SCALABILITÀ NUMERO DI BIT DEGLI INTERI DA FATTORIZZARE CONCLUSIONI...35

3 1. Introduzione Un numero primo è un intero, maggiore a uno, che è divisibile soltanto per uno e per se stesso, per esempio 2, 3, 5, 7, 11, 13,... sono numeri primi. Ogni intero positivo si può scomporre, in modo unico, a meno dell ordine dei fattori, nel prodotto di numeri primi. Per esempio: 30 = 2 * 3 * 5; 60 = 2 * 2 * 3 * 5; 6 = 3 * 2; 3300 = 2 2 * 3 1 *5 2 * 11 1 ; = 73 * 137. Nei giorni nostri, con l intensificarsi dei calcolatori elettronici e della loro potenza computazionale, si cercano metodi efficienti per trovare la scomposizione in fattori di un dato intero. Questo problema è d interesse sia pratico sia teorico. Questo problema si divide in due parti: Decidere se un dato numero è primo o no: problema dei test di primalità. Questo test è una procedura algoritmica che, dato un numero naturale n in input, restituisce PRIME se n è un numero primo, COMPOSITE se n è un numero composto. Determinare esplicitamente una scomposizione in fattori (non banali) di un numero composto: problema della fattorizzazione. In particolare, fattorizzare o "ridurre in fattori" un numero n, significa trovare un insieme di numeri {a 0, a 1, a 2,, a k } tali che il loro prodotto sia il numero originario (n = a 0 a 1 a 2 a k ). Questi due problemi, anche se chiaramente legati l uno all altro, sono di natura differente. Allo stato attuale, il problema del test di primalità è relativamente facile (algoritmo polinomiale nella dimensione dell input), mentre il secondo sembra essere piuttosto difficile. La difficoltà nel fattorizzare numeri molto grandi è alla base di alcuni sistemi crittografici moderni, per esempio RSA, che sono utilizzati per garantire la privacy nella trasmissione di documenti riservati, la segretezza delle (per esempio, PGP), la sicurezza nel commercio elettronico, ecc.

4 Trovare i fattori di un numero intero grande è un impresa assai ardua, e può essere impossibile date le risorse disponibili. Come detto, non si conoscono metodi polinomiali per la fattorizzazione, come invece accade per i test di primalità. 1.1 Crittografia RSA La crittografia si occupa delle "scritture nascoste", in altre parole dei metodi per rendere un messaggio "offuscato" in modo da non essere comprensibile a persone non autorizzate a leggerlo. La crittografia tratta della lettura di messaggi dati in forma cifrata, cosicché solo i destinatari siano in grado di decifrarli e di leggerli. Si tratta di una materia molto antica, che si sviluppa specialmente in tempo di guerra. In crittografia l'acronimo RSA indica un algoritmo di crittografia asimmetrica, utilizzabile per cifrare o firmare informazioni. Un sistema di crittografia asimmetrico si basa sull'esistenza di due chiavi distinte, che sono usate per cifrare e decifrare. Se una chiave è usata per la cifratura, l altra deve necessariamente essere utilizzata per la decifratura. La questione fondamentale è che, nonostante le due chiavi siano fra loro dipendenti, non sia possibile risalire dall'una all'altra, in modo che se anche si è a conoscenza di una delle due chiavi, non si possa risalire all'altra, garantendo in questo modo l'integrità della crittografia. Per realizzare con il cifrario asimmetrico un sistema crittografico pubblico, è importante che un utente si crei autonomamente entrambe le chiavi, denominate "diretta" e "inversa", e ne renda pubblica una soltanto. Così facendo si viene a creare una sorta di "elenco telefonico" a disposizione di tutti gli utenti, che raggruppa tutte le chiavi dirette, mentre quelle inverse saranno tenute segrete dagli utenti che le hanno create e da questi utilizzate solo quando ricevono un messaggio cifrato con la rispettiva chiave pubblica dell "elenco" da parte di un certo mittente, ottenendo in questo modo i presupposti necessari alla sicurezza del sistema. I ricercatori del MIT, Ronald Rivest, Adi Shamir e Leonard Adleman, nel 1978 hanno saputo implementare tale logica utilizzando particolari proprietà formali dei numeri primi con alcune centinaia di cifre. L'algoritmo da loro inventato, denominato RSA, acronimo indicante le iniziali dei loro cognomi, non è sicuro da un punto di vista matematico teorico, perché esiste la possibilità che tramite la conoscenza della chiave pubblica si possa decifrare un messaggio. L enorme dispendio in termini di tempo necessario per risolvere dei calcoli, fa di quest algoritmo un sistema abbastanza affidabile, perché c è bisogno di eseguire una fattorizzazione di un numero intero molto grande al fine di decifrare il messaggio.

5 Come detto, RSA è basato sull'elevata complessità computazionale della fattorizzazione in numeri primi. Il suo funzionamento base è il seguente: Si scelgono a caso due numeri primi, p e q, l'uno indipendentemente dall'altro, abbastanza grandi da garantire la sicurezza dell'algoritmo. Si calcola il loro prodotto n = p q, chiamato modulo, perché tutta l'aritmetica seguente è modulo n. Si sceglie poi un numero e chiamato esponente pubblico, coprimo e più piccolo di (p 1) (q 1). In matematica, gli interi a e b si dicono coprimi o primi tra loro se e solo se essi non hanno nessun divisore comune eccetto 1 e 1, o, equivalentemente, se il loro massimo comun divisore è 1. Per esempio, 6 e 35 sono coprimi, ma 6 e 27 non lo sono perché entrambi sono divisibili per 3; 1 è coprimo con ogni numero intero; 0 è coprimo solo ad 1 e 1. Infine, si calcola il numero d, chiamato esponente privato: e d 1 (mod((p 1) (q 1))) La chiave pubblica è la coppia (n, e), mentre la chiave privata è (n, d). I fattori p e q possono essere distrutti, anche se spesso sono memorizzati all interno della chiave privata. La forza dell algoritmo sta nel fatto che per calcolare d da e o viceversa, non basta la conoscenza di n, ma serve il valore (p 1) (q 1), infatti fattorizzare, cioè scomporre l intero nei suoi divisori, è un operazione molto lenta, ma soprattutto l operazione di modulo non è invertibile, dunque anche conoscendo n non si può risalire al prodotto modulo n di p e q. Un messaggio originario m è cifrato attraverso l operazione m e (mod n), la quale restituisce il messaggio cifrato c. Quest ultimo è decifrato con l operazione c d = m e d = m 1 (mod n). Il procedimento funziona solo se la chiave e utilizzata per cifrare e la chiave d utilizzata per decifrare sono legate tra loro dalla relazione in precedenza indicata, cioè e d 1 (mod((p 1) (q 1))), e quindi quando un messaggio viene cifrato con una delle due chiavi può essere decifrato solo utilizzando l'altra.

6 Tuttavia proprio qui si vede la debolezza dell'algoritmo: si basa sull'assunzione mai dimostrata e (RSA assumption) che il problema di calcolare c mod n con n numero composto di cui non si conoscono i fattori, sia non trattabile da punto di vista computazionale. Invece, per quanto riguarda la firma digitale, il messaggio è crittografato con la chiave privata, in modo che chiunque possa, utilizzando la chiave pubblica (conosciuta da tutti), decifrarlo e, oltre a poterlo leggere in chiaro, essere certo che il messaggio è stato inviato dal possessore della chiave privata corrispondente a quella pubblica utilizzata per leggerlo. Per motivi di efficienza e comodità, il messaggio normalmente è inviato in chiaro con allegata la firma digitale di un hash del messaggio stesso. In questo modo il ricevente può direttamente leggere il messaggio (che è in chiaro) e può comunque utilizzare la chiave pubblica per verificare che l'hash ricevuto sia uguale a quello calcolato localmente sul messaggio ricevuto. Se i due hash coincidono, allora anche il messaggio completo corrisponde, questo è vero solo se l'hash utilizzato è sicuro dal punto di vista della crittografia. La seguente tabella mostra alcuni esempi di RSA Factoring Challenge, ossia le sfide volte a fattorizzare dei numeri RSA.

7 Numero Cifre Cifre Premio Data Fattorizzato da RSA decimali binarie offerto fattorizzazione RSA Aprile 1991 Arjen K. Lenstra RSA Aprile 1992 Arjen K. Lenstra e M.S. Manasse RSA Giugno 1993 T. Denny et al. RSA $100 USD Aprile 1994 Arjen K. Lenstra et al. RSA aprile 1996 Arjen K. Lenstra et al. RSA febbraio 1999 Herman J. J. te Riele et al. RSA aprile 2004 Kazumaro Aoki et al. RSA agosto 1999 Herman J. J. te Riele et al. RSA º aprile 2003 RSA dicembre 2009 RSA $10,000 USD 3 dicembre 2003 RSA maggio 2010 Jens Franke et al., Università di Bonn D. Bonenberger and M. Krone Jens Franke et al., Università di Bonn S. A. Danilov and I. A. Popovyan, Università statale di Mosca RSA non ancora fattorizzato RSA $20,000 USD Novembre 2005 Jens Franke et al., Università di Bonn RSA maggio 2005 Jens Franke et al., Università di Bonn RSA non ancora fattorizzato RSA $30,000 USD non ancora fattorizzato, premio ritirato RSA non ancora fattorizzato RSA non ancora fattorizzato RSA non ancora fattorizzato RSA $50,000 USD 12 dicembre 2009 Thorsten Kleinjung et al. Nella tabella RSA Factoring Challenge (http://it.wikipedia.org/wiki/rsa_factoring_challenge).

8 2. Algoritmi di fattorizzazione Nel corso della storia sono stati ideati molti algoritmi per rendere la fattorizzazione un problema risolvibile sempre più veloce dal punto di vista computazionale, però, tuttora rimane un problema complesso. Tra i metodi più popolari ricordiamo: Metodo forza bruta: si divide l intero da fattorizzare n per tutti i numeri che gli sono minori. Il costo operativo nel caso peggiore è O(n). Metodo forza bruta migliorato: si considerano solo i numeri primi minori o uguali alla radice quadrata del numero n. Si prova a dividere il numero n per il minore di questi, se non risulta divisibile si procede con il successivo e così via. Si procede allo stesso modo con il risultato ottenuto e si ripetono le stesse operazioni fino a quando si ottiene quoziente 1. Se tutti i numeri primi minori della radice quadrata di n sono stati provati e nessuno di loro è un divisore, n stesso è un numero primo. Il costo operativo nel caso peggiore è O( n). Metodo delle curve ellittiche (ECM): uno dei più noti è quello di Lenstra, che si basa su idee già contenute nel "(p-1)-method" di Pollard. Insieme all'algoritmo di Pollard-Strassen e al Crivello dei campi di numeri generale è a tutt'oggi uno dei più veloci metodi totalmente deterministici. Metodi probabilistici: tra di essi ci sono gli algoritmi di Schnorr-Lenstra e di Lenstra- Pomerance. Crivello Quadratico: é un moderno algoritmo di fattorizzazione d interi ed è il secondo metodo più veloce conosciuto, dopo il General Number Field Sieve. E il più veloce per interi sotto le 100 cifre decimali circa, ed è più semplice del number field sieve. Dato un intero n da fattorizzare, l algoritmo restituisce due fattori, non necessariamente primi. Questo metodo si adatta molto bene alla fattorizzazione degli interi di RSA, poiché questi numeri sono il prodotto di due primi. Infatti, molte RSA Factoring Challenge hanno adoperato proprio questo metodo ottenendo buoni risultati.

9 2.1 Il Crivello Quadratico Il Crivello Quadratico (CQ) è un algoritmo di fattorizzazione creato da Carl Pomerance, un matematico statunitense, studioso di teoria dei numeri. Quest algoritmo è particolarmente famoso perché nel 1994 ha fattorizzato il numero RSA-129, composto da 129 cifre in base dieci. RSA-129 = RSA-129 = La sfida per la fattorizzazione includeva un messaggio da decifrare con RSA-129. Una volta decriptato, usando il crivello quadrico, il messaggio recuperato fu: "The Magic Words are Squeamish Ossifrage" (Le parole magiche sono un avvoltoio schizzinoso). L'algoritmo tradizionale consta principalmente di otto passi: 1) Viene dato in input il numero naturale intero dispari n > 1. Se l intero è pari, allora uno dei fattori è sempre 2. 2) Si sceglie un naturale k > 0. 3) Si esaminano tutti i numeri primi p k utilizzando il criterio di Eulero ( n ) e sfruttando il p simbolo di Legendre si eliminano i primi dispari tali che ( n ) 1. Da questo procedimento p si ottiene così la base di fattori B = p 1, p 2,, p t con p i numero primo. 4) Facendo assumere a r valori interi successivi a n, si trovano almeno t + 1 valori y = r 2 n che abbiano tutti i loro fattori primi in B. Ogni valore y è detto sieve.

10 5) Per ognuno dei valori y 1, y 2,, y t+1 si calcola il vettore z 2 t v 2 (y i ) = (e 1, e 2,, e t ) dove e i è la riduzione modulo 2 dell esponente di p i nella fattorizzazione di y i. 6) Con il metodo di eliminazione di Gauss si determinano alcuni dei vettori v 2 (y i ) che producono la somma uguale al vettore nullo. In matematica, il metodo di eliminazione di Gauss è un algoritmo usato in algebra lineare per determinare le soluzioni di un sistema di equazioni lineari, per calcolare il rango o l'inversa di una matrice. L'algoritmo, attraverso l'applicazione di operazioni elementari dette mosse di Gauss, riduce la matrice in una forma detta a scalini. La matrice così ridotta permette il calcolo del rango della matrice (che sarà pari al numero di scalini/pivot) e la risoluzione del sistema lineare a essa associato. 7) Si pone x uguale al prodotto degli r i corrispondenti agli y i trovati nel passo 6) e si pone y uguale al prodotto delle potenze di p 1, p 2,, p t con esponenti uguali alla semisomma degli esponenti della fattorizzazione degli stessi y i. 8) Si calcola d = gcd(x y, n) e se 1 < d < n allora d è divisore non banale di n, altrimenti si torna al passo 2) con una scelta di k più grande. Il massimo comune divisore (M.C.D. o gcd) di due numeri interi, che non siano entrambi uguali a zero, è il numero naturale più grande per il quale possono entrambi essere divisi. Il tempo di esecuzione (running time) del Crivello Quadratico dipende solo dalla dimensione di n, il numero da fattorizzare, e non da speciali strutture o proprietà dell algoritmo. O(n) = e ln(n) ln(ln(n)) Come ci aspettavamo il running time è esponenziale nella dimensione dell input.

11 3. Java RMI Abbiamo implementato l algoritmo del Crivello Quadratico (CQ) utilizzando RMI, cioè il modello ad oggetti distribuito offerto da Java. Il modello Java RMI si integra all interno della semantica del linguaggio ed in pratica, non è altro che un'estensione "ad oggetti" di Remote Procedure Call e fornisce la visione astratta di una chiamata di procedura remota verso altri processi. Gli scopi di RMI sono: Supportare in maniera trasparente invocazioni remote di metodi su oggetti su differenti JVM; Integrare in maniera naturale il modello distribuito all'interno di Java mantenendo le caratteristiche del linguaggio; Rendere evidenti le differenze tra il modello distribuito e quello locale; Rendere facile (compatibilmente con gli altri scopi) la realizzazione di applicativi distribuiti in Java; Mantenere la sicurezza offerta da Java con i security manager e i class loader. Generalmente le applicazioni sviluppate con questo modello sono composte da server e client. Il server crea un certo numero di oggetti, li rende accessibili da remoto ed attende le invocazioni dei client sugli oggetti; mentre il client: preleva il riferimento ad uno o più oggetti remoti ed invoca i loro metodi. RMI fornisce il meccanismo attraverso il quale server e client comunicano, quindi un'applicazione distribuita deve poter: Localizzare oggetti remoti (attraverso un registro); Comunicare con oggetti remoti (nascondendo, per quanto possibile, i dettagli dell'invocazione remota); Caricare dinamicamente classi dalla rete. Un semplice schema di funzionamento per RMI è quello mostrato in figura:

12 Figura Schema di funzionamento per RMI In quest'ambito il server registra l'oggetto con un nome sul registry(1), il client ricerca ed ottiene il riferimento remoto dell'oggetto(2) ed invoca il suo metodo remoto(3). I passi 4 e 5 mostrano il caricamento dinamico delle classi. 3.1 Architettura di RMI La figura sottostante mostra la struttura di un applicazione RMI che è organizzata in strati orizzontali sovrapposti Figura Architettura di RMI Lo strato più alto è costituito da applicazioni (client e server) eseguite da JVM differenti. Lo stub e lo skeleton forniscono la rappresentazione dell oggetto remoto: lo stub gestisce la simulazione locale sul client e agendo come proxy consente la comunicazione con l oggetto remoto; lo skeleton ne consente l esecuzione sul server. Il client esegue i metodi dell oggetto remoto in modo

13 del tutto analogo alla chiamata locale, senza preoccuparsi dei dettagli della comunicazione. Il Remote Reference Layer (RRL) ha il compito di instaurare un connessione virtuale fra il client e il server (esegue operazioni di codifica e decodifica dei dati). Questo adotta un protocollo generico e indipendente dal tipo di stub o skeleton utilizzato. Il Transport Layer esegue la connessione vera e propria tra le macchine utilizzando le funzionalità standard di networking di Java, ovvero i socket (protocollo TCP/IP). 3.2 RMI: il processo di creazione Il processo di creazione può essere suddiviso nei seguenti passi: 1. Il server dichiara i servizi offerti attraverso un interfaccia java remota che estende java.rmi.remote. Ogni metodo ti tale interfaccia deve lanciare l eccezione java.rmi.remoteexception. 2. Il server implementa l interfaccia remota del punto 1; in più gli oggetti devono derivare de java.rmi.unicastremoteobject. 3. La classe server viene compilata generando il.class. 4. Usando rmic (stub compiler) sulla classe server, viene generato un client stub e un server stub (skeleton): lo stub invia le chiamate remote verso il server effettuando il marshalling dei parametri; lo skeleton, speculare allo stub, riceve le chiamate remote, effettua l unmarshalling e chiama effettivamente i metodi dell oggetto. 5. Per rendere disponibili gli oggetti distribuiti e il loro recupero, java mette a disposizione un servizio di Naming attraverso l applicazione rmiregistry. 6. Il server viene mandato in esecuzione e crea gli oggetti che devo essere acceduti da remoto. 7. Ogni oggetto da accedere da remoto deve essere registrato sul registry lanciato al punto 5. Per far ciò si usano i metodi di java.rmi.naming che consentono di effettuare il binding di nomi ad oggetti. 8. Una volta implementato il client, questi usa i metodi di java.rmi.naming per localizzare un oggetto remoto. L invocazione dei metodi usa lo stub come intermediario. 9. Il client viene compilato ed eseguito e lo stub garantisce l accesso agli oggetti remoti.

14 Figura 3.3 Processo di creazione per RMI 3.3 Implementare un Compute Server In questa paragrafo mostreremo come implementare un compute server perché questa implementazione è stata utilizzata per affrontare il problema. Un compute server è un oggetto remoto che consente ad un server di ricevere dei task dai client, eseguirli e restituire il risultato. Il task viene definito dal client ma viene eseguito sulla macchina del server. Esso può variare indipendentemente dal server, l importante è che rispetti una determinata interfaccia. Possiamo riassumere i compiti del compute server in 3 semplici passi: 1. Il compute server scarica dal client il codice del task 2. Lo esegue all interno della propria Java virtual machine 3. Restituisce al client il risultato Per implementare un compute server servono due interfacce: L interfaccia Compute, che consenta ai client di inviare task al compute server L interfaccia Task, che consenta al compute server di eseguire le varie operazioni.

15 Per capire meglio le interfacce di seguito sono stati riportati le loro implementazioni. Iniziamo dall interfaccia Compute: package compute; import java.rmi.remote; import java.rmi.remoteexception; public interface Compute extends Remote { } Object executetask ( Task t ) throws RemoteException; Questa interfaccia definisce i metodi che possono essere chiamati da altre virtual machine. Gli oggetti che implementano questa interfaccia diventano oggetti remoti. Interfaccia Task: package compute; import java.io.serializable; public interface Task extends Serializable { } Object execute (); Questa interfaccia è usata come argomento nel metodo executetask dell interfaccia Compute e fornisce al Compute Server il meccanismo per eseguire il task. Non è un interfaccia remota, quindi non è associata ad oggetti remoti. Ovviamente l interfaccia estende Serializable in quanto necessita della trasformazione automatica di oggetti e strutture in sequenze di byte manipolabili. Definite queste interfacce l implementazione del server risulta essere molto semplice infatti implementa l interfaccia compute e comprende il metodo main per l esecuzione. public class Server extends UnicastRemoteObject implements Compute { public Server () throws RemoteException { super (); } } public Object executetask ( Task t ) { return t.execute (); } L implementazione del task da far eseguire (Task.java) è la classe che contiene il metodo da far eseguire al server. Ora il client che ha a disposizione questa classe può farla eseguire al server. È necessario istruire il server attraverso una policy (-Djava.security.policy = policy).

16 Figura 3.4 Argomenti della VM del Server 3.4 Implementazione del Crivello Quadratico in JAVA RMI Il progetto è costituito da due classi java principali: Client e CQReducer. Client: è la classe principale del progetto e contiene il metodo main e costituisce la fase di inizializzazione e di divisione del lavoro. In particolare, si inserisce il numero da fattorizzare e viene generato il file d input contenente i Sieve e tramite il metodo avviathread() viene diviso il lavoro tra tutti i servizi di fattorizzazione disponibili nella rete; CQReducer: dopo aver collezionato in una lista tutti gli elementi smooth calcolati dai thread, la classe CQReducer realizza con tali valori un sistema lineare modulo 2. Il suo obiettivo è risolvere il sistema adoperando tecniche come l eliminazione di Gauss e la sostituzione all indietro. Il risultato ci permette di trovare i fattori dell intero dato in input. Per l implementazione abbiamo utilizzato i thread di Java per rendere la chiamata al metodo run() del thread asincrona: quando mandiamo in esecuzione la computazione su un Server, il thread a cui è associato aspetta il risultato, lasciando così libero il client di avviare la computazione su altri Server.

17 3.5 Esempio di esecuzione del Crivello Quadratico Il numero che vogliamo fattorizzare utilizzando l algoritmo del crivello quadratico è il seguente N = Come prima operazione bisogna identificare il limite dei fattori di base (numeri primi p) da utilizzare per la fattorizzazione del numero, questo avviene utilizzando il metodo getlimitefattoribase. Il metodo indicato calcola il numero ottimale dei fattori di base per fattorizzare il numero dato in input utilizzando la seguente formula: (e ( ln N ln ln N) ) 2/4. Nel seguente esempio il limite dei fattori di base da utilizzare per la fattorizzazione del numero è 7, cioè questo significa che dobbiamo utilizzare i primi sette fattori di base che attraverso il criterio Eulero: ( N p ) N(p 1 2 ) (mod p) Soddisfano il simbolo di Legendre, ossia ( N ) 1 mod p. p Partendo dal numero primo p = 2 applichiamo il criterio di Eulero e consideriamo solo i primi sette valori che soddisfano il simbolo di Legendre (dove N è l intero e p un numero primo), cioè che restituiscono in modulo il valore 1. La seguente operazione è eseguita dal metodo statico legendre: p N p I nostri fattori di base sono i seguenti B = {2,3,13,17,19,29,41}, dove B = 7. La fase successiva consiste nell eseguire la fase di sieving, cioè del calcolo dei sieve. Prima di calcolare i sieve però bisogna identificare il numero di sieve necessari per la fattorizzazione del nostro numero, questo avviene utilizzando il metodo getsize_fullsieveinterval.il metodo calcola il numero di sieve utilizzando la seguente formula: numerofattoribase 3. Il numero di sieve necessari per fattorizzare è 343. Ogni sieve è realizzata utilizzando la seguente formula:

18 Z(X) = (X + N ) Y(X) = (Z(X)) 2 N Per minimizzare i valori consideriamo la seguente formula: Z(X) = (X + [ N ( numsieve 2 )]) Y(X) = (Z(X)) 2 N = (X + 124) Realizziamo il nostro vettore di sieve formato dalle coppie [Z(X), Y(X)] formato dalle sieve computate per 0 X < 343 V = { [Z(0),Y(0)] ; [Z(1), Y(1)] ; [Z(2),Y(2)] [Z(342),Y(342)]} = {[124, ] ; [125, ]; [126, ]; [466, ] } L operazione presentata è eseguita dal metodo writesievefileinput2 che genera il file delle Sieve in cui per ogni riga viene specificato un intervallo la cui dimensione viene settata variando il parametro Dimensione Sieve. Una volta realizzato l array di Sieve di ogni intervallo con il metodo createsieve, per ogni fattore di base eseguiamo l analisi su di esso in modo tale da individuare valori B-smooth. Questo avviene utilizzando l algoritmo di Shanks-Tonelli implementato dal metodo execute dell oggetto Factorize incorporato in un thread. Ogni macchina Server lavorerà su un sottoinsieme dell array di sieve generato. Partendo dal primo fattore di base determinato nella fase iniziale, nel nostro esempio 2, utilizzando il metodo getfirstindexfactor per individuare il primo sieve che è un divisore di 2, utilizziamo la seguente formula: (X + 124) mod 2 Partendo dal valore seguente, in questo caso il quale si trova nella seconda posizione dell array, individuiamo il massimo esponente di 2 per cui esso è divisibile: mod 2 = mod 4 = 2

19 Quindi, il massimo esponente di 2 per è 1. Memorizziamo l esponente e sostituiamo il vecchio valore con il nuovo (cioè quello restituito dalla divisione del sieve che stiamo analizzando con il massimo esponente di 2 per cui esso è divisibile). V = { [Z(0),Y(0)] ; [Z(1), Y(1)] ; [Z(2),Y(2)]; [Z(342),Y(342)]} = {[124, ]; [125, ]; [126, ]; [466, ] } Il prossimo valore che andremo ad analizzare nella lista di sieve è dato dall indice iniziale con un incremento di due (l incremento è dato dal valore del fattore di base) fino ad arrivare alla fine dell array, cioè il prossimo valore che analizzeremo è quello nella quarta posizione dell array. La precedente operazione è eseguita per tutti i fattori di base determinati nella fase iniziale. Il risultato finale è il seguente: [124, ]=>(3^1) x = [125, -307] => (2^1 x 3 ^ 2 x 13^1) x -307 [126, -4211] => (17^1) x-4211 [127, -1321] => (2^1 x 3 ^ 3)x [128, -43] => (3^1 x 19^1 x 29^1)x-43 [129, -2083] => (2^1 x 17^1)x-2083 [130, ] => (3^1)x [131, ] => (2^1 x 3^1)x [132, ] => (primo) [133, -401] => (2^1 x 3^1 x 29^1)x-401 [134, -7723] => (3 ^ 2)x-7723 [135, -2663] => (2^1 x 13^1)x-2663 [136, -7663] => (3^2)x-7663 [137, ] => (2^1 x 3^1)x [138, -277] => (13^1 x 19^1)x-277 [139, -277] => (2^1 x 3^1 x 41^1)x-277 [140, ] => (3^1)x [141, ] => (2^1)x [142, ] => (3^1)x [143, -73] => (2^1 x 3 ^ 3 x 17^1)x-73

20 [144, ] => (divisibile per nessun fattore di base) [145, -3691] => (2^1 x 3 ^ 2)x-3691 [146, -1297] => (3^1 x 17^1)x-1297 [147, -1733] => (2^1 x 19^1)x-1733 [148,-1] => (3^1 x 13^1 x 41 ^ 2)x-1... Gli output generati da ogni macchina Server, sono le coppie originarie analizzate tale che il secondo valore della coppia al termine della procedura descritta è 1 o -1. Una volta terminata la seguente operazione avviene la fase di risoluzione del sistema. Il suo obiettivo consiste nel risolvere il seguente sistema, cioè nel trovare il numero di colonne linearmente indipendenti: 0 0 [ ] S [ ] (mod 2) 1 1 La prima operazione è quella di realizzare la matrice attraverso le sieve che sono divisibili per i fattori di base, cioè sono le sieve che nell operazione precedente sono state sostituite con il valore -1 oppure con 1. Si mostra sottolista dei sieve che soddisfano il criterio evidenziato: [148,-1] => -1* (3^1 x 13^1 x 41 ^ 2) [157,-1] => -1*(2^1 x 3^1 x 19 ^ 2 x 29^1) [242,-1] => -1* (3 ^ 2 x 13 ^ 2 x 19^1) [262,-1] => -1* (3 ^ 3 x 17^1 x 41^1) [265,-1] => -1* (2^1 x 3^1 x 13 ^ 2 x 17^1) [271,-1] => -1* (2^1 x 3 ^ 2 x 19^1 x 41^1) [278,-1] => -1* (3 ^ 3 x 13^1 x 29^1) [296, 1] => (3 ^ 2 x 17^1) [299, 1] => (2^1 x 3^1 x 17^1 x 19^1) [307, 1] => (2^1 x 3 ^ 2 x 13^1 x 29^1)

21 [316, 1] => (3 ^ 6 x 17^1) [347, 1] => (2^1 x 3^1 x 17 ^ 2 x 19^1) [385, 1] => (2^1 x 3^1 x 13^1 x 19^1 x 41^1) [394, 1] => (3^1 x 19^1 x 29^1 x 41^1) [413, 1] => (2^1 x 3 ^ 7 x 19^1) Con i seguenti valori realizziamo la matrice dove le righe consisteranno nei fattori di base {2,3,13,17,19,29,41} ed le colonne gli interi che sono associati alle sieve con valore -1 e 1 {148,157,242,262,265,271,278,296,299,307,316,347,385,394,413}. Infine, i valori saranno gli esponenti dei fattori di base per ogni numero in modulo 2: L operazione indicata viene effettuata dal metodo realizzazionematricesistema presente nella classe CQReducer. Per esempio la realizzazione della prima colonna è data scomponendo il valore assoluto del sieve ( ) nei sui fattori: 2^0 x 3^1 x 13^1 x 17^0 x 19^0 x 29^0 x 41^2. Quindi, inseriamo per ogni fattore il suo esponente nella casella opportuna in modulo 2. Inseriamo 1 nella casella associata a 3 e 13, mentre nelle altre 0. In seguito, uniamo alla matrice il vettore dei termini noti: b = [ ] ( = trasposto ) Risolviamo il sistema con il metodo solve della classe BinaryLinearSystem. Il sistema può restituire più di una soluzione, dove alcune potrebbero esser non esatte per il nostro scopo. All interno del metodo solve è presente l invocazione del metodo trasforma_in_trangolaresuperiore, il quale trasforma la matrice in triangolare superiore utilizzando il metodo dell eliminazione di Gauss. Dopo aver eseguito il metodo indicato, applichiamo la tecnica della sostituzione all indietro per ottenere la soluzione del sistema. La soluzione consiste nel vettore S nel quale i valori posti a 1 indicano le colonne linearmente indipendenti:

22 S = [ ] In questo caso le colonne linearmente indipendenti hanno indice: 5, 7, 8, 10. considerare i valori nelle intestazioni di queste colonne: 265, 278, 296, 307. Dobbiamo Una volta ottenuto il vettore S applichiamo la tecnica del massimo comune divisore MCD (GCD) gcd(x-y, N) ed gcd(x+y, N) e verifichiamo se uno dei due restituisce un divisore. Dove: 1) N indica il numero da fattorizzare (N = 87463). 2) X è calcolato utilizzando la seguente formula: moltiplichiamo le colonne che sono linearmente indipendenti: X = 265 x 278 x 296 x 307 = ) Y è calcolato utilizzando la seguente formula: Y = ( ) ( ) ( ) ( ) = gcd(x Y, N) = gcd(( ), 87463) = 149 Per trovare l altro fattore applichiamo la divisione: 87463/149 = 587. Quindi i fattori per sono 149 e 587. Infatti, = Figura 3.5 In figura viene mostrato la console del client con i risultati della fattorizzazione del numero 87463

23 4 Test Fattorizzazione con il Crivello Quadratico in JAVA RMI 4.1 Configurazione ambiente L algoritmo è stato testato nel laboratorio didattico P13 della Facoltà di Scienze MM.FF.NN. dell Università degli studi di Salerno. Il gruppo ha utilizzato quindici personal computer in cui è installato il sistema operativo Windows XP SP3. In particolare, l ambiente di lavoro è formato da quattordici host Server (che mettono a disposizione il servizio di fattorizzazione) e un host Client (che richiede la fattorizzazione di un numero). La configurazione software include la versione 1.7 della Java Virtual Machine (jdk 1.7). Il sistema distribuito è stato realizzato utilizzando un architettura Client-Server. Il nostro sistema è simile ad un sistema distribuito collaborativo. L idea di base è che quando un Client chiede di fattorizzare un numero, accede a diversi registry (rmiregistry) che contengono i riferimenti ai servizi di fattorizzazione offerti dai diversi host. Fatto ciò, inizia a distribuire la computazione ai vari server ottenendo come risultato la lista di sieve. Successivamente costruisce la matrice con i fattori di base come righe e i sieve risultanti come colonne e tramite il metodo di eliminazione di Gauss, risolve il sistema e calcola i fattori del numero in input. La configurazione dei personal computer utilizzati è elencata nella seguente tabella: DELL OPTILEX 360 Memoria RAM Sistema Operativo 2,0 GB Windows XP (5.1) Service Pack 3, x86 32bit Processore Spazio Disco Spazio Disco disponibile Intel(R) Pentium(R) Dual CPU 2.20 GHz 117 GB 57,6 GB

24 La seguente tabella mostra i dati tecnici del processore utilizzato. Come si nota si tratta di una macchina Intel Dual Core. Intel(R) Pentium(R) Dual CPU 2.20 GHz Launch Date Processor Number Q4'07 E2200 # of Cores 2 # of Threads 2 Clock Speed L2 Cache 2.2 GHz 1 MB Bus/Core Ratio 11 FSB Speed FSB Parity Instruction Set Embedded Options Available Supplemental SKU Lithography Max TDP VID Voltage Range 800 MHz No 64-bit No No 65 nm 65 W V- 1.5V

25 La seguente immagine mostra l ambiente in cui sono stati eseguiti i test della fattorizzazione. Caratteristiche Macchine Memoria: 2,0 GB Windows XP SP3 Processore 0: Intel(R) Pentium(R) Dual CPU E GHz Processore 1: Intel(R) Pentium(R) Dual CPU E GHz Client Server 1 Server 2 Server 3 Server 4 Server 5 Server 6 Server 7 Server 8 Server 9 Server 10 Server 11 Server 14 Server 13 Server 12 Figura 4.1 In figura si mostra l ambiente di testing. La configurazione software includeva la seguente versione della Java Virtual Machine (JVM): java version (Build ); platform c8b3bfb3a1e Jdk 1.7.0

26 Per l esecuzione del programma abbiamo utilizzato degli script Batch di Windows per avviare le varie classi del progetto. All inizio vengono predisposte tutte le macchine Server avviando su ognuna di loro l rmiregistry e visto che ogni processore è un dual core, vengono avviati due servizi di fattorizzazione ognuno dei quali verrà invocato da un thread, così da far lavorare in parallelo due thread su un solo processore. Dopo aver fatto ciò, viene specificato il numero da fattorizzare ed eventualmente si configura il parametro Dimensione Sieve. Questo parametro ci permette di specificare la dimensione degli intervalli dei Sieve che verranno memorizzati nel file generato dal Client. Considerando le eventuali limitazioni di storage nel laboratorio, abbiamo deciso di non memorizzare nel file tutti i sieve, ma solo gli intervalli. Un esempio di file d input con Dimensione Sieve = 10 è il seguente: 1,10 11,20 21,30 91,97 Dopo aver specificato la configurazione, mandiamo in esecuzione lo script sulla macchina Client, passandogli come parametro a linea di comando gli indirizzi IP locali delle macchine Server. Il Client genera il file di input, accede ai registry di ogni macchina e controlla quanti servizi di fattorizzazione sono disponibili in totale. Questo valore permetterà al Client di dividere il lavoro per quanti sono i servizi di fattorizzazione a disposizione. Dopo aver fatto ciò, inizia la fase di divisione del lavoro. In questa fase, il client genera tanti thread quanti sono i servizi di fattorizzazione a disposizione. Ad ogni thread viene passato come parametro un oggetto Factorize che effettua il calcolo vero e proprio e un riferimento al server dove deve essere eseguito. Il client aspetta che tutti i thread finiscono il lavoro e nel frattempo colleziona tutti i risultati parziali fino ad ottenere la lista finale dei sieve. La fase successiva è quella della costruzione della matrice con sieve e fattori di base e la risoluzione del sistema tramite il metodo di eliminazione di Gauss. In questa fase, il client non ha bisogno dell aiuto dei server per risolvere il sistema che fornisce in output due soluzioni che rappresentano i fattori del numero in input. Ovviamente il client controlla che effettivamente le due soluzioni sono compatibili con il numero in input.

27 Figura 4.2. Monitor di sistema del Client. In tutti i test esprimeremo i tempi nel seguente formato: hh:mm:ss,000. Dove hh indica le ore, mm denota i minuti, ss specifica i secondi e 000 i millisecondi.

Un po di teoria dei numeri

Un po di teoria dei numeri Un po di teoria dei numeri Applicazione alla crittografia RSA Christian Ferrari Liceo di Locarno Matematica Sommario 1 L aritmetica modulare di Z n Le congruenze L anello Z n Le potenze in Z n e algoritmo

Dettagli

Introduzione alla crittografia. Il crittosistema RSA e la sua sicurezza

Introduzione alla crittografia. Il crittosistema RSA e la sua sicurezza Introduzione alla crittografia. Il crittosistema RSA e la sua sicurezza Prof. Massimiliano Sala MINICORSI 2011. Crittografia a chiave pubblica: oltre RSA Università degli Studi di Trento, Lab di Matematica

Dettagli

Programmazione distribuita

Programmazione distribuita Programmazione distribuita 1 Architettura client-server È il modo classico di progettare applicazioni distribuite su rete Server offre un servizio "centralizzato" attende che altri (client) lo contattino

Dettagli

RMI Remote Method Invocation

RMI Remote Method Invocation RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:

Dettagli

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

Introduzione a Java Remote Method Invocation (RMI)

Introduzione a Java Remote Method Invocation (RMI) Introduzione a Java Remote Method Invocation (RMI) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi E risuona il mio barbarico yawp sopra i tetti del mondo ( I sound my barbaric

Dettagli

Sicurezza nelle applicazioni multimediali: lezione 4, crittografia asimmetrica. Crittografia asimmetrica (a chiave pubblica)

Sicurezza nelle applicazioni multimediali: lezione 4, crittografia asimmetrica. Crittografia asimmetrica (a chiave pubblica) Crittografia asimmetrica (a chiave pubblica) Problemi legati alla crittografia simmetrica Il principale problema della crittografia simmetrica sta nella necessità di disporre di un canale sicuro per la

Dettagli

PRIMAVERA IN BICOCCA

PRIMAVERA IN BICOCCA PRIMAVERA IN BICOCCA 1. Numeri primi e fattorizzazione Una delle applicazioni più rilevanti della Teoria dei Numeri si ha nel campo della crittografia. In queste note vogliamo delineare, in particolare,

Dettagli

Crittografia a chiave pubblica

Crittografia a chiave pubblica Crittografia a chiave pubblica Cifrari simmetrici Barbara Masucci Dipartimento di Informatica ed Applicazioni Università di Salerno masucci@dia.unisa.it http://www.dia.unisa.it/professori/masucci canale

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Cifratura a chiave pubblica Sicurezza nelle reti di TLC - Prof. Marco Listanti - A.A. 2008/2009

Cifratura a chiave pubblica Sicurezza nelle reti di TLC - Prof. Marco Listanti - A.A. 2008/2009 Cifratura a chiave pubblica Crittografia a chiave privata Chiave singola Crittografia simmetrica La stessa chiave è utilizzata sia per la cifratura che per la decifratura dei messaggi La chiave rappresenta

Dettagli

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Programmazione in Rete e Laboratorio Comunicazione distribuita Port1 Java VM1 Java VM2 Port 2 Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino

Dettagli

Esercitazione di Sistemi Distribuiti: Java RMI

Esercitazione di Sistemi Distribuiti: Java RMI Esercitazione di Sistemi Distribuiti: Java RMI Anno Accademico 2007-08 Marco Comerio comerio@disco.unimib.it Richiami Teorici Oggetti distribuiti 2-16 Usuale organizzazione di un oggetto remoto con un

Dettagli

Robustezza crittografica della PEC

Robustezza crittografica della PEC Robustezza crittografica della PEC Prof. Massimiliano Sala Università degli Studi di Trento, Lab di Matematica Industriale e Crittografia Trento, 21 Novembre 2011 M. Sala (Università degli Studi di Trento)

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

Seminario Sull Algoritmo R.S.A.

Seminario Sull Algoritmo R.S.A. Alessandrini Cristian Sicurezza 2003 Introduzione Seminario Sull Algoritmo R.S.A. L algoritmo R.S.A. fa parte degli algoritmi definiti a chiave pubblica oppure asimmetrici. Fu progettato nel 1976/77 da

Dettagli

Crittografia. Primalità e Fattorizzazione. Corso di Laurea Specialistica. in Informatica

Crittografia. Primalità e Fattorizzazione. Corso di Laurea Specialistica. in Informatica Crittografia Corso di Laurea Specialistica in Informatica Primalità e Fattorizzazione Alberto Leporati Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi di Milano Bicocca

Dettagli

RMI. Prova pratica di Sistemi Distribuiti:

RMI. Prova pratica di Sistemi Distribuiti: Prova pratica di Sistemi Distribuiti: RMI Di Nicola Milella Al fine di toccare con mano queste tecnologie e capirne i rispettivi pro e contro si è deciso di sviluppare un applicazione distribuita sfruttando

Dettagli

Numeri Primi e Applicazioni crittografiche

Numeri Primi e Applicazioni crittografiche Numeri Primi e Applicazioni crittografiche Andrea Previtali Dipartimento di Matematica e Fisica Università dell Insubria-Como http://www.unico.it/matematica/previtali andrea.previtali@uninsubria.it Corsi

Dettagli

La crittografia a chiave pubblica per giocare e imparare: il gioco del codice RSA (parte prima)

La crittografia a chiave pubblica per giocare e imparare: il gioco del codice RSA (parte prima) La crittografia a chiave pubblica per giocare e imparare: il gioco del codice RSA (parte prima) Franco Eugeni, Raffaele Mascella, Daniela Tondini Premessa. Tra i saperi di interesse per tutte le età scolari

Dettagli

LICEO STATALE ENRICO MEDI CON INDIRIZZI:

LICEO STATALE ENRICO MEDI CON INDIRIZZI: Verbale del primo incontro con gli studenti: Martedì 12 Novembre 2013, ore 13:45 16:45 Dopo una breve introduzione alle finalità del Progetto dal titolo Crittografia e crittanalisi, viene illustrato con

Dettagli

RMI: metodi equals e hashcode

RMI: metodi equals e hashcode RMI: metodi equals e hashcode Per verificare se due oggetti remoti contengono gli stessi dati, la chiamata indirizzata al metodo equals() avrebbe bisogno di contattare i server dove si trovano gli oggetti

Dettagli

L informatica comprende:

L informatica comprende: Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione

Dettagli

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144 Mobilità di Codice Abbiamo già visto come un dato host possa trasmettere un oggetto (serializzabile) ad un altro host. Quest ultimo potrà eseguire l oggetto pur non possedendo il bytecode della classe

Dettagli

Sommario. Introduzione alla Sicurezza Web

Sommario. Introduzione alla Sicurezza Web Sommario Introduzione alla Sicurezza Web Considerazioni generali IPSec Secure Socket Layer (SSL) e Transport Layer Security (TLS) Secure Electronic Transaction (SET) Introduzione alla crittografia Introduzione

Dettagli

Socket & RMI Ingegneria del Software - San Pietro

Socket & RMI Ingegneria del Software - San Pietro Socket & RMI Ingegneria del Software - San Pietro Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la

Dettagli

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) (RMI) Remote Method Invocation (RMI) in Java. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@disi disi.unige.it Walter Cazzola Java: Remote

Dettagli

RETI DI CALCOLATORI. Crittografia. La crittografia

RETI DI CALCOLATORI. Crittografia. La crittografia RETI DI CALCOLATORI Crittografia La crittografia La crittografia è la scienza che studia la scrittura e la lettura di messaggi in codice ed è il fondamento su cui si basano i meccanismi di autenticazione,

Dettagli

ESTRAZIONE DI RADICE

ESTRAZIONE DI RADICE ESTRAZIONE DI RADICE La radice è l operazione inversa dell elevamento a potenza. L esponente della potenza è l indice della radice che può essere: quadrata (); cubica (); quarta (4); ecc. La base della

Dettagli

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: G.C.D.( a d, b d ) = 1 Sono state introdotte a lezione due definizioni importanti che ricordiamo: Definizione

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Dettagli

Parte 3. Rango e teorema di Rouché-Capelli

Parte 3. Rango e teorema di Rouché-Capelli Parte 3. Rango e teorema di Rouché-Capelli A. Savo Appunti del Corso di Geometria 203-4 Indice delle sezioni Rango di una matrice, 2 Teorema degli orlati, 3 3 Calcolo con l algoritmo di Gauss, 6 4 Matrici

Dettagli

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Laboratorio di Sistemi Distribuiti Leonardo Mariani Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

La Sicurezza delle Reti. La Sicurezza delle Reti. Il software delle reti. Sistemi e tecnologie per la multimedialità e telematica.

La Sicurezza delle Reti. La Sicurezza delle Reti. Il software delle reti. Sistemi e tecnologie per la multimedialità e telematica. Sistemi e tecnologie per la multimedialità e telematica Fabio Burroni Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena burronif@unisi unisi.itit La Sicurezza delle Reti La presentazione

Dettagli

DIARIO DEL CORSO DI ALGEBRA A.A. 2012/13 DOCENTE: ANDREA CARANTI

DIARIO DEL CORSO DI ALGEBRA A.A. 2012/13 DOCENTE: ANDREA CARANTI DIARIO DEL CORSO DI ALGEBRA A.A. 2012/13 DOCENTE: ANDREA CARANTI Lezione 1. lunedí 17 settembre 2011 (1 ora) Presentazione del corso. Esercizio: cosa succede a moltiplicare per 2, 3, 4,... il numero 052631578947368421,

Dettagli

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare Minicorso tematico: Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare Dott. Francesco Ricca Dipartimento Di Matematica Università della Calabria ricca@mat.unical.it Presentiamoci

Dettagli

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB. SISTEMI E RETI Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB. CRITTOGRAFIA La crittografia è una tecnica che si occupa della scrittura segreta in codice o cifrata

Dettagli

Firma digitale e PEC: aspetti crittografici e sicurezza

Firma digitale e PEC: aspetti crittografici e sicurezza Firma digitale e PEC: aspetti crittografici e sicurezza Prof. Massimiliano Sala Università degli Studi di Trento, Lab di Matematica Industriale e Crittografia Trento, 17 Febbraio 2012 M. Sala (Università

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Corso PAS Anno 2014. ESEMPIO. Per n = 3, Z 3 contiene 3 elementi:

Corso PAS Anno 2014. ESEMPIO. Per n = 3, Z 3 contiene 3 elementi: Corso PAS Anno 2014 Matematica e didattica 3 Correzione esercizi 1. Definizione. Sia n un fissato intero maggiore di 1. Dati due interi a, b si dice che a è congruo a b modulo n, e si scrive a b (mod n),

Dettagli

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari Java RMI I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti: - Sistemi Distribuiti Dip. Informatica (S.Pizzutilo) - Seminario Java RMI di G.Cozzolongo Java RMI: Remote Method

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247 Registri RMI Per poter interagire con un server remoto, un client deve essere in possesso di una sua referenza remota (ovvero un oggetto stub). Un servizio di Naming è una risorsa centralizzata che può

Dettagli

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag.

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag. SOMMARIO CAPITOLO : I RADICALI. I radicali pag.. I radicali aritmetici pag.. Moltiplicazione e divisione fra radicali aritmetici pag.. Potenza di un radicale aritmetico pag.. Trasporto di un fattore esterno

Dettagli

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern Organizzazione della lezione 15. Java Remote Method Invocation (3) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il design pattern

Dettagli

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Sistemi di Numerazione Sistema decimale La

Dettagli

Sicurezza nelle reti

Sicurezza nelle reti Sicurezza nelle reti A.A. 2005/2006 Walter Cerroni Sicurezza delle informazioni: definizione Garantire la sicurezza di un sistema informativo significa impedire a potenziali soggetti attaccanti l accesso

Dettagli

METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA 2 LEZIONE

METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA 2 LEZIONE METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA 2 LEZIONE LE AZIONI DEL FARE MATEMATICA OSSERVARE OSSERVARE Dalla spontanea formazione dei concetti nella mente del bambino fino alla concezione

Dettagli

Rappresentazione e Memorizzazione dei Dati

Rappresentazione e Memorizzazione dei Dati Rappresentazione e Memorizzazione dei Dati Giuseppe Nicosia CdL in Matematica (Laurea Triennale) Facoltà di Scienze MM.FF.NN. Università di Catania Bit e loro Memorizzazione Definizioni Algoritmo: una

Dettagli

Crittografia. Appunti a cura del prof. Ing. Mario Catalano

Crittografia. Appunti a cura del prof. Ing. Mario Catalano Crittografia Appunti a cura del prof. Ing. Mario Catalano La crittografia La crittografia è la scienza che studia la scrittura e la lettura di messaggi in codice. Solitamente, i meccanismi crittografici

Dettagli

Analisi di programmi: Crittografia

Analisi di programmi: Crittografia Analisi di programmi: Crittografia Come caso concreto di sistema, proviamo ad abbozzare e a vedere una prima implementazione di un sistema di crittografia a chiave pubblica La crittografia studia le tecniche

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Applicazioni distribuite

Applicazioni distribuite Applicazioni distribuite Maurizio Cozzetto 1 agosto 2009 Un pò di teoria Ricordiamo che un'applicazione distribuita è un'applicazione composta da più programmi (almeno 2) posti in esecuzione su macchine

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

Strutture dei Sistemi Operativi

Strutture dei Sistemi Operativi Strutture dei Sistemi Operativi Componenti di sistema Servizi del sistema operativo Chiamate di sistema Programmi di sistema Struttura del sistema Macchine virtuali Progetto e implementazione di sistemi

Dettagli

Corso basilare di programmazione

Corso basilare di programmazione Parte vi Corso basilare di programmazione Introduzione............................................ 947 Programma didattico.................................. 947 Strumenti per la compilazione..........................

Dettagli

Informatica di base: esame scritto del 2 febbraio 2004 Docente: Prof. Viviana Patti

Informatica di base: esame scritto del 2 febbraio 2004 Docente: Prof. Viviana Patti Informatica di base: esame scritto del 2 febbraio 2004 Docente: Prof. Viviana Patti 22 domande, 7 pagine Cognome e nome Matricola Turno di Laboratorio Domande con risposta multipla 1 Quanti byte occupa

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1 GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

ESERCIZI DI PREPARAZIONE E

ESERCIZI DI PREPARAZIONE E ESERCIZI DI PREPARAZIONE E CONSOLIDAMENTO PER I FUTURI STUDENTI DEL PRIMO LEVI si campa anche senza sapere che cos è un equazione, senza sapere suonare uno strumento musicale, senza conoscere il nome del

Dettagli

Architettura di un computer

Architettura di un computer Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su

Dettagli

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati Activation In generale i Sistemi ad oggetti distribuiti sono progettati per lavorare con oggetti persistenti. Dato che questi sistemi saranno composti da migliaia (forse milioni) di tali oggetti, sarebbe

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Lezione 6 a.a. 2010/2011 Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono: diversi

Dettagli

I Modelli della Ricerca Operativa

I Modelli della Ricerca Operativa Capitolo 1 I Modelli della Ricerca Operativa 1.1 L approccio modellistico Il termine modello è di solito usato per indicare una costruzione artificiale realizzata per evidenziare proprietà specifiche di

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

Certificati digitali con CAcert Un'autorità di certificazione no-profit

Certificati digitali con CAcert Un'autorità di certificazione no-profit Certificati digitali con CAcert Un'autorità di certificazione no-profit Davide Cerri Associazione di Promozione Sociale LOLUG Gruppo Utenti Linux Lodi davide@lolug.net 11 novembre 2008 Crittografia asimmetrica:

Dettagli

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi Evoluzione dei sistemi operativi (4) Sistemi multiprogrammati! più programmi sono caricati in contemporaneamente, e l elaborazione passa periodicamente dall uno all altro Evoluzione dei sistemi operativi

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono:

Dettagli

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2 Dati due numeri naturali a e b, diremo che a è divisibile per b se la divisione a : b è esatta, cioè con resto 0. In questo caso diremo anche che b è un divisore di a. 24 : 3 = 8 con resto 0 26 : 4 = 6

Dettagli

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi Dalla scorsa lezione LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica LA MACCHINA DI VON NEUMANN Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico

Dettagli

Megabyte (MB) = 1024KB 1 milione di Byte (e.g. un immagine di 30MB) Gigabyte (GB) = 1024MB 1 miliardo di Byte (e.g. un hard disk da 80GB)

Megabyte (MB) = 1024KB 1 milione di Byte (e.g. un immagine di 30MB) Gigabyte (GB) = 1024MB 1 miliardo di Byte (e.g. un hard disk da 80GB) Unità di misura per l informatica Un bit (b) rappresenta una cifra binaria. E l unità minima di informazione. Un Byte (B) è costituito da 8 bit. Permette di codificare 256 entità di informazione distinte

Dettagli

CAPITOLO 1 I SISTEMI OPERATIVI

CAPITOLO 1 I SISTEMI OPERATIVI CAPITOLO 1 I SISTEMI OPERATIVI Introduzione ai sistemi operativi pag. 3 La shell pag. 3 Tipi di sistemi operativi pag. 4 I servizi del sistema operativo pag. 4 La gestione dei file e il file system Il

Dettagli

Il sistema di crittografia NTRU

Il sistema di crittografia NTRU Il sistema di crittografia NTRU Stefano Vaccari 2148 061247 Relazione per il corso di Sistemi Informativi II Tecnologie per la Sicurezza Luglio 2003 1 Crittografia a chiave pubblica Tra i sistemi di protezione

Dettagli

I SISTEMI DI NUMERAZIONE

I SISTEMI DI NUMERAZIONE ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA I SISTEMI DI NUMERAZIONE Prof. G. Ciaschetti Fin dall antichità, l uomo ha avuto il bisogno di rappresentare le quantità in modo simbolico. Sono nati

Dettagli

Codifica dell informazione

Codifica dell informazione Codifica dell informazione Il calcolatore memorizza ed elabora vari tipi di informazioni Numeri, testi, immagini, suoni Occorre rappresentare tale informazione in formato facilmente manipolabile dall elaboratore

Dettagli

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario.

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario. Programmazione e laboratorio: introduzione al corso Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione per

Dettagli

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra.

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra. Appunti di Calcolatori Elettronici Modello di macchina multilivello Introduzione... 1 Linguaggi, livelli e macchine virtuali... 3 La struttura a livelli delle macchine odierne... 4 Evoluzione delle macchine

Dettagli

la "macchina" universale di Turing

la macchina universale di Turing la "macchina" universale di Turing Nel 1854, il matematico britannico George Boole (1815-1864), elaborò una matematica algebrica che da lui prese il nome. Nell'algebra booleana le procedure di calcolo

Dettagli

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi: Modulo 8 Elettronica Digitale Contenuti: Introduzione Sistemi di numerazione posizionali Sistema binario Porte logiche fondamentali Porte logiche universali Metodo della forma canonica della somma per

Dettagli

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti Un ripasso di aritmetica: Rappresentazione binaria - operazioni A queste rappresentazioni si possono applicare le operazioni aritmetiche: riporti 1 1 0 + 1 0 = 1 0 0 24 Un ripasso di aritmetica: Rappresentazione

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE.

UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE. UNIVERSITÀ DEGLI STUDI DI TRENTO DOCUMENTO ELETTRONICO, FIRMA DIGITALE E SICUREZZA IN RETE. INTRODUZIONE ALL ARGOMENTO. A cura di: Eleonora Brioni, Direzione Informatica e Telecomunicazioni ATI NETWORK.

Dettagli

LAN MAN WAN. Una internet è l'insieme di più reti reti distinte collegate tramite gateway/router

LAN MAN WAN. Una internet è l'insieme di più reti reti distinte collegate tramite gateway/router Rete di reti (interrete, internet) 2 Prof. Roberto De Prisco TEORIA - Lezione 8 Rete di reti e Internet Università degli studi di Salerno Laurea e Diploma in Informatica Una rete di comunicazione è un

Dettagli

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

PROVA INTRACORSO TRACCIA A Pagina 1 di 6 PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento

Dettagli

LA NUMERAZIONE BINARIA

LA NUMERAZIONE BINARIA LA NUMERAZIONE BINARIA 5 I SISTEMI DI NUMERAZIONE Fin dalla preistoria l uomo ha avuto la necessità di fare calcoli, utilizzando svariati tipi di dispositivi: manuali (mani, bastoncini, sassi, abaco),

Dettagli

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Se a e b sono numeri interi, si dice che a divide b, in simboli: a b, se e solo se esiste c Z tale che b = ac. Si può subito notare che:

Dettagli

INDICE. Indice. Introduzione

INDICE. Indice. Introduzione V Indice Introduzione XIII Capitolo 1 La programmazione multithread 1 1.1 Cosa sono i thread 2 Utilizzare i thread per dare una possibilità ad altri task 9 Avvio ed esecuzione dei thread 10 Esecuzione

Dettagli

Altri metodi di indicizzazione

Altri metodi di indicizzazione Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini La memoria Architetture Avanzate dei Calcolatori Valeria Cardellini Nelle lezioni precedenti { Memoria La gerarchia di memorie Registri Istruzioni, operandi L Cache Blocchi L2 Cache Blocchi Memoria Pagine

Dettagli

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica, Chimica, Elettrica e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011 Docente: Gian

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

90.1 Sistemi di numerazione. 90.1.1 Sistema decimale. 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria

90.1 Sistemi di numerazione. 90.1.1 Sistema decimale. 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria 90.1 Sistemi di numerazione.................................................... 605 90.1.1 Sistema decimale..................................................

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Scambio delle chiavi. mercoledì 7 dicembre 2011

Scambio delle chiavi. mercoledì 7 dicembre 2011 Scambio delle chiavi 1 mercoledì 7 dicembre 2011 Distribuzione della chiave Dati due terminali A e B, si possono avere varie alternative per la distribuzione delle chiavi. 1. A sceglie una chiave e la

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Hardware, software e periferiche Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Riepilogo - Concetti di base dell informatica L'informatica è quel settore scientifico disciplinare

Dettagli