Back to blogs

Blocking a user without public identifiers

Abhinav

Jun 29, 2024

Our app is built upon the principle of implicit consent. When you send someone a Port, you implicitly consent to connecting with them. The same happens when you use a Port someone has sent you. This, however, gets a little messy with Superports. If you publish a Superport, you open yourself up to the possibility that someone connects with you repeatedly. To avoid this, we support blocking.

Blocking is a fully client-side feature. We at Port have no visibility into who you have or have not blocked. This was initially tricky to implement because we do not share any public, unique identifiers with peers over Port whereas other apps usually have something, like a phone number or username that they can easily flag.

The foundation of this feature is built upon what we call “pair hashes”. It is something generated and transmitted by the back end at the time of connecting two individuals using their identifiers used to communicate with the server. When we connect users U1 and U2, we compute a pair hash using the function pair_hash = sha256_hash(sort(U1, U2)).

A pair hash is something that is only meaningful to the two users who are a part of the connection. Every pair of peers have a unique pair hash, but get no visibility into the others’ ids, maintaining our guarantee on secrecy of any unique identifiers.

Clients now track these pair hashes, and to block a user, they simply store mark this pair hash as dirty. When a new connection forms, the pair hash generated is checked against the list of dirty pair hashes. If the pair hash has been blocked, the connection is immediately disconnected.

Other articles:

Sep 9, 2024

Building a new avatar set for Port

Amudhasurabhi Aravindan

Read more

Aug 29, 2024

Sharing A Contact: The Numberless Way

Shantanav Saurav

Read more

Aug 29, 2024

Tame the Chaos: How Chat Folders Can Simplify Your Life

Harshitha Chawla

Read more

Aug 7, 2024

How does Port make secure, identifier-less, end-to-end encrypted chats? 

Shantanav Saurav

Read more

Aug 2, 2024

How Port puts you in control

Abhay Shenoy

Read more

Jun 20, 2024

What is a Port?

Abhinav

Read more

Jun 16, 2024

Why is Port a better way to connect?

Janice Coutinho

Read more

Jun 14, 2024

Superports - the smart way to network

Aniruddh Balasubramaniam

Read more

Jun 12, 2024

How "Ports" work (vs phone numbers)

Aniruddh Balasubramaniam

Read more

Jun 10, 2024

Connect on your terms … starting now

Janice Coutinho

Read more

Jun 8, 2024

Going Numberless

Aniruddh Balasubramaniam

Read more