니나노 저도 예전에 많이 헤깔려 했던 부분입니다. 알아두셔야 할점은 우선 1. 수동태의 구문은 무조건 be + p.p 형태로 나와야 합니다. 그리고 had/have +p.p의 had/have는 동사의 시간상황을 말해주는 역할을 하는 겁니다. 따라서 be+pp와 have/had+pp는 서로 다른 영역입니다.
하지만 문장에 따라서 이 두가지가 결합 될 수 있습니다. 예로 have been p.p라는 구문을 보신 적이 있을 겁니다. 이 구문이 두가지가 결합된 형태입니다. 즉 현재완료를 쓰기 위해선 have +pp가, 수동태로 쓰기 위해 필요한 be +pp가 결합된겁니다. 답글