Cada nó ni possui um par de chaves (pública e privada) denotado por PKi e SKi, e mantém uma
matriz de número de seqüências denotada SEQi, onde SEQi(j,k) corresponde ao número de
seqüência das mensagens do nó nj para o nó nk. Além disso, um sistema de assinatura digital
deve ser adotado da seguinte forma (SIGNSK(), VERIFYPK()).
Ao enviar uma mensagem "m", por um caminho p, o transmissor, n0, calcula a assinatura s
sobre (MD(m), p, SEQ0(0,d)), onde MD() é uma função hash. Em seguida, (m, p, SEQ0(0,d), s) é
enviado ao próximo nó no caminho p e SEQ0(0,d) é incrementado.
Ao receber uma mensagem com (m, p, SEQ, s) o nó i verifica três condições: ni pertence a p;
SEQ é maior SEQi(0,d); a assinatura é válida. Se qualquer uma das condições não for válida a
mensagem é descartada. Senão, ni armazena o receipt (MD(m), p, SEQi(0,d),s) e se ni não for o
destino e decidir encaminhar a mensagem, (m, p, SEQ, s) é enviado ao próximo salto.
Para verificar a validade de um receipt depositado por um nó ni o CCS deve verificar a validade
de VERIFYPK((MD(m), p,SEQ),s). Tomando p como (n0, n1,...., ne....,nd) e ne como o último nó que
reportou o recebimento da mensagem, o CCS cobra C do transmissor e paga Pi a cada um dos
outros nós no caminho, onde:
C = (d-1)α + β - (d-e)γβ
Relembrando a notação utilizada na seção anterior:
n = d-1
k = d-e