Now that blockchain is becoming an increasingly important technology for conveying and storing value through bitcoin and other newer, virtual currencies, how its security is maintained is becoming increasingly researched.
Although highly encrypted and well-designed for resilience, blockchain technology is not without vulnerabilities. A variety of attacks could be undertaken on blockchain based technologies (to understand some of the technical terms here - like mining, forking etc - please see the blog on how blockchain works):
In Bitcoin, the process miners follow to provide hashes to seal blocks is sometimes called ‘grinding’, as they move through block headers one by one, trying to seal them. A grinding attack occurs when a hostile actor uses greater computational power than other miners to outperform legitimate miners and find kernels that allow them to perform the main chain. This is seen to be a serious potential source of threats to the development of a blockchain based on ‘proof-of-stake’ coins.
Double spend attack
A double spend is an attack where the given set of coins is spent in more than one transaction. There are a couple of main ways to perform a double spend attack:
Pre-mine one transaction into a block and spend the same coins before releasing the block to invalidate that transaction (This is called a Finney attack).
Send two conflicting transactions in rapid succession into the Bitcoin network. (This is called a race attack).
A Finney attack is a fraudulent double-spend attack that requires the participation of a miner once a block has been mined. The risk of a Finney attack cannot be eliminated regardless of the precautions taken by the merchant, but the participation of a miner is required and a specific sequence of events must occur. Such an attack challenging to perform and only makes sense for the attacker when the gains from the attack are significant.
In Bitcoin, someone who accepts payment immediately on seeing "0/unconfirmed" could be at risk of a double-spend occurring. For example, if a hostile actor successfully communicated one transaction to the merchant but at the same time communicated a different transaction that spends the same coin that was first to eventually make it into the block chain, a race attack would occur. Bitcoin users can take precautions such as only connecting to well connected/known nodes to to reduce the risk of a race attack but the risk cannot be eliminated.
A greater than >50 Attack (often known as a majority attack) occurs if a hostile actor controls more than half of the network hashrate. Such an attack can occur when an attacker submits a transaction which makes a payment while privately mining a blockchain fork in which a double-spending transaction is included. If, after waiting for a certain number of confirmations (n) the merchant sends the product and if the attacker happened to find more than n blocks in this time, the attacker can release the fork and regain the coins. Alternatively, if the attacker has been unable to find more blocks, they can also try to continue extending their fork with the hope of being able to catch up with the network.
The likelihood of success for a >50% attack depends on the attacker's hashrate (as a proportion of the total network hashrate) and the number of confirmations the merchant is waiting for. For example, if the attacker controls 10% of the network hashrate but the merchant waits for 6 confirmations, the success probability is on the order of 0.1%. However, if the attacker controls more than half of the network hashrate, this has a probability of 100% to succeed. Since the attacker can generate blocks faster than the rest of the network, he can simply persevere with his private fork until it becomes longer than the branch built by the honest network, from whatever disadvantage.
A Vector76 attacks is also known as a one-confirmation attack and is a combination of the race attack and the Finney attack and occurs when a transaction with one confirmation is double-spent. Similar to a race attack, such an attack can be mitigated by not allowing incoming connections and using explicit outgoing connections to well connected nodes. Such attacks also cost attackers, as they need to sacrifice blocks (and not broadcast them) by relaying it only to the attacking node.
Brute force attack
A brute force attack is similar in nature to a >50% attack. Such an attack occurs when a hostile agent submits a transaction which pays the merchant, while privately mining a blockchain fork in which a double-spending transaction is included instead. As with >50% attack, an attacker can then wait for the merchant to make a certain number of confirmations and send the product, while the attacker looks for more confirmations with the intent of building a larger fork than the main network or catching it up. If the attacker never manages to do this, the attack fails and the payment to the merchant will go through. For such an attack the attacker requires a relatively high hashrate. The probability of success is a function of the attacker's hashrate (as a proportion of the total network hashrate) and the number of confirmations the merchant waits for.
All of these different types of attack have led to the development of new approaches and applications for blockchain technology (increasingly based on new and different theories) - these are explored in 'Future applications of blockchain technology'.