Lably
Skip to content

Blom's scheme

Cryptographic protocol

  • 2 min read
  • 2 chapters

Related on Lably

Through Symmetric matrix, Prime number and Transpose

A trusted party gives each participant a secret key and a public identifier, which enables any two participants to independently create a shared key for communicating. However, if an attacker can compromise the keys of at least k users, they can break the scheme and reconstruct every shared key. Blom's scheme is a form of threshold secret sharing.

Blom's scheme is currently used by the HDCP (Version 1.x only) copy protection scheme to generate shared keys for high-definition content sources and receivers, such as HD DVD players and high-definition televisions.

The protocol

The key exchange protocol involves a trusted party (Trent) and a group of n users. Let Alice and Bob be two users of the group.

Protocol setup

Trent chooses a random and secret symmetric matrix Dk,k over the finite field GF(p), where p is a prime number. D is required when a new user is to be added to the key sharing group.

For example:

k=3p=17D=(162638282)mod17

Inserting a new participant

New users Alice and Bob want to join the key exchanging group. Trent chooses public identifiers for each of them; i.e., k-element vectors:

IAlice,IBob∈GFk(p).

For example:

IAlice=(123),IBob=(531)

Trent then computes their private keys:

gAlice=DIAlicegBob=DIBob

Using D as described above:

gAlice=(162638282)(123)=(193624)mod17=(227)gBob=(162638282)(531)=(254736)mod17=(8132)

Each will use their private key to compute shared keys with other participants of the group.

Computing a shared key between Alice and Bob

Now Alice and Bob wish to communicate with one another. Alice has Bob's identifier IBob and her private key gAlice.

She computes the shared key kAlice/Bob=gAliceTIBob, where T denotes matrix transpose. Bob does the same, using his private key and her identifier, giving the same result:

kAlice/Bob=kAlice/BobT=(gAliceTIBob)T=(IAliceTDTIBob)T=IBobTDIAlice=kBob/Alice

They will each generate their shared key as follows:

kAlice/Bob=(227)T(531)=2×5+2×3+7×1=23mod17=6kBob/Alice=(8132)T(123)=8×1+13×2+2×3=40mod17=6

Sign in to keep reading

One more chapter is free with a Lably account.

More in Computing and communication