Crypto le mie variabili all'interno dello smart contract, la chiave privata la tengo io, andrebbe quindi salvata "off chain". Il punto critico qua sarei io (in caso di minacce/corruzione potrei dare la chiave privata).
in pratica c'è questo per fare quello che vuoi https://ipfs.io/, però devi avere un server dove farlo girare è un altra cosa che ho nella lista "da guardare"
Considera che in questo caso, partendo dai dati della transazione(input data qui ad esempio) è possibile risalire al contenuto della variabile pass, quindi la seguente operazione non è sicura:
function setPass(string pass) {
uint pass_cryptata = uint(keccak256(pass));
...
}