Non dovresti ancora distribuire il software basato su Skein.
Internamente, Skein è costruito attorno a un codice a blocchi personalizzato (Threefish) che può essere usato come un codice di flusso o un MAC, ma nessuno sta ancora guardando la sicurezza intrinseca di Threefish, ma solo come fornisce una buona funzione di hash e anche per quell'uso, il verdetto non è stato ancora raggiunto. Occorrono anni di controllo per decidere che un dato algoritmo "sembra decentemente sicuro". Un primitivo one-size-fits-all ha un enorme appeal, specialmente per i sistemi embedded con spazio limitato per il codice, ma ci vorranno ancora alcuni anni prima che si possa considerare ufficialmente Threefish come sicuro. In parole povere, se Skein viene scelto come SHA-3 (entro la fine del 2012), allora è probabile che Threefish inizi a essere investigato come una primitiva di crittografia, in nel qual caso potrebbe essere dichiarato come "sembra buono" entro, diciamo, 2016. Dovrai essere paziente.
Un altro motivo per cui dovresti aspettare un po 'è che Skein e / o Threefish potrebbero ancora essere soggetti a modifiche. A intervalli regolari, i candidati SHA-3 possono essere "ottimizzati" (piccole modifiche progettate alla luce dell'analisi precedente). Skein è stato ottimizzato per il secondo turno della competizione SHA-3, quindi ottimizzato per il terzo round. Quale versione è implementata in pyskein? C'è spazio per gli incubi di interoperabilità qui.
Come per le altre tue domande:
- Skein / Threefish non incorpora alcun allungamento automatico dei tasti
- Skein come codice di flusso è un codice di flusso, non un codice di flusso autenticato . Fa solo la crittografia. La matassa può anche essere usata per calcolare l'autenticazione (come un MAC) ma ci possono essere problemi da prendere in considerazione se si desidera utilizzare la stessa chiave per entrambi gli usi (cioè non farlo se non si è sicuro che sia sicuro, e francamente non ne sono sicuro)
- Il "nonce" dovrebbe essere una stringa arbitraria, non molto limitata. Nella descrizione generale di Skein, il nonce e il messaggio di hash (quando si esegue l'hashing) usano gli stessi meccanismi di input. La matassa come codice di flusso è "solo" una funzione di hash con un tasto, nessun input, ma un output molto lungo.
Naturalmente, pyskein potrebbe aggiungere limitazioni arbitrarie, quindi ti rimando alla documentazione di pyskein, se esiste.