I've been trying to implement 2FA for a web application, both server and client side. As everybody knows, an H/TOTP is intended to prove that I own something, for example through the use of an authenticator app installed on a mobile phone which will generate the OTP for me.
I'm not sure about what that "something" I own is, so my first question is: is this "something" my phone, or is it the salt for the OTP generation which I load into the app installed on my phone? (If it is the salt, does owning not equate knowing, be it somewhat complicated with an algorithm between me and the salt?)
Given the risk that I loose access to my mobile phone on which I have installed the app, many sites offer me to download backup codes. These codes should be stored in a password manager, just like the password from the first factor. Generally it is possible, after entering my username and password, to bypass the OTP process and enter a backup code through an alternative flow.
My second question is: is my assertion correct that this way the second factor is reduced to something I know, a backup code, and thus merely extending the first factor? (And thus rendering the whole 2FA almost useless, only increasing security a little by adding a second thing I need to know, while increasing the inconvenience of managing more passwords.)