DE102018113772B4 - Encryption method - Google Patents
Encryption method Download PDFInfo
- Publication number
- DE102018113772B4 DE102018113772B4 DE102018113772.9A DE102018113772A DE102018113772B4 DE 102018113772 B4 DE102018113772 B4 DE 102018113772B4 DE 102018113772 A DE102018113772 A DE 102018113772A DE 102018113772 B4 DE102018113772 B4 DE 102018113772B4
- Authority
- DE
- Germany
- Prior art keywords
- key
- cipher
- section
- byte
- plain text
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/12—Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
Abstract
Symmetrisches Verfahren zur Verschlüsselung digitaler Klartextdaten zu einem Chiffrat basierend auf einem digitalen Schlüssel, wobei der Schlüssel eine Vielzahl von Bytes eines jeden möglichen Datums enthält, umfassend- Erzeugen eines Sectionschlüssels durch zyklisches Verschieben des Schlüssels um einen zufälligen Verschiebewert und- Speichern einer Kennung des Sectionschlüssels in dem Chiffrat, und- Ermitteln einer zufälligen Position eines Bytes in dem Sectionschlüssel, wobei das Datum des Bytes des Sectionschlüssels identisch zu dem Datum eines zu verschlüsselnden Bytes des Klartexts ist, und- Speichern der ermittelten Position in dem Chiffrat.Symmetrical method for encrypting digital plain text data into a cipher based on a digital key, the key containing a large number of bytes of each possible date, comprising- generating a section key by cyclically shifting the key by a random shift value and- storing an identifier of the section key in the cipher, and- determining a random position of a byte in the section key, the date of the byte of the section key being identical to the date of a byte of the plaintext to be encrypted, and- storing the determined position in the cipher.
Description
Die Erfindung betrifft ein Verfahren und eine entsprechende Vorrichtung zur Verschlüsselung digitaler Daten mit einem digitalen Schlüssel gemäß Anspruch 1.Weiterhin sind ein Verfahren zur Entschlüsselung der mit dem beschriebenen Verfahren verschlüsselten Daten (Chiffrat) beschrieben sowie eine zur Durchführung des Verfahrens vorgesehene und eingerichtete Vorrichtung und ein Computerprogram m produkt.The invention relates to a method and a corresponding device for encrypting digital data with a digital key. Furthermore, a method for decrypting the data (cipher) encrypted with the method described is described, as well as a device and a device provided and set up for performing the method Computer program m product.
Symmetrische Verschlüsselungsverfahren sind an sich bekannt. Bei Verschlüsselungsverfahren dieser Art werden die Klartextdaten anhand eines geheimen Schlüssels auf der Senderseite verschlüsselt auf der Empfängerseite entschlüsselt. Typischerweise werden symmetrische Verschlüsselungsverfahren zur Verschlüsselung digital vorliegender Informationen verwendet, die also in Form von Bits und Bytes vorliegen und die von einem digitalen Signalprozessor (DSP) verarbeitet werden können. Der zu verwendende Ver- bzw. entsprechende Entschlüsselungsalgorithmus kann dabei als ausführbares Computerprogramm vorliegen, welches von einem Computer (PC) ausgeführt werden kann. Der Schlüssel sowie die zu ver- oder entschlüsselnde Datei liegen in einem Speicher des PC und können von diesem gelesen werden. Für eine Reihe bekannter Verfahren existieren speziell für das Verfahren entwickelte Prozessoren, welche für die Ver- oder Entschlüsselung optimiert sind und das jeweilige Verfahren entsprechend schnell durchführen können, sogenannte application specific ICs (ASICs).Symmetrical encryption methods are known per se. With encryption methods of this type, the plain text data is encrypted and decrypted on the recipient side using a secret key on the sender side. Symmetrical encryption methods are typically used to encrypt digitally available information, which is in the form of bits and bytes and which can be processed by a digital signal processor (DSP). The encryption or corresponding decryption algorithm to be used can be present as an executable computer program which can be executed by a computer (PC). The key and the file to be encrypted or decrypted are stored in a memory on the PC and can be read by the latter. For a number of known methods, there are processors specially developed for the method, which are optimized for encryption or decryption and can carry out the respective method correspondingly quickly, so-called application specific ICs (ASICs).
Es ist eine Vielzahl symmetrischer Verschlüsselungsverfahren bekannt, beispielsweise der sogenannte Advanced Encryption Standard (AES) oder Rijndael, der Data Encryptions Standard DES bzw. die daraus hergeleitete Weiterentwicklung Triple-DES, der International Data Encryption Algorithm IDEA sowie die von Bruce Schneier entwickelten Verfahren Blowfish oder Twofish oder die CAST Verfahren von Carlisle M. Adams.A large number of symmetrical encryption methods are known, for example the so-called Advanced Encryption Standard (AES) or Rijndael, the Data Encryptions Standard DES or the further development Triple-DES derived from it, the International Data Encryption Algorithm IDEA and the Blowfish or Bruce Schneier processes Twofish or the CAST method of Carlisle M. Adams.
Eine Datei, welche die Information in unverschlüsselter Form enthält, wird dabei als Klartextdatei oder kurz als Klartext bezeichnet. Eine Datei, welche die Information in verschlüsselter Form enthält, wird als Chiffrat bezeichnet.A file that contains the information in unencrypted form is called a plain text file, or plain text for short. A file that contains the information in encrypted form is called a cipher.
Ein Vorteil dieser Verfahren ist ein einfaches Schlüsselmanagement, weil nur ein Schlüssel für die Ver- und Entschlüsselung benötigt wird. Weiterhin weisen die Verfahren typischerweise eine hohe Verarbeitungsgeschwindigkeit auf, weil diese meist auf effizienten Operationen wie Bit-Shifts oder XORs aufbauen.One advantage of this method is simple key management, because only one key is required for encryption and decryption. Furthermore, the methods typically have a high processing speed because they are mostly based on efficient operations such as bit shifts or XORs.
Jedoch weisen diese Verfahren den Nachteil auf, dass sie rechnerisch geknackt werden können. Mit ständig steigender Rechenleistung verfügbarer Computer nimmt dabei die dafür benötigte Zeit ab. However, these methods have the disadvantage that they can be broken computationally. As the computing power of available computers increases, the time required for this decreases.
Die
Bekannte asymmetrische Verschlüsselungsverfahren, auch bekannt als Public-Key-Verschlüsselungsverfahren, gelten dabei als sicherer. Das als RSA bekannte Verfahren von Rivest, Shamir und Adleman, oder das Merkle-Hellman oder das McEliece oder das Elgamal Verfahren sind derartige Verfahren. Diese weisen zwar den Vorteil auf, dass der sogenannte öffentliche Schlüssel (public key) nicht über einen sicheren Kanal an einen Sender übertragen werden muss, weil mit diesem lediglich die Verschlüsselung, nicht aber die Entschlüsselung durchgeführt werden kann. Jedoch weisen diese asymmetrischen Verfahren insbesondere den Nachteil auf, dass sie erheblich mehr Rechenleistung sowohl für die Ver- als auch für die Entschlüsselung benötigen. Darüber hinaus können auch diese Verfahren mit Blick auf die verfügbaren immer leistungsfähigeren Prozessoren nicht mehr als uneingeschränkt sicher gelten.Well-known asymmetrical encryption methods, also known as public key encryption methods, are considered to be more secure. The Rivest, Shamir and Adleman method known as RSA, or the Merkle-Hellman or the McEliece or the Elgamal method are such methods. These have the advantage that the so-called public key does not have to be transmitted to a transmitter via a secure channel, because it can only be used for encryption, but not decryption. However, these asymmetrical methods have the particular disadvantage that they require considerably more computing power both for encryption and for decryption. In addition, in view of the increasingly powerful processors available, these methods can no longer be regarded as unreservedly secure.
Damit besteht ein Bedarf ein Verfahren vorzuschlagen, welches die oben genannten Nachteile wenigstens teilweise löst.There is therefore a need to propose a method which at least partially solves the above-mentioned disadvantages.
Im Folgenden werden das Verfahren sowie ein zur Ver- und Entschlüsselung geeignetes und eingerichtetes System anhand von Figuren beschrieben. Dabei zeigen die Figuren
-
1 schematischer Aufbau eines Schlüssels -
2 schematische Darstellung des Formats eines Chiffrats -
3 Ablaufdiagramm des Verschlüsselungsverfahrens -
4 Ablaufdiagramm der Umpositionierung
-
1 schematic structure of a key -
2 schematic representation of the format of a cipher -
3 Encryption process flowchart -
4th Repositioning flowchart
Die im folgenden erläuterten Datenstrukturen zeigen jeweils eine mögliche Ausgestaltung der Datenformate. Für den Fachmann ist es dabei selbstverständlich, dass ein jeweiliges Datenformat durch ein äquivalentes Format ersetzt werden kann, wenn dieses die entsprechende Funktionalität bereitstellt.The data structures explained below each show a possible configuration of the data formats. For the person skilled in the art, it goes without saying that a respective data format can be replaced by an equivalent format if this provides the corresponding functionality.
Schlüsselkey
In einer Ausführungsform können die Werte 0x00 bis 0xFF (hexadezimale Schreibweise), also dezimal 0-255, der Bytes dabei innerhalb des Schlüssels gleichverteilt sein. Die Anordnung der verschiedenwertigen Bytes innerhalb des Schlüssels ist dabei zufällig gewählt. Die zufällige Anordnung der Bytes 2a, 2b, 2c, 2d verschiedener Werte ist in der
In einer Ausführungsform kann der Schlüssel einen jeden möglichen Bytewert, also jeden der
In einer alternativen Ausführungsform können die verschiedenen Werte der Bytes nicht gleichverteilt, sondern entsprechend der statistischen Häufigkeit der Werte in einem zu verschlüsselnden Klartext verteilt sein. Für den Fall, dass die Klartextdatei ein Text ist, in welchem beispielsweise druckbare Zeichen, also die ASCII Zeichen 0x20 (Leerzeichen) bis 0x7E (Tilde Zeichen) vorkommen, kann die Häufigkeit der Bytes mit diesen Werten entsprechend angepasst sein.In an alternative embodiment, the different values of the bytes can not be evenly distributed, but rather can be distributed according to the statistical frequency of the values in a plain text to be encrypted. In the event that the plain text file is a text in which, for example, printable characters, i.e. the ASCII characters 0x20 (space) to 0x7E (tilde), occur, the frequency of the bytes with these values can be adjusted accordingly.
In einer weiteren alternativen Ausführungsform kann der Schlüssel eine Vielzahl von Abschnitten aufweisen, wobei ein jeder Abschnitt gestaltet ist, wie oben für den Schlüssel beschrieben. Die Anzahl der Schlüsselabschnitte ist dabei nicht begrenzt. In diesem Fall sind das Verfahren sowie die Vorrichtung entsprechend dazu eingerichtet, dass die mehreren Schlüsselabschnitte verwaltet werden und in dem Chiffrat gekennzeichnet ist, welcher Schlüsselabschnitt verwendet wird. Die dazu notwendigen Mittel, also eine Kennzeichnung im Chiffrat eines für die Verschlüsselung verwendeten Schlüsselabschnitts, sind dem Fachmann geläufig, sodass an dieser Stelle nicht weiter darauf eingegangen wird.In a further alternative embodiment, the key can have a plurality of sections, each section being designed as described above for the key. The number of key sections is not limited. In this case, the method and the device are set up accordingly so that the multiple key sections are managed and which key section is used is identified in the cipher. The means necessary for this, that is to say an identification in the cipher of a key section used for the encryption, are familiar to the person skilled in the art, so that they will not be discussed further at this point.
Zusätzlich zu den Bytes in den Schlüsselabschnitten, welche für die Ableitung von Sectionschlüsseln vorgesehen sind, kann der Schlüssel Informationen über den Schlüssel aufweisen, sogenannte Metadaten. Diese Metadaten über den Schlüssel können vorzugsweise in einem zusätzlichen Abschnitt vorzugsweise am Anfang der Datei, dem sogenannten Header
Der Schlüsselheader
Die nachfolgende Beschreibung geht von einem Schlüssel aus, welcher nur einen Schlüsselabschnitt aufweist und einen jeden möglichen Bytewert genau
DAS CHIFFRATTHE CHIFFRAT
Das Chiffrat, in der Literatur auch Ciphertext, Kryptogramm oder Kryptotext genannt, bezeichnet die Datei, welche durch Anwendung des Verschlüsselungsalgorithmus auf die Klartextdatei und unter Verwendung eines Schlüssels erzeugt wurde und die verschlüsselte Information des Klartexts umfasst. Die Klartextdatei kann basierend auf dem Chiffrat und unter Verwendung des Schlüssels, welcher für die Verschlüsselung verwendet wurde, durch Anwendung des Entschlüsselungsalgorithmus erzeugt werden. Ein Chiffrat kann dabei eine abgeschlossene Datei sein oder ein quasi endlos-Strom sein, beispielsweise ein verschlüsselter Datenstrom, der kontinuierlich von einem Sender zu einem Empfänger übertragen wird.The cipher, also called ciphertext, cryptogram or cryptotext in the literature, refers to the file which was generated by applying the encryption algorithm to the plain text file and using a key and which includes the encrypted information of the plain text. The plain text file can be generated based on the cipher and using the key which was used for the encryption by applying the decryption algorithm. A cipher can be a closed file or a quasi-endless stream, for example an encrypted data stream that is continuously transmitted from a transmitter to a receiver.
Das Chiffrat
Wie später noch beschrieben kann das Chiffrat einen Header
Optional kann auch die Länge der verschlüsselten Klartextdatei (in Bytes) in das Chiffrat geschrieben werden, dabei vorzugsweise in ein Feld
Die Informationen zu einem solchen Sectionschlüssel sind vorzugsweise in einem jeweiligen Datenfeld
Weiterhin umfasst das Chiffrat eine Information über die Länge des Chiffratabschnitts
Auf diese Weise kann ein Chiffrat von nahezu beliebiger Größe erzeugt werden, welches in mehrere Abschnitte unterteilt ist, und wobei vor jedem Abschnitt des Chiffrats die für die jeweilige Entschlüsselung notwendigen Informationen in dem Chiffrat abgelegt sind. Auf diese Weise kann eine verschlüsselnde Stelle einen ersten Abschnitt eines Klartextes verschlüsseln und anschließend mehrere weitere Abschnitte mit einem jeweiligen Sectionschlüssel, ohne dass dazu Daten im Header des Chiffrats abzulegen sind. Die Übertragung eines Chiffrats an eine entschlüsselnde Stelle kann damit beginnen, sobald der erste Abschnitt verschlüsselt ist und es können nahezu beliebig viele Chiffratabschnitte, die mit einem jeweiligen Sectionschlüssel verschlüsselt sind, folgen.In this way, a cipher of almost any size can be generated, which is divided into several sections, and the information necessary for the respective decryption is stored in the cipher in front of each section of the cipher. In this way, an encrypting body can encrypt a first section of a plain text and then several other sections with a respective section key, without data having to be stored in the header of the cipher. The transmission of a cipher to a decrypting point can begin as soon as the first section is encrypted and almost any number of cipher sections, which are encrypted with a respective section key, can follow.
VerschlüsselungEncryption
Im Folgenden wird das Verfahren zur Verschlüsselung einer Klartextdatei schematisch beschrieben. Die Klartextdatei kann dabei ein beliebiges Format und beliebigen Inhalt haben. Das Verfahren zur Verschlüsselung ist dabei vorzugsweise in einem ausführbaren Programmcode implementiert sein, der auf einem digitalen Signalprozessor ausgeführt werden kann. Der Programmcode kann damit Teil eines Computerprogrammprodukts sein. In einer Ausführungsform kann dies ein an sich bekannter Computer (PC) sein, welcher einen zur Ausführung des Programmcodes geeigneten Prozessor sowie Speicher zur Speicherung des Klartexts, des Schlüssels und des Sectionschlüssels sowie des Chiffrats aufweist, und welcher zur Ausführung des Programmcodes geeignet ist.The procedure for encrypting a plain text file is described schematically below. The plain text file can have any format and any content. The procedure for Encryption is preferably implemented in an executable program code that can be executed on a digital signal processor. The program code can thus be part of a computer program product. In one embodiment, this can be a known computer (PC) which has a processor suitable for executing the program code and a memory for storing the plain text, the key and the section key and the cipher, and which is suitable for executing the program code.
Das Verschlüsselungsverfahren
In einem ersten Schritt
In einem anschließenden Schritt liest das Programm den Schlüssel und erzeugt aus diesem Schlüssel einen sogenannten Sectionschlüssel. Dazu ermittelt das Verfahren eine ganzzahlige Zufallszahl, im Folgenden Verschiebewert genannt, um dessen Wert die Bytes des Schlüssels zyklisch verschoben werden. Der Wert des Verschiebewerts liegt dabei im Intervall null bis Schlüsselgröße, wobei Schlüsselgröße die Anzahl der Bytes des Schlüssels ist. Für einen hier beispielsweise angenommenen Verschiebewert von 93 und einer hier beispielhaft angenommenen Schlüsselgröße von 65.535 Bytes werden die Bytes auf den Speicherpositionen 0 bis 65.535 - 93 = 65.442 um 93 Bytes auf die Speicherplätze 93 bis 65.535 verschoben. Die Bytes der Speicherpositionen 65.443 bis 65.535 werden auf die Speicherpositionen null bis 92 und unter Beibehaltung der Reihenfolge geschrieben. Ein erzeugter Sectionschlüssel weist damit dieselbe Länge wie der Schlüssel auf.In a subsequent step, the program reads the key and generates a so-called section key from this key. For this purpose, the method determines an integer random number, hereinafter referred to as the shift value, by whose value the bytes of the key are shifted cyclically. The value of the shift value is in the interval zero to key size, where key size is the number of bytes in the key. For a shift value of 93 assumed here, for example, and a key size of 65,535 bytes assumed here as an example, the bytes in memory positions 0 to 65,535 - 93 = 65,442 are shifted by 93 bytes to memory locations 93 to 65,535. The bytes in memory positions 65,443 to 65,535 are written to memory positions zero to 92 and the order is retained. A generated section key has the same length as the key.
In einer alternativen Ausgestaltung des Verfahrens kann der Sectionschlüssel durch bitweises zufälliges Verschieben erzeugt werden, d. h. dass die Bits des Schlüssels nicht um ganze Bytes, sondern nur um Bits verschoben werden, wobei der zufällig erzeugte Verschiebewert die Anzahl der Bits angibt, um welche die Bits des Schlüssels zyklisch verschoben werden. Auch hierbei bleibt die Reihenfolge der Bits innerhalb der Verschiebeintervalle unverändert. In jedem Falle wird der zufällig ermittelte Verschiebewert in dem Chiffrat und an geeigneter Stelle zu dem Abschnitt gespeichert, welcher mit dem Sectionschlüssel, der mit dem Verschiebewert erzeugt wurde, verschlüsselt ist. Ein auf diese Weise erzeugter Sectionschlüssel ist damit zufällig, wenngleich basierend auf dem ursprünglichen Schlüssel.In einer weiteren vorteilhaften Ausgestaltung können mehrere Schlüssel verwendet werden, von denen jeweils durch oben beschriebenes byte- oder bitweises Verschieben Sectionschlüssel abgeleitet werden können. In diesem Fall werden die mehreren zur Ableitung von Sectionsschlüsseln verwendeten Kennungen von Schlüsseln in dem Chiffrat gespeichert und es wird zu einem jeden Abschnitt des Chiffrats gespeichert, welcher Schlüssel dem verwendeten Sectionschlüssel zugrunde liegt, sodass die entschlüsselnde Stelle den jeweiligen Sectionschlüssel aus dem richtigen Schlüssel durch Verschieben ableiten kann. Insbesondere kann die Ableitung eines weiteren Sectionschlüssels auf einem weiteren Schlüssel basieren, wenn basierend auf einem ersten Schlüssel sämtliche möglichen Permutationen nach oben beschriebenem Vorgehen bereits durchgeführt und die erzeugten Sectionschlüssel verwendet wurden.In einer besonders bevorzugten Ausführungsform wird der Verschiebewert basierend auf dem Schlüssel Byte für Byte verschlüsselt, und es wird der byteweise verschlüsselte Verschiebewert als Kennung des Sectionschlüssels in das Chiffrat geschrieben.In an alternative embodiment of the method, the section key can be generated by bit-by-bit random shifting; H. that the bits of the key are not shifted by whole bytes, but only by bits, with the randomly generated shift value indicating the number of bits by which the bits of the key are cyclically shifted. Here too, the order of the bits within the shift intervals remains unchanged. In any case, the randomly determined shift value is stored in the cipher and in a suitable place for the section which is encrypted with the section key that was generated with the shift value. A section key generated in this way is therefore random, albeit based on the original key. In a further advantageous embodiment, several keys can be used, from which section keys can be derived by shifting byte or bit byte as described above. In this case, the multiple identifiers of keys used to derive section keys are stored in the cipher and for each section of the cipher it is stored which key the section key used is based on, so that the decrypting body can move the respective section key from the correct key can derive. In particular, the derivation of a further section key can be based on a further key if, based on a first key, all possible permutations according to the procedure described above have already been carried out and the generated section keys have been used. In a particularly preferred embodiment, the shift value is based on the key byte for byte encrypted, and the byte-wise encrypted shift value is written into the cipher as the identifier of the section key.
Die byteweise Verschlüsselung des Verschiebewerts basierend auf dem Schlüssel wird dadurch bewirkt, dass die Position eines zufällig ausgewählten Bytes des Schlüssels, welches denselben Inhalt hat wie das zu verschlüsselnde Byte des Verschiebewert, in den Header des Chiffrats 4 geschrieben wird. Bei einer angenommenen Größe des Schlüssels von 65.535 Bytes und einer angenommenen byteweisen Verschiebung des Schlüssels zur Erzeugung des Zechenschlüssels, wäre der Verschiebewert im Klartext mit 2 Bytes darstellbar. 1 Byte des Verschiebewerts kann nun dadurch verschlüsselt werden, dass die Position eines zufällig gewählten Bytes in den Header geschrieben wird, wobei die Position wiederum mit 2 Bytes darstellbar ist. Die byteweise Verschlüsselung des Verschiebewerts benötigt dementsprechend 4 Bytes. Auf diese Weise wird bereits der Verschiebewert in verschlüsselter Form im Header gespeichert, d. h. eine Kennung des Sectionschlüssels, nämlich der verschlüsselte Verschiebewert, wird in dem Chiffrat gespeichert.The byte-wise encryption of the shift value based on the key is achieved by writing the position of a randomly selected byte of the key, which has the same content as the byte of the shift value to be encrypted, in the header of the cipher 4. With an assumed size of the key of 65,535 bytes and an assumed byte-wise shifting of the key to generate the mining key, the shift value could be represented in plain text with 2 bytes. 1 byte of the shift value can now be encrypted by writing the position of a randomly selected byte in the header, whereby the position can again be represented with 2 bytes. The byte-by-byte encryption of the shift value accordingly requires 4 bytes. In this way the shift value is already stored in encrypted form in the header, ie an identifier of the section key, namely the encrypted shift value, is stored in the cipher.
Nachdem der erste Sectionschlüssel erzeugt ist, werden die oben beschriebenen Felder des Headers mit dem ersten Sectionschlüssel verschlüsselt und in den Header des Chiffrats geschrieben. Dabei wird die Verschlüsselung der Felder mit den gleichen unten angegebenen Schritten wie die Verschlüsselung der Klartextdateien durchgeführt, jedoch mit einem Sectionschlüssel, der lediglich für die Verschlüsselung der Felder des Headers verwendet wird.After the first section key has been generated, the header fields described above are encrypted with the first section key and written in the header of the cipher. The fields are encrypted using the same steps as the plain text files are encrypted, but with a section key that is only used to encrypt the header fields.
Nachdem die Felder des Headers 5 in das Chiffrat geschrieben wurden, beginnt die Verschlüsselung des Klartexts. Dazu kann für die anschließende Verschlüsselung des Klartexts ein weiterer Sectionschlüssel erzeugt werden, siehe 303, wie oben beschrieben. Die Kennung des Sectionschlüssel wird in das Chiffrat und zu dem Chiffratabschnitt geschrieben. Wie oben erwähnt kann das Chiffrat mehrere Abschnitte enthalten, die mit einem jeweiligen Sectionschlüssel verschlüsselt sind, und in denen die verschlüsselte Klartextdatei abgelegt ist. Die Verschlüsselung des Klartexts wird jeweils Byte für Byte durchgeführt. Dazu wird der Wert des nächsten, oder gegebenenfalls des ersten, Bytes des Klartexts gelesen, Schritt
Dabei ist für den Fachmann klar, dass bei der hier gewählten Größe des Sectionschlüssels von 256 x 256 = 65.536 Bytes, also 65kB, die Positionen von Bytes in dem Sectionschlüssel mit zwei Bytes dargestellt werden können. Es können jedoch Schlüssel und Sectionschlüssel verwendet werden, die kleiner oder größer als die hier beispielhaft und ohne Beschränkung der Allgemeinheit gewählten 65kB sein können und die dementsprechend weniger oder mehr Bits bzw. Bytes für die Adressierung erfordern. Dabei ist dem Fachmann klar, dass Bytegrenzen nicht notwendigerweise einzuhalten sind. Sofern also im Nachfolgenden von zwei Bytes oder Bytepaaren die Rede ist, welche für ein verschlüsseltes Byte stehen, ist dem Fachmann klar, dass diese Speicherplatzgröße für andere Schlüsselgrößen gegebenenfalls anzupassen ist.It is clear to a person skilled in the art that with the size of the section key selected here of 256 x 256 = 65,536 bytes, i.e. 65kB, the positions of bytes in the section key can be represented with two bytes. However, keys and section keys can be used which can be smaller or larger than the 65kB selected here by way of example and without restriction of generality and which accordingly require fewer or more bits or bytes for addressing. It is clear to the person skilled in the art that byte limits do not necessarily have to be adhered to. So if two bytes or byte pairs are mentioned below, which stand for an encrypted byte, it is clear to the person skilled in the art that this storage space size may have to be adapted for other key sizes.
Um sicherzustellen, dass die Position eines Bytes des Sectionschlüssels nur einmal verwendet wird, kann das Verfahren eine Liste führen, anhand der sichergestellt wird, dass eine Byteposition innerhalb eines Verschlüsselungsabschnitts nur einmal verwendet wird. Dazu kann das verschlüsselte System eine entsprechend geeignete interne Datenstruktur aufbauen, beispielsweise ein zweidimensionales Array, in dem markiert wird, welche Positionen von Bytes des gerade verwendeten Sectionschlüssels bereits verwendet und damit in das Chiffrat geschrieben wurden und damit nicht nochmal verwendet werden sollen. Falls für einen Bytewert des Klartexts keine entsprechende Position eines Bytewerts gefunden werden kann, weil alle Bytepositionen dieses Werts bereits verwendet wurden, siehe
In einer vorteilhaften Ausgestaltung des Verschlüsselungsverfahrens kann der Inhalt verschlüsselter Klartextbytes in umgekehrter Reihenfolge in das Chiffrat geschrieben werden, sodass dieser Abschnitt bei der Entschlüsselung in der Reihenfolge der Bytes einmal umgedreht werden muss, d. h. dieser Abschnitt ist rückwärts zu lesen. Dazu kann das Chiffrat ein entsprechendes Feld aufweisen, dessen Inhalt darüber Auskunft gibt, ob ein bestimmter Abschnitt des Chiffrats in umgekehrter Reihenfolge geschrieben wurde. Dies kann beispielsweise mit einem 2 Byte langen Schlüssel zu einem Abschnitt des Chiffrats in das Chiffrat geschrieben werden.In an advantageous embodiment of the encryption method, the content of encrypted plain text bytes can be written into the cipher in reverse order, so that this section has to be reversed once during the decryption in the order of the bytes, ie. H. this section is to be read backwards. For this purpose, the cipher can have a corresponding field, the content of which provides information on whether a certain section of the cipher was written in reverse order. This can be written into the cipher for a section of the cipher using a 2-byte long key, for example.
UmpositionierungRepositioning
In einer vorteilhaften Ausführungsform kann die Verschlüsselung eines Abschnitts zusätzlich eine Änderung der Position der Bytepaare innerhalb eines Chiffratabschnitts umfassen. Dies bewirkt, dass die Bytepaare, welche jeweils eine Position/Adresse eines Bytewerts in dem Abschnittsschlüssel angeben, nicht mehr in der Reihenfolge angeordnet sind, welcher der Reihenfolge der Klartextbytes entspricht.
Zunächst wird aus dem Abschnittsschlüssel ein Positionsschlüssel abgeleitet, Schritt
Durch die Umpositionierung der Bytepaare eines Chiffratabschnitts basierend auf dem Positionsschlüssel werden die Bytepaare an diejenigen Positionen verschoben, welche den Werten des Positionsschlüssels entsprechen. Ein erstes Bytepaar wird dementsprechend an diejenige Position verschoben, welche einem Wert in dem Umpositionierungsschlüssel entspricht. Das in Leserichtung im Chiffratabschnitt platzierte zweite Bytepaar wird dann auf diejenige Position verschoben, welche dem Wert des in Leserichtung nächsten Wertes des Umpositionierungsschlüssels entspricht und so weiter. Auf diese Weise werden die im Chiffratabschnitt nebeneinander platzierten Bytepaare auf diejenigen Positionen verschoben, welche durch die Werte im Positionsschlüssel festgelegt sind. Dabei werden Werte des Positionsschlüssels, also Positionswerte, welche außerhalb der Länge des Chiffratabschnitts liegen, ignoriert und es wird der in Leserichtung nächste Wert verwendet, welcher eine Position bezeichnet, die innerhalb des Chiffratabschnitts liegt.By repositioning the byte pairs of a cipher section based on the position key, the byte pairs are shifted to those positions which correspond to the values of the position key. A first byte pair is accordingly shifted to that position which corresponds to a value in the repositioning key. The second pair of bytes placed in the reading direction in the cipher section is then shifted to the position which corresponds to the value of the next value of the repositioning key in reading direction and so on. In this way, the byte pairs placed next to one another in the cipher section are shifted to those positions which are determined by the values in the position key. Values of the position key, i.e. position values that lie outside the length of the cipher section, are ignored and the next value in the reading direction is used, which designates a position that lies within the cipher section.
Die Umpositionierung der Bytepaare eines Chiffratabschnitts beginnt mit dem ersten Bytepaar. Dieses Bytepaar kann in einer Ausführungsform auf diejenige Position innerhalb des Chiffratabschnitts verschoben werden, welche durch den ersten Wert des Positionsschlüssels bezeichnet ist. In einer weiteren, besonders bevorzugten Ausführungsform, wird das erste Bytepaar des Chiffratabschnitts auf diejenige Position verschoben, welche durch den Wert an der Stelle des Verschiebewerts des Positionsschlüssels definiert ist, d.h. dass für die erste Umpositionierung nicht der Wert des ersten Feldes des Positionsschlüssels, sondern derjenige des Feldes, welches durch den Verschiebewert bezeichnet ist, verwendet wird. Sofern dieser Wert, wie bereits oben erwähnt, eine Position bezeichnet, die außerhalb des Chiffratabschnitts liegt wird der in Leserichtung nächste Wert für die Umpositionierung gelesen, siehe
In einer Variante des Umpositionierens der Bytepaare eines Chiffratabschnitts kann die Umpositionierung mit dem letzten Bytepaar des Chiffratabschnitts beginnen und die Umpositionierung wird in umgekehrter Reihenfolge durchgeführt. Dazu kann in den Metadaten eines Chiffratabschnitts, beispielsweise in einem Feld
Nach dem Erzeugen des Positionsschlüssels, siehe
Die Umpositionierung endet,
In dem hier gewählten Ausführungsbeispiel weist der Schlüssel eine Länge von 65536 Bytes auf, ebenso der Sectionschlüssel. Dementsprechend weist ein Chiffratabschnitt jedenfalls weniger als 65536 Bytepaare auf. Tatsächlich weist ein Chiffratabschnitt jedenfalls weniger Bytepaare auf, nämlich
In einer Ausführungsform kann ein Positionsschlüssel aus dem Sectionschlüssel abgeleitet werden. Der Positionsschlüssel wird dabei gemäß nachfolgender Vorschrift aus dem Sectionschlüssel abgeleitet. Der Wert eines Bytes des Positionsschlüssels wird errechnet als Summe des Bytewerts des Bytes des Abschnittsschlüssels und der Anzahl der bisherigen Vorkommen des Bytewerts multipliziert mit
Es sei angemerkt, dass jeder geeignete Positionsschlüssel verwendet werden kann, solange dieser auf der Ver- und ebenso auf der Entschlüsselungsseite identisch ist, sodass bei der Ver- und entsprechend der Entschlüsselung derselbe Positionsschlüssel verwendet wird.It should be noted that any suitable position key can be used, as long as it is identical on the encryption and also on the decryption side, so that the same position key is used for the encryption and, correspondingly, the decryption.
Der Positionsschlüssel weist in dieser Ausführungsform dieselbe Länge auf wie der Sectionschlüssel, sodass sichergestellt ist, dass für jedes Bytepaar ein Umpositionierungsschlüssel verfügbar ist. Falls ein Chiffratabschnitt gleich viele oder weniger Bytes aufweist wie der Umpositionierungsschlüssel Elemente hat, so kann die Umpositionierung des Chiffratabschnitts für einzelne Bytes durchgeführt werden. Dies bedeutet für den hier beschriebenen Fall, bei dem die Verschlüsselung eines Bytes des Klartexts sich in einem Bytepaar widerspiegelt, dass die beiden Bytes eines Bytepaares nach der Umpositionierung nicht mehr nebeneinander angeordnet sind. Entschlüsselung Die Entschlüsselung eines Chiffrats umfasst im Wesentlichen die oben beschriebenen Schritte in umgekehrter Reihenfolge. Dabei kann die entschlüsselnde Stelle die im Chiffrat angegebenen Junkbytes ignorieren. Dabei liest die entschlüsselnde Stelle aus dem Header des Chiffrats zunächst eine Schlüsselkennung sowie die weiteren unverschlüsselten Metainformationen, beispielsweise eine Versionsnummer. Anhand der Versionsnummer kann die entschlüsselnde Stelle das Format des Chiffrats erkennen. Anschließend kann die Kennung des Sectionschlüssels, welcher für die Verschlüsselung der weiteren Felder des Headers verwendet wurde und es kann basierend auf dem anhand der Schlüsselkennung identifizierten Schlüssel und der Kennung des Sectionschlüssels ein solcher aus dem Schlüssel abgeleitet werden. Mit diesem können anschließend die weiteren Felder des Headers gelesen, entschlüsselt und in eine Klartextdatei geschrieben werden.In this embodiment, the position key has the same length as the section key, so that it is ensured that a repositioning key is available for each byte pair. If a cipher section has as many or fewer bytes as the repositioning key has elements, the repositioning of the cipher section can be carried out for individual bytes. For the case described here, in which the encryption of a byte of the plain text is reflected in a byte pair, this means that the two bytes of a byte pair are no longer arranged next to one another after the repositioning. Decryption The decryption of a cipher essentially comprises the steps described above in reverse order. The decrypting agency can ignore the junk bytes specified in the cipher. The decrypting body first reads a key identifier and the other unencrypted meta information, for example a version number, from the header of the cipher. Based on the version number, the decrypting agency can identify the format of the cipher. The identifier of the section key that was used to encrypt the other fields of the header can then be derived from the key based on the key identified using the key identifier and the identifier of the section key. With this, the other fields of the header can then be read, decrypted and written to a plain text file.
Ebenso kann basierend auf dem Schlüssel und auf der Kennung eines Sectionschlüssels ein solcher für die anschließende Entschlüsselung eines Chiffratabschnitts abgeleitet werden. Die Entschlüsselung der verschlüsselten Klartextdaten findet dann dadurch statt, dass eine Position des Chiffratabschnitts gelesen wird und der Wert des Bytes an der Position in dem Sectionschlüssel gelesen und in die Klartextdatei geschrieben wird. Auf diese Weise kann für jede 2 Byte lange Position in einem Chiffratabschnitt ein Bytewert in die Klartextdatei geschrieben werden. Dabei werden die Positionen eines Chiffratabschnitts der Reihe nach gelesen, bis das Ende eines Chiffratabschnitts erreicht ist. Dabei hat die entschlüsselnde Stelle die Information über die Länge eines Chiffratabschnitts dem entsprechenden Feld
Wenn das Ende des Chiffrats erreicht ist, so kann die entschlüsselnde Stelle die Klartextdatei mit dem ursprünglichen Namen umbenennen, welcher in dem Chiffrat in Feld
Für den Fall, dass zu einem Chiffratabschnitt spezifiziert ist, dass dieser Chiffratabschnitt in umgekehrter Reihenfolge geschrieben wurde, so ist bei der Entschlüsselung des Abschnitts die Reihenfolge entsprechend wiederum umzukehren.In the event that it is specified for a cipher section that this cipher section was written in the reverse order, the sequence must be reversed accordingly when the section is decrypted.
Ebenso ist bei der Entschlüsselung zu prüfen, ob für einen Chiffratabschnitt die Bytepaare basierend auf einem Positionierungsschlüssel positioniert wurden. In diesem Fall ist die ursprüngliche Reihenfolge der Bytepaare des Chiffratabschnitts basierend auf dem Positionierungsschlüssel wiederherzustellen, der wie oben beschrieben, aus dem Sectionschlüssel abgeleitet werden. Ebenso ist zu prüfen, ob die Umpositionierung in umgekehrter Reihenfolge, d. h. beginnend mit dem letzten Bytepaar eines Chiffratabschnitts, durchgeführt wurde. Gegebenenfalls ist die Umpositionierung ebenso in entsprechender umgekehrter Reihenfolge durchzuführen. Dabei kann die Umkehrung der Reihenfolge der beiden Paare innerhalb eines Chiffratabschnitts vor oder nach dem Entschlüsseln der Bytepaare durchgeführt werden. Ebenso kann die Umpositionierung anhand des Positionsschlüssels wahlweise vor oder nach dem Entschlüsseln durchgeführt werden.During the decryption it is also necessary to check whether the byte pairs for a cipher section have been positioned based on a positioning key. In this case, the original order of the byte pairs of the cipher section is to be restored based on the positioning key, which is derived from the section key as described above. It is also necessary to check whether the repositioning is carried out in the reverse order, i. H. starting with the last byte pair of a cipher section. If necessary, the repositioning must also be carried out in the corresponding reverse order. The order of the two pairs within a cipher section can be reversed before or after the byte pairs have been decrypted. Repositioning can also be carried out using the position key either before or after decryption.
Das Ver-bzw. Entschlüsselungsverfahren können auf einer entsprechend eingerichteten Vorrichtung ausgeführt werden. Die Vorrichtung kann dabei jeweils einen digitalen Signalprozessor sowie ein Datenspeicher aufweisen, wobei der Datenspeicher dazu eingerichtet ist, einen ausführbaren Programmcode zu speichern, der das Ver-bzw. Entschlüsselungsprogramm implementiert. Wird der Programmcode aus dem Datenspeicher in den digitalen Signalprozessor geladen, so führt der Prozessor das entsprechende Ver-bzw. Entschlüsselungsprogramm aus. Weiterhin ist der Datenspeicher dazu eingerichtet und vorgesehen, den Klartext und das Chiffrat zu speichern. Der digitale Signalprozessor kann hierzu auf den Datenspeicher zugreifen, d. h. Inhalte aus dem Datenspeicher lesen und Inhalte in den Datenspeicher schreiben, sodass das Programm einen Klartext verschlüsseln und entsprechend entschlüsseln kann. In einer Ausführungsform kann der digitale Signalprozessor sowie der Datenspeicher ein an sich bekannter PC sein. In diesem Fall kann das Programm als Computerprogrammprodukt verwirklicht sein, welches das Ver-bzw. Entschlüsselungsprogramm implementiert, welches auf einem Datenspeicher abgelegt ist, und von dem aus es in den Signalprozessor geladen werden kann. In einer alternativen Ausführungsform können der digitale Signalprozessor sowie der Datenspeicher in einem sogenannten Application Specific IC (ASIC) realisiert sein.The ver or. Decryption methods can be carried out on an appropriately set up device. The device can each have a digital signal processor as well as a data memory, the data memory being set up to store an executable program code that controls or Decryption program implemented. If the program code is loaded from the data memory into the digital signal processor, the processor carries out the corresponding processing or processing. Decryption program. Furthermore, the data memory is set up and provided to store the plain text and the cipher. The digital signal processor can access the data memory for this purpose, i. H. Read content from the data memory and write content to the data memory so that the program can encrypt a plain text and decrypt it accordingly. In one embodiment, the digital signal processor and the data memory can be a PC known per se. In this case, the program can be implemented as a computer program product, which the processing or. Decryption program implemented, which is stored on a data memory, and from which it can be loaded into the signal processor. In an alternative embodiment, the digital signal processor and the data memory can be implemented in a so-called application-specific IC (ASIC).
BezugszeichenlisteList of reference symbols
- 100100
- Schlüsselkey
- 110110
- Bytes verschiedener Werte des SchlüsselsBytes of different values of the key
- 120120
- Header des Schlüssels Header of the key
- 200200
- ChiffratCipher
- 210210
- HeaderHeader
- 220, 221220, 221
- ChiffratabschnittCipher section
- 211211
- SchlüsselkennungKey identifier
- 212212
- Version, MetainformationVersion, meta information
- 213213
- Kennung eines Sectionschlüssels (Verschiebewert)Identification of a section key (shift value)
- 214214
- Länge der KlartextdateiLength of the plain text file
- 215215
- Name der KlartextdateiName of the plain text file
- 216216
- Anzahl JunkbytesNumber of junk bytes
- 217217
- JunkbytesJunk bytes
- 218218
- Länge des Chiffratabschitts (mit Sectionschlüssel verschlüsselt)Length of the cipher section (encrypted with section key)
- 219219
- Kennung Rückwärtsverschlüsselung, Umpositionierung Reverse encryption identifier, repositioning
- 300300
- VerschlüsselungsverfahrenEncryption method
- 301301
- Lesen der StartinformationReading the start information
- 302302
- Headerdaten d. Chiffrats schreibenHeader data d. Write cipher
- 303303
- Sectionschlüssel erzeugenGenerate section key
- 304304
- Array erstellenCreate an array
- 305305
- (nächstes) Klartextbyte lesenRead (next) plain text byte
- 306306
- Ende der Klartextdatei (EOF)End of plain text file (EOF)
- 307307
- Byteposition im Sectionschlüssel prüfenCheck byte position in the section key
- 308308
- Byteposition schreibenWrite byte position
- 309309
- Chiffratabschnittslänge schreibenWrite ciphertext section length
- 310310
- Länge des Chiffratabschnitts schreiben Write the length of the cipher section
- 400400
- UmpositionierungsverfahrenRepositioning procedure
- 401401
- Erzeugen eines PositionsschlüsselsGenerating a position key
- 402402
- Lesen des nächsten PositionswertsRead the next position value
- 403403
- Positionswert prüfenCheck position value
- 404404
- UmpositionierenRepositioning
- 405405
- Ende ChiffratabschnittEnd of cipher section
- 406406
- Endeend
Claims (17)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102018113772.9A DE102018113772B4 (en) | 2018-06-08 | 2018-06-08 | Encryption method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102018113772.9A DE102018113772B4 (en) | 2018-06-08 | 2018-06-08 | Encryption method |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102018113772A1 DE102018113772A1 (en) | 2019-12-12 |
DE102018113772B4 true DE102018113772B4 (en) | 2021-07-08 |
Family
ID=68651329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102018113772.9A Expired - Fee Related DE102018113772B4 (en) | 2018-06-08 | 2018-06-08 | Encryption method |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102018113772B4 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113593682B (en) * | 2021-07-15 | 2023-12-01 | 丹源医学科技(杭州)有限公司 | Equipment management system carrying product information |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020126840A1 (en) | 2001-03-12 | 2002-09-12 | Robbins Virginia L. | Method and apparatus for adapting symetric key algorithm to semi symetric algorithm |
-
2018
- 2018-06-08 DE DE102018113772.9A patent/DE102018113772B4/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020126840A1 (en) | 2001-03-12 | 2002-09-12 | Robbins Virginia L. | Method and apparatus for adapting symetric key algorithm to semi symetric algorithm |
Also Published As
Publication number | Publication date |
---|---|
DE102018113772A1 (en) | 2019-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69929251T2 (en) | ENCRYPTION SYSTEM WITH A KEY OF CHANGING LENGTH | |
EP2605445B1 (en) | Method and apparatus for securing block ciphers against template attacks | |
EP1777913B1 (en) | Method to enciphering/deciphering data packets of a data steam | |
DE69917356T2 (en) | Security technology on a computer network | |
DE112017006020T5 (en) | Method and system for search-dummy dynamic symmetric searchable encryption | |
DE19744961A1 (en) | Generate clear and unpredictable values | |
WO2010133355A1 (en) | Encoding methods | |
EP1298834A1 (en) | Method and apparatus for encrypting and decrypting data | |
DE102018113772B4 (en) | Encryption method | |
DE60004409T2 (en) | Circuit and method for generating random numbers | |
DE112016000791B4 (en) | Media key block based broadcast encryption | |
DE202023104060U1 (en) | A multi-level randomized SALT technique for confidentiality in IoT devices | |
DE102010045580A1 (en) | Circuit arrangement for use in microprocessor for e.g. smart card, has identification circuit producing key for encrypting data value to be written or decrypting data value to be read, where key depends on arrangement inherent properties | |
DE2360788A1 (en) | ELECTRONIC DATA PROCESSING SYSTEM | |
EP0135888B1 (en) | Process for preventing the execution of a programme in a computer which is not allowed to execute said programme | |
EP1322062B1 (en) | Method for computer assisted encryption and decryption of data | |
DE102017202940A1 (en) | Method and apparatus for generating cryptographic keys | |
EP3156932A1 (en) | Method and system for protecting confidential electronic data | |
EP0982896A2 (en) | Method and apparatus for proving existence of a digital signature of a digital file | |
DE3244537A1 (en) | Method for encrypting and decrypting data blocks | |
DE19914225A1 (en) | Device and method for secure electronic data transmission | |
DE10229976B4 (en) | Method for encrypting and decrypting digital data transmitted or stored according to the method of prioritized pixel transmission | |
EP2288073A1 (en) | Apparatus for encrypting data | |
DE102022004632B3 (en) | Method for encrypting plain text | |
DE4107266C2 (en) | Process for fast encryption or decryption of large files using a chip card |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |