In the SHA-2 family, specifically SHA-256, there are functions called Sigma0 and Sigma1, which look like this:
Sigma0(b, c, d)
{
Return (b & c) ^ (~b & d);
}
I don't really understand the logic or idea behind this. I looked on the internet a lot, but I couldn't find an answer to my question.
So does anybody know why they chose this specific function? Is it part of some secure block cipher or permutation algorithm? I couldn't find anything about the Ch and Maj online, nor what I'm asking now.