user52771: I read the following from the book << Mastering Bitcoin >>

"As you may notice, the transaction contains an empty scriptSig because we haven’t signed it yet. Without a signature, this transaction is meaningless, we haven’t yet proven that we own the address from which the unspent output is sourced."

I am wondering how a signature can prove that this transaction owns the address from which the unspent output is sourced?  

user30668: The ownership is proven for each input by providing a valid signature in the scriptSig field. If one of the signatures is missing, the whole transaction is invalid. 
The scriptPubKey for each output in the example you provided is locked to a Bitcoin address. A Bitcoin address is, in a nutshell, a hash of a public key. So, in order to provide a valid signature, the secret key belonging to the same key pair of the public key referred in each input is required. 

user54581: Assume you understand how public-key cryptography works. In short, one can verify the ownership of an address by checking the signature. A valid signature can only be generated by the private key owner.
The detail of signature verification in Bitcoin is described here
Without digging into the details, OP_xxx are stack operations. For example, OP_DUP is to duplicate top of the stack. Basically it 

first hashes the public key by operation OP_HASH160 and check if the result is identical to pubKeyHash by operation OP_EQUALVERIFY
then verifies sig and pubKey by operation OP_CHECKSIG

You can read more about OP_CHECKSIG here

52771: <p>I read the following from the book &lt;&lt; Mastering Bitcoin >></p>

<blockquote>
  <p>"As you may notice, the transaction contains an empty scriptSig because we haven’t signed it yet. Without a signature, this transaction is meaningless, we haven’t yet proven that we own the address from which the unspent output is sourced."</p>
</blockquote>

<p>I am wondering how a signature can prove that this transaction owns the address from which the unspent output is sourced?  </p>
 30668: <p>The ownership is proven for each input by providing a valid signature in the <code>scriptSig</code> field. If one of the signatures is missing, the whole transaction is invalid. </p>

<p>The <code>scriptPubKey</code> for each output in the example you provided is locked to a Bitcoin address. A Bitcoin address is, in a nutshell, a hash of a public key. So, in order to provide a valid signature, the secret key belonging to the same key pair of the public key referred in each input is required. </p>
 54581: <p>Assume you understand how <a href="https://en.wikipedia.org/wiki/Public-key_cryptography" rel="nofollow noreferrer">public-key cryptography</a> works. In short, one can verify the ownership of an address by checking the signature. A valid signature can only be generated by the private key owner.</p>

<p>The detail of signature verification in Bitcoin is described <a href="https://en.bitcoin.it/wiki/Transaction#Pay-to-PubkeyHash" rel="nofollow noreferrer">here</a></p>

<p>Without digging into the details, <code>OP_xxx</code> are stack operations. For example, <code>OP_DUP</code> is to duplicate top of the stack. Basically it </p>

<ul>
<li>first hashes the public key by operation <code>OP_HASH160</code> and check if the result is identical to <code>pubKeyHash</code> by operation <code>OP_EQUALVERIFY</code></li>
<li>then verifies <code>sig</code> and <code>pubKey</code> by operation <code>OP_CHECKSIG</code></li>
</ul>

<p>You can read more about <code>OP_CHECKSIG</code> <a href="https://en.bitcoin.it/wiki/OP_CHECKSIG" rel="nofollow noreferrer">here</a></p>
