[0001] The present invention relates to searching for packet identifiers, and is particularly
but not exclusively concerned with the location of appropriate packet identifiers
and their corresponding keys for encryption/decryption of transport stream packet
payloads in a digital video bit stream.
[0002] In a digital video bit stream, packets carry encrypted payloads. To construct a packet,
a payload is encrypted using an encryption key, information about which is encoded
by the packet identifier. The decryption key which can be used to decrypt the encrypted
payload when the packet is received is thus identified in the packet identifier of
the packet. In order to establish encryption/decryption keys, each packet identifier
is interrogated and memory locations of a memory holding a plurality of packet identifiers
are scanned sequentially until a match is found. Once a matching packet identifier
has been located, the corresponding encryption/decryption key can be retrieved by
a simple transformation of the address of the memory location holding that packet
identifier.
[0003] Currently, memory locations are scanned in order of memory address, from the first
memory address to the last memory address. If an incoming packet identifier happens
to have a match at the last memory location to be scanned, obviously the total time
to extract the right encryption/decryption key is longer than if the packet identifier
was at the first location. Currently, the order of packet identifiers in a memory
is either random or, if the software has prior knowledge of the frequency of certain
packet identifiers in the transport stream, the packet identifiers may be ordered
in memory such that the most frequently occurring is placed at the first memory address,
and the least frequently occurring at the last address, with a grading in between.
[0004] In current systems, the number of packet identifiers which are normally stored mean
that in fact there is not a large overhead in carrying out the search for packet identifiers,
regardless of the order in which the memory locations are scanned. However, as the
requirement grows for a greater number of packet identifiers/encryption/decryption
keys to be stored, the packet identifier search time will become more significant
as a proportion of total processing time. Also, in all cases of typical transport
streams, some PIDs occur many more time than others.
[0005] It is an aim of the present invention to make the search time for packet identifiers
faster.
[0006] The present invention provides in one aspect a method of locating packet identifiers
held in respective memory locations in a memory, the method comprising: receiving
a plurality of packets, each packet comprising a packet identifier; searching said
memory locations in a sequence to compare an incoming packet identifier with packet
identifiers stored in the memory until a match is found; incrementing one of a set
of counters associated respectively with the memory locations, said incremented counter
being the one associated with the memory location where the matched packet identifier
is held; and reading values of each of the counters and using said values to determine
the sequence in which the memory locations are searched for subsequent incoming packet
identifiers.
[0007] In the preferred embodiment, memory locations are read from the highest value first.
[0008] The method of locating packet identifiers is particularly useful when each packet
identifier is associated with a decryption key which can be used to decrypt the encrypted
payload for that packet.
[0009] To avoid the problem of overflow, the method can comprise the step of decrementing
each counter at predetermined time intervals. For example, appropriate time intervals
might be 1 µs, 100 µs, 1ms. The frequency of the time intervals can be fully programmable.
[0010] A further aspect of the invention provides a method of locating decryption keys for
decrypting encrypted payloads in a packet stream wherein each packet comprises at
least a packet identifier associated with said decryption key for that packet, the
method comprising: receiving a sequence of said packets, searching a set of memory
locations in a sequence to compare an incoming packet identifier with packet identifiers
stored in the memory locations until a match is found, incrementing one of a set of
counters associated respectively with the memory locations, said incremented counter
being the one associated with the memory location where the matched packet identifier
is held; using the matched packet identifier to locate the decryption key for that
packet; reading values of each of the counters and using said values to determine
the sequence in which the memory locations are searched for subsequent incoming packet
identifiers.
[0011] In particular the invention provides a method of encrypting/decrypting transport
stream packet payloads using the method of locating encryption/decryption keys as
defined above.
[0012] The invention further provides a system for locating packet identifiers held in respective
memory locations in a memory, the system comprising: an address generator for generating
memory addresses to address said memory locations in a sequence thereby to recall
packet identifiers stored in the memory; a packet identifier matcher which compares
packet identifiers recalled from the memory with an incoming packet identifier until
a match is found; a set of counters associated respectively with the memory locations;
means for incrementing said counters, whereby the counter associated with the memory
location for each matched packet identifier is incremented; and wherein the address
generator is operable to read values of each of the counters and to use said values
to determine the sequence in which the memory locations are searched for subsequent
incoming packet identifiers.
[0013] For a better understanding of the present invention and to show how the same may
be carried into effect, reference will now be made by way of example to the accompanying
drawings, in which:
Figure 1 is a schematic block diagram illustrating the context of the invention;
Figure 2 illustrates in state machine format a preferred embodiment of the present
invention; and
Figure 3 is a functional block diagram of an embodiment of the invention.
[0014] Reference is first made to Figure 1 to illustrate the context of the invention. Figure
1 illustrates a schematic diagram of a message receiving and decrypting device. The
device comprises a message receiving interface 2 which has an input 4 for receiving
packets of the type denoted by numeral 6. Each packet comprises a packet identifier
PID 8 and the payload portion 10. The payload portion 10 is encrypted according to
a key which can be identified through the packet identifier as discussed more fully
herein. The interface 2 supplies the packet identifier 8 to a packet identifier search
engine 12. It supplies the payload portion 10 to a decryptor 14. The device includes
a memory 16 which holds packet identifiers PID in association with respective keys
KEY. It will be appreciated that the diagram is schematic only. In fact, the corresponding
key for each packet identifier PID can be retrieved by simple transformation of the
address in the memory 16 which holds the particular packet identifier PID. This is
known in the art and will not be described further herein.
[0015] On receipt of a message packet 6, the PID search engine 12 is used to scan memory
locations, e.g. 18, 20 and 22 until a match with the packet identifier portion 8 with
the incoming packet 6. A corresponding key is retrieved by a transformation of the
PID address and the key is supplied to the decryptor 14. The decryptor 14 can then
operate to decrypt the payload portion 10 of the incoming packet to output a decrypted
message.
[0016] Figure 2 illustrates a PID search engine 12 in accordance with one embodiment of
the invention. A hardware function FSM 30 is used to access the memory 16 along memory
access path 32. Although not shown in Figure 2, it will be appreciated that the memory
access path 32 comprises an address bus 32b for supplying addresses to the memory
16 and a data bus 32a for returning data (in the form of PIDs) from the memory 16
to the control FSM 30. The control FSM 30 is associated with a set of counters 34
labelled PID cntr1, PID cntr2 ... PID cntrN, each counter representing one of N PID
addresses identifying memory locations in the memory 16. Each counter initially starts
with a tally of zero. When the first incoming packet identifier PID is received, a
search is carried out through the memory 16 comparing that packet identifier with
the contents of each memory location in order. When a match is located, the value
of the counter PID cntr in the set 34 associated with that memory address is incremented
by one. Before the search for the next incoming packet identifier PID, values from
each of the counters, labelled V1, V2 ... Vn are returned to the control FSM 30. At
the start of the next search, the address in the memory 16 associated with the highest
counter value is scanned first, followed by the next highest and so on. This means
that, over a long period of time, an optimal search order related to the frequency
of packet identifiers in the incoming packet stream is approached, which becomes more
refined with time.
[0017] Clearly, the scheme will operate for a short time, that is until the counters overflow.
If the counters overflow, the search scheme could go wrong. To prevent this, a software
programmable register 36 is provided which decrements one of the total in each counter
at predetermined time periods, which are settable, for example 1 µs, 100 µs, 1 ms.
[0018] Figure 3 illustrates in schematic form functional blocks for the control FSM 30.
A packet identifier match block 40 receives incoming packet identifiers from the packet
stream, and packet identifiers from the memory 16 on the data bus 32a. When a match
is located, PID match block 40 transmits a match signal to an incrementer 42. An address
generator 44 generates addresses which are dispatched to the memory 16 along address
bus 32b. When a match is located by the PID match block 40, the address which was
supplied to the memory to achieve that match is supplied to the incrementer 42 along
with the match signal. The incrementer 42 generates the increment signals cnt1, cnt2
... cntN to the respective counters in the set of counters 34.
[0019] The address generator 44 receives the incoming values V1, V2 ... VN from the counters
and uses those values to determine its search strategy by generating addresses in
the order of the highest value first.
1. A method of locating packet identifiers held in respective memory locations in a memory,
the method comprising:
receiving a plurality of packets, each packet comprising a packet identifier;
searching said memory locations in a sequence to compare an incoming packet identifier
with packet identifiers stored in the memory until a match is found;
incrementing one of a set of counters associated respectively with the memory locations,
said incremented counter being the one associated with the memory location where the
match packet identifier is held; and
reading values of each of the counters and using said values to determine the sequence
in which the memory locations are searched for subsequent incoming packet identifiers.
2. A method according to claim 1, wherein said values are used to determine the sequence
in which the memory locations are searched by reading memory locations associated
with the highest value first, and then reading subsequent memory locations in order
of decreasing values.
3. A method according to claim 1 or 2, wherein each packet includes an encrypted payload,
and each packet identifier is associated with a respective decryption key usable to
decrypt the encrypted payload.
4. A method according to any preceding claim, wherein each counter is decremented by
one at predetermined time intervals.
5. A method of locating decryption keys for decrypting encrypted payloads in a packet
stream wherein each packet comprises at least a packet identifier associated with
said decryption key for that packet, the method comprising:
receiving a sequence of said packets,
searching a set of memory locations in a sequence to compare an incoming packet identifier
with packet identifiers stored in the memory locations until a match is found,
incrementing one of a set of counters associated respectively with the memory locations,
said incremented counter being the one associated with the memory location where the
matched packet identifier is held;
using the matched packet identifier to locate the decryption key for that packet;
reading values of each of the counters and using said values to determine the sequence
in which the memory locations are searched for subsequent incoming packet identifiers.
6. A method of decrypting packet payloads, the method comprising locating the decryption
key for a packet according to the method of claim 5, and using the located decryption
key to decrypt the payload of the packet.
7. A system for locating packet identifiers held in respective memory locations in a
memory, the system comprising:
an address generator for generating memory addresses to address said memory locations
in a sequence thereby to recall packet identifiers stored in the memory;
a packet identifier matcher which compares packet identifiers recalled from the memory
with an incoming packet identifier until a match is found;
a set of counters associated respectively with the memory locations;
means for incrementing said counters, whereby the counter associated with the memory
location for each matched packet identifier is incremented; and
wherein the address generator is operable to read values of each of the counters and
to use said values to determine the sequence in which the memory locations are searched
for subsequent incoming packet identifiers.
8. A system according to claim 7, which comprises a decrementer for decrementing each
of said set of counters by one at predetermined time intervals.
9. A system according to claim 7 or 8 in combination with a memory which holds said packet
identifiers in association with respective decryption keys.