TPSIT - Crittografia - Algoritmo di Diffie-Hellman

De Chirico

Lo scambio di chiavi Diffie-Hellman è un protocollo crittografico che consente a due entità di stabilire una chiave condivisa e segreta utilizzando un canale di comunicazione insicuro (pubblico) senza la necessità che le due parti si siano scambiate informazioni o si siano incontrate in precedenza.

La chiave ottenuta mediante questo protocollo può essere successivamente impiegata per cifrare le comunicazioni successive tramite uno schema di crittografia simmetrica.

Supponiamo che Alice e Bob conoscano entrambi due numeri, g e p, pubblici (p numero primo). Inoltre Alice conosce un numero segreto ‘a’ e Bob conosce un numero segreto ‘b’

Alice calcola: A=g^{a}\;mod \; p e lo dà a Bob

Bob calcola: B=g^{b}\;mod \; p e lo dà ad Alice

Alice calcola: K = B^{a}\; mod \;p=\left [ g^{b}\;mod\:p \right ]^{a}=g^{ab}\;mod\;p

Bob calcola: K = A^{b}\; mod \;p=\left [ g^{a}\;mod\:p \right ]^{b}=g^{ab}\;mod\;p

CONCLUSIONE

Alice e Bob hanno condiviso un segreto (il numero K) senza comunicarlo esplicitamente!

L’attaccante Eva può osservare A, B, g, p ma questa informazione non è sufficiente per ricavare K

K è calcolabile solo conoscendo a ob, che tuttavia sono segreti e non vengono mai trasmessi. Ricavare ada A (o analogamente bda B) significa risolvere un logaritmo discreto computazionalmentedifficile!

Alice e Bob hanno condiviso un segreto (il numero K) senza comunicarlo esplicitamente!

Pubblicato in Senza categoria | Lascia un commento

TPSIT - Crittografia - aritmetica modulare

L'algebra modulare si basa sul concetto di congruenza modulo m

a mod m = resto della divisione a/m

Dati tre numeri a, b, m con m\neq 0 si dice cha a e b sono congruenti modulo m, se la differenza a-b è multiplo di m.

De Chirico

a\equiv b\;mod\;m

si può anche scrivere

a\;mod\;m=b\;mod\; m

si legge a è congruo a b modulo m

Invarianza rispetto alle operazioni aritmetiche

Prima proprietà (somma)

[(a\;mod\;m) + (b\;mod\;m)] mod\;m = (a+b)\;mod\;m

(a\;mod\;m+b\;mod\;m)\equiv (a+b)mod\;m

Seconda proprietà (differenza)

[(a\;mod\;m)-(b\;mod\;m)]\;mod\;m=(a-b)\;mod\;m

(a\;mod\;m-b\;mod\;m)\equiv (a-b)\;mod\;m

Terza proprietà (prodotto)

[(a\;modm)\;\cdot(b\;mod\;m)]\;mod\;m=(a\cdot\;b)\;mod\;m

(a\;mod\;m\cdot b\;mod\;m)\equiv (a\cdot b)mod\;m

Quarta proprietà (potenza--> generalizzazione del prodotto)

\left [ \left ( a \;mod\; m \right )^{k} \right ]\;mod \; m = a^{k} \; mod \; m

\left [ \left ( a \;mod\; m \right )^{k} \right ]\equiv a^{k} \; mod \; m

Esempi

Calcolo che si farebbe in assenza della conoscenza delle proprietà

540\; mod\;17 = ?
540 / 17 = 31,764….
31\cdot 17 = 527 540 -527 = 13

Applicazione della proprietà della somma

(6+7) \;mod\;5 = 3
(6\; mod\;5 + 7\; mod\;5) mod\;5= (1 + 2)\; mod\;5 = 3

Conseguenza dell’ultima proprietà

Ad esempio:

\left [ \left ( 9 \;mod\; 5 \right )^{2} \right ]\;mod \; 5 = 4^{2} \; mod \; 5= 16 \: mod \; 5 =1

ed è uguale a:

9^{2} \; mod \; 5= 81 \: mod \; 5 =1

Ho semplificato di molto il calcolo

Approfondimenti sull'algebra modulare

Molte funzioni normalmente invertibili, diventano non invertibili nella versione modulare

Esempio: il logaritmo

a^{b}=c

invertendola ho appunto la definizione di logaritmo e posso trovare il valore dell'esponente b:

b=\log _{a}c

MA (DEFINIZIONE DI LOGARITMO DISCRETO)

a^{b}\; mod \; m=c

Trovare b dati a, c ed m è computazionalmentemolto difficile!

Pubblicato in Senza categoria | Lascia un commento

TPSIT: crittografia asimmetrica

Per capire la crittografia a chiave asimmetrica si può ipotizzare questo semplice esempio pratico:

Bob spedisce ad Alice il suo lucchetto aperto e quindi NON serve che Alice abbia la chiave di BOB

Alice lo usa per chiudere la scatola contenente il messaggio segreto e la spedisce a Bob

Nell'ambito informatico come si può realizzare una cosa di questo genere?

è necessario trovare una funzione (il lucchetto) la cui trasmissione su canali insicuri non compromette l’algoritmo, che sia facile da applicare (chiudere il lucchetto) ma difficile da invertire (aprire il lucchetto) a meno di non possedere un determinato elemento (la chiave del lucchetto)

La ricerca di una funzione con tali caratteristiche è stata la grande sfida per i crittografi degli anni ‘70

Pubblicato in Senza categoria | Lascia un commento

C++: gestione file

1 -Includere la libreria  <fstream>

2-  dichiarare (una o più) variabili di " tipo file “ (es. fstreamfile_dati;)

tipi consentiti:

–ifstream: variabile file di sola lettura

–ofstream: variabile file di sola scrittura

– fstream: variabile file di lettura/scrittura

  • ofstream miofile("prova.txt",ios::app); //apertura in AGGIUNTA

3- associare una variabile di tipo file a un oggetto di tipo file (tramite la funzione open()) (es. file_dati.open(“c:\Dati00.txt”);

 4- L'accesso ad un file consente di leggere e/o scrivere su file. Si utilizzano i normali comandi >>e <<su una variabile di tipo file (analogamente a cin e cout)

OSS: >>si può usare con una variabile di tipo lettura (ifstream), <<con una variabile di tipo scrittura (ofstream)

5-  al termine dell'uso di una variabile di tipo file, questa va "chiusa" usando la funzioneclose()

Ecco un semplice esempio di programma per la lettura:

include <iostream>

include <fstream>

using namespace std;
int main() {
int i, j, k;
char ch;
ifstream inFile; //dichiarazione file sola lettura
ofstream oFile;
inFile.open("dati.txt");// associa inFileal // file dati.txt
inFile>> i >> j >>ch;
cout<<i<<' '<<j<<' '<<ch; //scrive su schermo i //valori letti
inFile.close(); /* "chiusura" del file */
oFile.open("scrivo.txt",ios::app);
oFile<<"3 "<<"pippo";
oFile.close();

return 0;
}

Pubblicato in Senza categoria | Lascia un commento

Lisbona - 5 - 8 Dicembre 2018 - Visita istruzione classi Quinte Informatica e Telecomunicazioni

Mercoledì 5 Dicembre

10:00 Piazza Vittoria Bolzano

16:40 Volo EZY2715 Easy Jet da Milano Malpensa

18:35 Arrivo a Lisbona

Trasferimento dall’aeroporto all’Hotel MASA ALMIRANTE (Avenida Almirante Reis, 68)

Linea Rossa, si scende ad Alameda e poi linea Verde e si scende ad Anjos.

Costo della corsa 1.40€

Utilizzare la mappa della metro per poter girare la citta.

Mappa_Metro_Lisbona.

Cena in ristorante vicino all'albergo.

Serata con visita di Alfama Lisbona

Ecco la mappa di Lisbona per poterla girare con comodità

mappa_porto_attrazioni

Giovedì 6 

Giro sul tram 28 Martim Moniz giro di 40 minuti dell'intera città fino ad arrivare Campo Ourique , fare il percorso inverso per ritrovarsi alla partenza e continuare la visita.

Visita di Alfama

    • Largo dos Portas do Sol a cui si raggiunge con due fermate di metro oppure a piedi 30 minuti
    • Cattedrale di Lisbona Largo da Sé
    • Chiesa di Sant'Antonio da Padova che è li vicino
    • Andare  ad Miradouro Santa Luzia: il belvedere si affaccia sul Tago ed è uno degli scorci più suggestivi del quartiere;
    • A questo punto di visita il Castello di São Jorge:Orari di apertura:
      Dal 1 novembre al 28 febbraio: dalle 9.00 alle 18.00 Costo del biglietto 5€.
    • Adesso si va a visitare il quartire di Graça a 12 minuti a piedi e si visita Monastero di São Vicente da Fora Vedremo magnifici azulejos che illustrano la vita di Lisbona nel 1600: dedicheremo  del tempo ad osservarli perchè sono veri e propri capolavori. Potretemo ammirare ad esempio scene della presa di Lisbona e della sconfitta dei mori mentre al primo piano si trova una raccolta unica di azulejos che raccontano ben 38 favole poco conosciute di La Fontaine. - Sul tetto del monastero si vedrà l'intera città.  Costo del biglietto 4€ 
    •  Mouraria è il quartiere di origine araba sempre d Alfama

Venerdì 7 

Mattina

Quartiere di Belen

Partendo con il treno da Cais do Sodrécon arrivandoci con la metro si arriva a Padrão dos DescobrimentosRealizzato per celebrare l’epoca delle scoperte, raffigura i navigatori portoghesi e la rosa dei venti rappresentata a nord del monumento, contiene al centro le rotte da essi scoperte.

Li si visiterà Monastero dos Jerónimos Costruito per il ritorno dal viaggio delle Indie di Vasco da Gama, al suo interno è possibile visitare il Museu de Arqueología e il Museu de Marinha.

Belém è il posto giusto non solo per chi è appassionato di mare ma anche per chi ama il verde: il Jardim do Ultramar e il Jardim Botânico da Ajuda sono il luogo ideale per una visita non solo fatta di relax; durante tutto l’anno è possibile imbattersi in qualche attività sociale: dal teatro a corsi di giardinaggio, da feste tradizionali a festival musicali. Da provare infine, i famosi pastéis de nata, tipici (e deliziosi) dolci portoghesi alla crema serviti con una spolverata di cannella o cacao. Si dice che il pastel de nata nacque proprio a Belém, dove tutt’ora vi è la rinomata e famosa pasticceria Pastéis de Belem; con i suoi azulejos che la caratterizzano produce quasi 15.000 pasteis de nata al giorno.

Torre di Belem.

Ponte del 25 aprile

Il pomeriggio

  • escursione a Sintra Partendo dalla stazione di Rossio  Fermata Restauradores (con la linea verde) e a soli 30 minuti da Lisbona, si rimane incantati dal paesaggio che la città di Sintra offre. Patrimonio dell’umanità, questa piccola città ha qualcosa di speciale e anche un po’ fiabesco. Presso la stazione di Sintra, l’autobus 434 dà la possibilità di ammirare le principali bellezze del centro senza fare troppa fatica
  • Castello dei Mori a Sintra Costo del biglietto 8€

Sabato mattina 8 Dicembre

Campo di Santa Clara vi è il mercato delle pulci per prendere qualche ricordo

Partenza dall'albergo  per l'aeroporto per le ore 15:30

volo EZY2716 delle 17 verso Milano Malpensa quindi ritorno a Bolzano verso le ore 01:00 della domenica.

Pubblicato in Senza categoria | Lascia un commento

GPOI - Test su CPM

jim warren

GPOI - CPM

Bisogna indicare un testo
Bisogna indicare un testo
Bisogna riempire questo campo
Bisogna indicare una data

 

Pubblicato in Senza categoria | Lascia un commento

Raspberry - Access Point come bridge senza dhcp utilizzando il proxy della LAN per controllo del traffico

A differenza del post hot spot con Rasperry che creava sì un accesso wifi ma attivava un dhcp per la gestione delle sole connessioni wifi, in questo caso si crea un "semplice" bridge tra la porta eth0 e wlan0 usando bridge-utils in maniera molto attenta.

Tale scelta demanda al dhcp della LAN l'assegnazione degli indirizzi IP e nel contempo interviene il proxy presente nella LAN stessa con la relativa autenticazione e regole del firewall e controllo della navigazione.

Ecco i dettagli tecnici per la sua realizzazione:

apt-get install hostapd bridge-utils

bloccare il servizio hostapd

service hostapd stop
nano /etc/dhcpcd.conf

aggiunger

denyinterfaces wlan0

denyinterfaces eth0

alla fine del file ma sopra le altre righe  interface

Aggiuungo una porta virtuale che chiamo br0

brctl addbr br0

Connetto la porta di rete  eth0 al bridge br0.

brctl addif br0 eth0

ora vado a modificare il file interfaces

nano /etc/network/interfaces

aggiungerndo le seguenti righe

# Bridge setup
auto br0
iface br0 inet manual
bridge_ports eth0 wlan0

ora vado a modificare il file di configurazione hostapd.conf

nano /etc/hostapd/hostapd.conf

in questa maniera:

interface=wlan0
bridge=br0
ssid=NameOfNetwork
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=AardvarkBadgerHedgehog
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

se voglio modificare la banda di trasmissione posso seguire la seguente legenda:

'hw_mode=g' a 'hw_mode=a'

  • a = IEEE 802.11a (5 GHz)
  • b = IEEE 802.11b (2.4 GHz)
  • g = IEEE 802.11g (2.4 GHz)
  • ad = IEEE 802.11ad (60 GHz).

adesso devo modificare:

nano /etc/default/hostapd

trovare la linea #DAEMON_CONF, e sostituirla con:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

andare nel file /etc/sysctl.conf

net.ipv4.ip_forward=1

adesso modificare le tabelle del firewall

iptables -t nat -A  POSTROUTING -o eth0 -j MASQUERADE
sh -c "iptables-save > /etc/iptables.ipv4.nat"

Andare sul file  /etc/rc.local ed aggiungere sopra "exit 0" questa regola:

iptables-restore < /etc/iptables.ipv4.nat

Dopo il reboot da un semplice ipconfig si vedrà che SOLO la porta logica br0 avrà asseganto l'indirizzo IP.

 

Pubblicato in Senza categoria | 2 commenti

Linux/Raspberry : impostare che tutta la navigazione vada sul proxy

Una volta impostato un proxy, ad esempio squid, è necessario obbligare tutti gli utenti a dover navigare attraverso il proxy.

Per far questo si va a modificare il file

nano /etc/squid/squid.conf

e si ricerca la porta di default dello squid sostituendo la 3128 con la 8080.

Poi aggiungere alla tabella NAT del firewall la seguente riga:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

a questo punto tutto il traffico deve passare per il proxy.

Se si dovesse solo vedere la regola inserita si deve digitare il comando:

iptables -t nat --list

se si volesse cancellare la regola appena inserita digitare:

iptables -t nat -D PREROUTING 1

 

Pubblicato in Senza categoria | Lascia un commento

Raspberry: installare Proxy squid e Webmin

Impostare un proxy server per:

  • creare una cache per memorizzare le pagine web senza che ogni client debba effettuare la richiesta al server
  • per controllare l'accesso
sudo apt-get install squid -y

aprire il file di configurazione:

nano /etc/squid/squid.conf

usa Ctrl + W per trovare ogni sezione

http_access allow localnet --> rimuovi #
Trova: acl localnet section

aggiungi:
acl localnet src YOUR CIDR IP RANGE # Description

ad esempio 

acl localnet src 192.168.5.0/24 # Home Network

Assicurarsi che il range e la sottomaschera corrisponda al range della tua rete.

Trova: # dns_v4_first off rimuovi # e cambia off a on.

impostare

Cache_mem 256 MB

impostare:

maximum_object_size 4096 MB

impostare

Maximum_object_size_in_memory 8192 KB

impostare la seguente configurazione all'interno del file squid.conf

cache_dir ufs /var/spool/squid  8192 16 256

quindi:

service squid restart

Gestione grafica di squid:

apt-get -f install
apt-get -y install apache2 apache2-suexec-custom libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions samba bind9 webalizer locate mysql-server

con questo comando alla fine installo LAMP con mariadB

quindi installo la parte grafica per gestire il proxy:

apt-get install squid-cgi

vado sulla root e creo la directory:

mkdir installed-packages
wget http://www.webmin.com/download/deb/webmin-current.deb

adesso aggiungo il pacchetto appena scaricato e installo la parte grafica:

dpkg -i webmin-current.deb

quindi accedere all URL corrispondente allìIp del server:

https://ipserver:10000

login pi

password quella impostata come amministratore del raspberry.

SI vedrà una console completa del sistema.

Lasciando le impostazioni della rete impostate in fase di installazione le impostazioni per il funzionamento del proxy saranno:

10.0.0.1:3128

Normalmente il proxy utilizzerà la porta 3128 o 8080

Pubblicato in Senza categoria | 2 commenti

Raspberry - hotspot wifi - senza proxy nella LAN

Jim Warren

Bisogna prima di tutto installare

apt-get install dnsmasq hostapd

a questo punto si va:

nano /etc/dhcpcd.conf

aggiungere la seguente riga alla base del file:

denyinterfaces wlan0

Ora dobbiamo configurare l’ IP statico.

nano /etc/network/interfaces

allow-hotplug wlan0
iface wlan0 inet static
address 172.24.1.1
netmask 255.255.255.0
network 172.24.1.0
broadcast 172.24.1.255
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

per far ripartire l'interfaccia bisogna digitare

service networking restart

HOSTPAD

Ora dobbiamo configurare hostapd.
Dobbiamo creare un nuovo file di configurazione con il comando

nano vi /etc/hostapd/hostapd.conf

# This is the name of the WiFi interface we configured above
interface=wlan0

# Use the nl80211 driver with the brcmfmac driver
driver=nl80211

# This is the name of the network
ssid=VoxPopuli-Hub

# Use the 2.4GHz band
hw_mode=g

# Use channel 6
channel=6

# Enable 802.11n
ieee80211n=1

# Enable WMM
wmm_enabled=1

# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

# Accept all MAC addresses
macaddr_acl=0

# Use WPA authentication
auth_algs=1

# Require clients to know the network name
ignore_broadcast_ssid=0

# Use WPA2
wpa=2

# Use a pre-shared key
wpa_key_mgmt=WPA-PSK

# The network passphrase
wpa_passphrase=raspberry

# Use AES, instead of TKIP
rsn_pairwise=CCMP

quindi dare il comando

/usr/sbin/hostapd /etc/hostapd/hostapd.conf

Apri il file di configurazione di hostapd con

nano /etc/default/hostapd

e cerca la riga #DAEMON_CONF="".

Deve essere sostituita con DAEMON_CONF="/etc/hostapd/hostapd.conf".

mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
vi /etc/dnsmasq.conf

interface=wlan0 # Use interface wlan0
listen-address=172.24.1.1 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time

Una delle ultime cose che dobbiamo fare è di abilitare l’inoltro dei pacchetti.

Per fare questo apriamo il file sysctl.conf con sudo vi /etc/sysctl.con e togliamo il commento dall’inizio della riga che contiene net.ipv4.ip_forward=1.

L’operazione appena fatta diventa effettiva al prossimo riavvio della raspberry, ma è possibile attivare subito la modifica con:

sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

A questo punto facciamo un ultima operazione che ci consentirà di condividere la connessione internet della Raspberry Pi (attraverso la scheda di rete) con i dispositivi collegati tramite WiFi. Per farlo bisogna configurare un NAT tra l’interfaccia wlan0 e l’interfaccia eth0. Possiamo farlo utilizzando i seguenti comandi:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Questa ultima configurazione deve essere applicata tutte le volte che la Raspberry viene riavviata, quindi procediamo in questo modo. Prima di tutto ci salviamo le regole in un file:

sh -c "iptables-save > /etc/iptables.ipv4.nat

poi, per fare in modo che vengano applicate ad ogni reboot della Raspberry, ne aggiungiamo l’esecuzione nel file rc.local. Tale file, situato sotto /etc, viene eseguito ogni volta che la Rasp parte. Quindi, riassumento:

vi /etc/rc.local
al cui interno metteremo:

iptables-restore < /etc/iptables.ipv4.nat
IMPORTANTE: Se non vuoi che la Rasp si blocchi in fase di boot, ricorda di controllare che alla fine del file /etc/rc.local ci sia sempre l’istruzione exit 0 alla fine.

Reboot del rapberry

Pubblicato in Senza categoria | Lascia un commento