ゼロ知識証明、だっけ?
チャレンジレスポンスでやったらいいんじゃない?

基本的な手順は、

あらかじめ、秘密の文字列 k を決めておき、クライアントとサーバはそれを
知っている。外には漏らさない。

通信を開始する時に、ランダムでトークン文字列 s を決め、それを渡す。
s をもらったら k と連結しハッシュ関数にかけた値 h(k + s) を返す。

返ってきた値が、自分で計算した h(k + s) と同じかどうかを確認する。
同じなら相手は k を知ってるので正しい相手と認める。

詳しくは暗号の本を。
ていうかこういうのは正しく実装するのは難しいので。ライブラリ無いのかな?