OK, então segui a sugestão de Michael Hampton e fui olhar o código de pam_cracklib.c e parece que o pam_cracklib recebe o antigo (também conhecido como current ) senha do PAM através de uma chamada de função (que considero totalmente ok, como acabei de inserir a senha atual para autenticar) e então executa uma análise de similaridade (função de distância) entre a senha antiga e a nova que acabei de inserir. p>
Mas isso não faz essa análise para todas as senhas antigas em sua história. Isso não seria possível, porque eles são armazenados apenas como hashes. Para eles só pode haver um cheque se eles são os mesmos. Então tudo parece estar em ordem, assim como eu esperava, mas agora eu entendo porque é ... obrigada a todos.