Handshake, Blake2B-Sia

Handshake, Blake2B-Sia


In telecommunications, a handshake is an automated process of negotiation between two participants (example "Alice and Bob") through the exchange of information that establishes the protocols of a communication link at the start of the communication, before full communication begins.

The handshaking process usually takes place in order to establish rules for communication when a computer attempts to communicate with another device. Signals are usually exchanged between two devices to establish a communication link. For example, when a computer communicates with another device such as a modem, the two devices will signal each other that they are switched on and ready to work, as well as to agree to which protocols are being used.

Handshaking can negotiate parameters that are acceptable to equipment and systems at both ends of the communication channel, including information transfer rate, coding alphabet, parity, interrupt procedure, and other protocol or hardware features. Handshaking is a technique of communication between two entities. However, within TCP/IP RFCs, the term "handshake" is most commonly used to reference the TCP three-way handshake. For example, the term "handshake" is not present in RFCs covering FTP or SMTP. One exception is Transport Layer Security, TLS, setup, FTP RFC 4217. In place of the term "handshake", FTP RFC 3659 substitutes the term "conversation" for the passing of commands.

A simple handshaking protocol might only involve the receiver sending a message meaning "I received your last message and I am ready for you to send me another one." A more complex handshaking protocol might allow the sender to ask the receiver if it is ready to receive or for the receiver to reply with a negative acknowledgement meaning "I did not receive your last message correctly, please resend it" (e.g., if the data was corrupted en route).

Handshaking facilitates connecting relatively heterogeneous systems or equipment over a communication channel without the need for human intervention to set parameters.


Blake 2b is an algorithm based on the Blake 2 function alongside Blake 2s. In contrast to Blake 2s it is optimized for the usage with 64-bit platforms, while Blake2s is optimized for 32- bit platforms.

Both Blake 2 and Blake 1 family of algorithms were designed by Jean-Philippe Aumasson, who was the leader of the development team. Other members of the team are also prominent cryptography developers including Christian WinnerleinIt, Zooko Wilcox-O'Hearn and Samuel Neves. Blake 2b, alongside other members of the Blake family is based on the ChaCha stream cipher, developed by Daniel J. Bernstein. The main goal of Blake 2 is to provide hashing functions with the highest level of data protection. Indeed, no attack has been detected on BLAKE2 since its first publication.

The BLAKE 2b hash function has 3 main features:

Iterative organization of data processing in HAIFA mode;

Internal structure is the local wide-pipe;

An improved version of ChaCha stream cipher, which is perfectly parallelized and has shown high security

A new improved version of the BLAKE protocol is called BLAKE2 and appeared at the end of 2012. It is a cryptographic hash function that is more efficient than MD-5, SHA1, SHA2 and is as secure as the latest SHA3 (Keccak) standard. BLAKE2 has been widely adopted by business projects due to its security and high speed.

In BLAKE2, in alternative to BLAKE, no adding constants to the round function is performed. It also changed shift constants and simplified their addition. Blake 2 algorithm added a block of parameters, which is added to the initializing vectors. In addition, the number of rounds reduced from 16 to 12 in the BLAKE2b function (Blake-512 analogue) and from 14 to 10 in BLAKE2s (BLAKE-256 analogue). As a result, the number of clock cycles per bit decreased from 7.49 for BLAKE-256 and 5.64 for BLAKE-512 to 5.34 and 3.32 for Blake2s and Blake2b, respectively.

The BLAKE 2 algorithm has two variations:

BLAKE 2b (or just BLAKE 2) is, as stated earlier, optimized for 64-bit platforms. It is also optimized for NEON-enabled ARM, and can generate digests of any byte size from 1 to 64;

BLAKE 2s is optimal for both 8 - and 32-bit platforms and generates digests of sizes from 1 to 32 bytes.

BLAKE 2 includes a 4-band parallel BLAKE2bp and 8-way parallel BLAKE2sp designed to improve performance on multi-core or SIMD processors.

The Zcash cryptocurrency uses BLAKE 2b in its proof of work - Equihash, and as a key derivation function

FreeBSD Ports package management tool uses BLAKE2b

As a pretty popular hashing function, Blake 2b is often provided by cryptography libraries, such as

Botan C++ library

Crypto++ - open source cryptographic library for C++, developed by Wei Dai.

Bouncy Castle - Java and C# based cryptographic library

Libgcrypt - a C-based library developed for the GNU Privacy Guard software

OpenSSL - software library mainly designed for the implementation of Secure Sockets Layer (SSL) and available for C, assembly and Perl

wolfSSL - SSL/TLS (Transport Layer Security) library made for the usage in the embedded systems development and used via C programming language.

There are not many prominent cryptocurrencies using Blake 2b version of the Blake algorithm are Siacoin (SC) and Nano (NANO). Siacoin was developed by Luke Champine and David Vorick. It is a cryptocurrency that helps to power Sia as a decentralized data storage. Unlike many cryptocurrencies that have an aim to become a mean of exchange, Siacoin aims to use blockchain for the different purpose. It is for the establishment of the secure and robust network for data preservation.

Nano is a cryptocurrency that was designed to become a perfect coin for everyday transactions. It is easy to use, has no transaction fees and has almost unlimited scalability. Mentioned features, combined with low-power hardware - compatible Nano protocol made it one of the most successful coins on the market.

Mining of the Blake 2b based coins is best performed with GPU. ASIC mining of the Blake 2b cryptocurrencies is shares the problems inherent to the ASIC mining of most of other cryptocurrencies. Many developers discourage ASIC mining and ASICs are vulnerable to forks. However, Siacoin developers are encouraging ASIC mining. Obelisk company - a business that was established by a part of the Siacoin development team is now the developer of ASICs specifically designed to mine Siacoin. The team stated that these ASICs would not be fought against.

There are no products to list in this category.