Supponendo che sia la chiave che il messaggio abbiano una quantità ragionevole di entropia, quindi, come ha detto Steffen Ullrich, si riduce allo stesso livello di sicurezza di SHA-256 dell'input. (I valori non saranno gli stessi, ovviamente, ma sarà lo stesso livello di complessità da invertire).
Tuttavia, se la tua stringa è semplice come "ciao", allora un attacco del dizionario è abbastanza ragionevole. Qualsiasi operazione che utilizza solo input a bassa entropia è suscettibile di un simile attacco: basta inserire tutti i possibili valori di input e trovare quello la cui uscita corrisponde.
L'uso di HMAC SHA-256 nel modo in cui hai descritto non sembra offrire alcun vantaggio al di là di un semplice SHA-256. Si noti inoltre che gli hash e i MAC non sono "crittografati", si suppone che siano operazioni a senso unico indipendentemente dal fatto che si disponga o meno della chiave HMAC.