A Ovest Di Paperino

Welcome to the dark side.

  • A volte funziona

    Stanotte mi son svegliato alle 3 per bere un po' d'acqua. Il "ristorante" cinese di ieri e il gelato da coldstone mi causato un improvviso attacco di sete.

    Già che c'ero ho acceso il PC e ho cominciato a navigare: sono finito su un blog in cui si parlava di far girare MacOS su un PC con tanto di link ad una crew autrice del misfatto. Curioso come una scimmia ho cliccato ed il sito ha cercato di spararmi un JavaScript malefico intercettato da OneCare. OneCare si è incazzato, ha messo il file in quarantena dopodiché il PC si è inchiodato letteralmente al punto che ho dovuto spegnere di forza.

    Quando ho riacceso, curioso come una scimmia, sono andato su OneCare che nel frattempo mi diceva che la mia subscription è scaduta. Ho rinnovato la subscription giusto due mesi fa, qualcosa non va. Vado su http://billing.microsoft.com che oltre a dirmi che ho ancora 400 Microsoft Points da spendermi su XBOX Live mi conferma l'atroce verità:

    OneCare1

    salvo poi lasciarmi perplesso quando clicco sul link e leggo:

    OneCare2

    Contatto il supporto commerciale che mi dice che è un baco di cui loro sono a conoscenza e che verrà sistemato al più presto. Rassicurato mi faccio un giro di OneCare che mi dice che ci sono alcuni aggiornamenti importanti che vanno installati. Strano! Ci clicco e scopro che c'è un aggiornamento del driver del bluetooth, che mi pareva desse problemi, e tre aggiornamenti di sicurezza risalenti a 2 mesi fa che dopo innumerevoli tentativi non riescono a installarsi per via dell'errore 800B0100.

    Parto con il driver bluetooth, installo riavvio e ops:

    (prima)

    BT3 BT2

    (dopo)

    BT1

    Ovvero col driver aggiornato manca la voce per attivare e disattivare il dispositivo a volontà. SSR (Santo System Restore) mi viene in soccorso e rimette a posto il driver precedente. Evviva.

    Passo al problema degli aggiornamenti di sicurezza. Cercando in giro finisco su un forum in cui si consiglia di scaricare e installare gli aggiornamenti a mano. I primi due filano liscissimi come l'olio, il terzo invece:

    AVF

    Ravanando ancora in giro scopro di aver scaricato la versione sbagliata dell'aggiornamento, ma non ho assolutamente idea di cosa ci fosse di sbagliato visto che si trattava lo stesso di una versione x86. Scarico quella "giusta" e tutto fila a posto. Faccio un giro nell'event viewer prima di coricarmi e vi spulcio:

    LongTime 

    Neanche l'hardware è perfetto, occorre fare un salto su newegg e comprare un HD di rimpiazzo. Così facendo avrò modo di provare le funzionalità di ripristino di Windows Home Server prima di doverlo fare in condizioni di emergenza. Sono passate le quattro ed è ora di tornare sereni a letto soprattutto dopo aver lasciato un commento spiritoso (?) sul blog di Giovy.

    Morale della favola: a volte il software non funziona; la cosa non mi sorprende visto la complessità dei sistemi e tutte le variabili (bacate) in gioco; ma mi consola il fatto che solo qualche anno fa - senza System Restore, event log, Google e la rete - sarei semplicemente rimasto con un palmo di naso.

    -quack

    Technorati Tags:

  • Customer Service Americano

    Mentre sono felice come una cozza per l'operatività del server  il rumorino della ventola e le temperature inusuali mi turbano non poco.

    Ieri decido di testare il customer service di newegg chiedendo una ventola sostitutiva. Questo in sintesi i vari dialoghi:newegg_logo

    Paperino: Salve ho comprato un barebone che è fantastico ma la ventola è difettosa. Potrei avere una sostituzione?
    CustomerService1: Purtroppo non possiamo mandarle solo la ventola. Potremmo sostituirle il barebone...
    Paperino: eh ma mi toccherebbe smontare e perdere l'uso di un PC....
    CustomerService1: Faccia una cosa; ne ordini uno nuovo e chieda un rimborso per il vecchio
    Paperino: si ma spedire questo coso non è facile... una ventola proprio non si può?
    CustomerService1: Guardi le mandiamo un foglio di spedizione con affrancatura prepagata; oppure provi a contattare quelli di MSI e chieda a loro per la ventola

    chiamo MSI che mi collega ad un IVR sadico che per parlare con un operatore devi premere il tasto uno ogni 40 secondi pena il dirottamento in segreteria telefonica:

    Paperino: Salve ho una ventola difettosa, potrebbe sostituirla?
    CustomerService2: le mandiamo subito una nuova. Dovrebbe pagare solo le spese di spedizione...
    Paperino: e a quanto ammonterebbero?
    CustomerService2: 8$
    Paperino: (pensa: questi sono scemi; spedire una ventola costa la metà che spedire l'intero barebone) senta ma almeno mi manda anche l'heatsink? Così non rischio di rompere la filettatura inutilmente...
    CustomerService2: guardi la richiamo fra un'ora e le faccio sapere

    È passato un giorno ma da MSI nessuna telefonata. Penso che quasi quasi per una ventola, al max 3$, non c'è bisogno di fare tutto questo casino. Passo in negozio e noto che non c'è nessuna ventola simile e che quelle decenti costano dai 10$ in su. A questo punto è una questione di principio. Richatto con newegg:

    Paperino: Salve vorrei fare un RMA. Mi dice se mi restituite anche le spese di spedizione originali?
    CustomerService3: Purtroppo no, le restituiamo solo il prezzo della merce
    Paperino: Senta mi si sta rompendo la ventola. Possibile che debba venirmi a costare 15$ la sostituzione di qualcosa che ho comprato già difettoso?
    CustomerService3: Capisco. Guardi se lei ordina il nuovo barebone glielo spedisco gratis così non le viene a costare niente.
    Paperino: Allora procediamo...
    CustomerService3: il numero di RMA è XYZABC
    Paperino: Il numero di ordine è ABCZYX
    CustomerService3: perfetto, le ho cancellato le spese di spedizione. Vedrà la situazione aggiornata entro 10 minuti. Buona giornata!

    Tutto è bene quel che finisce (?) bene. E al diavolo quelli di MSI.

    -quack

  • Software vs Hardware

    Alla fine è arrivato e come Enrico me lo son quasi andato a cercare (due upgrade di scheda madre e processore senza reinstallare l'OS). Ma il mio era speciale, un BSOD in serie e pilotabile a comando: ed il mio olfatto da papero mi diceva che stavolta non poteva essere hardware ma doveva essere software.

    Questi gli indizi degni da quiz da Settimana Enigmistica (quelli che di solito vanno sotto il titolo di Suspence!).

    1. Ha cominciato a manifestarsi randomicamente quando Beppe si connetteva via remote desktop alla workstation
    2. Ha cominciato a manifestarsi randomicamente quando, dopo aver registrato la mia impronta digitale, anche io mi connettevo alla workstation
    3. Abbiamo scoperto che per farlo manifestare a comando bastava connettersi alla workstation in remoto e lanciare il memory diagnostic tool di Vista, tra l'altro anche abbastanza carino
    4. La workstation come già detto precedentemente è dotata di 3GB di RAM: 2 sono DDR2 5300, il rimanente terzo DDR2 6400; il memory diagnostic ha però riportato che la memoria era OK

    A questo punto memore di lezioni di vita dal passato sintetizzabili nelle due pseudoequazioni:

    randomico ≈ hardware
    sistematico ≈ software

    ho cominciato ad indagare. Ho rimosso il software del fingerprint reader ma il problema continuava a manifestarsi. A questo punto la colpa è ricaduta immediatamente sul driver della scheda di rete. Non sono neanche rimasto sorpreso più di tanto quando, cliccando il pulsante maggico Upgrade Driver, Vista mi ha confermato che un nuovo driver fosse disponibile. Installazione, riavvio (necessario solo perché il router - ormai l'ultimo baluardo Linux in casa mia - si rifiuta di assegnare indirizzi IP come dovrebbe!) e puff! problema scomparso. Un altro caso è chiuso, come direbbe Russinovich, l'indice di reliability è nel frattempo sceso in cantina e pertanto mi consolo con una hot chocolate prima che di BSOD ne arrivi un altro:

    MyBSOD

    -quack

    Technorati Tags:

  • They are alive

    Desktop: Alive1

    Server: Alive2

    logono

    Alla fine Venerdì ho tirato un morso al proiettile, espressione americana equivalente all'italiana "'ingoiare il rospo" ma forse più gustosa, e mi sono definitivamente deciso ad assemblare le seguenti configurazioni:

    Upgrade del desktop
    Core 2 Quad Q6600 (con virtualizzazione!) e terzo GB di RAM. Ora con 4 macchine virtuali ciascuna col suo core e i sui 512MB di RAM potrei giocare a Catan da solo. Big Smile Prossimo upgrade fra 2 anni.

    Windows Home Server
    Pentium D 820
    1 GB RAM
    HD Seagate Sata 320GB
    HD Seagate EIDE 400GB
    Barebone MSI Hetis 900

    Tutto è filato quasi liscio: avrei pensato che sostituendo scheda madre, processore, memoria e tutto l'hardware correlato Vista non sarebbe riuscito neanche a fare il boot in modalità non-provvisoria. Ma non solo il sistema si è avviato ma ha configurato tutto il configurabile in pochi minuti e senza nessun intervento esterno a parte il cambio di risoluzione. L'unico piccolo batticuore c'è stato quando ad un certo punto il desktop non riusciva ad ibernarsi ma il mistero è stato risolto da Beppe ad ulteriore conferma che se l'ibernazione non funziona la colpa è solo dell'OS che in questo caso non riusciva a leggere un file di configurazione; ora l'unico intoppo rimasto è la ventola del server: rumorosa per via di un cuscinetto rotto al punto da doverla sostituire e CPU che gira a temperature un po' sospette (~57°C). Se mi scappa un po' di pazienza provo a spalmare un altro po' di pasta termica, ma che rottura visto per questi lavorini di precisione non ci sono per niente portato. E pensare che 40° mi sembravano all'inizio un po' troppi. Comunque, il server è stato complicato da assemblare per via del form factor del case, ma molto facile da configurare. I permessi sui folder di default sono semplicissimi come pure la folder replication attivabile per ogni singolo folder: l'ho subito attivata per foto, video e musica. Nei prossimi giorni si tratterà di fare il backup tombale dei PC in casa, vendere un po' di hardware avanzato, migrare i file condivisi dai vari PC sul server e cominciare a dormire sonni tranquilli; they are alive e windows home server è il mio gadget dell'anno. E TGIsS.

    -quack

  • Sparalink #6 a tema

    Versus - ovvero recensioni e confronti scriteriati (*) in ordine sparsoVERSUS

    In ciascuno di questi link sono sepolte perle di "obiettività" senza paragoni. Sfida per i lettori: elencare le migliori.

    Windows Thinking

    It just works?

    Da quest'ultimo link cito solo un pezzo molto bello:

    I have to admit, though, all this complaining about the brand promise of the Mac does make me laugh to a certain degree. Have you people ever seen a commercial before?

    Qualcuno potrebbe spiegare a Scott Granneman, l'autore dei primi due confronti, che la pubblicità in generale e quella Apple in particolare non può essere usata come fonte attendibile di informazione? Grazie! Smile

    -quack

    (*) scriteriato = scegli un vincitore e poi in base a quello scegli cosa confrontare.

    Technorati Tags:

  • SSS statistiche senza senso

    Numero di mesi per conoscere i primi baresi a Seattle: 110

    Numero di baresi conosciuti nell'ultimo mese: 4

    Numero di baresi conosciuti al party di Riccardo ieri sera: 2 (un record: mmo' e che cosa!!)

    Numero di commenti nel momento in cui scrivo: 2177

    Numero di post nel momento in cui scrivo: 500

    Eppoi qualcuno non crede nei processi di Poisson!! Smile

    -quack

  • Migrazioni - i problemi

    Un grande saggio un giorno disse che migrare dati da una qualsiasi stazione di partenza ad una qualsiasi stazione di destinazione è sempre un'operazione che lascia ferite difficilmente rimarginabili. Nello specifico, migrare un blog, è un'impresa che definire ardua significa minimizzare per la presenza di tanti ingredienti. Circoscrivendo il tutto allo stack ASP/ASP.Net sMigrazionei potrebbe sintetizzare in

    1. La fine del XCOPY deployment
      Fino a qualche anno fa ASP imperava ed i siti a "basso traffico" usavano il mitico Access Jet Engine come backend. Questo permetteva di "installare" un sito web semplicemente copiando dei file via FTP. Purtroppo il mitico Jet Engine è stato mandato in pensione e pare una versione a 64bit non ne vedrà mai la luce
    2. 64bit e medium trust
      Alcuni host supportano solo 64bit e la quasi totalità di chi offre hosting per ASP.Net forza l'uso della medium trust (e fanno bene!).

    Per ovviare a tutto ciò ovviamente si può scegliere di sostituire Access con qualcosa altro oppure passare ad una piattaforma che fa uso di un backend vero e proprio: il secondo tipo di soluzione però non permette di spostare facilmente i contenuti da un host all'altro.

    Infine la classica ciliegina sulla torta: purtroppo le piattaforme di blogging ancora non sono "standardizzate" al punto da permettere una migrazione indolore da una piattaforma ad un'altra. Un paio di formati sono stati proposti (BlogML o Wordpress XML) ma ahimé non funzionano bene o sono incompleti. Laddove lo fossero ci si metterebbe di mezzo il formato dell'URL: ogni piattaforma ha il suo tipo di URL e una migrazione trasformerebbe i permalink in odiosi tempalink.

    Nel frattempo ho trovato tantissime informazioni interessanti che sto valutando: i risultati spero di pubblicarli in un prossimo post intitolato "Migrazioni - le soluzioni" Smile

    -quack

  • Addii

    Davide ha impacchettato le sue ultime cose per andare in Cina a tempo indeterminato.

    Riccardo torna in Italia.

    Comcast - la stessa azienda che blocca alcune tipologie di traffico sulla loro rete internet - comunicava nove giorni fa che sei giorni fa avrebbero "spento" RAI International, tanto alcune partite le danno sul canale spagnolo; l'ha fatto davvero.

    Intanto Paolo VI non c'è più, è morto Berlinguer, ecc. [cit.]

    Se non fosse per Michele e Alessandra, arrivati da poco, mi verrebbe da chiedere:

    Ragazzi, mi vorrete mica lasciare qui da solo? [cit.]

    -quack

  • Privacy e segreti di Pulcinella

    Leggevo il post di Casper dedicato al Windows Feedback Program, un software a scelta per i tuoi click di usabilità:

    Gelosi come siamo dei nostri segreti di Pulcinella, preferiamo che a Redmond continuino ad arrovellarsi il cervello su come vorremmo che il sistema operativo fosse impostato, piuttosto che dirglielo a chiare lettere pulcinella e goderci i risultati.

    Mi chiedevo: vuoi scommettere che tra la stessa gente che (giustamente!) si chiede dove vanno a finire certi dati di poco valore c'è  più di qualcuno che usa la toolbar di Google integrata con FireFox per le ricerche, prende appunti importanti - magari anche qualche password - con Google Notebook, usa Google Apps per tenere la contabilità spicciola e dulcis in fundo ha un indirizzo at-gmail-dot-com?

    Perché sarebbe un paradosso... ed i paradossi mi affascinano; come ad esempio chiedere, ad un convegno sulla sicurezza, quante donne(*) hanno le chiavi di casa ed un documento di identità nella stessa borsetta.

    P.S. Da slashdot mi sarei aspettato un trattamento ben peggiore. Non si finisce mai di stupirsi

    -quack

    (*) non perché le donne siano meno security-aware degli uomini, ma perché gli uomini comunemente non usano borsette; altrimenti sarebbe peggio!

  • Senza Parole #2

    kamasutra

    (credo che il titolo in russo significhi Kamasutra del 21° secolo)

    -quack

  • Virtualismi

    Core2Duo A casa mia è arrivato finalmente l'agognato momento di passare a Windows Home Server. La mia idea è quella di costruirmi un server from the scratch mettendo insieme un po' di componenti che tra un upgrade e l'altro avevo accumulato.

    L'ultimo upgrade in ordine di tempo è stato un combo Intel Core 2 Duo E4500 + scheda madre per pochi spiccioli al posto dell'esistente Pentium D820 e avere finalmente la virtualizzazione hardware anche sul desktop. Ed invece...

    ...a guardare questa tabella si scopre che non tutti i Core 2 Duo supportano la virtualizzazione. All'inizio - dando un'occhiata ai risultati di questo tool - pensavo fosse solo un problema di BIOS. In realtà per quanto riguarda la virtualizzazione su Core 2 Duo ci vuole almeno un E6xxx. Porca paletta. Così tocca restituire il combo e passare ad uno un po' più evoluto. Per gli scettici questa pagina racconta il guadagno che si ottiene attivandola nelle macchine virtuali: a dare un'occhiata fugace ai numeri si tratterebbe di almeno il 25%. Mica poco.

    A fine assemblaggio seguirà un rapporto dettagliato sulla configurazione del server.

    -quack

    Technorati tags:

  • Every build you break

  • Sparalink #5

    -quack

  • Your money back

    Una mail che ho ricevuto qualche giorno fa riguardo XYZ mi ha lasciato un po' perplesso. XYZ è un "prodotto" di cui ho avuto a lamentarmi nel gennaio 2007 (il motivo per cui non lo nomino sarà chiaro fra breve) e nella mail, un po' come altrove su questo blog, mi si diceva money che:

    • i problemi di XYZ si fermano a casa mia (nel senso che me li sono inventati)
    • XYZ è un prodotto immaturo e per fare quello che voglio veramente dovrei usare ZYX, adducendo l'ipotesi che usassi XYZ per parlare male in realtà di tutti prodotti di "marca" ABC incluso ZYX che è "perfetto" Indifferent

    Le due affermazioni sono in palese contraddizione, ma la conclusione della mail è stupefacente: "se ABC ti fa schifo non ne parlare sul tuo blog". Al che mi è venuta in mente la risposta di Roy a dei commenti sul suo blog:

    My apologies. Please let me know what you'd like me to write about next. In fact, it would be great if you could also send me the full text of the post you'd like me to write.

    You are free to get your money back if this blog has not lived to its SLA.

    In realtà qualcuno ha osservato, checché se ne dica, che questo tipo di "aggressività" è molto tipica di alcune "comunità dalle scapole ampie che pensano solo a risolvere i problemi". Lo ha fatto Cesare Lamanna in questo post illuminante che a sua volta cita un altro post di Rob Enderle di cui già avevo parlato in passato. 

    Rob Enderle aggiunge che "The Register" teorizza l'esistenza di uno strike team che si abbatte, con aggressività inaudita, contro chiunque critichi il verbo ABC:

    According to The Register, there is actually some kind of a strike team that comes after me every time I say something positive on CBA or negative on ABC. And I’m not alone: Laura DiDio at Yankee gets sexual harassed, and Dan Lyons over at Forbes is attacked regularly, although he does have supporters as well.

    Può darsi che parlare di strike team sia esagerato ma il log dei referrals mi ha confermato che c'è davvero gente, che immagino oltre ad avere scarso sense of humor abbia davvero poco di interessante da fare nel tempo libero[1], che spende tempo cercando su google "ABC fa schifo" per poi lasciare commenti impietosi alla stregua della mail all'origine di questa mia assurda pippa mentale. Cesare conclude il suo post citando la frase di Rob:

    How can anything be “Open” if honest discussion isn’t allowed?

    Io ci metto del mio:

    How can anybody appreciate "free products" (as in free speech) if free speech about them isn't allowed?

    Di nuovo il tutto sembrerebbe ridursi ad una contraddizione. Ma da una contraddizione si può ottenere tutto (ex falso quod libet). Fanatismo incluso. Mi sbaglio?

    -quack

    Technorati Tags:

    [1] avrei una mia teoria al riguardo sul perché

  • Come funziona il secure boot

    Nell'ultimo post dedicato al trusted computing mi ero ripromesso di spiegare come funziona praticamente un dispositivo TPM.

    L'architettura tipica di un dispositivo TPM 1.2 come quello di Infineon è descritta dalla seguente figura:

    TPMArchitecture (fonte)

    Come si può vedere un chip TPM fornisce diverse svariate funzionalità: è infatti possibile ad esempio di usare il TPM come generatore di numeri casuali (RNG), oppure come memoria (limitata) non volatile, ecc. Ogni funzionalità può essere usata in maniera più o meno indipendente dalle altre.

    Per quanto riguarda il secure boot la funzionalità associata è quella dei platform configuration register (PCR). Ogni TPM viene fornito con un numero svariato di PCR: le specifiche richiedono che ne siano forniti almeno 24, i primi sedici dei quali (PCR0-PCR15) devono essere non resettabili. Per semplificare d'ora in poi mi riferirò con il termine PCR ai PCR non resettabili. Un PCR è un registro schermato e come tale protetto da interferenze e occhi indiscreti. Il PCR permette solo due tipi di operazioni 'semplici': lettura ed estensione.

    • la lettura restituisce al chiamante il valore contenuto nel PCR
    • l'estensione prende come input un valore di 160 bit e scrive nel PCR l'hash (comunemente si usa SHA-1 e quindi i PCR stessi sono grandi 160 bit) della concatenazione tra il valore del PCR e il valore in ingresso. In parole povere esegue la seguente operazione:
      PCR = SHA-1(PCR && input-value)
      il valore in ingresso rappresenta l'evento che si va a "misurare". Non è possibile sovrascrivere direttamente il valore dei vari PCR

    Le specifiche del TCG per PC definiscono anche l'uso che si va a fare di ogni PCR:

    PCR Uso
    0 CRTM, BIOS and Platform Extensions
    1 Platform Configuration
    2 Option ROM Code
    3 Option ROM Configuration and Data
    4 IPL Code (MBR)
    5 IPL Code Configuration and Data
    6 State Transition and Wake Events
    7 Reserved for future usage

    e cioé per esempio nel PCR4 sarà caricato il valore finale di tutte le misurazioni del MBR (nella maggior parte dei casi una sola).

    Altra nota importante: durante l'accensione tutti i PCR vengono resettati (e cioé conterranno 0).

    Per comprendere come funziona il secure boot, bisogna introdurre un altro elemento della piattaforma, il Core Root of Trust Module (CRTM). Per banalizzare il concetto, il CRTM è il pezzo di codice IMMUTABILE che su una piattaforma TC viene eseguito per primo e che si occuperà di misurare se stesso ed il BIOS per poi passarvi il controllo. Questo avviene con il seguente pseudocodice:

    Extend( PCR0, SHA1 (CRTM))
    Extend( PCR0, SHA1 (BIOS))

    Dopo di che il controllo viene passato al "BIOS" che procederà alla misurazione degli altri componenti (opzioni del BIOS, MBR, ecc.) e alle normali operazioni di boot. La fase di esecuzione del CRTM e del BIOS, che termina con il passaggio del controllo al MBR, è sempre la stessa e l'unico elemento variabile in gioco è il contenuto finale dei valori dei PCR. Questo significa che il codice contenuto nel MBR verrà eseguito comunque e sarà compito di tale codice prendere in considerazione o meno quanto registrato nei PCR.

    A questo punto dovrebbe essere chiaro come funziona il secure boot, almeno in linee generali: si installa un SO che supporta il secure boot su una macchina da zero, il sistema operativo "prende nota" dei valori del PCR considerati da questo interessanti dopodiché se i valori non coincidono vuol dire che qualcosa è cambiato e sta al sistema operativo decidere come notificare l'utente e cosa fare.

    I più curiosi invece si chiederanno come è possibile memorizzare tali valori da qualche parte senza che il malintenzionato di turno possa sostituirli e vanificare la protezione offerta dal secure boot. La piattaforma viene in aiuto degli sviluppatori di OS con due API simmetriche, TPM_Seal e TPM_Unseal. La prima prende in input una bitmask (rappresentante i PCR da usare) e un array di byte: l'array viene criptato e "firmato" usando come chiave i valori dei PCR specificati nella bitmask. La seconda fa esattamente l'opposto ma in più restituisce errore se i valori dei PCR, usati per firmare, non coincidono. Il compito del sistema operativo, una volta effettuato il primo boot, è quello di sigillare dei dati (volendo anche casuali) e memorizzarne il risultato sul disco. Nei boot successivi, se si riesce a desigillare il file, vuol dire che il sistema è integro altrimenti qualcosa è cambiato.

    La sequenza di misurazioni/esecuzioni è rappresentata da questa figura:

    ChainTrust (fonte)

    dove in cima alla chain of trust c'è il CRTM. Il CRTM quindi, insieme al chip TPM, è di fondamentale importanza per l'integrità di una trusted computing platform. Un sistema che rispetta le specifiche TCG deve garantire una protezione "assoluta" contro attacchi software contro il TPM e CRTM. Per quanto riguarda la protezione da eventuali attacchi hardware cito da Trusted Computing Platforms:

    The TCPA specification requires a limited but specified amount of physical protection for the TPM and CRTM. This reflects reality. In many cases it is impractical to provide a high level of physical protection, and in any case, it is impossible to provide absolute physical protection. If someone wants to physically interfere with a TPM and CRTM, they can (given enough time and money), and there is nothing that can be done to stop them.

    Nella maggior parte dei sistemi TCP odierni (come il mio Vaio di lavoro) il CRTM è memorizzato in una parte non modificabile via software del BIOS. Le specifiche prevedono che - laddove il CRTM sia in qualche modo aggiornabile - possa essere aggiornato solo dal vendor del sistema (nel mio caso Sony). Le specifiche tuttavia non prescrivono in nessuna maniera come e dove implementare il CRTM, infatti in questo paper viene preso in considerazione un approccio diverso e proposta una soluzione con il CRTM embedded nello stesso TPM su cui non esprimo nessun parere personale. Nel prossimo post ho intenzione di entrare nei dettagli implementativi della funzionalità bitlocker di Vista che fa uso del TPM laddove presente.

    Linko-bibliografia:

    Trusted Computing Platforms
    TCG Architecture Overview
    TCG specifications for PC
    How To Build Hardware Support For Secure Startup
    A New Approach of TPM Construction Based on J2810
    Trusted Computing for Linux
    TCPA Misinformation Rebuttal
    Trusted Computing Platform
    The CRTM and authenticated boot process

    -enjoy

    Technorati tags: ,

  • La mia vita lavorativa con Outlook

    Giovy chiede: quante e-mail ricevete al giorno?

    Questa è la statistica di ieri, lunedì, giorno piuttosto "moggio": 287Items  Di queste ben 165 risultano ad oggi non lette e probabilmente non saranno mai lette. Questo secondo numero è meno preoccupante di quello delle email importanti lette ma dimenticate, soprattutto se si aggiunge la mia carenza cronica di disciplina.

    Eppure Outlook, che è molto di più di un client di posta elettronico arrivando a scandire l'andamento delle giornate lavorative del campus, ha tutti i mezzi tra search folders, plugins, rules, flags e compagnia bella per venirmi incontro. Ciononostante ogni sera vado a casa con il senso di colpa per qualcosa d'importante sfuggito tra i meandri della mia memoria. Ieri è successo davvero:

    revoked

    e così oggi sto fermo un giro di lancetta di minuti e mi metto qui a scrivere cosa non si deve fare e cosa vorrei fare meglio, riassunto nel consiglio di due libri fichissimi tra il predicare bene e il razzolare male:

    1. Getting things done conosciuto ormai con l'acronimo GTD
    2. Never check E-mail in the morning

    Interessante la combinazione GTD + outlook che si può ottenere integrando ClearContext. Sto pensandoci davvero di farmelo finanziare in questi giorni di e-mail perdute.

    Tornando alla questione originale: sul lavoro la mail e i meetings li ricevo realtime. Purtroppo molto spesso ad essere processate realtime sono le cazzate, a finire in coda dimenticatoio sono le cose importanti. L'email personale non la controllo quasi mai sul lavoro, tranne quella collegata al messenger solo perché "fa rumore"; a casa - per fortuna - ne ricevo così poca che il processing è quasi sempre immediato nonostante usi ormai 5 account diversi. Il "quasi" mi salva da eventuali reclami in commento a questo post! Smile

    -quack

    Technorati Tags: ,

  • Predicatori di Sofia

    Il quartiere 'storico' di Pioneer Square è uno dei pulpiti improvvisati preferiti dai predicatori ambulanti. Tra questi uno dei più eclettici ha deciso di tappezzare qualche parete della città con una foto di Sofia Loren:

    Sofia

    per predicare e ricordare al mondo la sua bellezza.

    La teoria della long tail è applicabile anche alle religioni.

    -quack

    Technorati tags:

  • Time Machine vs Windows Backup

    windowsbackup vs Leopardtime

    Questi giorni mi son ritrovato a leggere per caso un paio di post che ringuardano le funzionalità di backup di Vista e di Leopard. Siccome la questione mi riguarda da vicino (per colpa del mio NAS non ho ancora fatto un backup completo dei miei PC visto che il famoso NAS in questione non supporta file più grandi di 2GB) ed incuriosito da una domanda di FDG che chiedeva conferma sul fatto o meno che Time Machine faccia di più di Vista, ho deciso di raccogliere quanto finora trovato in giro e pubblicare questo post con delle conclusioni personali.

    • Guida completa alle tecnologie di backup di Windows Vista. La pagina spiega tutto quello che c'è da spiegare sulle varie funzionalità di backup di Vista e come interagiscono tra loro.
    • Descrizione del funzionamento Time Machine da parte di Ars Technica. Purtroppo è un link di "terze parti" ma mi sembra tecnicamente ineccepibile. Sul sito ufficiale di Apple ho trovato solo questo scarno link. Se qualcuno ha di meglio da linkare mi faccia sapere e aggiorno subito.
    • Infine qualcosa di più frivolo sull'origine - per me "dubbia" - del nome Time Machine. In Windows Server 2003 il nome in codice per le "Previous Versions" era timewarp come conferma questo post del solito Raymond Chen datato Settembre 2005; come dice Benigni, si fa per scherzare!

    Riassumo brevemente quali mi sembrano i vantaggi della soluzione Windows ordinati in base ad un mio personalissimo criterio di importanza:

    1. La funzionalità di base, quella relativa alle Previous Versions, non richiede un supporto esterno per essere disponibile
    2. Il backup differenziale di Windows è a livello di "blocco" anziché di file; questo riduce enormemente la quantità di tempo e di spazio necessaria per i backup differenziali, soprattutto in presenza di file enormi come possono essere i vari hard disk virtuali
    3. il backup di Windows usa formati standard come file zip per la modalità file-backup e vhd per la modalità full-pc che possono quindi essere salvati su qualsiasi supporto (DVD, hard-disk esterno, NAS, WHS, ecc.)
    4. è possibile il ripristino di un backup completo senza sistema operativo tramite il windows recovery environment

    Invece questi mi sembrano i vantaggi della soluzione Apple:

    1. Il restore avviene, dal punto di vista dell'interfaccia, a livello applicativo laddove l'applicazione supporta Time Machine; immagino, ma non voglio fare il Gutmann della situazione, che per essere compatibile con Time Machine l'applicazione debba "registrarsi" in qualche modo
    2. La UI di ripristino, proprio per quanto riguarda il punto precedente, è davvero semplice; non mi riferisco agli effetti speciali, che dopo un paio di ripristini diventerebbero una scocciatura, ma ai comodi pulsanti e alla comoda time line.

    Voglio infine far notare che alcune feature del backup di Vista sono disponibili solo nelle edizioni più avanzate (Premium, Business e Ultimate) ma che sono disponibili anche su tutte le altre - incluse versioni precedenti come XP - con il client di Windows Home Server (che è molto simile, se non identico, alle funzionalità di backup completo di Vista).

    Riassunto: ho l'impressione che guardando le feature in modo più o meno soggettivo a fare molto di più sia il sistema di backup incluso in Windows Vista; io odio gli hard-disk esterni e adoro la possibilità data dalle Previous Version anche in assenza di backup mentre non ho bisogno di una interfaccia a prova di idiota per fare ripristino, quindi almeno sulla carta i vantaggi della soluzione Windows sembrerebbero superiori. Anche Oliver Rist sulla questione backup sembrerebbe sarcasticamente concordare con me dalle pagine di PC Magazine:

    So why doesn't Time Machine do block-level backups? I have no idea. Apple controls the file system. It controls the backup application. Generally, that's all you need. Maybe Apple couldn't spare the programmers working on the hugely important Star Wars core animation splash-screen project.

    Altre esigenze potrebbero però portare a preferire Time Machine.

    -quack

    Technorati tags: , ,

  • Sparalink #4

    • Quelli "sicuri": cosa si ottiene combinando quelli del browser più sicuro al mondo insieme allegriaa quelli con la security in mind sin dal primo giorno? Si ottiene l'unico browser al mondo vulnerabile al baco di QuickTime . Come direbbe Mike Buongiorno: allegria!
    • Bachi conosciuti: un giorno racconterò la storia del baco internamente più famoso del Framework 1.1; nel frattempo mi consolo con il fatto che "qualcuno" rilascia un update software pur sapendo che potrebbe rendere un sistema in-operativo; quando l'unica soluzione è cancellare tutti i dati senza neanche "spostarli"
    • I migliori clienti di Vista? indovinate su cosa gira usa il 10% delle copie retail di Vista (secondo qualcuno circa 2,4 utenti visto che in tutto sono state vendute 2 dozzine di copie)? Lo dice Joe Wilcox. In tutta onestà non so se sia un bene o un male. Smile
    • È uscito Visual Studio 2008 già da una settimana. La feature più interessante del C# 3.0? Linq, ancora meglio Linq2SQL degno erede di ObjectSpaces. Scott Guthrie parla nel suo blog di come una LINQ diventa SQL.

    -Allegriaaaaaaaaaah!

  • Metodi dinamici di delegazione

    Questi giorni sto giochicchiando con i DynamicMethod di .Net e ho pensato di condividere. Lo scopo di tali classi - conosciute anche come lightweight code generation - è di generare codice IL (il P-code di .Net) dinamicamente. Accoppiandoli con i metodi delegate (puntatori a funzione) si possono fare cose veramente interessanti. Gli esempi che seguono sono alquanto banali (il classico "Hello World"), ma con la LCG si possono fare cose moooolto deliziose: esempio 1, esempio 2.

    Altrettanto interessante è il funzionamento della Virtual Machine stack based di .Net: il set di istruzioni è documentato qui ma se si vuole giocare seriamente a questo tipo di giochi pericolosissimi (roba impossibile da debuggare capace di creare codice a fungo atomico in men che non si dica) consiglio _IL_ testo di riferimento che è "Compiling for the .Net Language Runtime" il cui unico neo è quello di essere basato sulla CLR 1.0 (niente template e altre corbellerie "moderne"). Volendo, la via più breve per capire l'IL da generare, è l'uso "a posteriori" di reflector.

    Ed ora gli esempi, giusto per stimolare l'appetito:

    using System;
    using System.Reflection;
    using System.Reflection.Emit;
    
    public class TestClass
    {
        string message;
        public delegate void TestMethod();
        TestMethod myTestMethod;
    
        public TestMethod MyTestMethod
        {
            get { return myTestMethod; }
        }
    
        public TestClass(string aMessage)
        {
            this.message = aMessage;
        }
    
        public void RealTestMethod()
        {
            Console.WriteLine(this.message);
        }
    
        public void CreateMethod()
        {
            /*
             * this is equivalent to:
             * Console.WriteLine("Hello world!");
             * there is no access to object members 
             * so the method can be declared as 'static'
             * 
             */
              
            // declare the method signature as void HelloWorld()
            //
            DynamicMethod dm = 
                new DynamicMethod("HelloWorld",  // name of the method
                typeof(void),           // return type
                new Type[] { },         // input types
                typeof(TestClass)); // class to 'attach the method to
            ILGenerator il = dm.GetILGenerator();
    
            // create a constanst string using the 
            // message and put it on the stack
            il.Emit(OpCodes.Ldstr, this.message);
    
            // invoke Console.WriteLine(string)
            // since it's a static method it only 
            // requires a string (the one on the stack)
            il.Emit(OpCodes.Call, 
                typeof(Console).GetMethod("WriteLine", 
                new Type[] { typeof(string) }));
    
            // return
            il.Emit(OpCodes.Ret);
    
            // create a delegate
            this.myTestMethod = 
                (TestMethod) dm.CreateDelegate(
                typeof(TestMethod)
                );
        }
    
    
        public void CreateMethod2()
        {
            /*
             * this is equivalent to:
             * Console.WriteLine(this.message);
             * there is access to object members 
             * so the method cannot be declared as 'static'
             * 
             */
    
            // declare the method signature as 
            // void HelloWorld(TestClass implicitThis)
            // it will be mapped to 
            // TestClass.HelloWorld() as instance method
            //
            DynamicMethod dm = new DynamicMethod(
                "HelloWorld",                      // name of the method
                typeof(void),                      // return type
                new Type[] { typeof(TestClass) },  // input types
                typeof(TestClass));     // class to 'attach' the method to
            ILGenerator il = dm.GetILGenerator();
    
            // puts the arg_o (this) on the stack
            il.Emit(OpCodes.Ldarg_0);
    
            // puts (POP)->message on the stack
            il.Emit(OpCodes.Ldfld, typeof(TestClass).GetField("message", 
                BindingFlags.NonPublic | BindingFlags.Instance));
    
            // invoke Console.WriteLine(string)
            // since it's a static method it only 
            // requires a string (the one on the stack)
            il.Emit(OpCodes.Call, 
                typeof(Console).GetMethod(
                    "WriteLine", new Type[] { typeof(string) }
                    )
                );
    
            // return
            il.Emit(OpCodes.Ret);
    
            // create a delegate
            this.myTestMethod = 
                (TestMethod)dm.CreateDelegate(typeof(TestMethod), this);
        }
    }
    
    
    public class HelloWorld
    {
     
        public static void Main(string[] args)
        {
            TestClass myTestClass = new TestClass("Hello World!");
            myTestClass.CreateMethod();
            myTestClass.MyTestMethod();
    
            myTestClass.CreateMethod2();
            myTestClass.MyTestMethod();
        }
    
    }
    

    -quack