Bitweise Permutation in Java

Hallo.Ich hätte eine simple Frage:Weiß vielleicht jemand, wie ich eine bitweise Permutation in Java verwirklichen könnte?Meine Wunsch-Permutation würde folgendermaßen funktionieren:
zB:

k={1,1,0,0,0,0,1,0} // Klartext
s={4,5,6,3,2,1,0,7} //Schlüssel

daraus würde folgen:

c={1,0,0,0,1,1,0,0} //Chiffre

umkehren kann man das ganze mit dem gleichen Algorithmus, nur mit dem aus dem Schlüssel generierten Gegenschlüssel:
In diesem Fall:

sgegen={6,5,4,3,0,1,2,7}

Eine nähere Beschreibung findet sich unter:http://www.matheprisma.de/teachTool/Module/Sources/DES/
->Permutation

Ich mache gerade einen Verschlüsselungsalgorithmus, hab aber bis jetzt die Permutation nur Byteweise, was nicht besonders sicher ist... .
 
Hallo,
und du glaubst, dass eine Bit-Weise Permutation sicherer ist als eine Byteweise?
Warum verwendest du nicht einen sicheren Algorithmus wie z.B. Blowfish?

Und auf deiner Seite sehe ich leider keinen Link zu 'Permutation', wobei DES sowieso blöde zum Programmieren ist, da dieser Algorithmus eher für die Hardware-Imp. ausgelegt ist und nicht für Software-Imp.

Lieber Algorithmen wie Blowfish, XTEA oder AES benutzen, diese sind deutlich sicherer als (Standard) DES, leichter zu programmieren und als Software-Imp. auch schneller als eine Software-DES-Implementierung.

Außerdem sind die festen Permutationen in DES am Anfang und am Ende des Algorithmus kein Sicherheitsgewinn und viele Software-Implementierungen lassen diesen Schritt weg.
Per Software dieses zu realisieren ist unnötig aufwendig und erhöht nicht die Sicherheit, allerdings entspricht der Algorithmus nicht mehr dem Standard.
Wie gesagt, DES wurde designt um per Hardware zu implementiert zu werden. AES sollte man z.B. leicht per Software und per Hardware implementieren können.

PS: Falsches Forum, passt eher in die Code Kitchen
 
Klar glaub ich das.Wenn die ganzen Bytes verschoben werden sind sie ja immer noch dieselben Bytes.Bei bitweise Permutation ist das (logischerweise) nicht so.

Nunja, es ist so, ich mache mir im moment selbst einen Algorithmus.
Also einen völlig eigenen.

Ja , sry, auf der Seite muss man den halben Kurs durchegehen um Permutation zu finden.
Irgendwie finde ich jetzt sogar reichlich wenig davon.Tut mir leid.
 
Hallo,
also einzelne Bits zu manipulieren ist Software mäßig schwer, da das Byte nunmal die kleinste addressierbare Einheit ist.
Des Weiteren ist sowas relativ langsam, und wie gesagt, erhöht dies nicht wirklich die Sicherheit.
Wenn es eine Feste ist, also nicht vom Key abhängt, sowieso nicht.

Darum verwenden moderne Algorithmen soetwas sogut wie nie.

Guck dir z.B. Blowfish an, dieser verwendet auch eine P-Box (eine Permutationsbox) mit 32-Bit Wörtern.

Und naja von eigenen Algorithmen im (produktiven) Einsatz halte ich nicht viel, dann doch lieber Algorithmen die als sicher gelten verwenden.
 
Nett für eure Beiträge-erstmal danke.
Hab mich heute an diesem schönen Vormittag mal hingesetzt und selbst gemacht, was ich wollte,es geht nämlich in Java.
Mit ein paar << und >> Operationen kann man sehr gut bitweise permutieren :).
Es ist ziemlich schnell (1 Milliarden Byte in ner for-Schleife in 31 sec).
Wenn man es richtig macht, erhöht Permutation die Sicherheit erheblich (ich hoffe ich schaffe es richtig).Siehe Algorithmus "Serpent".
Wenn ihr wollt könnt ihr den Code haben, aber den schick ich euch lieber privat (email).
 
Hallo,
hoffentlich glaubst du doch nicht wirklich, dass einzelne Methoden die Sicherheit deines Algorithmus erhöhen?
Das wäre genauso, als ob ich sagen würde, meine Haustüre besitzt jetzt das neuste Sicherheitsschloss. Dies sagt nix darüber aus, ob mein Haus nun sicherer ist als zuvor, denn wenn ich die Hintertüre immer offen lasse, kann ich mir das beste Sicherheitsschloss der Welt kaufen, vor Einbrechern schütz dieses dennoch nicht.

Zu sagen, ich verschiebe ein paar Bits, weil Serpent dies auch benutzt, woraus folgt, dass mein Algo. jetzt sicher ist, ist leider falsch.
Denn bei der Cäser-Methode werden die Buchstaben auch verschoben.


Wenn man also kein Experte der Kryptoanalyse ist, kann man nie sagen, ob ein Algorithmus jetzt vielleicht sicher ist, oder ob er unsicher ist.
Selbst die wenigen Experten sind darauf angewiesen, dass möglichst viele ihren Algorithmus betrachten und bewerten.


Und wie gesagt, vertrau lieber auf geprüfte Algorithmen anstatt dir selber einen zu basteln.
 
ich weiß nicht, ob du die zahlen nachher auch als solche interpretierst, aber pass bei bitshifts aufs vorzeichen auf. dieses wird nämlich erhalten, und negative zahlen im 2er-komplement repräsentiert.
 
@ terrorbyte - ja mach ich, danke!

@Elderan- ich denke, ich weiß schon , wie ich das anstelle.Wenn ich mal fertig bin kann ich den code ja mal uppen.Die Permutation soll nicht unbedingt direkt dazu dienen, die Sicherheit zu erhöhen, die Sicherheit soll eher im Xor-Schlüssel liegen.Ich werde , so stell ich mir das momentan vor, 2 Modi machen- bei einem ist der P-Schlüssel sogar fix im Code.Sie soll aber dazu dienen, dass ein geringfügig anderer Schlüssel ein ganz anderes Ergebnis bringt.Zusammen mit Substitution und Xor-Verknüpfung hoffe ich ein gutes Ergebnis zu erzielen.
 
Zurück
Oben