[Lista] Gestione Licenze [was: Il principio fu il gelato]

Alessandro Bottoni alessandro.bottoni a infinito.it
Gio 10 Ago 2006 19:16:52 CEST


Sono andato a studiarmi un po' di sistemi di catalogazione dei brani musicali
(CDDB, FreeDB, MusicBrainz...) e di questioni crittografiche (firme digitali e
pifferi analoghi).

Mi sembra di capire che non ci sia nulla di esistente che sia adatto ai nostri
scopi, così mi permetto di buttare giù una analisi iniziale di quello che
dovremmo/potremmo sviluppare.

Per capirci, poniamo il caso che Alex voglia rendere disponibili al pubblico
dominio i seguenti materiali:
- la partitura di un suo brano musicale, in formato PDF od in formato Sibelius,
Rosegarden, Finale, SCORE, MusicXML o quello che vi pare.
- la registrazione audio dello stesso brano, in formato MP3, wav, CD o quello
che vi pare.
- la registrazione video della esecuzione dello stesso brano, in formato MPEG4,
divX o quello che vi pare.
- un fingerprint digitale di un file audio o video, indipendente dal formato e
dalla risoluzione.
Questo per chiarire da subito che il sistema opera su file digitali e se ne
frega completamente del loro contenuto.

Alex vuole rendere disponibili questi materiali attraverso il web e certificare
 in modo sicuro le seguenti cose:
- che sono roba di sua proprietà
- che hanno il tipo di licenza X (a noi interessa una CopyZero X ma questo
meccanismo deve essere in grado di gestire qualunque tipo di licenza, pena una
rapida obsolescenza).

Dall'altra parte, Bob vuole fare le seguenti cose:
- collegarsi ad un sito web (non necessariamente il nostro) e scaricare della
musica "free"
- poter dimostrare che si tratta di musica free di fronte alla SIAE e di fronte
a sua madre (la seconda è più difficile)

Come si fa?

Alex deve agire in questo modo:
- si procura un identificativo digitale univoco per la sua identità (una firma
digitale che permetta di risalire a lui, come persona, in modo certo). Questo è
assolutamente necessario per poter risalire ad Alex in caso di contestazioni.
Questo ID lo potremmo anche generare noi ma credo che sia più opportuno lasciar
fare ad altri per non incorrere in casini con la legge sulla firma digitale.
- genera un ID univoco per ognuno dei file che vuole mettere a disposizione, ad
esempio un hash SHA-1 od un checksum MD5 (sui dettagli litighiamo con calma in
seguito)
- sceglie una licenza di suo gradimento tra quelle disponibili a CopyZero od a
CC. Di queste licenza deve ottenere un ID univoco (una URL non rimovibile,
l'hash del testo ASCII, quello che volete)
- per ogni file che vuole mettere a disposizione, crea un tar (comando Unix che
crea un singolo file partendo da più file, per i tossicondipendenti di windows)
contenente l'hash del file e l'hash/ID univoco della licenza.
- cifra con la sua chiave privata (via GPG, con RSA o quello che gli pare) il
tar e lo firma digitalmente
- ci spedisce il filettino risultante. Noi lo decrittiamo con la sua chiave
pubblica, in modo da assicurarci che provenga proprio da Alex e che non sia
stato alterato, e lo mettiamo a disposizione del pubblico su un server (sotto
forma di un record di database adatto all'uso).

Bob agisce in questo modo:
- cerca nel nostro server o nel server di qualcun altro il file musicale o
video che gli interessa.
- scarica il file
- genera (o legge) l'hash del file che ha scaricato e lo confronta con quelli
memorizzati sul nostro server
- in base all'hash, noi gli diciamo a chi appartiene il file (chi lo ha firmato
digitalmente) e quale licenza deve essere applicata ad esso.
- se ci sono contestazioni, Bob fa riferimento a noi e noi facciamo riferimento
ad Alex.

Si noti che il file musicale/video può risiedere dovunque (anche su BitTorrent).

Si noti anche che Alex può benissimo restare anonimo. Basta che non inserisca
le sue informazioni anagrafiche nel DB. Se necessario, sarà sempre possibile
risalire a lui attraverso l'ente che gli ha fornito la sua firma digitale (è lì
per quello).

Si noti infine che, nella misura in cui il file musicale/video/altro lo
permette, il tar con le info può anche essere accodato al file stesso.

Ovviamente, c'è da costruire il server (LAMP dovrebbe bastare) e... i client
(uno per piattaforma od uno per tutti in wxWidgets od in Java).

Cosa ve ne pare?

-- 
------------------------
Alessandro Bottoni


Maggiori informazioni sulla lista Lista