The following properties may be more difficult to understand than the basics of braids, but are essential in understanding the implementation of braid group cryptosystems.
To understand the protocols, it is not necessary to understand
the complete details on this page (and one can skip them on first reading), but
one should be aware that when talking about transmitting messages using braids,
one is really using braids that have been converted into the normal form
discussed below.
The half twist
(by 180 degrees) of the n stings in
is denoted by
. Figure 1 below shows the half-twist on 4 strings.
Figure 1: ![]()
in
.
This half twist is useful because it has interesting properties- for instance
one can slide any crossing through the half twist. This gives us the relation:
.
The lefthand side of Figure 2 below
shows the braid
and the righthand side shows the braid
, demonstrating the case when
and
. Notice how the crossing at the top of the lefthand braid (shown in red) passes through the rest of
the braid to end up as the crossing at the bottom of the righthand
braid.

Figure 2:
.
On the Introduction to braids page, we saw that a braid can be expressed in many ways, but we can actually express them in a standard way (a unique normal form). When sending messages using the braid cryptosystems, we actually use braids in this normal form. This normal form enables us to encode a braid as a sequence of integers (explained below), which is rather useful for implementation purposes.
There is a canonical map,
, from
to
(the permutation group
on n elements) which maps the braid
to the permutation induced by the ends of the strings. For example
,Figure 3 shows the braid
maps to the
permutation
. This can be read off from the numbers at the top and bottom
of the braid; for example the first string (shown in blue) takes the 1 at the
top to the 3 at the bottom, thus giving the first column of the permutation
matrix.
Figure 3:

Many braids induce the same permutation of their endpoints. For example,
take the above braid and concatenate with the braid
we obtain
which maps to the same
permutation
Figure 4:

We call a braid which only has positive crossings and every pair of strings
crosses at most once a permutation braid.
One can write any braid
as
, where u is an
integer and the
are permutation braids. Enforcing an extra condition (which
basically means that the
’s to the left are as large as possible) makes this
representation unique (and is called left-weighted
normal form). The number p is
called the canonical length of the
braid.
We can now store this braid as the tuple
. There are only n! elements of
, and so we can encode such an element by an integer
. This is better than trying to encode
which has infinitely
many elements! For this tutorial, we will write the permutations
rather than an integer encoding it, because this is more
instructive.
For example, the braid
has normal form
, where
. Therefore,
, the canonical length is 1, and
. Figure 5 below shows the equivalence- the left braid is
, adding the two crossings below this (shown in blue) makes
the braid
and adding the last two crossings
gives a braid equivalent to
(which can be seen be
“cancelling” the last two pairs (blue and red) of crossings).
Figure 5: 
If
has canonical length p, then it can be stored in
bits. The normal form
of
can be computed in
time. If
are braids in
normal form, and q is the canonical
length of
, then it takes
amount of time to compute
the normal form of
, and
amount of time to
compute the normal form of
. Therefore, it is feasible to store braids in the manner
described and to perform these operations, which will be used in the protocols.