Churning is an encryption function used to scramble downstream user data of the ATM passive optical network system defined by the ITU G.983.1 standard.
The standard states that churning "offers a low level of protection for data confidentiality". Cryptanalysis had shown that "the churning cipher is robustly weak".
Churning uses 24 bits of the key, designated X1..X8 and P1..P16.
Ten static K bits are generated from the key:
K1 = (X1ÃÂP13ÃÂP14) + (X2ÃÂP13ÃÂnot P14) + (X7ÃÂnot P13ÃÂP14) + (X8ÃÂnot P13ÃÂnot P14) K2 = (X3ÃÂP15ÃÂP16) + (X4ÃÂP15ÃÂnot P16) + (X5ÃÂnot P15ÃÂP16) + (X6ÃÂnot P15ÃÂnot P16) K3 = (K1ÃÂP9) + (K2ÃÂnot P9) K4 = (K1ÃÂnot P9) + (K2ÃÂP9) K5 = (K1ÃÂP10) + (K2ÃÂnot P10) K6 = (K1ÃÂnot P10) + (K2ÃÂP10) K7 = (K1ÃÂP11) + (K2ÃÂnot P11) K8 = (K1ÃÂnot P11) + (K2ÃÂP11) K9 = (K1ÃÂP12) + (K2ÃÂnot P12) K10 = (K1ÃÂnot P12) + (K2ÃÂP12)
The churning transforms eight bits into eight bits:
(Z1..Z4) = TransformNibble(Y1..Y4, K1, P1, K3, K2, P2, K4, K1, K3, K5, K2, P4, K6) (Z5..Z8) = TransformNibble(Y5..Y8, K1, P5, K7, K2, P6, K8, K1, P7, K9, K2, P8, K10)
The cryptanalysis had shown the cipher to be effectively broken in more than one way:
Due to extreme weakness of the churning cipher, PON systems frequently use the "triple churning" technique, where the three churning operations are combined with two XORs with adjacent data in the stream.
PMC Sierra holds patents on triple churning ().