Trusted Codes
BlogOctober 20264 min readENDEESFRITNL

Isn't this just an authenticator app? Same algorithm, different job

Same algorithm, different job: six differences, and an honest answer to the 30-second question.

When people see Trusted Codes for the first time, technical readers often say: "So it is an authenticator app." They are half right. At the core, both use the same algorithm. But a knife and a fork are both made of metal, and nobody uses them for the same job.

What is the same

Authenticator apps such as Google Authenticator use TOTP, the time-based one-time password algorithm, published as the open standard RFC 6238. A shared secret and the current time go in, and a short code comes out. Trusted Codes uses exactly this standard, with the same HMAC function. We did not invent our own cryptography, and that is deliberate: TOTP has been studied and used for more than a decade.

The difference is everything around it.

1. It works between people, on every channel

An authenticator protects one door: the login to one website. The code goes from your phone into a form, and a server checks it.

Trusted Codes works between two people. The code goes from one person to another: spoken on the phone, said in a video call, typed in a chat, written in an email, or asked for at the front door. Think of a password that works in every situation, while the authenticator opens a single door.

2. Words instead of digits

An authenticator shows "482 913". Trusted Codes shows three words, for example "river candle objection".

Digits are made for machines. Read "482 913" out over a bad phone line, under time pressure, and see how often the other person writes down "482 930". Words are easier to say, easier to hear correctly and easier to keep in mind for the few seconds it takes to compare them. That is why sentries ask for a password, not a PIN.

The words are also stronger than the digits. Six digits allow 1,000,000 combinations. Trusted Codes takes 33 bits from the same algorithm and maps them to three words from a list of 2,048. That gives 8,589,934,592 combinations. A single guess is right with a chance of about 1 in 8.6 billion.

The word lists exist in nine languages: English, German, French, Spanish, Italian, Dutch, Portuguese, Latin and Esperanto. The last two are there for teams that do not want to depend on any one national language. The language does not change how hard the words are to guess.

3. The code tells you who is speaking

With an authenticator, you must know in advance which account a code belongs to. The code itself says nothing.

With Trusted Codes the code does say who is speaking. Every member of a connection has their own words, and they are different in every connection. If someone tells you three words, you type or say them, and the app shows you who it is: "Anna, M&A project". The lookup runs on your phone. It is like caller ID that no outsider can fake.

4. No technical knowledge needed

If you wanted to share an authenticator code with a team, you would have to generate a secret, turn it into a QR code, distribute it safely to everyone and repeat that for every new person. Only a developer would do that, and almost nobody does.

With Trusted Codes you create a connection, for example for a deal, for your finance team or for all payments over €50,000, and you invite the people. The app does the rest. An authenticator gives you the parts of a lock, for one website login. Trusted Codes gives you the finished lock, and you only hand out the keys.

5. Made for groups

An authenticator code belongs to one person and one account. A Trusted Codes connection can be two people or a whole team. By default each member sees their own words for that connection, and each can check any other member. The board, the finance team and the external lawyer can be one connection, and a payment request inside that group can be checked in seconds.

6. The words are computed on your device

Like an authenticator, Trusted Codes calculates the words on the phone. It does not ask a server for today's words, so the check also works without a network connection: in a lift, abroad, or in a building with no reception.

"But an authenticator code changes every 30 seconds"

This is the most common objection.

A login code changes every 30 seconds because a login form can be attacked by a machine: a script can try thousands of codes, and a phished code can be replayed instantly. A short window limits that.

A conversation between people is a different situation. Nobody can try thousands of codes in a phone call. The attacker gets one attempt, and a wrong answer ends the call. To succeed, the attacker would have to know the current words of exactly this connection, from exactly this person, before they change. And a 30-second code would be useless between people: by the time you have asked "what is our code?" and the other person has opened the app, it would have changed.

So the interval in Trusted Codes is measured in hours, not seconds. For connections it can be set on Business plans from six hours to 30 days, depending on how sensitive the relationship is. Beacons, which staff switch on during a call with a customer, change within minutes. And a guess still has a chance of 1 in 8.6 billion.

The short version

An authenticator proves to a server that you are logging in. Trusted Codes proves to a person that you are you, on any channel, in words that you can say out loud.

Sources

  • TOTP: Time-Based One-Time Password Algorithm, RFC 6238
  • HOTP: An HMAC-Based One-Time Password Algorithm, RFC 4226

Verify the person, not the channel

Trusted Codes gives you and your contacts three shared words that change at a set interval. It works on every channel and takes one question.