I don't understand very well the concept of trusted platform module. from what I understood AIKs are sent to servers for authentication. Does that means that id two computers are communicating they could learn each other's AIKs? Does TPM publish any information at all by default whenever starting communication?
Actually, AIK's are not sent to generic servers for authentication. There is an extra level of indirection: the AIK is used to sign a CK (certified key), and the CK is used for authentication. See TPM: signing key or Attestation Identity Key? But if a computer with a TPM authenticates using the TPM to some remote server, then the remote server does learn the AIK. (The public key, of course — an AIK is actually a key pair and the private part never leaves the TPM.)
Note that an AIK does not identify a TPM in a way that allows tracking it across different usages. A TPM can generate multiple AIK's. The expectation is to generate a separate one for each service that the computer is enrolled in (e.g. one to validate connections to the enterprise network, one to authenticate to a bank, etc.). Different AIK's from the same TPM cannot be identified as related (unless the AIK enrollment service did a bad job).
Also, note that the TPM itself does not communicate. The TPM makes integrity measurements of the system state (i.e. it verifies that the CPU and memory are in an approved state), and it holds keys with which it can encrypt and sign these measurements and other data. What gets transmitted over the network is the responsibility of applications running on the CPU's operating system. Choosing which AIK to use for which communication partner is the responsibility of the application (and possibly the operating system's, which performs access control so that applications can only make certain requests to the TPM), it's outside the hands of the TPM.