Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
GENERATING A PSEUDORANDOM NUMBER SEQUENCE
Document Type and Number:
WIPO Patent Application WO/2020/095033
Kind Code:
A1
Abstract:
A method of generating a pseudorandom number sequence for encrypting/decrypting data. A seed number is iteratively modified. For each iterative modification of the seed number, a plurality of sequence numbers are generated for the pseudorandom number sequence based on that iteration of the seed number. Thus, a plurality of sequence numbers are obtained during each iteration of modifying a seed number.

Inventors:
DUNKLEY ADAM (GB)
Application Number:
PCT/GB2019/053125
Publication Date:
May 14, 2020
Filing Date:
November 05, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
DUNKLEY ADAM (GB)
International Classes:
H04L9/08
Other References:
ELAINE B. BARKER ET AL: "Recommendation for Random Number Generation Using Deterministic Random Bit Generators", NIST SPECIAL PUBLICATION 800-90A, REV.1, 1 June 2015 (2015-06-01), XP055354001, Retrieved from the Internet [retrieved on 20170313], DOI: 10.6028/NIST.SP.800-90Ar1
Attorney, Agent or Firm:
ELKINGTON AND FIFE LLP (GB)
Download PDF:
Claims:
CLAIMS:

1. A method of generating a pseudorandom number sequence for encrypting plaintext into ciphertext or decrypting ciphertext into plaintext, the method comprising:

obtaining a pseudorandom number sequence; and

appending sequence numbers to the pseudorandom number sequence by:

obtaining a seed number for defining a set of sequence numbers for appending to the pseudorandom number sequence;

obtaining at least two sequence numbers, for appending to the pseudorandom number sequence, based on the seed number;

appending the at least two sequence numbers to the pseudorandom number sequence; and

modifying the seed number using a modifying algorithm, so that the seed number is different for a subsequent iteration of the step of appending sequence numbers, wherein the modified seed number is different to the at least two sequence numbers.

2. The method of claim 1, wherein the step of obtaining at least two sequence numbers comprises:

defining the seed number as a generating number for generating at least two sequence numbers; and

generating at least two sequence numbers using the generating number.

3. The method of claim 1, wherein the step of obtaining at least two sequence numbers comprises:

obtaining a generating number, for generating at least two sequence numbers, by applying a first algorithm to the seed number; and

generating at least two sequence numbers using the generating number.

4. The method of claim 3, wherein the first algorithm comprises:

identifying at least one potential generating number, each at least one potential generating number having a predetermined numerical relationship with the seed number; and selecting one of the at least one potential generating numbers as the generating number.

5. The method of claim 4, wherein each identified potential generating number meets either:

a first criteria of a difference between the identified potential generating number and the seed number being a multiple of a first predetermined value; or

a second criteria of a difference between the identified potential generating number and either the seed number or a potential generating number meeting the first criteria being a second predetermined value.

6. The method of claim 5, wherein the step of appending sequence numbers comprises modifying the first predetermined value and/or the second predetermined value, using one or more value modifying algorithms, for a subsequent iteration of the step of appending sequence numbers.

7. The method of any of claims 2 to 6, wherein the step of obtaining the at least two sequence numbers comprises:

identifying two or more sequence generating numbers, wherein a result of performing a first trigonometric function using each sequence generating number is the same as a result of performing the same first trigonometric function using the generating number; and

obtaining at least two sequence numbers based on the two or more sequence generating numbers.

8. The method of claim 7, wherein the first trigonometric function comprises at least one modifying variable, and the step of appending sequence numbers comprises modifying each modifying variable for a subsequent iteration of the step of appending sequence numbers.

9. The method of any of claims 7 or 8, wherein the step of modifying the seed number comprises selecting one of the sequence generating numbers, different to any of the at least one obtained sequence numbers, as the seed number for a subsequent iterative step.

10. The method of any of claim 7 to 9, wherein the step of obtaining the at least two sequence numbers based on the two or more sequence generating numbers comprises rounding each at least two sequence generating numbers to thereby obtain at least two sequence numbers.

11. The method of any of claims 7 to 9, wherein the step of obtaining the at least two sequence numbers based on the two or more sequence generating numbers comprises, for each sequence generating number, selecting a predetermined number of digits of the decimal part of the sequence generating number as a respective sequence number.

12. The method of any of claims 7 to 9, wherein the step of obtaining the at least two sequence numbers comprises:

performing a second, different trigonometric function on each of the at least two sequence generating numbers, to obtain respective trigonometric results; and

obtaining the at least two sequence numbers based on the trigonometric results.

13. A method of encrypting plaintext into ciphertext, the method comprising:

generating a pseudorandom number sequence by performing the method of any preceding claim; and

encrypting, using an encryption algorithm, the plaintext into ciphertext using at least the generated pseudorandom number sequence

14. The method of claim 13, wherein the step of encrypting the plaintext into ciphertext comprises encrypting the plaintext using a polyalphabetic cipher and the pseudorandom number sequence.

15. A method of decrypting ciphertext into plaintext, the method comprising:

generating a pseudorandom number sequence by performing the method of any of claims 1 to 12; and

decrypting, using a decryption algorithm, the ciphertext into plaintext using at least the generated pseudorandom number sequence.

16. A computer program comprising code means for implementing the method of any one of any previous claim when said program is run on a computer.

17. A pseudorandom number sequence generator for generating a pseudorandom number sequence for encrypting plaintext into ciphertext or decrypting ciphertext into plaintext, the pseudorandom number sequence generator comprising a processing unit adapted to:

obtain a pseudorandom number sequence; and

append sequence numbers to the pseudorandom number sequence by:

obtaining a seed number for defining a set of sequence numbers for appending to the pseudorandom number sequence;

obtaining at least two sequence numbers, for appending to the pseudorandom number sequence, based on the seed number;

appending the at least two sequence numbers to the pseudorandom number sequence; and

modifying the seed number using a modifying algorithm, so that the seed number is different for a subsequent iteration of the step of appending sequence numbers, wherein the modified seed number is different to the at least two sequence numbers.

Description:
GENERATING A PSEUDORANDOM NUMBER SEQUENCE

FIELD OF THE INVENTION

This invention relates to pseudorandom number sequences, and in particular to methods of generating pseudorandom number sequences.

BACKGROUND OF THE INVENTION

Data encryption, also called data enciphering, is an important aspect of electronic communication. In particular, data encryption helps prevent unauthorized access to information in storage or information that is transmitted across a publically accessible channel from a transmitter to a receiver.

In order to securely transmit information or‘plaintext’, the transmitter may encrypt the plaintext using an encryption key, to generate‘ciphertext’ for transmittal. The receiver can decrypt the ciphertext using this same encryption key to thereby obtain the initial plaintext. Thus, the plaintext is securely sent to the receiver (as third parties are unable to read or understand the ciphertext without the encryption key). Both the transmitter and the receiver therefore require access to the same encryption key.

It has been proposed to use a pseudorandom number sequence as the encryption key when encrypting plaintext or decrypting ciphertext. Various encryption methods that use a pseudorandom sequence are well known in the prior art.

Typically, the pseudorandom number sequence is generated by iteratively modifying an initial key or number using a modifying algorithm, to generate the next number in the sequence. The modifying algorithm may therefore be a source of weakness in the data encryption, as knowledge of the modifying algorithm could allow a third party to generate the pseudorandom number sequence thereby increasing an ease of cracking the encryption methodology.

There is therefore a desire to provide a method of generating a pseudorandom number sequence having improved security and secrecy. Other uses for a pseudorandom number sequence are also envisaged in the prior art, e.g. for the purposes of simulation, procedural generation (such as in video games) or for randomisation/shuffling of a list. SUMMARY OF THE INVENTION

The invention is defined by the claims.

According to a first aspect of the inventive concept, there is provided a method of generating a pseudorandom number sequence for encrypting plaintext into ciphertext or decrypting ciphertext into plaintext, the method comprising: obtaining a pseudorandom number sequence; and appending sequence numbers to the pseudorandom number sequence by: obtaining a seed number for defining a set of sequence numbers for appending to the pseudorandom number sequence; obtaining at least two sequence numbers for the pseudorandom number sequence based on the seed number; appending the at least two sequence numbers to the pseudorandom number sequence; and modifying the seed number using a modifying algorithm, so that the seed number is different for a subsequent iteration of the step of appending sequence numbers, wherein the modified seed number is different to the at least two sequence numbers.

Thus, a plurality of numbers for a pseudorandom sequence are generated during each iteration of modifying an initial seed number. This makes it more difficult for an unauthorised party to characterize the modifying algorithm used to iteratively modify the seed number.

In a conventional pseudorandom number sequence, each number in the sequence is generated by performing a modifying algorithm on the immediately preceding number. Thus, there are a large number of data points for an unauthorized party to attempt to identify the modifying algorithm used to generate the pseudorandom number sequence.

This disadvantage is mitigated in the present invention, as a plurality of sequence numbers are generated from a single seed number thereby reducing the number of data points or samples for determining the modifying algorithm. In other words, it is more difficult for the skilled person to identify patterns in encrypted data that may be associated with the modified algorithm, due to the reduced number of data points for identifying a modifying algorithm or a pattern of the pseudorandom number sequence.

Thus, the secrecy of the modifying algorithm is significantly improved, thereby improving a security of the overall encryption methodology.

Moreover, by generating a plurality of numbers based on the seed number, the seed number may be hidden (e.g. not used in the sequence). This helps further improve a secrecy of the modifying algorithm used, as the number modified by said algorithm may not be used in the pseudorandom number sequence. The initially obtained pseudorandom number sequence may be an existing pseudorandom number sequence or a null/empty pseudorandom number sequence.

The step of obtaining at least two sequence numbers may comprise: defining the seed number as a generating number for generating at least two sequence numbers; and generating at least two sequence numbers using the generating number.

In simpler embodiments, the number used to generate at least two sequence numbers is the seed number. This reduces a processing power required to generate the pseudorandom number sequence.

The step of obtaining at least two sequence numbers may comprise: obtaining a generating number, for generating at least two sequence numbers, by applying a first algorithm to the seed number; and generating at least two sequence numbers using the generating number.

Thus, the number used to generate the at least two sequence numbers may be a modified version of the seed number. This helps to further obfuscate the seed number used to generate the sequence numbers and thereby improve a security of the overall encryption technology.

Preferably, the first algorithm comprises: identifying at least one potential generating number, each at least one potential generating number having a predetermined numerical relationship with the seed number; and selecting one of the at least one potential generating numbers as the generating number.

Embodiments may therefore provide a selection of potential generating numbers for generating the at least two sequence numbers. The possible (or potential) generating numbers have a predetermined relationship with the seed number.

Thus, embodiments provide a simple method of obscuring the seed number, thereby increasing a security of the encrypting method.

In preferable embodiments, each identified potential generating number meets either: a first criteria of a difference between the identified potential generating number and the seed number being a multiple of a first predetermined value; or a second criteria of a difference between the identified potential generating number and either the seed number or a potential generating number meeting the first criteria being a second predetermined value.

The step of appending sequence numbers may comprise modifying the first predetermined value and/or the second predetermined value, using one or more value modifying algorithms, for a subsequent iteration of the step of appending sequence numbers. In this way, the relationship between the seed number and the selection of possible/potential generating numbers may be modified for each iteration or cycle (of generating a plurality of numbers for the pseudorandom number sequence).

This introduces additional variation into the selection of the generating number used to generate the pseudorandom number sequence. Thus, a security of an encryption is increased, as it will be more difficult for an unauthorised party to identify patterns in the encrypted data.

Preferably, the step of obtaining the at least two sequence numbers comprises: identifying two or more sequence generating numbers, wherein a result of performing a first trigonometric function using each sequence generating number is the same as a result of performing the same first trigonometric function using the generating number; and obtaining at least two sequence numbers based on the two or more sequence generating numbers.

The first trigonometric function may comprise at least one modifying variable, and the step of appending sequence numbers comprises modifying each modifying variable for a subsequent iteration of the step of appending sequence numbers.

Optionally, the step of modifying the seed number comprises selecting one of the sequence generating numbers, different to any of the at least one obtained sequence numbers, as the seed number for a subsequent iterative step.

The step of obtaining the at least two sequence numbers based on the two or more sequence generating numbers may comprise rounding each at least two sequence generating numbers to thereby obtain at least two sequence numbers.

In other embodiments, the step of obtaining the at least two sequence numbers based on the two or more sequence generating numbers comprises, for each sequence generating number, selecting a predetermined number of digits of the decimal part as a respective sequence number.

In yet other embodiments, the step of obtaining the at least two sequence numbers comprises: performing a second, different trigonometric function on each of the at least two sequence generating numbers, to obtain respective trigonometric results; and obtaining the at least two sequence numbers based on the trigonometric results.

According to an aspect of the inventive concept, there is provided a method of encrypting plaintext into ciphertext, the method comprising: generating a pseudorandom number sequence by performing the method previously described; and encrypting, using an encryption algorithm, the plaintext into ciphertext using at least the generated pseudorandom number sequence. The step of encrypting the plaintext preferably comprises encrypting the plaintext using a polyalphabetic cipher and the pseudorandom number sequence.

There is also proposed a method of decrypting ciphertext into plaintext, the method comprising generating a pseudorandom number sequence by performing the previously described method; and decrypting, using an decrypting algorithm, the ciphertext into plaintext using at least the generated pseudorandom number sequence.

Preferably, any one or more of the herein described methods are computer- implemented methods. Similarly, there may be provided a computer program comprising code means for implementing any herein described method when said program is run on a computer.

There is also proposed a pseudorandom number sequence generator for generating a pseudorandom number sequence for encrypting plaintext into ciphertext or decrypting ciphertext into plaintext, the pseudorandom number sequence generator comprising a processing unit adapted to: obtain a pseudorandom number sequence; and append sequence numbers to the pseudorandom number sequence by: obtaining a seed number for defining a set of sequence numbers for appending to the pseudorandom number sequence; obtaining at least two sequence numbers, for appending to the pseudorandom number sequence, based on the seed number; appending the at least two sequence numbers to the pseudorandom number sequence; and modifying the seed number using a modifying algorithm, so that the seed number is different for a subsequent iteration of the step of appending sequence numbers, wherein the modified seed number is different to the at least two sequence numbers.

BRIEF DESCRIPTION OF THE DRAWINGS

Examples of the invention will now be described in detail with reference to the accompanying drawings, in which:

Figure 1 illustrates a method of generating a pseudorandom number sequence according to an embodiment;

Figure 2 illustrates a method of generating sequence numbers for the pseudorandom number sequence according to an embodiment;

Figure 3 is a number line for a conceptual understanding of identifying potential generating numbers based on a seed number;

Figures 4 and 5 are number circles for a conceptual understanding of identifying potential generating numbers based on a seed number; Figure 6 illustrates a method of generating sequence numbers for generating sequence numbers based on a generating number obtained from the seed number;

Figures 7A and 7B are illustrative graphs for generating sequence generating numbers from a generating number;

Figure 8 illustrates a number circle for a conceptual understanding of selecting a subset of a plurality of values;

Figure 9 illustrates an overall method of generating sequence numbers for the pseudorandom number sequence based on a seed number;

Figure 10 illustrates a method of encrypting plaintext using a pseudorandom number sequence according to an embodiment; and

Figure 11 is a pseudorandom number sequence generator according to an embodiment.

DETAILED DESCRIPTION OF THE EMBODIMENTS

According to a concept of the invention, there is proposed a method of generating a pseudorandom number sequence for encrypting/decrypting data. A seed number is iteratively modified. For each iterative modification of the seed number, a plurality of sequence numbers are generated for the pseudorandom number sequence based on that iteration of the seed number. Thus, a plurality of sequence numbers are obtained during each iteration of modifying a seed number.

Embodiments are at least partly based on the realisation that a likelihood of an unauthorized party recognising patterns in a pseudorandom number sequence, and particularly data encrypted using such a sequence, can be reduced by generating a plurality of pseudorandom numbers for the sequence from a single, iteratively modified, seed number. Thus, the amount of potential samples of the seed number is reduced, thereby increasing a difficulty for an unauthorized party to identify patterns in the pseudorandom number sequence.

Illustrative embodiments may be employed in encryption and/or decryption systems, for the secure transmission and/or storage of data. Other uses for a pseudorandom number sequence will also be recognised by the skilled person.

Figure 1 illustrates a method 1 of generating a pseudorandom number sequence 7b according to an embodiment of the invention. The generated pseudorandom number sequence 7b may be used for encrypting plaintext into ciphertext or decrypting ciphertext into plaintext. The method 1 comprises a step 2 of obtaining a (initial) pseudorandom number sequence 7a. The obtained pseudorandom number sequence 7a may be a null, empty or a previously generated pseudorandom number sequence 7a. By way of example, the pseudorandom sequence may be a pseudorandom number sequence generated in a previous iteration of the following step. For a first iteration of the method, the pseudorandom number sequence 7a may be null or empty, and for subsequent iterations the pseudorandom number sequence generated/modified in a previous step may be used.

The method 1 further comprises a step 3 of appending sequence numbers 9 to the pseudorandom number sequence 7a obtained in step 2. By appending a plurality of sequence numbers to the pseudorandom number sequence, a new (extended) pseudorandom number sequence 7b is generated. Thus, each sequence number acts as a pseudorandomly generated number.

The step 3 comprises a number of sub-steps.

There is a sub-step 4 of obtaining a seed number 8a. The seed number 8a is suitable for defining a set of sequence numbers 9 for appending to the pseudorandom number sequence. In other words, the seed number 8a provides limits on the possible sequence numbers 9 for appending to the pseudorandom number sequence 7a. Thus, a single seed number 8a can be used to define a plurality of sequence numbers 9 to be appended to the obtained pseudorandom number sequence 7a.

For a first iteration of generating the pseudorandom number sequence 7b (e.g. where the pseudorandom sequence has been initialised), the seed number 8a may be obtained from a cryptographic key (not shown). Thus, a cryptographic key may define the seed number 8a for the first iteration of generating the pseudorandom number sequence.

The step 3 further comprises a sub-step 5 of obtaining at least two sequence numbers 9 based on the seed number 8a. Thus, at least two sequence numbers 9 for the pseudorandom number sequence 7a, 7b are generated based on the seed number 8a.

The step 3 also comprises a sub- step 6 of appending the at least two sequence numbers 9 to the obtained pseudorandom number sequence 7a. In this way, the sequence numbers 9 obtained from the seed number 8a are added to the pseudorandom number sequence 7a to thereby extend the pseudorandom number sequence 7b (consequently generating a new, extended or modified pseudorandom number sequence 7b).

In sub-step 7, the seed number 8a is modified using a modifying algorithm. Thus, in a subsequent iteration of the step 2 of appending sequence numbers to a pseudorandom number sequence, a modified seed number 8b is used to obtain the sequence numbers 9. Any suitable modifying algorithm may be used to modify the seed number 8a, such as known modifying algorithms used in existing pseudorandom number generating algorithms in which a number is iteratively or recursively modified to generate the pseudorandom number sequence.

One simple example of a modifying algorithm could comprise, for a current iteration, multiplying the seed number for a previous iteration by a predetermined number (e.g. pi or e) and take a predetermined number of digits of the decimal part of the resulting number (e.g. the first two digits) as the seed number for a current iteration. This will provide a pseudorandom modification to the seed number for each iteration. Other methods will be apparent to the skilled person.

The proposed method of generating a pseudorandom number sequence 7b ensures that a plurality of sequence numbers 9 are generated for each iteration of modifying a seed number (i.e. each time a modifying algorithm is performed). Thus, when compared to the prior art, multiple sequence numbers 9 are added to the pseudorandom number sequence for each iteration of performing a modifying algorithm.

In this way, a modifying algorithm may be obfuscated, as possible data samples for attempting to crack the modifying algorithm are reduced in number. A security of a subsequent encryption/decryption is thereby improved.

Preferably at least three sequence numbers 9 are generated from the seed number during each iteration of appending sequence numbers, and even more preferably at least five sequence numbers. This helps further obfuscate the modifying algorithm.

Particularly advantageous methods, for improved security, of obtaining the at least two sequence numbers (e.g. based on the seed number) will be hereafter described.

Figure 2 illustrates embodiments of a method 5 of generating at least two sequence numbers 29 based on the obtained seed number 8a. In particular, the seed number 8a may be used to obtain a generating number 28 for generating the two or more sequence numbers.

The method 5 comprises a step 20 of obtaining a generating number 28 and a step 21 of generating the at least two sequence numbers based on the obtained generating number. Suitable embodiments for step 21 will be described later.

In one embodiment, the step 20 of obtaining a generating number 28 comprises a step 22 of defining the seed number 8a itself as the generating number 28. Alternatively, the step 22 may comprise applying a first algorithm to the seed number 8a to obtain the generating number 28. However, in a preferred embodiment, the step 20 of obtaining a generating number 28 instead comprises a sub-step 23 of identifying at least two possible potential generating numbers 27 and a sub-step 24 of selecting one of the at least two potential generating numbers 27 as the generating number 28. The sub-steps 23, 24 may be considered as one example of applying a first algorithm to the seed number 8a.

The sub-step 23 may comprise identifying at least two potential generating numbers 27 that have a predetermined numerical relationship with the seed number 8a. By way of example, a number may be considered a potential generating number if it meets one or more set/predetermined criteria with respect to the seed number.

Thus, the seed number 8a may define a set of potential generating numbers 27. Each potential generating number 27 has a predetermined numerical relationship with the seed number 8a. To have a predetermined numerical relationship, the generating number should meet one or more criteria with respect to the seed number. One of the potential generating numbers is thereafter selected (as generating number 28) to generate at least two sequence numbers 29.

Thus, step 23 may comprise identifying a plurality of potential generating numbers 27 that meet at least one criteria (e.g. a first criterion, a second criterion and so on) with respect to the seed number 8a, to thereby determine potential generating numbers 27 having a predetermined numerical relationship with respect to the seed number.

It will be apparent that the (selected) generating number 28 therefore also has a predetermined numerical relationship with respect to the seed number 8a (i.e. meets at least one criteria).

A first criterion may be that a difference between a potential generating number 27 and the seed number 8a is (a multiple of) a first predetermined value. Thus, a potential generating number 27 may only meet the first criterion (and thereby have a predetermined numerical relationship with the seed number 8a) if a difference between the potential generating number 27 and the seed number 8a is (a multiple of) the first predetermined value. Thus a number is considered to be a predetermined generating number if a difference between that number and the seed number is (a multiple of) the first predetermined value.

A second criterion may be that a difference between the potential generating number and either the seed number or a potential generating number meeting the first criterion is a second predetermined value or optionally a multiple of the second predetermined value. In some embodiments, a potential generating number 27 must meet either the first or second criteria. Thus the sub-step 23, of Figure 2, may comprise identifying potential generating numbers meeting either of the first and second criteria.

With further reference to Figure 1, the value of the first and/or second predetermined values may be modified for a subsequent iteration of the step 2 of appending sequence numbers to the pseudorandom number sequence. Any suitable modifying algorithm may be used to perform this modification, e.g. a known modifying algorithm for generating a pseudorandom number sequence according to known concepts. Such a concept further obfuscates the value of the seed number, as the relationship between the seed number and the number used to generate the sequence numbers may be altered for each iteration of generating sequence numbers. Thus, a more secure (having a reduced likelihood or ease of replication) pseudorandom number sequence can be generated.

In this way, the predetermined numerical relationship between the seed number and the potential generating numbers may be altered (e.g. according to modifying algorithm) for each iteration of generating at least two sequence numbers and appending these to the pseudorandom number sequence.

Figures 3 and 4 are used to provide a conceptual understanding of the first criterion according to different examples. Figure 5 is used to provide a conceptual understanding of the second criterion using an example.

Figure 3 illustrates a number line 30, upon which the seed number 31 is positioned at a first position (i.e. has a first value).

A first potential generating number 32, meeting the first criteria, is at a second position on the number line (i.e. has a second value). A difference x between the first potential generating number 32 and the seed number 31 is a first predetermined value, i.e. the first predetermined value is‘x’.

A second potential generating number 33, also meeting the first criteria, is at a third position on the number line and thereby has a third value. A difference x between the second potential generating number 33 and the first potential generating number 32 is the first predetermined value. Thus, the difference between the second potential generating number and the seed number is a multiple of the first predetermined value (i.e. 2x).

Thus, both the identified potential generating numbers 32, 33 meet the first criterion and are therefore considered potential generating numbers. The step of identifying at least two possible potential numbers may comprise identifying a set of potential generating numbers that meet the first criterion. Of course, negative multiples (e.g. -lx or -2x) of the first predetermined value may also be used.

The number of identified potential generating numbers may be limited, e.g. to no more than 10, e.g. no more than 5. This helps reduce a processing power required. The number may, for example, be limited to those potential generating numbers most proximate to the seed number.

Referring now to Figure 4, numbers are represented by points on a circle (rather than on a number line). The value of a number may represent a distance (e.g. a relative number of degrees or radians or distance around a circumference in a particular direction) around the circle from a predetermined position on the circle (e.g. from an uppermost point). Thus the circle 30 is a“number circle”.

The size (e.g. radius, area, diameter or circumference) of the circle 40 may, for example, be defined by a value of the seed number or by a predetermined size, e.g. unity.

In some examples, the size of the circle is irrelevant (e.g. where the value of a number represents a number of degrees or radians a number is about the circle). By way of example, a number may have a value 0, and so be positioned at an uppermost point of the circle. If the number instead had a value 90 it would be positioned at a rightmost side of the circle 30 (assuming the number is represented by a number of degrees around the circle).

Thus, the seed number 41 is represented as a point on the circle 40. The illustrated seed number has an arbitrary value 0, for the purposes of improved understanding, but it will be clear that the seed number may be any arbitrary value.

The first predetermined value, which defines whether a potential generating number meets the first criterion, may represent: a first distance yi, y 3 (in a straight line) between the seed number and a potential generating number, a second distance from the seed number to the potential generating number around the circumference of the circle; or an angle Oi formed by connecting the seed number to a potential generating number via the centre 45 of the circle. In other words, potential generating numbers have a predetermined numerical relationship with the seed number.

Thus, the difference between a potential generating number and the seed number 41 may be a difference in angle, a difference in position around the circle and so on.

A first potential generating number 42 is located at another point on the circle 40.

In a first scenario, the first criterion is met if a direct distance yi between the seed number 41 and a potential generating number 42 is equal to a first predetermined value. Here, the first potential generating number 42 meets the first criteria. Continuing the first scenario, a second potential generating number 42 is located at yet another point on the circle. A distance y 3 between the second potential generating number 42 and the seed number 41 is also identical to the first predetermined value. Thus, the second potential generating number 42 also meets the first criteria.

In a second scenario, the first potential generating number 42 is identified by identifying the number for which an angle qi between this number and the seed number via the centre 45 of the circle 40, is equal a first predetermined angle value. Thus, a first potential generating number 42 that meets the first criteria can be identified. Of course, the angle (not shown) between the second potential generating number 42 and the seed number 41 may also be identical to the first predetermined angle value.

Thus, by referencing an angle between and/or a distance (direct, chordal distance or circumferential distance) between the seed number 41 and the first potential generating number 42, it can be seen that there is a predetermined numerical relationship between these numbers.

Preferably a distance (and therefore angle) between any of the seed number, the first potential generating number and the second potential generating is identical, i.e. equal to the first predetermined value.

It will be clear that modifying the value of the seed number 41 for each iteration (of generating a plurality of sequence numbers) results in a similar modification to the first 42 and second 43 potential generating numbers. In particular, modifying the seed number 41 causes the position of the seed number 41 to be rotated about the circle 40, inducing a similar rotation in the position of the first 42 and second 43 potential generating numbers.

As previously explained, the first predetermined value (or angle value) may be modified for each iteration of generating the plurality of sequence numbers. This improves a security of the pseudorandom number sequence.

Figure 5 illustrates a number circle 50 used to make a conceptual understanding of the second criterion clear.

Once again, the seed number 51 is illustrated as a point on the circle. First 52 and second 53 potential generating numbers (meeting the first criterion) are located at positions around the circle, as explained previously with reference to Figure 4.

Third 54, fourth 55 and fifth 56 potential generating numbers are located at other positions around circle that meet the second criteria. In particular a (numerical, distance or angular) difference between each of the third 54, fourth 55 and fifty 56 potential generating numbers, and any of the seed number and potential generating numbers meeting the first criteria, is a second predetermined value.

By way of example, a distance y 4 between the seed number 51 and the third potential generating number 54 is a second predetermined value. Similarly a distance y ? between the fourth potential generating number 55 and the first potential generating number 52 (which meets the first criteria) is the same second predetermined value.

Using the second criterion, such as explained with reference to Figure 5, increases the number of potential generating values.

Of course, other criteria are considered for defining the predetermined numerical relationships between the seed number and potential generating numbers.

For example, there may be a set of predetermined values (i.e. more than one predetermined value). Any numbers for which a difference between that number and the seed number is a value (or optionally a multiple thereof) contained in the set of predetermined values can be identified as a potential generating number according to an embodiment.

In yet other examples, potential generating numbers are determined by identifying numbers for which applying a predetermined function thereon results in a same result/answer as applying the same predetermined function on the seed number. In particular, the predetermined function may be a trigonometric or otherwise oscillating function (optionally periodic).

In another example, potential generating numbers are determined by applying a predetermined function (having multiple potential outputs) to the seed number, and designating outputs of the predetermined function as potential generating numbers.

Put generally, the values of the potential generating numbers may be defined by a set of one or more functions to be performed on the seed number, each function optionally having one or more control variables. The value(s) of these control variables may be altered according to a modifying algorithm (e.g. between iterations of the step of obtaining potential generating numbers.

Referring back to Figure 2, one of the potential generating numbers 27 (generated in sub-step 23) is selected (in sub-step 24) as a generating number 28 for generating the sequence numbers 29.

In some examples, the selection of the potential generating number 27 is based on a value of one or more digits of the seed number 8a.

By way of example, the value of the first digit of the seed number 8a may be selected (e.g. if a seed number is‘31’ the selected value is‘3’). The potential generating number that that value most proximate away from the seed number is selected as the generating number (e.g. if the selected value is‘3’, the third most proximate generating number to the seed number is selected).

In other examples, the selection of the potential generating number may be made according to a predetermined pattern. In particular, there may be a predetermined pattern or sequence (e.g. 3 rd most proximate, then 2 nd most proximate with respect to the seed number) of generating numbers that are selected. For each iteration of obtaining a generating number (e.g. for each iteration of appending at least two sequence numbers to the pseudorandom number sequence), the next generating number in the sequence may be selected.

Other suitable methods will be apparent to the skilled person.

Figure 6 illustrates a step 21 of generating two or more sequence numbers 69 (for appending to a pseudorandom number sequence) based on a generating number 68. As previously explained, the generating number 68 may be the seed number itself (not shown) or a number having a numerical relationship with the seed number.

The generating number 68 defines a set of sequence generating numbers 68b. Each sequence generating number 68b, in turn, defines a sequence number 69 for appending to the pseudorandom number sequence (not shown). A sequence number 69 is a number for being appended to the pseudorandom number sequence.

In some simpler embodiments, each sequence generating number 68b is itself selected as the sequence number 69. In other embodiments, a further function is applied to each sequence generating number 68b, as will be explained later.

The step 21 comprises a sub-step 61 of generating a set of sequence generating numbers 68b, and a sub-step 62 of obtaining sequence numbers 69 based on the set of sequence generating numbers.

The sub-step 61 may comprise designating numbers, for which applying a predetermined function thereon results in a same result/answer as applying the predetermined function on the generating number 68, as the sequence generating numbers 68b. In particular, the predetermined function may be a trigonometric or otherwise oscillating function (optionally periodic).

Thus, in preferable embodiments, the result of applying a first trigonometric function on each sequence generating number 68b is identical and equal to the result of applying the same first trigonometric function on the generating number 68.

The number of sequence generating numbers 68b may define the number of sequence numbers 69 (e.g. the number of sequence generating numbers and the number sequence numbers may be the same). Thus, the choice of how many sequence generating numbers to select may depend upon the desired number of sequence numbers for each iteration of appending sequence numbers to the pseudorandom number sequence.

The trigonometric function, f(x), may be in the form of:

/(x) = A sin(B. x + C) (1) where x is the generating number and A, B and C are variable of the trigonometric function. Each of the variables A, B and C may be modified for each iteration of generating two or more sequence numbers. The modification to the variables may be performed using any modifying algorithm, such as those used in conventional pseudorandom number sequence generators. To reduce processing power, a same algorithm can be used on each of the variables.

One or more of the variables A, B and C may be omitted.

Figure 7 conceptually illustrates a step of identifying a set of sequence generating numbers. In particular, Figure 7 is a graph 70A illustrating the result (y-axis) of the trigonometric function of equation (1) applied across a range of numbers (x-axis).

Applying the trigonometric function on the generating number 71 A outputs a trigonometric result 75A. It will be clear that applying this same trigonometric function on other numbers will result in the same trigonometric result 75 A. These same numbers, or a subset thereof, can be designated as sequence generating numbers 72A, 73 A.

It is noted that the predetermined function (e.g. trigonometric or oscillating function) may define a large or infinite number of potential sequence generating numbers. This is clearly illustrated in Figure 7, where a trigonometric function defines an infinite number of potential sequence generating numbers (although this concept is not limited to only trigonometric functions, but rather applies to any oscillating function).

A subset of these potential sequence generating numbers may be selected as the sequence generating numbers. Thus, embodiments may use a selection algorithm for selecting a subset of a plurality of numbers as the sequence generating numbers. The skilled person would appreciate that hereafter described concepts for a selection algorithm may be employed for selecting a subset of any plurality of numbers or values, and is not restricted to employment in the present invention.

The amount/number of sequence generating numbers selected by the selection algorithm may depend upon how many sequence numbers are to be added to the pseudorandom number sequence. In other examples, the number of sequence generating numbers selected may vary for different iterations of generating the sequence numbers (e.g. according to a predetermined pattern or based on a cryptographic key). In yet other or further example, the number of sequence generating numbers may be user-controlled, and thereby vary based on implementation details.

In one example, the selection algorithm comprises selecting the most proximate (potential) sequence generating numbers (to the generating number 71 A) as the sequence generating numbers.

In another example, the most proximate (potential) sequence generating numbers in a particular direction from the generating number 71A (e.g. in a positive direction, heading towards positive infinity, or in a negative direction, heading towards negative infinity) are selected as the sequence generating numbers.

In some embodiments, a selection algorithm may define a predetermined range in which potential sequence generating numbers lying within that range are selected. The predetermined range may, for example, be defined from the generating number 71 A (e.g. the generating number ± a predetermined value or percentage, such as ±100% or ±50%) or from an origin (e.g. from 0 to 100). The predetermined range or value may, for example, be based on the seed number or may be defined for all implementations of the invention (e.g. a value of 25). Other methods of defining a suitable predetermined range or value (e.g. based on the seed number) will be apparent to the skilled person.

In some embodiments, all potential sequence numbers lying within the range are selected as the sequence generating numbers. In preferred embodiments, only a subset of the potential sequence generating numbers lying within the range are selected as the sequence generating numbers.

In one example, the selection algorithm may define a set of indicators indicating which of the potential sequence numbers lying within the predetermined range are to be selected as the sequence generating numbers. The set number of indicators may, for example, define the number and/or identity of sequence generating numbers selected.

In a further example, the set of indicators may comprise a predetermined set of selection points, each selection point being a predetermined number or value falling within the predetermined range. In examples, for each selection point in the predetermined set, the most proximate or numerically closest possible sequence generating number is selected as a sequence generating number. The selected possible sequence generating numbers can then be provided as the sequence generating numbers. In some embodiments, between iterations of selecting possible sequence generating numbers, the predetermined set of selection points is modified. For example, a value may be added to each selection point (e.g. where if a modified selection point exceeds the upper limit of the predetermined range, the upper limit may be subtracted from the modified selection point). The value to be added may be defined by a“pilot” selection point (being an additional selection point - not used for generating a sequence generating number) and optionally an accompanying possible sequence generating number. For example, the value to be added may be obtained by identifying a possible sequence generating number numerically closest to the pilot selection point, and adding the value of the identified possible sequence generating number to each selection point.

A conceptual understanding of such a selection algorithm may be understood with reference to Figure 8.

Figure 8 illustrates the set of potential sequence generating numbers 81 (within the predetermined range) and the set of selection points 82, when these values are plotted on respective“number circles” or dials.

By way of explanation, a distance around a circumference of a“number circle” (or n relative angle around the circle) indicates a value. Thus, a number circle can be considered to be analogous to a wrap-around number line. The skilled person would be readily capable of adapting the number circle concept into computer programmable code (e.g. by defining a number circle as a wrap-around list with set numeric values).

Each selection point 82A, 82B, 82C can be defined by an angle around the circle, an angle of 0° may be a point at an uppermost part of the circle (as seen on the page) and an angle of 90° is a rightmost point of the circle (as seen on the page) and so on.

The predetermined set of selection points defines which of the potential sequence generating numbers 81 (plotted around the circle) are selected as sequence generating numbers. In particular, the most proximate (i.e. with respect to the circle) sequence generating numbers to corresponding selection points 82 are selected as sequence generating numbers. For example, the potential sequence generating numbers points corresponding to a closest angle to each selection point may be selected.

As previously explained, there may be provided one or more“pilot selection points” (e.g. selection point 82A), for which the accompanying potential sequence generating number 81 A is used to rotate or otherwise alter the set of selection points (i.e. rotate the number circle of the selection points) between different iterations of generating the sequence generating numbers. For example, the potential sequence generating number may define an amount by which the circle representing the selection points is rotated in a clockwise direction (thereby adjusting the values of the selection points).

In other words, the number circle representing the selection points may be rotated between iterations of selecting the sequence generating numbers, where the rotation is based upon one of the possible sequence generating numbers.

For the sake of clarity, the number circles 81, 82 have been illustrated as being different sizes. However, the size of the number circles is immaterial (e.g. as the potential sequence generating numbers may be scaled to match a size of any number circle).

In another example, the set of indicators may comprise a list of binary indicator indicating whether a potential sequence generating number in the predetermined range is to be selected or not. For example, the potential sequence generating numbers in the predetermined range may be ordered in a list (“list of potential sequence generating numbers”), each item in the list of potential sequence generating number corresponding to an item in the list of binary indicators (e.g. corresponding by position in list). Only those sequence generating numbers corresponding to a binary indicator indicating that the potential sequence generating number is to be selected is selected as a sequence generating number.

If the length of the list of binary indicators is less than the length of a list of potential sequence generating numbers, additional binary indicators indicating that a potential sequence generating number is not be selected may be appended to the end of the list of binary indicators until the lengths of the two lists match. If the length of the list of binary indicators is greater than the length of a list of potential sequence generating numbers, binary indicators indicating that a potential sequence generating number is to not be selected may be removed (e.g. from a bottom of the list of binary indicators upwards) until the lengths of the two lists match.

The set of selection points may be arranged in a list, so that there is a pre-set order of selection of the sequence generating numbers from the possible sequence generating numbers. The list may be randomised between iterations of generating possible sequence generating numbers (e.g. using a standard randomisation algorithm known in the art). In some examples, the list may be circularly shifted by a shift number. The shift number may be defined by a pilot selection point, in an analogous manner to that previously described.

Analogously, each selection point on the number circle 82 may also be assigned a particular order, to define an order in which the selection points are selected. This order may be as simple as a clockwise or anticlockwise order. Thus, the skilled person would be able to implement a selection algorithm that selects a subset of the (possibly infinite number of) potential sequence generating numbers to act as sequence generating numbers.

The trigonometric or oscillating function (i.e. the predetermined function) need not be periodic. An aperiodic oscillating function would also provide a suitable set of sequence generating numbers. Indeed, an aperiodic oscillating function would increase a pseudorandomisation of the sequence numbers, as the sequence generating numbers would not be evenly spaced apart.

One example of an aperiodic oscillating function, f (x), is an oscillating trigonometric function such as: where x is the generating number and A, B and C are variables of the trigonometric function. Of course, the values of A, B and C may vary between different iterations of generating the plurality of sequence numbers.

Figure 7B illustrates a graph 70B illustrating the result (y-axis) of the aperiodic trigonometric function of equation (2) applied across a range of numbers (x-axis).

It will be seen that, as the trigonometric function is aperiodic, but continues to oscillate, the difference between different sequence generating numbers 72B, 73B is not the same. Thus, there is more pseudorandomisity introduced when generating the sequence generating numbers 72B, 73B from the generating number.

Thus, for a generating number 71B, sequence generating numbers 72B, 73B can be identified for which the result of applying an aperiodic trigonometric function is the same as applying that same function on the generating number.

Referring back to Figure 6, sub-step 62 comprises using the sequence generating numbers 68b to generate the sequence numbers 69 for appending to the pseudorandom number sequence (not shown).

The sub-step 62 may comprise rounding each sequence generating number 68b to a whole number to thereby generate respective sequence numbers 69.

The sub-step 62 may instead comprise taking a predetermined number of digits (e.g. the first two digits of a decimal part or the first digit of the decimal part) of each sequence generating number 68b as a sequence number 69. For example, if a sequence generating number is“1.215563..”, the obtained sequence number could be 21 (if two digits are selected) or 2 (if the first digit is selected).

The sub-step 62 may comprise applying a further function to each sequence generating number 68b, such as a trigonometric function, to generate respective sequence numbers. The variable of the applied function may be controlled so as to define an upper or lower limit for the sequence numbers (e.g. scale the sequence numbers to a set range). In other words, a function may define the allowable range for a sequence number.

Sub-step 62 may comprise performing more than one action, such as those described above, on each respective sequence generating number in order to generate respective sequence numbers. For example, sub-step 62 may comprise taking a predetermined number of digits of a decimal part of the sequence generating number as an intermediate number, and subsequently applying a function (having an output of a limited range) to the intermediate number to generate the sequence number.

It will be clear that each sequence number may be scaled based on a desired range for the sequence numbers of the pseudorandom number sequence, by applying a function to the sequence generating number and/or an intermediate number generated based on the sequence generating number.

In some examples, the function applied to each sequence generating number is another trigonometric, sinusoidal or otherwise oscillating function. In another example, the function applied to each sequence generating number is a sawtooth or triangular function (e.g. a function that, when applied to a range of numbers, outputs a sawtooth or triangular wave). Thus, the function may be any periodic or aperiodic oscillating function. This enables any number to be mapped to be mapped to a specific range of numbers (the range of numbers being defined by the function).

In this way, the possible values for sequence numbers in the pseudorandom number sequence may be restricted to a set of predetermined numbers (e.g. integers between 0 and 10). In particular, rounding or scaling processes may be performed to scale a predetermined number appropriately.

The described method of generating the sequence (generating) numbers may be adapted for generation of the potential generating numbers. For example, the predetermined numerical relationship between a seed number and a potential generating number may be that a result of performing a trigonometric function on the seed number is equal to a result of performing the same trigonometric function on a potential generating number. In a similar manner, the described methods of generating potential generating numbers may be adapted for generation of the sequence (generating) numbers. That is, each sequence (generating) number may have a predetermined numerical relationship with the generating number.

Other embodiments of generating a plurality of sequence generating numbers would be apparent to the skilled person. In particular, each sequence generating number should have a predetermined numerical relationship with the generating number.

Figure 9 illustrates an overall process 90 of generating a plurality of sequence numbers 99 based on a seed number 91 according to an embodiment.

The seed number 91 is processed, by previously described sub-step 23, to generate a plurality of potential generating numbers 92. In sub-step 24, one of these potential generating numbers is selected as a generating number 98. Thus, a seed number 91 defines a set of potential generating numbers 92, of which one is selected as a generating number 98.

In an alternative embodiment, sub-steps 23 and 24 are omitted, and the seed number 91 is itself used as the generating number 98. This improves processing efficiency at the expense of improved security.

The generating number 98 is then processed in sub-step 61, such as those previously described, to generate a plurality of sequence generating numbers 98b. Each sequence generating number 98b is then processed, in sub-step 62, to generate a plurality of sequence numbers 99.

The sequence numbers 99 are thereby generated based on the seed number 91.

Figure 10 illustrates one example of a method of encrypting a plaintext 100 into a ciphertext 110 using a pseudorandom number sequence 120.

The plaintext 100 is formed from a plurality of portions 100a- 100c (e.g. symbols, letters or numbers). Each plaintext portion 100a- 100c is substituted with a substitute portion based on a corresponding number in the pseudorandom number sequence 120 and a polyalphabetic cipher (e.g. as set out in Table 1). This forms a ciphertext 110, which is also formed from a corresponding plurality of portions HOa-l lOc. Thus, each plaintext portion 100a- 100c is associated with a respective sequence number 120a- 120c of the pseudorandom number sequence, the association defining (via reference to a polyalphabetic cipher) a substitute portion for forming a ciphertext portion.

Table 1

The polyalphabetic cipher, such as that illustrated in Table 1, indicates a plurality of possible substitute portions (e.g. ‘A’, ‘B’ or ‘C’) for each possible value/content of a plaintext portion, each possible substitute portion being associated with a different possible value of the pseudorandom number sequence (e.g.‘ ,‘2’ or‘3’).

Thus, the value or content of each plaintext portion (e.g.‘X’, Ύ or‘Z’) is cross- referenced (using the polyalphabetic cipher) to identify respective substitute portions (e.g. ‘A’,‘B’ or‘C’), which are substituted in place of the plaintext portions.

Thus, a first plaintext portion lOOa (having value‘X’) is associated with a first sequence number l20a (having values‘ ) of the pseudorandom number sequence. The polyalphabetic cipher indicates the corresponding substitute portion by pairing the value of the plaintext portion with the value of the corresponding pseudorandom number sequence, (i.e. identifying a substitute portion having value‘A’). In this way, a first ciphertext portion

(having value‘A’) is identified.

It will be clear that the pseudorandom number sequence has a limited range (e.g. between 1 and 3), and has known values within that range (e.g. 1, 2 or 3). Methods of limiting a pseudorandom sequence to these values will be apparent to the skilled person employing the described methods (e.g. by rounding and/or scaling a generated sequence number).

It will be appreciated that only a portion of the plaintext, ciphertext and pseudorandom number sequence is illustrated for improved clarity, and that they may be of any length.

The above-described process may be reversed in order to decipher a ciphertext to form plaintext, as would be known by the skilled person.

Other suitable methods of encrypting a plaintext into ciphertext based on a pseudorandom number sequence (and steps for reversing the process) would be well known to the skilled person. The proposed pseudorandom number sequence generation method is particularly advantageous in the field of encryption and decryption (e.g. to obscure modification methods). However, the proposed method of generating a pseudorandom number sequence may be employed in other fields, such as for the purposes of simulation, procedural generation (such as in video games) or for randomisation/ shuffling of a list. Other suitable uses will be readily appreciated by the skilled person.

There is also envisaged a selection algorithm, which can be used when there is a need or desire to select a subset of a plurality of numbers. Such a selection algorithm may be employed, for example, in sub-step 23 to select which of a plurality of numbers are to be potential generating numbers, or in sub-step 61 to select which of a plurality of potential sequence generating numbers are to be selected as a sequence generating number.

The skilled person would be readily capable of developing a processing system for carrying out a previously described method. Thus, each step of the flow chart may represent a different action performed by a processing system, and may be performed by different modules of the processing system. A pseudorandom number sequence generator is an example of such a processing system.

Nonetheless, for the sake of completeness, Figure 11 illustrates a pseudorandom number sequence generator 110 according to an embodiment.

The generator 110 comprises a processing unit 111 adapted to: obtain a pseudorandom number sequence 7a; and append sequence numbers to the pseudorandom number sequence by: obtaining a seed number 8a for defining a set of sequence numbers for appending to the pseudorandom number sequence; obtaining at least two sequence numbers, for appending to the pseudorandom number sequence, based on the seed number; appending the at least two sequence numbers to the pseudorandom number sequence (thereby generating an extended pseudorandom number sequence 7b; and modifying the seed number 8a using a modifying algorithm, so that the seed number is different for a subsequent iteration of the step of appending sequence numbers, wherein the modified seed number 8b is different to the at least two sequence numbers.

Aspects of the present invention are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

Thus, it will be understood that disclosed methods are preferably computer- implemented methods. As such, there is also proposed the concept of computer program comprising code means for implementing any described when said program is run on a computer. Thus, different portions, lines or blocks of code according to an embodiment may be executed by a processor/computer to perform any herein described method.

Other variations to the disclosed embodiments can be understood and effected by those skilled in the art in practicing the claimed invention, from a study of the drawings, the disclosure, and the appended claims. In the claims, the word "comprising" does not exclude other elements or steps, and the indefinite article "a" or "an" does not exclude a plurality. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage. Any reference signs in the claims should not be construed as limiting the scope.