DE60020953T2 - Verfahren und vorrichtung zur effizienten längensteuerung eines schlüssels - Google Patents

Verfahren und vorrichtung zur effizienten längensteuerung eines schlüssels Download PDF

Info

Publication number
DE60020953T2
DE60020953T2 DE60020953T DE60020953T DE60020953T2 DE 60020953 T2 DE60020953 T2 DE 60020953T2 DE 60020953 T DE60020953 T DE 60020953T DE 60020953 T DE60020953 T DE 60020953T DE 60020953 T2 DE60020953 T2 DE 60020953T2
Authority
DE
Germany
Prior art keywords
encryption key
delay elements
max
polynomial
input
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 - Lifetime
Application number
DE60020953T
Other languages
English (en)
Other versions
DE60020953D1 (de
Inventor
Joakim Persson
Ben Smeets
Mattias Hansson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of DE60020953D1 publication Critical patent/DE60020953D1/de
Publication of DE60020953T2 publication Critical patent/DE60020953T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Lock And Its Accessories (AREA)
  • Computer And Data Communications (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft eine Verschlüsselung, und insbesondere ein Verfahren und eine Vorrichtung zum Bereitstellen eines steuerbaren und sicheren Wegs zum Bestimmen eines Verschlüsselungsschlüssels zur Verwendung in einem Verschlüsselungsalgorithmus.
  • In Kommunikationssystemen werden Daten vor einer Übertragung oft verschlüsselt, um eine Privatheft und eine Datenunversehrheit bzw. Datenintegrität sicherzustellen. Die Verschlüsselung von Daten findet in einem Verschlüsselungsalgorithmus statt. Der Verschlüsselungsalgorithmus manipuliert oder codiert die Übertragungsdaten unter Verwendung von anderen Daten, mathematischen Operationen und/oder anderen Mitteln zum Durchführen einer solchen Verschlüsselung. Beispielsweise verwendet der Verschlüsselungsalgorithmus einen Datenparameter, der als Verschlüsselungsschlüssel bekannt ist, welcher hierin Variable K'c genannt wird, bei seiner Initialisierungsprozedur. Der Verschlüsselungsschlüssel wird teilweise aus einem Verschlüsselungsschlüssel oder einem geheimen Schlüssel erzeugt, der hierin Kc genannt wird, wobei Kc sowohl der Empfangsvorrichtung als auch der Sendevorrichtung zum Verschlüsseln und zum Entschlüsseln der Daten bekannt ist.
  • Regierungen regeln Export-Kommunikationsteile und -vorrichtungen, die bei der Verschlüsselung und Übertragung von Daten verwendet werden, einschließlich, aber nicht darauf beschränkt, von Verschlüsselungs-Software und -Hardware. Solche Exportvorschriften unterscheiden sich zwischen verschiedenen Ländern. Insbesondere regeln Regierungen die maximale zulässige Schlüssellänge von Verschlüsselungsschlüsseln, die für die Vorrichtungen für den Export verfügbar sind. Die Anwender, die verschlüsselte Daten senden und empfangen, würden bevorzugten, den bestmöglichen, das heißt den längstmöglichen, Verschlüsselungsschlüssel zu verwenden, um die Sicherheit zu maximieren; jedoch sind diese Anwender durch Regierungsvorschriften bezüglich des Verschlüsselungsschlüssels beschränkt.
  • Es soll angenommen werden, dass eine aktuelle Technologie für Schlüssellängen des Verschlüsselungsschlüssels Kc sorgt, die zwischen 1 und 160 Bytes (8 und 1280 Bits) sind. Regierungen begrenzen typischerweise die maximal zulässige Verschlüsselungsschlüssellänge auf maximal 7 Bytes (56 Bits). Um über diese Verschlüsselungsschlüssellänge hinauszugehen, würde ein Hersteller eine Exportlizenz beantragen müssen. Kommunikationsvorrichtungen, wie z.B. zellulare Telefone, nutzen typischerweise die maximale Verschlüsselungsschlüssellänge, die für die bestimmte Vorrichtung unter den anwendbaren Exportvorschriften zugelassen ist. Die maximale Verschlüsselungsschlüssellänge sollte auf eine derartige Weise gespeichert werden, dass verhindert wird, dass Anwender den Parameter auf einfache Weise manipulieren, um eine Entsprechung zu Regierungsvorschriften sicherzustellen. Beispielsweise könnte dieser Parameter in einem NURLESE-Speicher (ROM) gespeichert werden. Jedoch ist es von einem Herstellungs-Standpunkt aus erwünscht, Kommunikationsvorrichtungen herzustellen, die in vielen unterschiedlichen Ländern funktionieren können, um dadurch eine Kundenanpassung zu vermeiden und einem Anwender zu erlauben, dieselbe Kommunikationsvorrichtung an unterschiedlichen geografischen Orten zu verwenden. Der Hersteller würde bevorzugen ein universelles Produkt mit einem standardisierten Verfahren einer Verschlüsselung herzustellen, die mit den unterschiedlichen Vorschriften übereinstimmt, die durch eine Vielfalt von Regierungen eingesetzt sind, und auch ein hohes Maß an Datensicherheit zur Verfügung stellt.
  • Gegenwärtig wird ein Verschlüsselungsschlüssel K'c zusammen mit anderen öffentlichen Parametern, wie beispielsweise einem Mastertakt, bei der Initialisierung eines Verschlüsselungsschlüssels verwendet. Ein Verschlüsselungsschlüssel K'c verwendet den Verschlüsselungsschlüssel Kc und eine öffentliche Zufallszahl, die RAND genannt wird, gemäß der folgen den Gleichung:
    Figure 00030001
    wobei für 1 1 ≤ L ≤ min {LA max, LB max} in Bytes gilt; und wobei RAND [L...15] die Bytes L bis 15 von RAND bezeichnet.
  • Für Beispielszwecke ist für die maximale verwendbare Verschlüsselungsschlüssellänge in Bytes Lmax angenommen, dass sie 16 Bytes ist, obwohl andere Verschlüsselungsschlüssellängen verwendet werden könnten.
  • Wie es durch die obige Gleichung offenbart ist, wird der Verschlüsselungsschlüssel K'c durch Anbringen einer Zufallszahl an das Ende des Verschlüsselungsschlüssels Kc erzeugt, um die gesamte Menge an verfügbaren Bytes für die Verschlüsselungsschlüssellänge zu vervollständigen, d.h. 16 Bytes in diesem Fall. Der Parameter L stellt die kleinere Verschlüsselungsschlüssellänge dar, die zwischen zwei Verschlüsselungsschlüssellängen LA max und LB max einer ersten Kommunikationsvorrichtung A und einer zweiten Kommunikationsvorrichtung B zugelassen ist, die unter unterschiedlichen Regierungsvorschriften hergestellt sind. Anders ausgedrückt ist die beim Berechnen des Verschlüsselungsschlüssels K'c verwendete Verschlüsselungsschlüssellänge die kleinere der zwei Verschlüsselungsschlüssellängen, für die zugelassen ist, dass sie durch die erste und die zweite Kommunikationsvorrichtung A und B verwendet werden. Beide Vorrichtungen können verschlüsselte Kommunikationen mit der kleineren Schlüssellänge verwenden, aber nur eine Vorrichtung kann eine verschlüsselte Kommunikation mit der größeren Schlüssellänge verwenden.
  • Ein Problem bei der obigen Gleichung zum Erzeugen des Verschlüsselungsschlüssels K'c besteht darin, dass es schwierig ist, sicherzustellen, dass die Hardware, die den Verschlüsselungsalgorithmus implementiert, nicht durch eine Software geändert wird, die die voreingestellten Werte von Lmax unwirksam macht. Weiterhin kann der RAND-Parameter, der öffentlich ist, missbraucht werden, um eine effektive Schlüssellänge zu erreichen, die überhaupt nicht beschränkt ist, d.h. K'c hat eine maximale Anzahl von effektiven Schlüsselbits.
  • Eine alternative Lösung besteht im Reduzieren des Raums, der für den Verschlüsselungsschlüssel K'c vorgesehen ist, auf L Bytes im Speicher der Kommunikationsvorrichtung, um zu verhindern, dass die Software diese Länge ändert. Dies kann durch "Ausmaskieren" der gesamten Länge an verfügbaren Bytes minus L Bytes des Verschlüsselungsschlüssels Kc und durch Ignorieren der RAND erreicht werden. Beispielsweise würde in diesem Fall deshalb, weil für die maximale Verschlüsselungsschlüssellänge angenommen ist, dass sie 16 ist, 16 minus L Bytes "ausmaskiert" werden, oder anders ausgedrückt durch Nullen oder irgendeine andere feste Kette ersetzt werden. Der resultierende Verschlüsselungsschlüssel K'c würde dann als Kc für die ersten L Bytes und aus Nullen oder irgendeiner anderen festen Kette für die nächsten 16 – L Bytes (128-8L Bits) bestehen.
  • Jedoch resultieren für kleine Bytewerte von L wenigstens zwei unerwünschte Konsequenzen aus dieser Lösung. Als Erstes vermischt der Verschlüsselungsalgorithmus während der Initialisierung des Verschlüsselungsalgorithmus den Verschlüsselungsschlüssel K'c und bestimmt einen Startpunkt des Verschlüsselungsalgorithmus. Zum Erreichen einer starken Verschlüsselung würde es für die Vermischungsperiode aufgrund der "Nicht-Nicht-Zufälligkeit" der großen festen Kette in den 16 minus L Bytes, wobei L klein ist, verlängert zu werden. Da die Länge des "Zufalls"-Teils des Verschlüsselungsschlüssels kleiner wird, würde der Verschlüsselungsalgorithmus beim Bestimmen eines Startpunkts des Verschlüsselungsschlüssels zum Kompensieren der kleinen Länge von "Zufalls"-Bits, um eine bessere Verschlüsselung zu erreichen, idealerweise die Vermischungsperiode verlängern, oder eine Anzahl von Iterationen wird durchgeführt. Jedoch ist die Anzahl der Iterationen, die durchgeführt werden können, durch die strenge Zeitgabeanforderungseinstellung beim Schalten zwischen Senden/Empfangen begrenzt. Somit erzeugt dies ein Risiko einer schwachen Verschlüsselung.
  • Als Zweites würde eine nicht autorisierte Person, die versucht, die verschlüsselten Daten zu entschlüsseln, oder die einen "Verschlüsselungsangriff" durchführt, nur die ersten L Bytes des Verschlüsselungsschlüssels Kc betrachten oder analysieren müssen. Anderes ausgedrückt würde die nicht autorisierte Person nur die möglichen Kombinationen von Daten in L Bytes analysieren müssen, eher als die größere maximale nutzbare Verschlüsselungsschlüssellänge, in diesem Fall 16 Bytes, für kleine Werte von L. Dies erzeugt ein Risiko einer nicht autorisierten Entschlüsselung.
  • Verschiedene andere Dokumente beschreiben Techniken zum Manipulieren von Schlüsselsequenzen, die zu Verschlüsselungstechniken gehören. Beispielsweise beschreibt das US-Patent Nr. 5,278,905 von McNair Techniken für eine Schlüsselsequenzerzeugung, die zu einer Prozessorausnutzung passt, z.B. durch Zeitmultiplexen der Erzeugung und der Speicherung der Schlüsselsequenz mit dem Verschlüsselungsprozess selbst. Gleichermaßen beschreibt WO 97/05720 eine Technik zum Erzeugen eines Schlüssels, wobei der Verteilungsraum des kryptografischen Schlüssels zuerst reduziert wird, dann ein Schlüssel durch Erhöhen bzw. Vergrößern des Verteilungsraums des reduzierten Raumschlüssels erzeugt wird. Der Schlüssel mit Reduziertem-Vergrößertem-Raum wird dann zum Verschlüsseln von Information verwendet. Leute, die die verschlüsselte Information empfangen, die die spezifischen Verteilungsreduzierungs- und -erweiterungsprozeduren kennen, werden die empfangene Information mit einem stark reduzierten Arbeitsfaktor entschlüsseln können, und zwar aufgrund der Art, auf welche der Schlüssel erzeugt ist. Jedoch löst keines dieser Dokumente die oben in Zusammenhang mit der Anzahl von Startpunkten im Verschlüsselungsalgorithmus beschriebenen Probleme.
  • Allgemein empfängt ein guter Verschlüsselungsalgorithmus als seine Eingabe einen von beispielsweise 28L möglichen Startpunkten in einem binären System. Wo L 16 Bytes ist, würde ein guter Verschlüsselungsalgorithmus 2128 mögliche Startpunkte in einem binären System empfangen. Jede der möglichen Kombinationen der 8L K'c-Bits würde einen Startpunkt aus den 28L Startpunkten definieren. Eine nicht autorisierte Person, die versucht, verschlüsselte Daten zu entschlüsseln, würde bis zu 28L möglichen Kombinationen versuchen müssen, um dies durchzuführen. Weniger Startpunkte sind verfügbar, wo Regierungsvorschriften die Schlüssellänge beschränkt haben. Wenn beispielsweise eine Regierung eine Verschlüsselungsschlüssellänge auf ein Maximum von 5 Bytes (40 Bits) beschränkt, würde ein Verschlüsselungsalgorithmus eine reduzierte Anzahl von Startpunkten haben, das heißt 240 Startpunkte. Darüber hinaus beschränkt dann, wenn man den Raum oder den Speicher betrachtet, der zum Speichern aller möglicher 28L Startpunkte verfügbar ist, eine aktuelle Technologie typischerweise den gesamten verfügbaren Speicher auf einen spezifischen Bereich des Speichers zum Speichern der reduzierten Anzahl von Startpunkten und verwendet den übrigen Teil des Speichers nicht. Die übrigen Positionen sind konstant. Somit würde eine nicht autorisierte Person, die versucht, verschlüsselte Daten zu entschlüsseln, nur 240 Startpunkte analysieren müssen und die nicht autorisierte Person würde wissen, wo solche Startpunkte wo im Speicher angeordnet sind.
  • Zusammenfassung
  • Demgemäß ist zum Überwinden der oben angegebenen Probleme gemäß einem ersten Aspekt der vorliegenden Erfindung eine Kommunikationsvorrichtung zum Berechnen eines Verschlüsselungsschlüssels K'c durch Manipulieren eines Verschlüsselungsschlüssels Kc zur Verwendung in einem Verschlüsselungsalgorithmus zur Verfügung gestellt, wobei die Vorrichtung folgendes aufweist: ein Speicherelement zum Speichern von einem oder mehreren Polynomen; eine Vielzahl von Schaltelementen, die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang haben, wobei die ersten Eingänge der Schaltelemente mit dem Speicherelement verbunden sind; eine Vielzahl von Verzögerungselementen, die jeweils einen Eingang und einen Ausgang haben, wobei der Ausgang von einem der Verzögerungselemente mit den zweiten Eingängen der Schaltelemente verbunden ist; und wobei eine Vielzahl von Additionsfunktionen, die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang haben, wobei die Ausgänge von jeder von allen außer einem der Verzögerungselemente mit einem entsprechenden ersten Eingang von einer der Vielzahl von Additionsfunktionen verbunden ist, die Ausgänge von jedem von allen außer einem der Schaltelemente mit einem entsprechenden zweiten Eingang von einer der Vielzahl von Additionsfunktionen verbunden sind, und die Eingänge von jedem von allen außer einem der Verzögerungselemente mit einem entsprechenden Ausgang der Vielzahl von Additionsfunktionen verbunden sind.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung ist ein Verfahren zur Verfügung gestellt, das durch eine Kommunikationsvorrichtung zum Berechnen eines Verschlüsselungsschlüssels K'c(x) durchgeführt wird, um Daten zu verschlüsseln, welches Verfahren die folgenden Schritte aufweist: Erhalten eines Verschlüsselungsschlüssels Kc(x); Bestimmen einer maximalen Verschlüsselungsschlüssellänge L; Bestimmen einer maximalen nutzbaren Verschlüsselungsschlüssellänge Lmax Erhalten eines Polynoms g1(x), Erhalten eines Polynoms g2(x) zum Spreizen von Startpunkten des Verschlüsselungsschlüssels K'c(x); und Berechnen des Verschlüsselungsschlüssels K'c(x), wobei K'c(x) = g2 (L)(x)[Kc(x) mod g1(L)(x)].
  • Zusätzlich stellt die vorliegende Erfindung eine Schnittstelle zwischen dem Generator des Verschlüsselungsschlüssels Kc in einem Kommunikationssystem und der Verschlüsselungsvorrichtung, die den Verschlüsselungsschlüssel beim Verschlüsseln von Daten verwendet, zur Verfügung. Die Schnittstelle liefert eine steuerbare und sichere Art zum Begrenzen der Schlüssellänge, um mit der durch Regierungsvorschriften eingestellten effektiven Schlüssellänge übereinzustimmen, indem sie eine Additions- oder Modulusfunktion bei der Berechnung des Verschlüsselungsschlüssels K'c enthält.
  • Darüber hinaus sorgt die vorliegende Erfindung für eine Kommunikation zwischen zwei Vorrichtungen, die durch unterschiedliche Regierungen geregelt sind, die unterschiedliche maximale Verschlüsselungsschlüssellängen einstellen.
  • Weiterhin sorgt die vorliegende Erfindung für einen Verschlüsselungsschlüssel K'c, wobei die "Zufälligkeit" über alle mögliche Kombinationen von Startpunkten für eine Eingabe in den Verschlüsselungsalgorithmus der Verschlüsselungsvorrichtung ausgebreitet ist.
  • Die obigen und weitere Vorteile der vorliegenden Erfindung werden in einer Form durch eine Kommunikationsvorrichtung zum Bestimmen eines Verschlüsselungsschlüssels zur Verwendung bei einem Verschlüsselungsalgorithmus ausgeführt. Die Kommunikationsvorrichtung weist ein Speicherelement zum Speichern von einem oder mehreren Polynomen auf; eine Vielzahl von Schaltelementen, die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang haben, wobei die ersten Eingänge des Schaltelements mit dem Speicherelement verbunden sind; eine Vielzahl von Verzögerungselementen, die jeweils einen Eingang und einen Ausgang haben, wobei der Ausgang eines Verzögerungselements mit den zweiten Eingängen des Schaltelements verbunden ist; und eine Vielzahl von Additions- oder Modulo-Funktionen, die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang haben, wobei die ersten Modulo-Eingänge mit allen außer einem der Verzögerungselementausgänge verbunden sind, wobei die zweiten Modulo-Eingänge mit allen außer einem der Ausgänge des Schaltelements verbunden sind und wobei die Modulo-Ausgänge mit allen außer einem der Eingänge des Verzögerungselements verbunden sind. Die Verzögerungselemente können in der Form eines Schieberegisters sein.
  • Die obigen und weitere Vorteile der vorliegenden Erfindung werden auch in einer weiteren Form durch ein Verfahren zum Berechnen eines Verschlüsselungsschlüssels K'c(x) zur Verwendung in einem Verschlüsselungsalgorithmus ausgeführt. Das Verfahren weist die Schritte zum Erhalten eines Verschlüsselungsschlüssels K'c(x); zum Bestimmen einer maximalen Verschlüsselungsschlüssellänge L; zum Bestimmen einer maximalen verfügbaren Verschlüsselungsschlüssellänge Lmax; zum Erhalten eines Polynoms g1(x), wobei das höchste Ausmaß gleich Lmax ist; zum Erhalten eines Polynoms g2(x); zum Spreizen von Startpunkten des Verschlüsselungsschlüssels K'c(x); und zum Berechnen des Verschlüsselungsschlüssels K'c(x), wobei K'c(x) = g2 (L)(x)[Kc(x) mod g1 (L)(x)].
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ein vollständigeres Verstehen der vorliegenden Erfindung kann durch Bezugnahme auf die detaillierte Beschreibung und die Ansprüche abgeleitet werden, wenn sie in Zusammenhang mit den Figuren betrachtet werden, wobei:
  • 1 zwei mobile Kommunikationsvorrichtungen, die Daten senden und empfangen, gemäß der vorliegenden Erfindung zeigt;
  • 2 ein Schema zum Berechnen eines Verschlüsselungsschlüssels K'c gemäß der vorliegenden Erfindung zeigt;
  • 3 ein Schieberegister gemäß dem Schema der 2 zu unterschiedlichen Zeitintervallen gemäß der vorliegenden Erfindung zeigt; und
  • 4 ein Blockdiagramm eines Verfahrens zum Berechnen eines Verschlüsselungsschlüssels K'c gemäß der vorliegenden Erfindung zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zu Zwecken einer Erklärung und nicht einer Beschränkung spezifische Details aufgezeigt, wie beispielsweise bestimmte Schaltungen, Schaltungskomponenten, Techniken, etc., um ein sorgfältiges Verständnis für die vorliegende Erfindung zur Verfügung zu stellen. Jedoch wird es einem Fachmann auf dem Gebiet offensichtlich werden, dass die vorliegende Erfindung in anderen Ausführungsbeispielen ausgeführt werden kann, die von diesen spezifischen Details abweichen. In anderen Fällen sind detaillierte Beschreibungen von wohlbekannten Verfahren, Vorrichtungen und Schaltungen weggelassen, um die Beschreibung der vorliegenden Erfindung nicht zu verdunkeln.
  • Zum Sicherstellen einer Entsprechung mit einer vorgeschriebenen Schlüssellänge und zum Verbessern der Verschlüsselung einer Datenübertragung zwischen zwei oder mehreren Vorrichtungen wird gemäß der vorliegenden Erfindung ein Verschlüsselungsschlüssel K'c gemäß der folgenden Formel bestimmt oder berechnet und in einen Verschlüsselungsalgorithmus eingegeben. K'c(x) = g2 (L)(x)[Kc(x) mod g1 (L)(x)] (Gl. 2)wobei:
    L die maximale beschränkte Verschlüsselungsschlüssellänge in Bytes ist und
    1 ≤ L ≤ min {LA max, LB max} und deg(g1(x)) + deg(g2(x)) ≤ wL für alle L Bytes gilt, wobei w eine Wortlänge in Bits ist.
  • Der Verschlüsselungsschlüssel K'c ist oben für beispielhafte Zwecke in Ausdrücken eines Polynomausdrucks geschrieben.
  • Wie es in Gl. 2 offenbart ist, basiert die Verschlüsselungsschlüssel K'c teilweise auf dem Verschlüsselungsschlüssel Kc. Der Verschlüsselungsschlüssel Kc kann auf irgendeine geeignete Weise erhalten werden, die nicht bekannt ist oder später entdeckt wird. Beispielsweise kann der Verschlüsselungsschlüssel Kc unabhängig zu einer Vorrichtung A und einer Vorrichtung B von einer dritten Vorrichtung kommuniziert werden, um eine Verschlüsselung und eine Entschlüsselung zu ermöglichen. Alternativ dazu kann die Vorrichtung A einen Verschlüsselungsschlüssel Kc gespeichert haben und kann diesen zur Vorrichtung B kommunizieren. Es soll angenommen sein, dass die aktuelle Technologie zulässt, dass eine Verschlüsselungsschlüssellänge zwischen 1 und 160 Bytes (8 und 1280 Bits) bezüglich der Länge ist. Jedoch haben die Regierungen, von welchen die Vorrichtung A und die Vorrichtung B exportiert werden, der maximalen Länge des Verschlüsselungsschlüssels bestimmte Beschränkungen auferlegt. Beispielsweise soll angenommen sein, dass die Vorrichtung A mit einer maximalen Schlüssellänge von 5 Bytes (40 Bits) kommunizieren kann und die Vorrichtung B mit einer maximalen Schlüssellänge von 7 Bytes (56 Bits) kommunizieren kann. Wenn einmal bestimmt ist, dass die Vorrichtung A wünscht, Daten zur Vorrichtung B zu senden, "handeln" die Vorrichtung A und die Vorrichtung B eine akzeptierbare maximale Schlüssellänge L "aus", mit welcher sie beide kommunizieren können. Insbesondere werden die Vorrichtung A und die Vorrichtung B Daten zu und voneinander senden und empfangen, die eine jeweilige maximale Schlüssellänge der Vorrichtung spezifizieren. Bei diesem Beispiel werden deshalb, weil LA max 40 Bits ist und LB max 56 Bits ist, die Vorrichtungen "übereinstimmen", mit einer maximalen Verschlüsselungsschlüssellänge L von der kleineren Schlüssellänge oder 40 Bits zu kommunizieren.
  • Somit wird gemäß der vorliegenden Erfindung die maximal mögliche Schlüssellänge auf das Minimum der maximalen Schlüssellängen zwischen den Vorrichtungen A und B beschränkt. Die Schlüssellängenbeschränkung ist in der Verschlüsselung durch die Additions- oder Modulo-Funktion und die Auswahl des Polynoms g1(x) implementiert.
  • Bei einem beispielhaften Ausführungsbeispiel kann g1(x) als das folgende Polynom dargestellt werden:
    Figure 00130001
    wobei w gleich einer Wortlänge ist und L gleich einer Anzahl von Worten eines Verschlüsselungsschlüssels ist.
  • Das Polynom g1(x) wird so erzeugt, dass das höchste Ausmaß des Polynoms dasjenige der maximal zulässigen Schlüssellänge in Bits sein wird. Beispielsweise dann, wenn die Wortlänge 8 Bits ist und die Anzahl von Worten 5 ist, wird das höchste Maß des Polynoms g1(x) 40 sein. Somit könnte das Polynom g1(x) beispielsweise wie folgt sein: g1(x) = Ax40 + Bx39 + Cx38 + ... + Dx + E, A ≠ 0 (Gl. 4 )
  • Die Additions- oder Modulo-Operation stellt sicher, dass die Schlüssellänge wL Bits ist, da das maximale Ausmaß des Rests Eins weniger als das höchste Maß bzw. als der höchste Grad des Nenners nicht übersteigen kann. Bei diesem Beispiel wird die Berechnung der Operation Kc(x) mod g1 (L)(x) ein Ergebnis ergeben, bei welchem der höchste Grad, der möglich ist, Eins weniger als 40, d.h. 39, ist. Das Ergebnis hat 40 Bits, die mit der maximalen zulässigen Schlüssellänge übereinstimmen.
  • Auf das Polynom g1(x) kann beispielsweise von einer Tabelle aus zugegriffen werden, die ein geeignetes Polynom g1(x) für ein gegebenes L identifiziert. Diese Tabelle ist vorzugsweise in der Hardware angeordnet, so dass die verfügbaren Polynome g1(x) sicher sind. Die Polynome g1(x) sind somit vor einer Beeinflussung geschützt, um eine Entsprechung mit Regierungsvorschriften sicherzustellen. Es wird erkannt werden, dass eine Tabelle eine Art zum Speichern oder zum Erhalten der Polynome g1(x) ist, aber dass andere Arten, die im Stand der Technik bekannt sind, auch verwendet werden können.
  • Wie es oben diskutiert ist, empfängt ein guter Verschlüsselungsalgorithmus als seine Eingabe einen von 28L möglichen Startpunkten in einem binären System, wobei L die maximal mögliche Verschlüsselungsschlüssellänge in Bytes ist. Jede der möglichen Kombinationen der 8L K'c Bits würde einen Startpunkt aus den 28L Startpunkten definieren. Eine nicht autorisierte Person, die versucht, verschlüsselte Daten zu entschlüsseln, würde bis zu 28L möglichen Kombinationen versuchen müssen, um dies durchzuführen.
  • Beispielsweise dann, wenn L gleich 16 Bytes ist, empfängt ein guter Verschlüsselungsalgorithmus als seine Eingabe einen von 2128 möglichen Startpunkten in einem binären System. Jede der möglichen Kombinationen der 128 K'c Bits würde einem Startpunkt aus den 2128 Startpunkten definieren. Eine nicht autorisierte Person, die versucht, verschlüsselte Daten zu entschlüsseln, würde bis zu 2128 möglichen Kombinationen versuchen müssen, um dies durchzuführen.
  • Bei dem obigen Beispiel mit der Vorrichtung A und der Vorrichtung B würde ein Verschlüsselungsalgorithmus aufgrund des kleineren Werts von L eine reduzierte Anzahl von Startpunkten haben, das heißt 240 Startpunkte. Eine gegenwärtige Technologie beschränkt typischerweise den gesamten verfügbaren Speicher (in diesem Fall 240 mögliche Startpunkte auf einen spezifischen Bereich des Speichers zum Speichern der reduzierten Anzahl von Startpunkten und verwendet den übrigen Teil des Speichers nicht. Die übrigen Positionen sind konstant. Somit würde bei diesem Beispiel unter der gegenwärtigen Technologie eine nicht autorisierte Person, die versucht, verschlüsselte Daten zu entschlüsseln, nur 240 Startpunkte analysieren müssen, und die nicht autorisierte Person würde wissen, wo solche Startpunkte wo im Speicher angeordnet sind.
  • Anders ausgedrückt würde dann, wenn der Verschlüsselungsschlüssel K'c(x), der nur aus Kc(x) mod g1 (L)(x) resultierte, K'c(x) in einem spezifischen Teil eines Speichers gemäß einer gegenwärtigen Technologie gespeichert sein. Die anderen Bits würden Null order irgendeine andere feste Kette sein. Die Startpunkte würden dann in einer spezifischen Untergruppe von allen möglichen Startpunkten angeordnet sein. Zum Erhöhen der Stärke der Verschlüsselung ist es jedoch von Vorteil, die Startpunkte über alle möglichen Bits ausgebreitet bzw. gespreizt zu haben.
  • Eine Hamming-Distanz ist ein Wert, der die Anzahl von unterschiedlichen Bits in zwei Datenketten berücksichtigt. Je größer die Hamming-Distanz unter den möglichen Startpunkten ist, um so besser ist die Verschlüsselung. Wenn die Startpunkte immer in einer spezifischen Untergruppe von Positionen angeordnet sind, wird die Hamming-Distanz und somit die Verschlüsselung, schlecht sein. Die vorliegende Erfindung stellt ein Verfahren und eine Vorrichtung zur Verfügung, wodurch die Startpunkte eher auf eine effektivere Weise ausgebreitet bzw. gespreizt werden, als dass sie auf eine spezifische Untergruppe von Bits begrenzt werden, so dass die minimale Distanz zwischen den Startpunkten größer wird.
  • Dieses Konzept eines Vergrößerns des Abstands bzw. der Distanz oder eines "Spreizens" ist im Stand der Technik bekannt. Beispielsweise verwendet eine Fehlerkorrekturcodierung dieses Konzept für eine andere Anwendung. Somit wird zum Ausspreizen der Startpunkte über den möglichen Bitbereich das Ergebnis der Operation Kc(x) mod g1 (L)(x) mit einem Polynom g2(x) multipliziert, wobei ein beispielhaftes Polynom g2(x) wie folgt ist:
    Figure 00160001
    wobei w gleich einer Wortlänge ist, L gleich einer Anzahl von Worten des Verschlüsselungsschlüssels ist und Lmax gleich einer maximalen Anzahl von Worten ist, die im Verschlüsselungsschlüssel nutzbar sind.
  • Die Multiplikation von g2(x) mit dem Ergebnis von Kc(x) mod g1 (L)(x) wird das Ergebnis von Kc(x) mod g1 (L)(x) über den gesamten Bitbereich "spreizen". Das geeignete Polynom g2(x) wird basierend auf einem gegebenen L ausgewählt werden, wie es gegenwärtig im Stand der Technik bekannt ist. Das bedeutet, dass für unterschiedliche Schlüssellängen L unterschiedliche Koeffizienten des Polynoms g2(x) ausgewählt werden, um erwünschte Hamming-Distanzen effektiver zu erreichen. Für kleine Werte von L könnte eine Gruppe von Koeffizienten gewünschte Hamming-Distanzen erreichen, während für große Werte von L eine andere Gruppe von Koeffizienten geeigneter sein würde, um erwünschte Hamming-Distanzen zu erreichen. Im binären Fall kann g2(x) als ein Generatorpolynom eines BCH-Fehlerkorrekturcodes gefunden werden. Die Polynome g2(x) können entweder in einer Tabelle gespeichert werden, die sich auf geeignete Polynome g2(x) für ein gegebenes L bezieht. Diese Tabelle kann dieselbe Tabelle sein, in welcher g1(x) gespeichert ist, oder eine andere Tabelle. Die Polynome g2(x) können in einer Hardware oder in einer Software der Verschlüsselungsvorrichtung gespeichert sein. Es wird erkannt werden, dass eine Tabelle eine Art zum Speichern von wiederzugewinnenden Polynomen g2(x) ist, dass aber andere Arten, die im Stand der Technik bekannt sind, auch verwendet werden können. Alternativ können die Polynome g2(x) aus einem Speicher bei irgendeiner anderen Stelle erhalten werden, d.h. nicht innerhalb der Verschlüsselungsvorrichtung angeordnet.
  • K'c(x) resultiert aus dieser Multiplikation. K'c(x) ist eine Eingabe zu einem Verschlüsselungsalgorithmus zur Verwendung beim Verschlüsseln von Daten.
  • 1 zeigt mobile Kommunikationsvorrichtungen 100, 102, die Daten voneinander senden und empfangen, gemäß der vorliegenden Erfindung. Die Vorrichtungen 100, 102 können irgendeine Art einer hart verdrahteten oder einer drahtlosen Vorrichtung sein, einschließlich, ohne eine Beschränkung, eines zellularen Telefons oder eines Computers.
  • 2 zeigt eine detaillierte Ansicht der Kommunikationsvorrichtung 200. Die Kommunikationsvorrichtung 200 enthält ein Speicherelement 202, eine Vielzahl von Schaltelementen, wie beispielsweise UND-Gatter 204, eine Vielzahl von Verzögerungselementen 206 und eine Vielzahl von Additions- oder Modulo-Funktionen 208.
  • Das Speicherelement 202 speichert ein Polynom g1(x). Das Speicherelement 202 kann eine Nachschautabelle oder irgendeine andere Anordnung von gespeicherter Information sein. Das Speicherelement 202 kann auch ein Polynom g2(x) speichern. Alternativ kann g2(x) bei irgendeiner anderen Stelle innerhalb der Kommunikationsvorrichtung 200 gespeichert sein oder kann von irgendeiner anderen Stelle extern dazu, aber zugreifbar darauf, der Kommunikationsvorrichtung 200 erhalten werden. Für beispielhafte Zwecke wird das Speicherelement 202 hierin derart beschrieben, dass es sowohl g1(x) als auch g2(x) speichert. Die Funktionen g1(x) und g2(x) sind Polynome mit spezifizierten Koeffizienten, z.B. denjenigen, die oben beschrieben sind.
  • Die Schaltelemente oder UND-Gatter 204 haben jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang. Das Speicherelement 202 ist mit den ersten Eingängen der UND-Gatter 204 verbunden. Jedes Verzögerungselement 206 hat einen Eingang und einen Ausgang. Die Verzögerungselemente 206 können als Schieberegister implementiert sein. Der Ausgang von einem der UND-Gatter 204a ist mit dem Eingang eines ersten Verzögerungselements 206a verbunden. Die Modulo-Funktionen 208 haben jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang. Die Ausgänge der übrigen UND-Gatter 204 sind mit ersten Eingängen der Modulo-Funktionen 208 verbunden. Die Ausgänge von allen Verzögerungselementen 206, außer für ein letztes Verzögerungselement 206b, sind mit den zweiten Eingängen der Modulo-Funktionen 208 verbunden. Der Ausgang des letzten Verzögerungselements 206b ist mit dem zweiten Eingang der UND-Gatter 204 verbunden. Die Ausgänge der Modulo-Funktionen 208 sind mit den Eingängen aller Verzögerungselemente 206 außer dem ersten Verzögerungselement 206a verbunden.
  • Für beispielhafte Zwecke soll ein binäres Schema der Einfachheit halber angenommen sein; jedoch werden Fachleute auf dem Gebiet erkennen, dass die vorliegende Erfindung gleichermaßen auf andere Symboldarstellungen anwendbar ist.
  • Anfänglich werden die Kommunikationsvorrichtungen 100, 102, wie sie in 1 gezeigt sind, zwischen sich selbst "verhandeln" oder "kommunizieren", um die maximale Verschlüsselungsschlüssellänge L zu bestimmen, die beide Vorrichtungen 100, 102 verwenden können, um zu kommunizieren, wie es oben diskutiert ist. Die Vorrichtungen 100, 102 könnten beispielsweise eine jeweilige maximale Verschlüsselungsschlüssellänge für jede Vorrichtung austauschen. Die Vorrichtungen 100, 102 "stimmen" dann über eine maximale Verschlüsselungsschlüssellänge L "überein", indem die kleinere der zwei Verschlüsselungsschlüssellängen ausgewählt wird, die für jede Vorrichtung erforderlich sind, wenn sich die Verschlüsselungsschlüssellängen L unterscheiden.
  • Nimmt man wieder Bezug auf 2, ist der erste Eingang der UND-Gatter 204 das binäre Polynom g1(x) vom Speicherelement 202. Die ersten Koeffizienten w(Lmax-L) sind Null und die letzten Koeffizienten wL können Zahlen von Nicht-Null sein. In diesem Fall ist w gleich der Wortlänge für alle w ≥ 1, ist L gleich der "ausgehandelten" Anzahl von Worten des Verschlüsselungsschlüssels für alle L ≥ 1, ist Lmax gleich der maximalen Anzahl von nutzbaren Worten im Verschlüsselungsschlüssel für alle Lmax ≥ 1. Der zweite Eingang der UND-Gatter 204 wird auf Null initialisiert. Somit ist der Ausgang der UND-Gatter 204 für jedes Gatter entsprechend den ersten w(Lmax-L) Bits Null. Für die letzten wL Bits sind die Ausgänge der UND-Gatter 204 eine Funktion der Koeffizienten des Polynoms g1(x) für jedes Gatter entsprechend den letzten Koeffizienten wL. Wenn der Koeffizient für g1(x) 0 ist, wird sich das UND-Gatter 204 öffnen. Gegensätzlich dazu wird sich das UND-Gatter 204 dann schließen, wenn der Koeffizient für g1(x) 1 ist.
  • Die Verzögerungselemente 206 werden mit den Koeffizienten des Verschlüsselungsschlüssels Kc(x) initialisiert (wie es im Schieberegister 306a der 3 gezeigt ist). Diese Koeffizienten sowie die Ausgänge der UND-Gatter 204 werden in Exklusiv-Oder-Funktionen 208 eingegeben. (Dies gilt für den binären Fall. In Fällen, die andere als binär sind, werden diese Koeffizienten in eine andere geeignete Additionsfunktion eingegeben.) Die anfänglichen Eingänge der UND-Gatter 204 sind eine Kette von Nullen und der Koeffizienten g1(x), wie es oben beschrieben ist. Die Ausgänge der Exklusiv-Oder-Funktionen 208 werden in alle UND-Gatter 206 eingegeben, außer für das erste UND-Gatter 206a. Der Ausgang des letzten Verzögerungselements 206b wird in die zweiten Eingänge von allen UND-Gattern 204 rückgekoppelt. Dieser Prozess wird dann wiederholt, wenn die Daten verschoben werden, und zwar gemäß verfügbaren Zyklen, Taktimpulsen oder anderen Zeitgabemechanismen.
  • Der Verschlüsselungsschlüssel Kc(x) ist anfangs in den Verzögerungselementen 206 (oder einem Register, wie es bei 306a in 3 gezeigt ist) angeordnet. Wie es oben beschrieben ist, werden Berechnungen unter Verwendung des Verschlüsselungsschlüssels Kc(x) durchgeführt. Der Verschlüsselungsschlüssel Kc(x) wird aus den Verzögerungselementen 206 herausgeschoben. Der Ausgang des letzten Verzögerungselements 206b wird in die UND-Gatter 204 bei denjenigen Positionen eingegeben, wo die UND-Gatter 204 geschlossen sind. Nach der Beendigung von w(Lmax-L) Verschiebungen enthalten die Verzögerungselemente 206 das Ergebnis der Exklusiv-Oder-Funktion Kc(x) mod g1 (L)(x) in den letzten wL Räumen (wie es im Schieberegister 306b in 3 gezeigt ist. Wie es oben angegeben ist, stellt diese Berechnung sicher, dass die maximale Schlüssellänge des Verschlüsselungsschlüssels Kc(x) die Regierungsvorschriften für die maximale zugelassene Schlüssellänge nicht übersteigt.
  • Nach der Beendigung von w(Lmax-L) Verschiebungen wird g2(x) in die UND-Gatter 204 eingegeben. Gegensätzlich zu g1(x) ist g2(x) ein Polynom, bei welchem die ersten w(Lmax-L) Koeffizienten Zahlen von Nicht-Null sein können und die letzten wL Koeffizienten Nullen sind. Der obige Prozess dauert für wL weitere Verschiebungen an. Die aus den Exklusiv-Oder-Funktionen resultierenden wL Bits sind nun über dem Bereich "gespreizt" worden. Das Ergebnis in den Verzögerungselementen 206 (wie es im Schieberegister 210c in 3 gezeigt ist) ist ein Verschlüsselungsschlüssel K'c(x), der dann in einen geeigneten Verschlüsselungsalgorithmus zum Verschlüsseln von Daten eingegeben werden kann.
  • Für beispielhafte Zwecke soll angenommen sein, dass w gleich 8 ist, L gleich 5 ist und Lmax gleich 16 ist. Der Einfachheit halber soll wieder ein binäres Schema angenommen sein.
  • Nimmt man wieder Bezug auf 2, ist die erste Eingabe für die UND-Gatter 204 das binäre Polynom g1(x) vom Speicherelement 202. Die ersten w(Lmax-L) oder 88 Koeffizienten sind Null und die letzten wL oder 40 Koeffizienten können Zahlen von Nicht-Null sein. Die zweiten Eingänge der UND-Gatter 204 werden auf Null initialisiert. Somit ist der Ausgang der UND-Gatter 204 für jedes Gatter entsprechend den ersten 88 Bits Null. Für die letzten 40 Bits sind die Ausgänge der UND-Gatter 204 eine Funktion der Koeffizienten des Polynoms g1(x) für jedes Gatter entsprechend den letzten 40 Bits. Wenn der Koeffizient für g1(x) 0 ist, wird sich das UND-Gatter öffnen. Gegensätzlich dazu wird sich das UND-Gatter schließen, wenn der Koeffizient für g1(x) 1 ist.
  • Die Verzögerungselemente 206 werden mit den Koeffizienten des Verschlüsselungsschlüssels K'c(x) initialisiert. Diese Koeffizienten sowie die Ausgaben der UND-Gatter 204 werden in Exklusiv-Oder-Funktionen 208 eingegeben. (Die anfänglichen Eingänge der UND-Gatter 204 sind eine Kette von Nullen und der Koeffizienten von g1(x), wie es oben beschrieben ist). Die Ausgaben der Exklusiv-Oder-Funktionen 208 werden in alle UND-Gatter 206 eingegeben, außer für das erste UND-Gatter 206a. Die Ausgabe des letzten Verzögerungselements 206b wird in die UND-Gatter 204 bei denjenigen Positionen eingegeben, wo die UND-Gatter 204 geschlossen sind. Dieser Prozess wird dann wiederholt, wenn Daten verschoben werden.
  • Der Verschlüsselungsschlüssel Kc(x) ist anfänglich in 128 Verzögerungselementen 206 (oder in einem 128-Bit-Schieberegister, wie es bei 306a in 3 gezeigt ist) angeordnet. Wie es oben beschrieben ist, werden Berechnungen unter Verwendung des Verschlüsselungsschlüssels Kc(x) durchgeführt. Der Verschlüsselungsschlüssel Kc(x) wird aus dem Verzögerungselement 206 nach außen geschoben. Die Ausgabe des letzten Verzögerungselements 206b wird in die UND-Gatter 204 eingegeben. Nach der Beendigung von 128-40 oder 88 Verschiebungen enthalten die Verzögerungselemente das Ergebnis der Exklusiv-Oder-Funktion Kc(x) mod g1 (L)(x) in den letzten 40 Räumen.
  • Die Koeffizienten von g2(x) werden dann in die UND-Gatter 204 eingegeben. Der obige Prozess dauert für 40 weitere Verschiebungen oder eine Gesamtheit von 128 Verschiebungen an. Die aus der Exklusiv-Oder-Funktion resultierenden 40 Bits sind nun über den Bereich "gespreizt" worden. Das Ergebnis in den Verzögerungselementen 206 (oder im Schieberegister 206c, wie es in 3 gezeigt ist) ist ein Verschlüsselungsschlüssel K'c(x), welcher dann in einen geeigneten Verschlüsselungsalgorithmus zum Verschlüsseln von Daten eingegeben werden kann.
  • 4 zeigt ein Blockdiagramm eines Verfahrens 400 zum Berechnen des Verschlüsselungsschlüssels K'c, um Daten gemäß der vorliegenden Erfindung zu verschlüsseln. Das Verfahren 400 enthält den Schritt zum Erhalten eines Verschlüsselungsschlüssels Kc(x) 402. Wie es oben beschrieben ist, kann der Verschlüsselungsschlüssel Kc(x) auf irgendeine Anzahl von Wegen erhalten werden, die im Stand der Technik bekannt sind. Als Nächstes wird der Schritt zum Bestimmen einer maximalen Verschlüsselungsschlüssellänge L durchgeführt, 404. Die maximale Schlüssellänge ist typischerweise ein Wert in Bytes. Die Vorrichtungen, die zu kommunizieren wünschen, werden bezüglich der maximalen Verschlüsselungsschlüssellänge, mit welcher jede Vorrichtung kommunizieren kann, Information austauschen oder "verhandeln". Typischerweise wird die maximale Schlüssellänge auf die größte ausgehandelte verfügbare Schlüssellänge eingestellt werden, mit welcher beide Vorrichtungen kommunizieren können. Dann wird dann Polynom g1(x) gemäß dem Schritt 406 erhalten. Dann wird das Polynom g1(x) mit dem Verschlüsselungsschlüssel Kc(x) gemäß der Funktion Kx(x) mod g1(x) mathematisch manipuliert, um ein erstes Ergebnis zu erreichen. Dann wird ein Polynom g2(x) gemäß einem Schritt 408 erhalten. Der Schritt 408 spreizt die Startpunkte oder vergrößert die Hamming-Distanz des Verschlüsselungsschlüssels K'c(x). Ein geeignetes Polynom g2(x) wird basierend auf den Ergebnissen des Schritts 404 ausgewählt. Schließlich kann der Verschlüsselungsschlüssel K'c(x) gemäß dem Schritt 410 berechnet werden, wobei K'c(x) = g2 (L)(x)[Kx(x) mod g1 (L)(x)] gilt.
  • Die vorliegende Erfindung ist oben unter Bezugnahme auf bevorzugte Ausführungsbeispiele beschrieben worden. Jedoch werden Fachleute auf dem Gebiet erkennen, dass Änderungen und Modifikationen durchgeführt werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen. Beispielsweise wird, obwohl die vorliegende Erfindung ein Verfahren und eine Vorrichtung beschreibt, bei welchen die maximale Verschlüsselungsschlüssellänge L 5 Bytes ist und die maximale nutzbare Verschlüsselungsschlüssellänge Lmax 16 Bytes ist, es erkannt werden, dass die vorliegende Erfindung nicht so auf diese Längen beschränkt ist. Zusätzlich wird es auch erkannt werden, dass die Daten, die gesendet und empfangen werden, nicht auf irgendeinen bestimmten Typ von Daten beschränkt sind. Sie können Sprachdaten, geschriebene Daten oder andere Daten bilden. Sie können binär sein, ASCII oder irgendeine andere Form von Daten. Zusätzlich können die Daten über irgendwelche Medien, die nun bekannt sind, übertragen werden, wie beispielsweise Drähte oder Luftwellen oder später entdeckte.

Claims (27)

  1. Kommunikationsvorrichtung (200) zum Berechnen eines Verschlüsselungsschlüssels K'c durch Manipulieren eines Verschlüsselungsschlüssels Kc zur Verwendung in einem Verschlüsselungsalgorithmus, wobei die Vorrichtung (200) folgendes aufweist: ein Speicherelement (202) zum Speichern von einem oder mehreren Polynomen; eine Vielzahl von Schaltelementen (204), die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang haben, wobei die ersten Eingänge der Schaltelemente (204) mit dem Speicherelement (202) verbunden sind; eine Vielzahl von Verzögerungselementen (206), die jeweils einen Eingang und einen Ausgang haben, wobei der Ausgang von einem der Verzögerungselemente (206) mit den zweiten Eingängen der Schaltelemente verbunden ist; und dadurch gekennzeichnet, dass sie folgendes aufweist: eine Vielzahl von Additionsfunktionen (208), die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang haben, wobei: die Ausgänge von jedem von allen außer einem der Verzögerungselemente (206) mit einem entsprechenden ersten Eingang von einer der Vielzahl von Additionsfunktionen (208) verbunden sind, die Ausgänge von jedem von allen außer einem der Schaltelemente (204) mit einem entsprechenden zweiten Eingang von einer der Vielzahl von Additionsfunktionen (208) verbunden sind, und die Eingänge von jedem von allen außer einem der Verzögerungselemente (206) mit einem entsprechenden Ausgang der Vielzahl von Additionsfunktionen (208) verbunden sind.
  2. Vorrichtung nach Anspruch 1, wobei die Schaltelemente (204) UND-Gatter sind.
  3. Vorrichtung nach Anspruch 1, wobei das Speicherelement ein Polynom g1(x) speichert, wobei folgendes gilt:
    Figure 00260001
    und wobei w eine Wortlänge ist und L eine Anzahl von Worten des Verschlüsselungsschlüssels ist.
  4. Vorrichtung nach Anspruch 3, wobei das Speicherelement ein Polynom g2(x) speichert, wobei folgendes gilt:
    Figure 00260002
    und wobei w eine Wortlänge ist, L eine Anzahl von Worten im Verschlüsselungsschlüssel ist und Lmax die maximale Anzahl von nutzbaren Worten im Verschlüsselungsschlüssel K'c ist.
  5. Vorrichtung nach Anspruch 4, wobei die Verzögerungselemente anfangs mit dem Verschlüsselungsschlüssel Kc(x) geladen sind.
  6. Vorrichtung nach Anspruch 5, wobei das Polynom g1(x) erste w(Lmax-L) Koeffizienten gleich einer festen Kette hat.
  7. Vorrichtung nach Anspruch 6, wobei das Polynom g2(x) letzte wL Koeffizienten gleich einer festen Kette hat.
  8. Vorrichtung nach Anspruch 7, wobei die letzten wL Bits der Verzögerungselemente nach w(Lmax-L) Verschiebungen ein Ergebnis von Kc(x) mod g1(x) speichern.
  9. Vorrichtung nach Anspruch 8, wobei die Verzögerungselemente nach zusätzlichen wL Verschiebungen den Verschlüsselungsschlüssel K'c speichern.
  10. Vorrichtung nach Anspruch 1, wobei die Verzögerungselemente ein Schieberegister sind.
  11. Verfahren, das durch eine Kommunikationsvorrichtung durchgeführt wird, zum Berechnen eines Verschlüsselungsschlüssels K'c(x), um Daten zu verschlüsseln, welches Verfahren die folgenden Schritte aufweist: Erhalten (402) eines Verschlüsselungsschlüssels Kc(x); Bestimmen (404) einer maximalen Verschlüsselungsschlüssellänge L; Bestimmen einer maximalen nutzbaren Verschlüsselungsschlüssellänge Lmax; Erhalten (406) eines Polynoms g1(x), gekennzeichnet durch die folgenden Schritte: Erhalten (408) eines Polynoms g2(x) zum Spreizen von Anfangspunkten des Verschlüsselungsschlüssels K'c(x); und Berechnen (410) des Verschlüsselungsschlüssels K'c(x), wobei K'c(x) = g2 (L)(x)[Kc(x) mod g1 (L)(x)] gilt.
  12. Verfahren nach Anspruch 11, das weiterhin den folgenden Schritt aufweist: Auswählen des Polynoms g2(x) basierend auf L.
  13. Verfahren nach Anspruch 12, wobei folgendes gilt:
    Figure 00280001
    und wobei ein höchster Grad des Polynoms g1(x) gleich wL ist.
  14. Verfahren nach Anspruch 13, wobei folgendes gilt:
    Figure 00280002
  15. Verfahren nach Anspruch 14, wobei erste w(Lmax-L) Koeffizienten von g1(x) gleich einer festen Kette sind.
  16. Verfahren nach Anspruch 15, wobei letzte wL Koeffizienten von g2(x) gleich einer festen Kette sind.
  17. Verfahren nach Anspruch 12, wobei der Berechnungsschritt unter Verwendung einer Vielzahl von UND-Gattern, die jeweils einen ersten Eingang, einen zweiten Eingang und einen Ausgang haben, einer Vielzahl von Verzögerungselementen und einer Vielzahl von Additionsfunktionen durchgeführt wird.
  18. Verfahren nach Anspruch 17, wobei das Verfahren die folgenden Schritte aufweist: Initialisieren der Verzögerungselemente mit dem Verschlüsselungsschlüssel Kc(x); Initialisieren der ersten Eingänge der UND-Gatter zu den g1(x)-Polynomkoeffizienten; und Initialisieren der zweiten Eingänge der UND-Gatter zu Null.
  19. Verfahren nach Anspruch 17, wobei die Verzögerungselemente ein Schieberegister sind.
  20. System zum Kommunizieren von verschlüsselten Daten zwischen zwei Kommunikationsvorrichtungen, das folgendes aufweist: eine erste Kommunikationsvorrichtung (100) mit einer ersten Verschlüsselungsschlüssellänge LA max; und eine zweite Kommunikationsvorrichtung (102) mit einer zweiten Verschlüsselungsschlüssellänge LB max; und eine Einrichtung zum Bestimmen einer maximalen Verschlüsselungsschlüssellänge L, wobei 1 ≤ L ≤ min {LA max, LB max} gilt, dadurch gekennzeichnet, dass die erste Kommunikationsvorrichtung eine Kommunikationsvorrichtung nach Anspruch 1 aufweist.
  21. System nach Anspruch 20, wobei die Verzögerungselemente anfangs mit dem Verschlüsselungsschlüssel Kc(x) geladen sind.
  22. System nach Anspruch 20, wobei die Einrichtung zum Erhalten von Polynomen g1(x) und g2(x) ein Wiedergewinnen der Polynome aus einem Speicherelement enthält, das innerhalb der ersten Kommunikationsvorrichtung enthalten ist.
  23. System nach Anspruch 22, wobei folgendes gilt:
    Figure 00300001
  24. System nach Anspruch 23, wobei folgendes gilt:
    Figure 00300002
  25. System nach Anspruch 24, wobei die letzten wL Bits der Verzögerungselemente nach w(Lmax-L) Verschiebungen die Ergebnisse von Kc(x) mod g1(x) speichern.
  26. System nach Anspruch 25, wobei die Verzögerungselemente nach zusätzlichen wL Verschiebungen den Verschlüsselungsschlüssel K'c(x) speichern.
  27. System nach Anspruch 20, wobei die Verzögerungselemente ein Schieberegister sind.
DE60020953T 1999-04-26 2000-04-11 Verfahren und vorrichtung zur effizienten längensteuerung eines schlüssels Expired - Lifetime DE60020953T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13094499P 1999-04-26 1999-04-26
US130944P 1999-04-26
US09/461,766 US6947560B1 (en) 1999-04-26 1999-12-15 Method and device for effective key length control
US461766 1999-12-15
PCT/EP2000/003284 WO2000065768A1 (en) 1999-04-26 2000-04-11 Method and device for effective key length control

Publications (2)

Publication Number Publication Date
DE60020953D1 DE60020953D1 (de) 2005-07-28
DE60020953T2 true DE60020953T2 (de) 2005-12-01

Family

ID=26828998

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60020953T Expired - Lifetime DE60020953T2 (de) 1999-04-26 2000-04-11 Verfahren und vorrichtung zur effizienten längensteuerung eines schlüssels

Country Status (12)

Country Link
US (1) US6947560B1 (de)
EP (1) EP1171971B1 (de)
JP (1) JP4668428B2 (de)
CN (2) CN1332524C (de)
AR (1) AR023605A1 (de)
AT (1) ATE298481T1 (de)
AU (1) AU4913000A (de)
BR (1) BR0010029B1 (de)
CO (1) CO5300374A1 (de)
DE (1) DE60020953T2 (de)
MY (1) MY123139A (de)
WO (1) WO2000065768A1 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6931130B1 (en) * 1999-10-07 2005-08-16 International Business Machines Corporation Dynamically adjustable software encryption
US7287075B2 (en) * 2002-02-22 2007-10-23 Bea Systems, Inc. System for monitoring managed server health
US7360122B2 (en) 2002-02-22 2008-04-15 Bea Systems, Inc. Method for initiating a sub-system health check
JP4655452B2 (ja) * 2003-03-24 2011-03-23 富士ゼロックス株式会社 情報処理装置
CN1795637B (zh) * 2003-05-23 2011-06-01 Nxp股份有限公司 用于密钥扩展功能的低速存储器硬件实施的方法和设备
US7570641B2 (en) * 2005-08-23 2009-08-04 Macrovision Corporation Techniques for watermarking and distributing content
US8183980B2 (en) * 2005-08-31 2012-05-22 Assa Abloy Ab Device authentication using a unidirectional protocol
US7873166B2 (en) * 2005-09-13 2011-01-18 Avaya Inc. Method for undetectably impeding key strength of encryption usage for products exported outside the U.S
US20080037775A1 (en) * 2006-03-31 2008-02-14 Avaya Technology Llc Verifiable generation of weak symmetric keys for strong algorithms
EP2316180A4 (de) 2008-08-11 2011-12-28 Assa Abloy Ab Sichere wiegand-kommunikation
US20170070481A1 (en) * 2015-09-03 2017-03-09 Pilixo Limited Communication channel security against packet sniffing
US10452877B2 (en) 2016-12-16 2019-10-22 Assa Abloy Ab Methods to combine and auto-configure wiegand and RS485
US11621837B2 (en) 2020-09-03 2023-04-04 Theon Technology Llc Secure encryption of data using partial-key cryptography
US11310042B2 (en) 2020-09-11 2022-04-19 Crown Sterling Limited, LLC Methods of storing and distributing large keys
US11552780B2 (en) 2020-12-23 2023-01-10 Theon Technologies, Inc. Homomorphic one-time pad encryption
US11755772B2 (en) 2021-09-20 2023-09-12 Crown Sterling Limited, LLC Securing data in a blockchain with a one-time pad
US11943336B2 (en) 2021-11-22 2024-03-26 Theon Technology Llc Use of gradient decent function in cryptography
US11791988B2 (en) 2021-11-22 2023-10-17 Theon Technology Llc Use of random entropy in cryptography
US11902420B2 (en) 2021-11-23 2024-02-13 Theon Technology Llc Partial cryptographic key transport using one-time pad encryption

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3371947D1 (en) * 1982-12-20 1987-07-09 Radiotechnique Sa Generator of random number sequences
US4797921A (en) * 1984-11-13 1989-01-10 Hitachi, Ltd. System for enciphering or deciphering data
JPH0727325B2 (ja) * 1987-02-13 1995-03-29 沖電気工業株式会社 暗号化装置
US5008938A (en) * 1990-03-09 1991-04-16 Motorola, Inc. Encryption apparatus
US5199072A (en) 1992-02-03 1993-03-30 Motorola, Inc. Method and apparatus for restricting access within a wireless local area network
US5278905A (en) 1992-05-13 1994-01-11 At&T Bell Laboratories Method and apparatus for processor base encryption
US5323464A (en) * 1992-10-16 1994-06-21 International Business Machines Corporation Commercial data masking
US5345507A (en) * 1993-09-08 1994-09-06 International Business Machines Corporation Secure message authentication for binary additive stream cipher systems
US5799087A (en) * 1994-04-28 1998-08-25 Citibank, N.A. Electronic-monetary system
CN1089205C (zh) * 1994-09-24 2002-08-14 西安电子科技大学 一种高速数据置乱方法
CN101303717B (zh) * 1995-02-13 2015-04-29 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US5729559A (en) * 1995-03-27 1998-03-17 Motorola, Inc. Method and apparatus for correcting errors using multiple estimates
US5778074A (en) * 1995-06-29 1998-07-07 Teledyne Industries, Inc. Methods for generating variable S-boxes from arbitrary keys of arbitrary length including methods which allow rapid key changes
KR19990035965A (ko) * 1995-07-27 1999-05-25 맥클린토크 샤운 엘 은폐된 작업인자를 가진 암호시스템
US5657390A (en) * 1995-08-25 1997-08-12 Netscape Communications Corporation Secure socket layer application program apparatus and method
US5631962A (en) 1995-10-23 1997-05-20 Motorola, Inc. Circuit and method of encrypting key validation
US5724428A (en) * 1995-11-01 1998-03-03 Rsa Data Security, Inc. Block encryption algorithm with data-dependent rotations
US5727063A (en) * 1995-11-27 1998-03-10 Bell Communications Research, Inc. Pseudo-random generator
US5883956A (en) 1996-03-28 1999-03-16 National Semiconductor Corporation Dynamic configuration of a secure processing unit for operations in various environments
WO1997037461A1 (en) * 1996-04-01 1997-10-09 Hewlett-Packard Company Transmitting messages over a network
US5815573A (en) * 1996-04-10 1998-09-29 International Business Machines Corporation Cryptographic key recovery system
US5710814A (en) * 1996-07-23 1998-01-20 Cheyenne Property Trust Cryptographic unit touch point logic
US5850443A (en) * 1996-08-15 1998-12-15 Entrust Technologies, Ltd. Key management system for mixed-trust environments
US5862159A (en) * 1996-09-11 1999-01-19 Texas Instruments Incorporated Parallelized cyclical redundancy check method
US5937066A (en) * 1996-10-02 1999-08-10 International Business Machines Corporation Two-phase cryptographic key recovery system
US6252958B1 (en) * 1997-09-22 2001-06-26 Qualcomm Incorporated Method and apparatus for generating encryption stream ciphers

Also Published As

Publication number Publication date
WO2000065768A1 (en) 2000-11-02
EP1171971B1 (de) 2005-06-22
EP1171971A1 (de) 2002-01-16
JP4668428B2 (ja) 2011-04-13
CN1282323C (zh) 2006-10-25
JP2002543667A (ja) 2002-12-17
AU4913000A (en) 2000-11-10
US6947560B1 (en) 2005-09-20
BR0010029A (pt) 2002-01-15
MY123139A (en) 2006-05-31
CN1332524C (zh) 2007-08-15
AR023605A1 (es) 2002-09-04
CO5300374A1 (es) 2003-07-31
BR0010029B1 (pt) 2014-02-04
CN1558592A (zh) 2004-12-29
CN1348646A (zh) 2002-05-08
ATE298481T1 (de) 2005-07-15
DE60020953D1 (de) 2005-07-28

Similar Documents

Publication Publication Date Title
DE60020953T2 (de) Verfahren und vorrichtung zur effizienten längensteuerung eines schlüssels
DE69835842T2 (de) Verfahren und Vorrichtung zur Erzeugung eines Schlüsselstroms
DE69931606T2 (de) Datenwandler und aufzeichnungsmedium zur aufnahme eines programms zur datenumwandlung
DE4008971C2 (de)
DE60119410T2 (de) Vorrichtung und Verfahren zur Blockverschlüsselung und zur Entschlüsselung
DE60222052T2 (de) Verschlüsselung gesichert gegen Angriffe durch die Analyse der Leistungsaufnahme (DPA)
DE102009024604B4 (de) Erzeugung eines Session-Schlüssels zur Authentisierung und sicheren Datenübertragung
DE60217260T2 (de) Datenverarbeitungs- und Verschlüsselungseinheit
DE69635651T2 (de) Vorrichtung und Verfahren zur Datenumwandlung
DE602004013206T2 (de) Verfahren und diesbezügliche einrichtung zur hardwareorientierten umsetzung zwischen arithmetik- und boolscher zufallsmaskierung
CH693252A5 (de) Verfahren und Vorrichtung zurErzeugung einer ganzen Zahl
DE2843583A1 (de) Verfahren und vorrichtung zum entschluesseln verschluesselter nachrichten
DE69933108T2 (de) Synchrone bitstromverschlüsselung
EP1298834B1 (de) Verfahren und Vorrichtung zum Verschlüsseln und Entschlüsseln von Daten
DE60109805T2 (de) Verfahren und system zur benützung eines ungesicherten krypto-beschleunigers
DE60116195T2 (de) Vorrichtung und Verfahren zur Verschleierung von Eingangsparametern
DE102004042826B4 (de) Verfahren und Vorrichtung zur Datenverschlüsselung
DE602004001732T2 (de) Datenverschlüsselung in einem elektronischen Gerät mit mehreren symmetrischen Prozessoren
DE60027006T2 (de) Verfahren und vorrichtung zur sicheren übertragung verteilter authentisierungsabfragewerte (rand) zur anwendung bei der authentifizierung einer mobilstation
EP1425723A1 (de) Initialisieren einer chipkarte
DE102004010666B4 (de) Schlüsselbitstromerzeugung
EP1116357B1 (de) Verfahren zur sicheren verteilten generierung eines chiffrierschlüssels
DE69635100T2 (de) Verfahren zur Verarbeitung eines digitalen Signals in solcher Weise, dass das Ausgangs- nicht vom Eingangssignal abgeleitet werden kann, und Verwendung des Verfahrens zur Zugriffssteuerung und/oder digitaler Unterschrift
DE602004012096T2 (de) Verfahren und vorrichtung für eine hadwareimplementierung der schlüsselexpansionsfunktion mit wenig speicher
EP2288073B1 (de) Vorrichtung zur Verschlüsselung von Daten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition