Funds on Bitcoin aren't necessarily locked by a single key.
Each output on the bitcoin blockchain is locked by a Bitcoin Script. To spend an output, you have to provide the correct inputs to the locking script, such that the evaluation is successful (and meets other consensus requirements).
Standard addresses, whether P2PKH, P2WPKH-P2SH, or P2WPKH, require a valid signature from a pre-selected private key.
To prove that you can spend such an output, it suffices to prove that you can produce signatures from that private key - this can be done by signing a message, or spending an output (in the event that multiple outputs are available for the same locking script, spending a single output suffices as proof).
However, there can be other kinds of locking scripts - multi-signature scripts require M of N
keys to sign, which in turn would require you to prove that you control at least M of the N keys listed in the locking script.
There are other kinds of scripts, such as timelocks or hashing puzzles, which could require waiting until a pre-determined block height or time, or providing the pre-image to a specific hash. For those cases, you would need to prove your ability to wait, or knowledge of the pre-image (which may be difficult to achieve without sharing the pre-image itself).
More complex scripts (essentially, any scenario that can be represented as a series of Bitcoin Script operations), can be created - with Taproot, you could have multiple branches that allow unlocking of the assets under different scenarios - proving control of those funds would be script specific.
When sharing such proofs, you should be careful - proofs not bound by a signature or a similar value may accidentally reveal all required information to unlock an output - for instance, a script that only requires a pre-image for a specific hash, will be spendable by anyone who knows that pre-image. Thus, sharing that with a third-party, even outside of a transaction, may result in funds being lost.