RANDOM POSITION CIPHER ENCRYPTION USING SCRAMBLED ASCII STRINGS

20220417000 · 2022-12-29

    Inventors

    Cpc classification

    International classification

    Abstract

    The present innovative solution increases security to interceptor attacks while not significantly minimizing the processing resource and time requirements of cryptography processes that are used. A novel RPC is used in conjunction with a public key, used to create private keys, for scrambling ASCII dictionary strings, which are then used to calculate distances among characters in the scrambled dictionary. The end result of the encryption process is not a ciphertext string but, instead, it is a string of character distances that any interceptor cannot use since he cannot recreate the scrambled dictionary or deduce what distances represent. The encryption process is simplified by converting computationally intensive operations into simple lookup operations in position strings calculated once for each scrambled dictionary. During decryption the scrambled dictionary and the matching position string are recreated and the original plaintext is recovered by simple lookup operations.

    Claims

    1. A computing apparatus for encrypting plaintext, comprising: a key manager, configured for (a) creating a public key, (b) using the public key to create a private key, and (c) sending the private key to a Pseudo Random Number Generator (PRNG) for producing at least one big Pseudo Random Number (PRN), and (d) using the at least one big PRN to produce 256 small PRNs in the range of (0 . . . 255) by one of (i) splitting the at least one big PRN to a plurality of smaller PRNs and applying a (mod 256) operation to each of the plurality of smaller PRNs, and (ii) applying a (mod 256) operation to each of the big PRNs; an American Standard Code for Information Interchange (ASCII) scrambler, configured for (e) associating each of the 256 small PRNs with one of 256 standard ASCII codes ordered in ascending order, and (f) scrambling the order of the standard ASCII codes, using the 256 small PRNs as the positions of the scrambled ASCII codes, to produce a dictionary, wherein the at least one big PRN has between 256 and 2048 bits each for the said dictionary; a distance calculator, configured for counting the distance between the positions of the scrambled ASCII codes in the dictionary; and an encryption processor, connected to the key manager, the ASCII scrambler, and the distance calculator, the encryption processor being configured for using the dictionary to encrypt a plaintext data by (g) reading a value of a first character in the dictionary, (h) using the value of the first character in the dictionary as a pointer to a second character in the dictionary, (j) calculating a first ciphertext character as an XOR operation between the value of the second character in the dictionary and a first character in the plaintext, (k) searching the dictionary for a next character in the dictionary with a value equal to the first ciphertext character, (l) using the distance calculator to calculate a first distance as a distance in positions of the second character in the dictionary and the next character in the dictionary, (m) reading a value of a third character in the dictionary by adding the first ciphertext character to the position of the second character in the dictionary, (n) repeating steps (j)-(m) using the value of a new third character in the dictionary calculated at each repetition of step (m) until a distance is calculated for each character in the plaintext data, and (o) exporting a distancetext containing all distances in their order of calculation.

    2. The computing apparatus of claim 1, wherein the encryption processor is further configured for (p) swapping the value of the first character in the dictionary with the value of the second character in the dictionary, after the execution of step (h), and (q) swapping the value of the second character in the dictionary with the value of the third character in the dictionary at every repetition of step (n).

    3. The computing apparatus of claim 1, wherein steps (k)-(l) are calculated as a look up operation in a position string.

    4. The computing apparatus of claim 3, wherein the position string is calculated by (iii) using a value of a character in the dictionary as a pointer to a position in the position string, and (iv) filling a value of the position in the position sting with the position of the character in the dictionary.

    5. A computing apparatus for decrypting distancetext, comprising: a key manager, configured for (a) receiving a public key, (b) using the public key to create a private key, and (c) sending the private key to a Pseudo Random Number Generator (PRNG) for producing at least one big Pseudo Random Number (PRN), and (d) using the at least one big PRN to produce 256 small PRNs in the range of (0 . . . 255) by one of (i) splitting the at least one big PRN to a plurality of smaller PRNs and applying a (mod 256) operation to each of the plurality of smaller PRNs, and (ii) applying a (mod 256) operation to each of the at least one big PRN; an American Standard Code for Information Interchange (ASCII) scrambler, configured for (e) associating each of the 256 small PRNs with one of 256 standard ASCII codes ordered in ascending order, and (f) scrambling the order of the standard ASCII codes, using the 256 small PRNs as the positions of the scrambled ASCII codes, to produce a dictionary; and a decryption processor, connected to the key manager, and the ASCII scrambler, the decryption processor being configured for (g) receiving distancetext data, (h) using the dictionary to decrypt a plaintext by (j) reading a value of a first character in the dictionary, (k) using the value of the first character in the dictionary as a pointer to a second character in the dictionary, (l) calculating a first plaintext character as an XOR operation between the value of the second character in the dictionary and a first character in the distancetext data, (m) reading a value of a third character in the dictionary by adding the first character in the distancetext data to the position of the second character in the dictionary, (n) repeating step (l) using the value of a new third character in the dictionary calculated at each repetition of step (m) until a plaintext character is calculated for each character in the distancetext data, and (o) exporting a plaintext containing all plaintext characters in their order of calculation.

    6. The computing apparatus of claim 5, further comprising swapping (p) the value of the first character in the dictionary with the value of the second character in the dictionary, after the execution of step (k), and (q) the value of the second character in the dictionary with the value of the third character in the dictionary at every repetition of step (n).

    7. A computer implemented method for encrypting plaintext, comprising: using a key manager, to (a) create a public key, (b) use the public key to create a private key, and (c) send the private key to a Pseudo Random Number Generator (PRNG) for producing at least one big Pseudo Random Number (PRN), and (d) using the at least one big PRN to produce 256 small PRNs in the range of (0 . . . 255) by one of (i) splitting the at least one big PRN to a plurality of smaller PRNs and applying a (mod 256) operation to each of the plurality of smaller PRNs, and (ii) applying a (mod 256) operation to each of the big PRNs; using an American Standard Code for Information Interchange (ASCII) scrambler to (e) associate each of the 256 small PRNs with one of 256 standard ASCII codes ordered in ascending order, and (f) scramble the order of the standard ASCII codes, using the 256 small PRNs as the positions of the scrambled ASCII codes, to produce a dictionary; using a distance calculator to count the distance between the positions of ASCII codes in the dictionary; and using an encryption processor, connected to the key manager, the ASCII scrambler, and the distance calculator to use the dictionary to encrypt a plaintext by (g) reading a value of a first character in the dictionary, (h) using the value of the first character in the dictionary as a pointer to a second character in the dictionary, (j) calculating a first ciphertext character as an XOR operation between the value of the second character in the dictionary and a first character in the plaintext, (k) searching the dictionary for a next character in the dictionary with a value equal to the first ciphertext character, (l) using the distance calculator to calculate a first distance as a distance in positions of the second character in the dictionary and the next character in the dictionary, (m) reading a value of a third character in the dictionary by adding the first ciphertext character to the position of the second character in the dictionary, (n) repeating steps (j)-(m) using the value of a new third character in the dictionary calculated at each repetition of step (m) until a distance is calculated for each character in the plaintext, and (n) exporting a distancetext containing all distances in their order of calculation.

    8. The computer implemented method of claim 7, further comprising swapping (o) the value of the first character in the dictionary with the value of the second character in the dictionary, after the execution of step (h), and (p) the value of the second character in the dictionary with the value of the third character in the dictionary at every repetition of step (n).

    9. The computer implemented method of claim 7, wherein steps (k)-(l) are calculated as a look up operation in a position string.

    10. The computer implemented method of claim 9, wherein the position string is calculated by (iii) using a value of a character in the dictionary as a pointer to a position in the position string, and (iv) filling a value of the position in the position sting with the position of the character in the dictionary.

    11. A computer implemented method for decrypting distancetext, comprising: using a key manager to (a) receive a public key, (b) use the public key to create a private key, and (c) send the private key to a Pseudo Random Number Generator (PRNG) for producing at least one big Pseudo Random Number (PRN), and (d) use the at least one big PRN to produce 256 small PRNs in the range of (0 . . . 255) by one of (i) splitting the at least one big PRN to a plurality of smaller PRNs and applying a (mod 256) operation to each of the plurality of smaller PRNs, and (ii) applying a (mod 256) operation to each of the at least one big PRN; using an American Standard Code for Information Interchange (ASCII) scrambler to (e) associate each of the 256 small PRNs with one of 256 standard ASCII codes ordered in ascending order, and (f) scramble the order of the standard ASCII codes, using the 256 small PRNs as the positions of the scrambled ASCII codes, to produce a dictionary; and using a decryption processor, connected to the key manager, and the ASCII scrambler to (g) receive distancetext data, (h) use the dictionary to decrypt a plaintext by (j) reading a value of a first character in the dictionary, (k) use the value of the first character in the dictionary as a pointer to a second character in the dictionary, (l) calculate a first plaintext character as an XOR operation between the value of the second character in the dictionary and a third character in the dictionary, where the position of the third character in the dictionary is calculated by adding to the position of the second character in the dictionary the first character in the distancetext data, (m) read a value of a fourth character in the dictionary by adding the value of the third character in the dictionary to the position of the second character in the dictionary, (n) repeat step (l) using the value of a new third character in the dictionary calculated at each repetition of step (m) until a plaintext character is calculated for each character in the distancetext data, and (o) export a plaintext containing all plaintext characters in their order of calculation.

    12. The computer implemented method of claim 11, further comprising swapping (p) the value of the first character in the dictionary with the value of the second character in the dictionary, after the execution of step (k), and (q) the value of the second character in the dictionary with the value of the fourth character in the dictionary at every repetition of step (n).

    13. A non-transitory computer program product for encrypting plaintext, the non-transitory computer program product comprising instructions to cause a computing apparatus to: use a key manager, to (a) create a public key, (b) use the public key to create a private key, and (c) send the private key to a Pseudo Random Number Generator (PRNG) for producing at least one big Pseudo Random Number (PRN), and (d) using the at least one big PRN to produce 256 small PRNs in the range of (0 . . . 255) by one of (i) splitting the at least one big PRN to a plurality of smaller PRNs and applying a (mod 256) operation to each of the plurality of smaller PRNs, and (ii) applying a (mod 256) operation to each of the big PRNs; use an American Standard Code for Information Interchange (ASCII) scrambler to (e) associate each of the 256 small PRNs with one of 256 standard ASCII codes ordered in ascending order, and (f) scramble the order of the standard ASCII codes, using the 256 small PRNs as the positions of the scrambled ASCII codes, to produce a dictionary; use a distance calculator to count the distance between the positions of ASCII codes in the dictionary; and use an encryption processor, connected to the key manager, the ASCII scrambler, and the distance calculator to use the dictionary to encrypt a plaintext by (g) reading a value of a first character in the dictionary, (h) using the value of the first character in the dictionary as a pointer to a second character in the dictionary, (j) calculating a first ciphertext character as an XOR operation between the value of the second character in the dictionary and a first character in the plaintext, (k) searching the dictionary for a next character in the dictionary with a value equal to the first ciphertext character, (l) using the distance calculator to calculate a first distance as a distance in positions of the second character in the dictionary and the next character in the dictionary, (m) reading a value of a third character in the dictionary by adding the first ciphertext character to the position of the second character in the dictionary, (n) repeating steps (j)-(m) using the value of a new third character in the dictionary calculated at each repetition of step (m) until a distance is calculated for each character in the plaintext, and (o) exporting a distancetext containing all distances in their order of calculation.

    14. The non-transitory computer program of claim 13, further comprising instructions to cause the ASCII scrambler to swap (p) the value of the first character in the dictionary with the value of the second character in the dictionary, after the execution of step (h), and (q) the value of the second character in the dictionary with the value of the third character in the dictionary at every repetition of step (n).

    15. The non-transitory computer program of claim 13, wherein steps (k)-(l) are calculated as a look up operation in a position string.

    16. The non-transitory computer program of claim 15, wherein the position string is calculated by (iii) using a value of a character in the dictionary as a pointer to a position in the position string, and (iv) filling a value of the position in the position sting with the position of the character in the dictionary.

    17. The non-transitory computer program of claim 13, wherein the small PRNs and the ASCII codes are selected from one of (v) a set with less than 256 items, and (vi) a set with more than 256 items.

    18. A non-transitory computer program product for decrypting distancetext, the non-transitory computer program product comprising instructions to cause a computing apparatus to: use a key manager to (a) receive a public key, (b) use the public key to create a private key, and (c) send the private key to a Pseudo Random Number Generator (PRNG) for producing at least one big Pseudo Random Number (PRN), and (d) use the at least one big PRN to produce 256 small PRNs in the range of (0 . . . 255) by one of (i) splitting the at least one big PRN to a plurality of smaller PRNs and applying a (mod 256) operation to each of the plurality of smaller PRNs, and (ii) applying a (mod 256) operation to each of the at least one big PRN; use an American Standard Code for Information Interchange (ASCII) scrambler to (e) associate each of the 256 small PRNs with one of 256 standard ASCII codes ordered in ascending order, and (f) scramble the order of the standard ASCII codes, using the 256 small PRNs as the positions of the scrambled ASCII codes, to produce a dictionary; and use a decryption processor, connected to the key manager, and the ASCII scrambler to (g) receive a distancetext data, (h) use the dictionary to decrypt a plaintext by (j) reading a value of a first character in the dictionary, (k) use the value of the first character in the dictionary as a pointer to a second character in the dictionary, (l) calculate a first plaintext character as an XOR operation between the value of the second character in the dictionary and a third character in the dictionary, where the position of the third character in the dictionary is calculated by adding to the position of the second character in the dictionary the first character in the distancetext data, (m) read a value of a fourth character in the dictionary by adding the value of the third character in the dictionary to the position of the second character in the dictionary, (n) repeat step (l) using the value of a new third character in the dictionary calculated at each repetition of step (m) until a plaintext character is calculated for each character in the distancetext data, and (o) export a plaintext containing all plaintext characters in their order of calculation.

    19. The non-transitory computer program product of claim 18, further comprising instructions to cause the ASCII scrambler to swap (p) the value of the first character in the dictionary with the value of the second character in the dictionary, after the execution of step (k), and (q) the value of the second character in the dictionary with the value of the fourth character in the dictionary at every repetition of step (n).

    20. The non-transitory computer program product of claim 18, wherein the small PRNs and the ASCII codes are selected from one of (iii) a set with a length of less than 256 items, and (iv) a set with a length of more than 256 items.

    Description

    BRIEF DESCRIPTION OF THE DRAWINGS

    [0023] FIG. 1 shows a high-level software architecture of the present innovative encryption-decryption exemplary solution.

    [0024] FIG. 2 shows a high-level flowchart of the proposed encryption solution according to a first exemplary implementation.

    [0025] FIG. 3 shows a mid-level flowchart of the proposed encryption solution using a static scrambled ASCII dictionary according to a first exemplary implementation.

    [0026] FIG. 4 shows a low-level flowchart of the proposed encryption solution using a static scrambled ASCII dictionary according to a first exemplary implementation.

    [0027] FIG. 5 shows an example calculation of distances according to the first exemplary implementation.

    [0028] FIG. 6 shows how an example position lookup string is constructed from the static scrambled ASCII dictionary according to the first exemplary implementation.

    [0029] FIG. 7 shows mid-level flowchart of the proposed decryption solution using the static scrambled ASCII dictionary according to the first exemplary implementation.

    [0030] FIG. 8 shows a low-level flowchart of the proposed encryption solution using a dynamic scrambled ASCII dictionary according to a second exemplary implementation.

    [0031] FIG. 9 shows an example calculation of distances according to the second exemplary implementation.

    [0032] FIG. 10 shows a low-level flowchart of the proposed decryption solution using a dynamic scrambled ASCII dictionary according to a second exemplary implementation.

    [0033] FIG. 11A shows an exemplary high-level hardware architecture of an encryption module according to the present innovative encryption exemplary solution.

    [0034] FIG. 11B shows an exemplary high-level hardware architecture of a decryption module according to the present innovative decryption exemplary solution.

    [0035] FIG. 12 shows an example chart comparing the performance of the present innovative solution with the AES-256 algorithm.

    DETAILED DESCRIPTION

    [0036] The word “exemplary” is used herein to mean “serving as an example, instance, or illustration”. Any embodiment described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments.

    [0037] The acronym “AES” is intended to mean “Advanced Encryption Standard”.

    [0038] The acronym “ASCII” is intended to mean “American Standard Code for Information Interchange”.

    [0039] The acronym “CD” is intended to mean “Compact Disc”.

    [0040] The acronym “DSL” is intended to mean “Digital Subscriber Line”.

    [0041] The acronym “DVD” is intended to mean “Digital Versatile Disc”.

    [0042] The acronym “IoT” is intended to mean “Internet of Things”.

    [0043] The acronym “NFC” is intended to mean “Near-Field Communication”.

    [0044] The acronym “PRN” is intended to mean “Pseudo-Random Number”.

    [0045] The acronym “RPC” is intended to mean “Random Position Cipher”.

    [0046] The acronym “PRNG” is intended to mean “Pseudo-Random Number Generator”.

    [0047] The acronym “RNG” is intended to mean “Random Number Generator”.

    [0048] The acronym “TCP/IP” is intended to mean “Transmission Control Protocol/Internet Protocol”.

    [0049] The acronym “VPN” is intended to mean “Virtual Private Network”.

    [0050] The acronym “XOR” is intended to mean “eXclusive OR”.

    [0051] The acronym “XML” is intended to mean “eXtensible Markup Language”.

    [0052] The term “mobile device” may be used interchangeably with “client device” and “device with wireless capabilities”.

    [0053] The term “user” may be used interchangeably with “regular user”, “ordinary user”, and “client”. It may also be used to mean “user of an application” or “user of a service”.

    [0054] The term “system” may be used interchangeably with “device”, “computing device”, “apparatus”, “computing apparatus”, and “service”, except where it is understood to a reader of ordinary skill in related art that these terms refer to different things, as this is apparent by the context of the discussion in which they appear. Under any circumstance, and unless otherwise explicitly stated or implicitly hinted at in the description, these four terms should be considered to have the broadest meaning i.e. that of encompassing all four.

    [0055] The term “module” may be used interchangeably with “unit” or “subunit”, except where it is understood to a reader of ordinary skill in related art that these terms refer to different things, as this is apparent by the context of the discussion in which they appear.

    [0056] The term “big” may be used interchangeably with “large”, except where it is understood to a reader of ordinary skill in related art that these terms refer to different things, as this is apparent by the context of the discussion in which they appear.

    [0057] Parameters and names in lower-case and upper-case characters are intended to mean the same thing except where it is understood to a reader of ordinary skill in related art that these terms refer to different things, as this is apparent by the context of the discussion in which they appear, or where a different meaning is disclosed in the following description.

    [0058] The term “string” may be used interchangeably with “stream” and “array”, except where it is understood to a reader of ordinary skill in related art that these terms refer to different things, as this is apparent by the context of the discussion in which they appear.

    [0059] The term “encoder” may be used interchangeably with “encrypter” and “sender”, except where it is understood to a reader of ordinary skill in related art that these terms refer to different things, as this is apparent by the context of the discussion in which they appear.

    [0060] The term “decoder” may be used interchangeably with “decrypter” and “receiver”, except where it is understood to a reader of ordinary skill in related art that these terms refer to different things, as this is apparent by the context of the discussion in which they appear.

    Definitions

    [0061] Plaintext is the data to be protected during transmission.

    [0062] Encryption Algorithm is a mathematical process that produces a ciphertext or a distancetext for any given plaintext and encryption key. The encryption algorithm is a cryptographic algorithm that takes plaintext and an encryption key as input and produces a ciphertext.

    [0063] Ciphertext is the different version of the plaintext produced by the encryption algorithm using a specific encryption key. The ciphertext is not guarded and may be transmitted on a public channel. The ciphertext may be intercepted or compromised by anyone who has access to the communication channel.

    [0064] Distancetext is the version of the plaintext that is produced when the plaintext is encrypted so as to replace its encrypted characters by the distance of the same character from the previous character in the dictionary which is XORed with the plaintext character, and this distance is measured as the distance in characters in a scrambled American Standard Code for Information Interchange (ASCII) string between the positions of these same characters in the ASCII string.

    [0065] Decryption Algorithm is a mathematical process that produces a unique plaintext for any given ciphertext and decryption key, or for any given distancetext and decryption key. The decryption algorithm is a cryptographic algorithm that takes a ciphertext or a distancetext and a decryption key as input, and outputs a plaintext. The decryption algorithm essentially reverses the encryption algorithm and is, thus, closely related to it.

    [0066] Encryption Key is a value that is known to the sender. The sender inputs the encryption key into the encryption algorithm along with the plaintext in order to compute the ciphertext.

    [0067] Decryption Key is a value that is known to the receiver. The decryption key is related to the encryption key but is not always identical to it. The receiver inputs the decryption key into the decryption algorithm along with the ciphertext in order to compute the plaintext.

    [0068] Private Key is a value known only to its owner or creator.

    [0069] Public Key is a value known to more entities than its owner or creator.

    [0070] Technical Characteristics of Encryption Methodologies in the Prior Art

    [0071] Typically, in a cryptography system, a sender wants to securely transmit input data (e.g. plain text, or any other type of data) over a communications channel (or via a storage medium) to a receiver. Input data are fed at the sender's side to an encryption module (or algorithm) together with an encryption key. Encryption module applies a methodology and encryption key to input data to produce a ciphertext (i.e. encrypted) data. Ciphertext is received by receiver and fed to a decryption module (or algorithm) together with a decryption key. Decryption module outputs plaintext (i.e. decrypted) data, which is intended to be identical to the input plaintext data.

    [0072] Malicious interceptors may intercept ciphertext at any time after transmission from the sender and before or after reception by the receiver. For an interceptor to make use of ciphertext (or distancetext on the present exemplary implementation), the interceptor has to find a way to substitute the elements (i.e. the characters) in the ciphertext (or distancetext) with characters matching the elements (i.e. the characters) in plaintext. In other words, the interceptor needs to guestimate or steal the decryption key (and also information on what the distancetext represents). Decryption key may be done with a different decryption key or with the same encryption key.

    [0073] Today with the use of supercomputers or parallel computing it is becoming more likely that an interceptor can “break” an encryption algorithm and manage to decrypt and cyphertext. Security experts continuously try to come up with improved algorithms that rely on very long keys and other methods in order to make them harder to break. However, this never-ending race is getting into dire straits with the forthcoming availability of quantum computers, which will offer huge amounts of processing power that is expected to make existing encryption algorithms vulnerable to interceptors.

    [0074] Technical Characteristics of the Present Innovative Random Position Cipher (RPC) Encryption/Decryption Methodology Using Static Scrambled ASCII Dictionaries

    [0075] Encryption

    [0076] FIG. 1 shows a high-level logical software architecture of the present innovative encryption-decryption exemplary solution. Diagram 100 shows a sender 110 that encrypts a plaintext 115, and a receiver 120 that recreates the same plaintext. Both sender 110 and receiver 120 each have a key manager 130, which agree to a public encryption key g and which both use in the encryption/decryption process. Both sender 110 and receiver 120 each have a Pseudo Random Number Generator (PRNG) ASCII scrambler 150, which uses the public key g to create a private key (a for sender 110 and b for receiver 120), which is kept secret, and a prime modulus pm, which is public and agreed between the two scramblers 150. In one aspect, the prime modulus pm does not need to be shared since it is prearranged, known, and does not vary.

    [0077] Each scrambler 150 uses the respective private key (a, b) and the common public prime modules pm to scramble a public ASCII string, which contains an ordered listing of the main ASCII codes (i.e. 0 . . . 255). The resulting scrambled dictionary (it is identical for both sender 110 and receiver 120) contains the same ASCII codes (i.e. 0 . . . 255) but in a pseudo random order that is not known to any party not in possession of any of the private keys a, b. The private keys may be produced by any known cryptography algorithm (e.g. RSA, Diffie Hellman, . . . ) using any known PRNG to produce PRN seeds that are used as public key g and optionally as prime modulus pm. The private key (256 up to 2048 bits for the standard 256-character dictionary) is used as a seed to a PRNG to produce RNGs that are converter to lie in the range (0 . . . 255) and which are used for scrambling the standard ASCII codes.

    [0078] Sender 110 feeds the scrambled ASCII dictionary and a plaintext 115 (that is to be encrypted) to a Random Position Cipher (RPC) encryption algorithm 160, which algorithm produces a ciphertext. In contrast to what is known in prior art, the ciphertext is not transmitted to receiver 120 and is exclusively stored at sender 110, e.g. in secure volatile or non-volatile storage (e.g. memory in combination with a secure kernel, a sandbox, or other secure storage technology).

    [0079] The ciphertext is used to calculate a distancetext 170 using the scrambled ASCII dictionary. It is this distancetext that is transmitted to receiver 120, and it is only the distancetext (and the public key g, and optionally prime modulus pm) that are susceptible to attacks by interceptors. However, even if an interceptor manager to get access to the distancetext, it is not possible to make sense of its distances, as he cannot reproduce the scrambled ASCII dictionary. It is noted that the public key g, and the prime modulus pm are not sent to receiver 120 together with the distancetext, so as to make it more difficult for an interceptor to steal them all, while in alternative exemplary implementations, different channels (i.e. data networks) may be used, and additional encryption of the public key g, and prime modulus pm may be applied for added security.

    [0080] Upon reception of the distancetext, receiver 120 feeds the distance text and the scrambled ASCII dictionary (which it has previously produced) to RPC decryption algorithm 165 and produces plaintext 125, which is identical to the plaintext produced by sender 110 using its RPC encryption algorithm 160 and distance calculation 170.

    [0081] FIG. 2 shows a high-level flowchart of the proposed encryption solution according to a first exemplary implementation. Methodology 200 starts with key manager 130 generating a public encryption key g, which is also sent to receiver 120.

    [0082] Key manager 130 uses the public key g to produce a private key b and sends the private key b to a PRNG, which uses b as a seed and produces one or more big Pseudo Random Number(s) (PRN) 220, each of which contains any number of digits (e.g. in one aspect PRNs have several hundred or several thousand digits, while in another aspect each of the 256 PRNs has 256 bits or up to 2048 bits). In one aspect the PRNG is part of key manager 130, or in another aspect the PRNG is part of a PRNG ASCII Scrambler 140, or other module).

    [0083] The PRNs are then used (in one aspect by key manager 130, or in another aspect by PRNG ASCII Scrambler 140) to create a set of small PRNs (256 in this example) in the range (0 . . . 255) 230 by applying a mod 256 operation to each PRN, where 256 is the prime modulus pm, which is sent to receiver 120, as is the public key g. In one aspect a single PRN is used, while in another aspect more than one PRNs are used to produce the set of 256 small PRNs using the mod 256. The outcome of the mod operation are PRNs that are limited in the range (0 . . . 256).

    [0084] PRNG ASCII Scrambler 140 associates one small PRN (0 . . . 255) with one standard ASCII code 240 ((0 . . . 256) ordered in ascending order). For instance, “123” may be associated to ASCII code “034”, etc. The association is repeated until 250 all ASCII codes have been associated with a PRN. Then PRNG ASCII Scrambler 140 scrambles the standard ASCII string 260, using the small PRNs associated with the ordered standard ASCII codes, so that the position of the ASCII codes in the resulting scrambled ASCII string is random as opposed to the ordered (in increasing order) ASCII string. The resulting scrambled ASCII string is used as a dictionary in the encryption process (also for the decryption process).

    [0085] In one aspect, the scrambling of the standard ASCII codes is implemented by reading the first PRN r.sub.1=150, and we use r.sub.1 as a pointer to the 150.sup.th cell of the standard ASCII codes that are stored in a standard ASCII string, and then swap the 1.sup.st value with the 150.sup.th value in the standard ASCII codes string. Then we read the second PRN r.sub.2=73, and use it as a pointer to the 73.sup.rd cell of the standard ASCII codes and swap the 2.sup.nd value with the 73.sup.rd value in the standard ASCII codes string. The process is repeated for all 256 PRNs.

    [0086] The scrambled ASCII string is ready to be used for encrypting plaintext. In one aspect, the encryption speed is boosted by reducing the number of calculations needed. Instead of the encrypter searching and counting the position inside the position of a number inside the scrambled ASCII code, the encryptor simply uses the content of a cell in the scrambled ASCII string W, as a position pointer to a position string PA 270, that the encryptor (i.e. a position calculator) calculates once for the encryption of the entire plaintext using the same public key. As a result, and by means of example, the value “9” of the 1.sup.st cell of W points to the 9.sup.th cell of position string PA, which contains the value “1”, corresponding to the first cell (i.e. position) in the scrambled ASCII string W.

    [0087] The encryption algorithm is applied 280 to the plaintext, using the position string PA position string PA for replacing complex computations with a simple lookup operation in PA. The encryption algorithm thereby creates a distancetext 290 receiver 120.

    [0088] In another exemplary implementation, the 256 standard ASCII codes and the mod 256 operation may be substituted by any number of codes and modulus. For example, less than 256 codes and modulus could be used), or more than 256 codes and modulus could be used. However, for more than 256 codes and modulus, the clever substitution of complex operations with simple lookup operations results in only minimal negative impact to the calculations for the encryption (and decryption) of plaintext.

    [0089] FIG. 3 shows a mid-level flowchart of the proposed encryption solution using a static scrambled ASCII dictionary according to a first exemplary implementation. Encryption methodology 300 starts with the encryptor reading the value in the first cell of the scrambled ASCII string W 310, e.g. it reads value “19”, and using this value as the an index (or pointer) to the e.g. 19.sup.th cell in W, and reads the value in the 19.sup.th cell of W 320. The encryptor then calculates (w.sub.19 XOR p.sub.1), where p.sub.1 is the first character in the plaintext P, to produce a cipher character c.sub.i which it stores in the first cell of a ciphertext string C 330. Operation 330 (w.sub.19 XOR p.sub.1)=(25 XOR 99)=122 in our example. The encryptor then reads the value in the 122.sup.nd cell of PA 340 (which is equal to 56), uses this value as the value of “j”, i=19 and calculates d.sub.i=((256-19+56) mod 256)=37, and stores d.sub.i in D 350.

    [0090] Methodology 300 continues by reading the value w.sub.19+c.sub.i=w.sub.19+122=w.sub.141 360 and the steps 330 onwards are repeated until all characters of the plaintext P have been encrypted and the corresponding distances have been stored in D. D is then exported (i.e. sent to the receiver and/or saved at a secures storage location in the sender).

    [0091] FIG. 4 shows a low-level flowchart of the proposed encryption solution using a static scrambled ASCII dictionary according to a first exemplary implementation. Methodology 400 starts with PRNG ASCII scrambler 140 loading the standard ASCII dictionary in a standard ASCII string 410 and scrambling 415 the standard ASCII string using the 256 short (0 . . . 255) PRNs produced by the PRNG with the private key (that is produced using the public key agreed between the sender and receiver, using any known key algorithm) as seed.

    [0092] The encryptor loads the scrambled ASCII dictionary W 420, creates ASCII position String PA 425, calculates the length M if the plaintext string P, that is to be encrypted and sets variables i equal to 1, j equal to 0, and m equal to 1, and sets the current scrambled ASCII dictionary character w 440 equal to the value in the cell with the position in W equal to the value of the previous current scrambled ASCII dictionary character w, which for the first application of step 440, is the first cell in W.

    [0093] The encryptor then calculates the corresponding distance (c.sub.i=p.sub.i XOR w) 445 by looking-up the distance in the position string PA 450 and increases variable j by 1 455 and repeats step 540 until the value of w.sub.j equals c.sub.i 453, and then calculates the distance (d.sub.j=(256−i+j) mod 256) 460 and sets w=w+c.sub.i 465. If m<M, methodology 400 increases m 475 and i 480 by 1 and branches back to step 445. Once m=>M 470 methodology 400 ends as the encryption of plaintext P is completed and distance string D has been created and set.

    [0094] FIG. 5 shows an example calculation of distances according to the first exemplary implementation. Example 500 contains scrambled ASCII string W, with a first cell w.sub.1=19. The encryptor reads w.sub.1=19 and uses the value “19” as an index pointing to the 19.sup.th cell w.sub.19=25.

    [0095] It then calculates (w.sub.19 XOR p.sub.1)=(25 XOR 99)=122, thereby creating the first ciphertext character c.sub.1=122, which effectively encrypts the first plaintext character p.sub.1. The encryptor looks for the next cell in W, which contains the value of c.sub.1=122. This value is in the d.sub.1=37.sup.th cell of W after w.sub.19, i.e. in cell w.sub.19+37=w.sub.56 from the beginning of W. The ciphertext C is not sent to the receiver, and there is no need to store it at the sender, as it is no longer used in the encryption of plaintext P.

    [0096] The encryptor loads the cell that is c.sub.1=122 positions (i.e. cells) after w.sub.19, i.e. w.sub.25+122=w.sub.147=65 and encrypts the second plaintext character p.sub.2 by (w.sub.147 XOR p.sub.2)=(65 XOR 21)=84=c.sub.2. The encryptor looks for the next cell in W, which contains the value of c.sub.2=84. This value is in the d.sub.2=54.sup.th cell of W after w.sub.19, i.e. in cell w.sub.19+37+54=w.sub.110 from the beginning of W. The ciphertext C is not sent to the receiver, and there is no need to store it at the sender, as it is no longer used in the encryption of plaintext P.

    [0097] The encryptor loads the cell that is c.sub.2=84 positions (i.e. cells) after w.sub.19+122, i.e. w.sub.141+84=w.sub.225=31 and encrypts the third plaintext character p.sub.3 by (w.sub.225 XOR p.sub.3)=(31 XOR 153)=152=c.sub.3. The encryptor looks for the next cell in W, which contains the value of c.sub.3=152. This value is in the d.sub.3=193.sup.rd cell of after w, i.e. in cell w.sub.225+193=w.sub.418 from the beginning of W. The ciphertext C is not sent to the receiver, and there is no need to store it at the sender, as it is no longer used in the encryption of plaintext P.

    [0098] The encryptor loads the cell that is c.sub.3=152 positions (i.e. cells) after w.sub.225, i.e. w.sub.225+152=w.sub.377=28 and encrypts the third plaintext character p.sub.4 by (w.sub.377 XOR p.sub.4)=(28 XOR 82)=78=c.sub.4. The encryptor looks for the next cell in W, which contains the value of c.sub.4=78. This value is in the d.sub.4=37.sup.th cell of W after w, i.e. in cell w.sub.377+37=w.sub.414 from the beginning of W. The ciphertext C is not sent to the receiver, and there is no need to store it at the sender, as it is no longer used in the encryption of plaintext P.

    [0099] The calculation of distances is done using the formula: di=(256−i+j) mod 256, which effectively treats the scrambled ASCII string as a cyclic string. “i” is the current cell in the scrambled ASCII string, and “j” is the position taken from the PA string.

    [0100] Encryption continues until all characters of plaintext P have been encrypted and all the corresponding distances d.sub.i have been calculated and saved in D. D is then securely saved in the sender and send to receiver.

    [0101] In the above calculations it is noted that W has 256 cells, so for cells with positions above 256, the respective positions above 256 are calculated again from the 1.sup.st position, effectively treating Was a cyclic array.

    [0102] FIG. 6 shows how an example position lookup string is constructed from the static scrambled ASCII dictionary according to the first exemplary implementation. Example 600 contains scrambled ASCII string W. For reasons of simplicity, only the first 11 cells of W are shown, containing (from the 1.sup.st to the 11.sup.th cell) values 9, 5, 11, 2, 7, 8, 1, 3, 10, 4, and 6.

    [0103] Together with W is shown position string PA, with the same number of cells as W. PA is constructed by taking, in turn, each cell of W, reading its value and using the value as a pointer to a cell position in PA, and filling the value of the pointed cell in PA with the position of the said cell in W. For example, the 1.sup.st cell in W contains the value “9” which is used as a pointer to the 9.sup.th cell in PA; the 9.sup.th cell in PA is set to the value “9” of the first cell of W. Similarly, the 2.sup.nd cell of W is used to set the 5.sup.th cell of PA to the value “2”, and so on for the remaining cells.

    [0104] As a result, the string PA is populated with all values matching the cell positions in W and in the positions pointed to by the values in the corresponding cells of W (not all are shown in FIG. 6).

    [0105] Decryption

    [0106] FIG. 7 shows mid-level flowchart of the proposed decryption solution using the static scrambled ASCII dictionary according to the first exemplary implementation. Methodology 700 starts with the receiver receiving 710 from the sender a public key g, and a prime module pm. The receiver (i.e. a decryption processor) also receives from the sender a distancetext string D. In one aspect D is received at a separate transmission and optionally via a separate network than for g and pm for added security. The receiver constructs a private key b 720 and uses b to construct a scrambled ASCII string 730, which is identical to the scrambled ASCII string the sender constructed for encrypting the original plaintext. Decryption is done as an XOR operation between the value of the cell whose position is pointed to by the value in the first position of the scrambled ASCII string W 750. For the first calculation 750, the 1.sup.st plaintext character is calculated as (w.sub.w1 XOR w.sub.w1+d.sub.1=P.sub.1). The calculation of the second plaintext character 760 is done by calculating (w.sub.w1+w(w1+d1)) XOR (w.sub.w1+w(w1+d1)+d2))=P.sub.2. Step 760 is repeated 770 until all characters in the distance string D have been converted into plaintext P characters, and P is exported 780 (e.g. saved, displayed, or otherwise used at the receiver). In every iteration of step 760, the formula is computed by updating the to the indices of the w cell an extra distance d.sub.i.

    [0107] Technical Characteristics of the Present Innovative Random Position Cipher (RPC) Encryption/Decryption Methodology Using Dynamic Scrambled ASCII Dictionaries

    [0108] Encryption

    [0109] FIG. 8 shows a low-level flowchart the proposed encryption solution using a dynamic scrambled ASCII dictionary according to a second exemplary implementation. Methodology 800 starts with the encryptor reading the value of the first cell of the scrambled ASCII string W 810, which has been constructed identically to the construction of the scrambled ASCII string W in the first exemplary embodiment where a static dictionary is used. The encryptor continues by reading the value of the cell (for simplicity we refer to it as the second cell) pointed to by the value of the first cell in W 820 and swapping values between the first and second cells of W 825.

    [0110] The encryptor creates the ASCII position array PA 830 exactly like the process described in the first exemplary embodiment where a static dictionary is used. Step 830 is, in another aspect, performed prior to step 810. The first ciphertext character c.sub.i is calculated 840 as an XOR operation between the value of the second cell of W and the first cell of the plaintext string P. The operation is implemented as a lookup of W in PA to find the value of C 850 and the distance d.sub.1 is calculated 860 in the same way as in the first embodiment, i.e. d.sub.i=((256−i+j) mod 256) and stored in D.

    [0111] The encryptor then reads the value of the cell calculated by adding to the position of the second cell the value of the ciphertext character c.sub.i 870 and repeats the process from step 825 and for all cells in the plaintext string.

    [0112] Methodology 800 is identical to the encryption methodology used in the first exemplary embodiment. The only exception is that methodology 800, swaps the values of W, in step 825 thus introducing the use of dynamic scrambled ASCII tables W.

    [0113] FIG. 9 shows an example calculation of distances according to the second exemplary implementation. Example 990 is identical to example 500, and also includes the swapping of characters in the scrambled ASCII dictionary during the calculations of the distance characters of the distancetext produced by the encrypter.

    [0114] The swapping of the characters in the scrambled ASCII dictionary is performed one at a time before the respective ciphertext and distancetext character calculations. So, swapping 1 is done before the calculation of ciphertext character c.sub.1 and distancetext character d.sub.1, swapping 2 is done before the calculation of ciphertext character c.sub.2 and distancetext character d.sub.2, swapping 3 is done before the calculation of ciphertext character c.sub.3 and distancetext character d.sub.3, swapping 5 is done before the calculation of ciphertext character c.sub.4 and distancetext character da, and so on for swapping 5 and until the last ciphertext and distancetext characters have been calculated.

    [0115] Decryption

    [0116] FIG. 10 shows a low-level flowchart the proposed decryption solution using a dynamic scrambled ASCII dictionary according to a second exemplary implementation. Methodology 900 starts with the decryptor loading the ACSII dictionary string 910 and scrambling the dictionary to produce the scrambled ASCII dictionary W 915, which has been constructed identically to the construction of the scrambled ASCII string W in the first exemplary embodiment where a static dictionary is used. The decryptor loads W 920 and swaps the value of the first cell with the value of the cell whose position is pointed by the value of the first cell 925.

    [0117] The decryptor calculates the length L 935 of the distance string D that is has received and which is wants to decrypt, sets variable i=1 940 and calculates the operation (w.sub.w1 XOR.sub.ww1+di=Pi).

    [0118] The decryptor then increases i by 1 950 and continues with the second plaintext character by calculating (w.sub.wi+w(wi+di)) XOR (w.sub.wi+w(wi+di+d(i+1)))=P.sub.i) 955, and branching back to step 950 for as long as i<L 960, i.e. for as long as there are still characters in the distancetext string D that have not been used by the decoder to produce the corresponding plaintext characters in string P. When the entire set of characters in the distancetext string D have been used by the decoder to produce the corresponding plaintext characters in string P, P is exported 970 (e.g. saved, displayed, or otherwise used at the receiver).

    [0119] Methodology 900 is identical to the decryption methodology used in the first exemplary embodiment. The only exception is that methodology 900, swaps the values of W, in step 925 thus introducing the use of dynamic scrambled ASCII tables W.

    [0120] Hardware Architecture

    [0121] Encoder

    [0122] FIG. 11A shows an exemplary high-level hardware architecture of an encryption module according to the present innovative solution. Hardware architecture 1000 may be used for the encrypters (i.e. computing apparatuses, encryption apparatuses, modules, systems, etc.) of both the first and the second exemplary implementations. Encrypter 1000 has an encryption processor 1010 which is the main processing module running software, and which according to the particular exemplary implementation used may be in firmware, executables, etc. and written in any programming language. Encryption processor 1010 communicates with an ASCII scrambler 1030 (which scrambles the standard ASCII string using a private key a produced by the key manager 1020 and using a PRNG), a key manager 1020, a distance calculator 1040 (which calculates distances in the scrambled ASCII string W using the position string PA), an optional storage module 1050 (e.g. some form of volatile or persistent memory or similar module), and an optional communications interface 1060, for communicating with other module and systems.

    [0123] In one aspect, the software modules of the key manager 130 run on key manager 1020, PRNG ASCII Scrambler 140 and Scrambled ASCII Dictionary 150 run on ASCII scrambler 1030, Distance Calculation 170 runs on distance calculator 1040, and RPC Encryption 160 runs on encryption processor 1010.

    [0124] In alternative embodiments, the encrypter 1000 may also be implemented with additional modules, or some of its modules be omitted or merged without departing from the scope of protection of the present innovative solution.

    [0125] Decoder

    [0126] FIG. 11B shows an exemplary high-level hardware architecture of a decryption module according to the present innovative decryption exemplary solution. Hardware architecture 1005 may be used for the decrypters (i.e. computing apparatuses, decryption apparatuses, modules, systems, etc.) of both the first and the second exemplary implementations. Decrypter 1005 has a decryption processor 1015 which is the main processing module running software, which according to the particular exemplary implementation used may be in firmware, executables, etc. and written in any programming language. Decryption processor 1015 communicates with an ASCII scrambler module 1035 (which scrambles the standard ASCII string using a private key a produced by the key manager 1025 and using a PRNG), a key manager 1025, an optional storage module 1055 (e.g. some form of volatile or persistent memory or similar module), and an optional communications interface 1065, for communicating with other modules and systems.

    [0127] In one aspect, the software modules of the key manager 130 run on key manager 1025, PRNG ASCII Scrambler 140 and Scrambled ASCII Dictionary 150 run on ASCII scrambler 1035, and RPC Decryption 165 runs on decryption processor 1015.

    [0128] In alternative embodiments, decrypter 1005 may also be implemented with additional modules, or some of its modules be omitted or merger without departing from the scope of protection of the present innovative solution.

    [0129] Advantages of the Proposed Innovative Solution

    [0130] The proposed methodologies, software and hardware architectures offer a variety of advantages over prior art encryption/decryption methodologies and systems. By means of example, and without limit its scope of protection, the present innovative solution is suitable for low-power systems (e.g. portable systems, including mobile payments and credit cards, Near-Field Communication (NFC), Internet-of-Things (IoT), etc.), low processing-power systems (e.g. portable, IoT, and embedded devices, etc.), low-processing-time-response systems (e.g. IoT for autonomous driving, military applications, etc.), real-time 4K video, real-time audio, real-time 8K telemedicine, and real-time movie theater quality super high-resolution video systems, video games, etc.

    [0131] Apart from the many advantages mentioned above, the present innovative solution offers a far superior security compared to all known encryption/decryption algorithms and systems, including the Advanced Encryption Standard (AES)-256 algorithm.

    [0132] FIG. 12 shows an example chart comparing the performance of the present innovative solution with the AES-256 algorithm. As the size of the data to be encrypted/decrypted increase, the gap in the performance between the AES-256 algorithm and the present innovative solution for the static (standard) and for the dynamic (swapped) scrambled dictionary is huge. For very small data (6-100 MB) the performance of AES-256 is 4 times slower that both the present RPC algorithms, while from 200 MB upwards the AES-256 is significantly slower and for 1000 MB the AES-256 is of the order of (1.25*10.sup.9) msec slower than both exemplary implementations of the present innovative solution.

    [0133] Exemplary Use of the Innovative Solution

    [0134] The present algorithms and hardware modules may be used in a wide variety of applications. By means of example and without limiting the scope of protection of the present innovative solution, possible uses include encryption and decryption of any file type, use in audio and video conferencing, streaming applications, Bluetooth file transfers, NFC, Transmission Control Protocol/Internet Protocol (TCP/IP), Virtual Private Network (VPN) any type of network communication whether wired or wireless, military applications, payment systems and applications, IoT applications and systems, cloud computing, parallel computing, quantum computing, etc.

    [0135] In the exemplary implementations, the ciphertext is not stored in a string and is not saved so as to ensure higher security. Instead, only the current ciphertext character is stored at a memory location upon its calculation and is overwritten at every new cipher character calculation.

    [0136] The examples used above to describe the present innovative solution should not be viewed as limiting the scope of the present innovative solution. The present innovative solution may be applied to use scenarios and settings other than those described in the presented examples.

    [0137] The above exemplary implementations are intended for use either as a standalone system or method in any conceivable scientific and business domain, or as part of other scientific and business methods, processes and systems.

    [0138] The above exemplary embodiment descriptions are simplified and do not include hardware and software elements that are used in the embodiments but are not part of the current invention, are not needed for the understanding of the embodiments, and are understood to any user of ordinary skill in related art. Furthermore, variations of the described method, system architecture, and software architecture are possible, where, for instance, method steps, and hardware and software elements may be rearranged, omitted, replaced with equivalent, or new added.

    [0139] Various embodiments of the invention are described above in the Detailed Description. While these descriptions directly describe the above embodiments, it is understood that those skilled in the art may conceive modifications and/or variations to the specific embodiments shown and described herein unless specifically excluded. Any such modifications or variations that fall within the purview of this description are intended to be included therein as well. Unless specifically noted, it is the intention of the inventor that the words and phrases in the specification and claims be given the ordinary and accustomed meanings to those of ordinary skill in the applicable art(s).

    [0140] The foregoing description of a preferred embodiment and best mode of the invention known to the applicant at this time of filing the application has been presented and is intended for the purposes of illustration and description. It is not intended to be exhaustive or limit the invention to the precise form disclosed and many modifications and variations are possible in the light of the above teachings. The embodiment was chosen and described in order to best explain the principles of the invention and its practical application and to enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. Therefore, it is intended that the invention not be limited to the particular embodiments disclosed for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims.

    [0141] In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer or any other device or apparatus operating as a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

    [0142] The previous description of the disclosed exemplary embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these exemplary embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.