在一方不可信的时候如何设计身份验证机制?

我是想实现这样一种情况,就是有TrustZone的系统中两个主体A和B
A是确定可信的(在secure world, 从硬件上有隔离),而B是一个normal world的普通主体,可能会被攻击、篡改或者假冒,
这样的情况下如下如何去验证和A进行通信的B到底是不是原本的那个B呢(可以涉及系统的手段,不一定非得用密码学)?
不过还是感觉涉及到密码学的东西,但是B显然不能存有密钥,因为密钥可能泄露,但是事先双方约定的话,除了密钥之外不知道约定什么可以实现这个验证功能。

非对称加密算法,A用public key加密,B用private key解密。