Strutturazione di Crypthat

Strutturazione di Crypthat

Oct 29, 2014. | Da: Jacopo Libè

Data la natura complessa di Crypthat i primi giorni di produzione del progetto sono stati dedicati alla definizione di una struttura precisa del progetto, utile a dividere il lavoro in parti più piccole e "stagne" permettendo così una maggiora collaborazione all'interno del team di sviluppo.


Il concetto di sviluppo per "Punti di Incontro" è stato adottato basandosi sul funzionamento della pila ISO/OSI dove ogni strato comunica con quelli adiacenti tramite dei SAP(Service Access Point) che permettono la libertà totale all'interno di ogni livello di astrazione ma allo stesso tempo garantiscono la funzionalità definendo, nel caso di Crypthat, metodi o eventi di accesso tra diversi livelli.

Crypthat sfrutterà inoltre il modello client/server per le connessioni.
Si è deciso quindi di creare 3 progetti distinti:

  • Crypthat_Server
  • Crpyhtat_Client
  • Crypthat_Common
    Così facendo le classi utilizzate solo dal client saranno nel progetto client, viceversa per il server, mentre invece le classi comune saranno localizzate nel progetto Common a cui faranno riferimento sia Client che Server.

    La struttura di Crypthat adoperata è visibile nella seguente immagine:

    Come è possibile notare dalle immagini, il progetto è composto da 4 parti principali:

    • L'interfaccia Grafica
    • Il gestore logi
    • Il gestore di connessione
    • Il set di classi per la crittografia

        L'insieme di questi classi comunicano tra di loro con alcune strutture dati (DataStructures.cs). La struttura dati più importante è l'Identity che memorizza informazioni su un utente provenienti da tutti i componenti del progetto, quindi dal Nome, alla SessionKey(una chiave che genera il server univoca per ogni client) alle informazioni sulla connessione come il Socket di provenienza o la porta Rs232 attribuita.

        Il gestore logico è il cuore del progetto. In questa classe sono inseriti i metodi che mettono in comunicazione l'interfaccia con la parte di connettività, formulando messaggi strutturati che possono essere interpretati dai vari Gestori Logici degli utenti connessi alla chat.
        Il gestore logico, inoltre, si occupa di attribuire un messaggio ad una Identity registrata nella lista degli utenti connessi e di verificarne l'identità.
        Dovendo svolgere lavori diversi tra Client e Server, gestore logico è derivato in GestoreLogicoServer e GestoreLogicoClient.

        Nel seguente codice è possibile vedere come un messaggio in arrivo dallo strato di connessione è interpretato dal GestoreLogico.

        Le classi di Cifratura, invece, contengono una serie di algoritmi comuni di cifratura che vengono utlizzati dal GestoreLogico, come RSA, AES e ASCII Art.
        In RSAManager è inoltre presente un servizio che si occupa del rinnovo delle chiavi pubbliche ogni N secondi.

        L'interfaccia grafica utilizza gli eventi del GestoreLogicoClient per mostrare all'utente lo stato della chat e per interagire con il GestoreLogico (ad esempio per l'invio di Messaggi).
        Il programma server non presenta alcuna interfaccia dato che deve essere performante e si occupa solamente di smistare i messaggi e gestire gli utenti connessi.

        Il livello più basso di Crypthat è composto dalle classi di gestione della connessione che grazie ad un livello astratto (ConnectionManager) permettono al progetto di comunicare con praticamente ogni tipologia di rete. Queste classi, inoltre, si occupano solo del trasferimento dei dati e non verificano identità o semantica dei messaggi.

Sottoscrizione

Sottoscriviti a questo Blog via RSS.

Categorie

Programmazione 2

Organizzazione 1

Connessioni 2

Interfaccia 1

Crittografia 3

Sito 1

Posts Recenti

Tags Popolari

Programmazione (2) Organizzazione (1) Connessioni (2) Interfaccia (1) Crittografia (3) Sito (1)

Chi Siamo

Il gruppo è stato formato per una serie di progetti scolastici di cui Crypthat è il primo. Sebbene le disuguaglianze interne cerca costantemente di rendere al meglio rispettando tempi e consegne previste.

Dove Siamo

ISII Marconi, via IV Novembre,
29122, Piacenza,
Italy.