Merkwürdiger EMail-Spam seit ein paar Tagen



  • volkard schrieb:

    Welche Werte (auch uint32_t) von secretKey sind möglich, damit die Funktion umkehrbar ist?

    Die ist nicht umkehrbar. Wenn ich nur das Ergebnis habe, dann kann ich sie nicht umkehren.

    Oder spezifiziere mal, was du unter "Umkehren" genau verstehst: Welche Informationen habe ich?



  • volkard hatte wohl gehofft, dass du beim RSA-Implementieren was gelernt hast.



  • cooky451 schrieb:

    volkard hatte wohl gehofft, dass du beim RSA-Implementieren was gelernt hast.

    ??
    Ja, aber das habe ich doch verstanden! RSA basiert auf Primfaktorzerlegung, für die es keinen effizienten Algorithmus gibt (Falltürfunktion).



  • Chauffeur.

    Bei RSA hättest Du es raffen MÜSSEN, wenn Du RSA verstanden hättest. cooky451 hat ganz recht.



  • Du hast

    Sei der Code

    uint32_t cypher(uint32_t ipaddress){
       return ipaddress*secretKey;
    }
    

    Welche Werte (auch uint32_t) von secretKey sind möglich, damit die Funktion umkehrbar ist?

    Manche keys sorgen dafür, daß jede eingangsadresse auf eine genau dazu gehörende ausgangsadresse abgebildet wird und man daher (egal welcher rechenaufwand) die abbildung umkehren kann. manche abbildungen wie ausgang=eingang*0 sind doof, diese ist extrem doof, man kann sie garnicht umkehren. manche sind ein bißchen doof. welche sind lieb? Und das hat mit Primzahlen zwar was zu tun, aber nur innendrin, welche secretKeys klappen?





  • Primzahlen alleine bringen nichts. Denn die Adresse muss keine Primzahl sein, und dann ist die Zerlegung in Key und Adresse mehrdeutig.

    Ist der secretKey immer der gleiche?

    Oder muss man ihn entsprechend zur Adresse generieren?



  • Sone schrieb:

    Primzahlen alleine bringen nichts. Denn die Adresse muss keine Primzahl sein, und dann ist die Zerlegung in Key und Adresse mehrdeutig.

    *patsch* //edit: Nicht, weil Du unrecht hattest, sondern weil Du es so unbedenkt behauptest.
    weiter bitte



  • Man kann die Frage es auch etwas formaler stellen:
    f_{i,m} : \mathbb{N\_0}\to\mathbb{N\_0},\, n\mapsto n*i\mod m
    Für welche i,m ist die Abbildung surjektiv auf Intervall [0,m-1] ?
    (m im konkreten Fall 2322^{32})



  • Sone schrieb:

    Ist der secretKey immer der gleiche?

    Ja.

    Sone schrieb:

    Oder muss man ihn entsprechend zur Adresse generieren?

    Nein.

    Es kann natürlich ein Befehl geflooded werden übers Botnetz, daß der key ab jetzt durch einen neuen ausgetauscht wird. Muss uns aber hier nicht kümmern. Wochenlang gilt ein bestimmter key.

    Wochenlang ist maildata*key=angriffsip

    es sollte sichergestellt sein, daß niemals maildata1*key==maildata2*key, wenn maildata1!=maildata2. Damit nicht falsche Server angefunkt oder angegriffen werden. Damit die Polizei mehr zu suchen hat (optimalerweise den gesamten Suchraum aller IP-Adressen, ein Bißchen weniger ist auch ok, halb so viele schenken wie ungern. Nir primzahlige IPs wären zu wenig). Außerdem sollte key aus einer möglichst großen Menge genommen werden können, damit die Polizei nicht die sagen wir mal nur 100000 sinnvollen keys austesten kann. Was ist die größte Menge der keys bei diesen Spielregeln?



  • Das gefällt mir besser.

    Für welche i,m ist die Abbildung surjektiv auf Intervall [0,m-1] ?

    Die Frage ist also, ob jeder Wert, der bei dem Modulo vorkommen kann, auch vorkommt.

    Also ein offensichtlicher Fall ist i=1.

    i=2 funktioniert für ungerade m.

    Und wenn ich mehr nachdenke, stelle ich fest: i und m dürfen keine gemeinsamen Teiler haben. Soviel sehe ich durchs ausprobieren. Oder?

    Edit:

    maildata*key=angriffsip

    Ach, so herum!



  • supi weiter!



  • Also Base64 ist das wohl eher nicht, es sind schließlich nur Kleinbuchstaben.
    Eine IP Adresse und ein bisschen mehr könnte aber trotzdem in die 9 Zeichen reinpassen.



  • Ohne die Analyse in Frage zu stellen:

    Warum sind die Mails nicht in dem Stil:

    preisausschreiben@yahoo.com
    Betreff: Sie haben gewonnnen
    Body: Ihr Los mit der Nummer 79123496513691234 hat in unserem Preisausschreiben 11256125 € gewonnen. Geben Sie ihre Banknummer an und holen Sie ihren Gewinn bis zum 234516. ab!
    Anhang: Bild mit geheimer Botschaft in jedem 17. Pixel

    Das wäre doch viel weniger auffällig.



  • spimat schrieb:

    Ohne die Analyse in Frage zu stellen:

    Warum sind die Mails nicht in dem Stil:

    preisausschreiben@yahoo.com
    Betreff: Sie haben gewonnnen
    Body: Ihr Los mit der Nummer 79123496513691234 hat in unserem Preisausschreiben 11256125 € gewonnen. Geben Sie ihre Banknummer an und holen Sie ihren Gewinn bis zum 234516. ab!
    Anhang: Bild mit geheimer Botschaft in jedem 17. Pixel

    Das wäre doch viel weniger auffällig.

    Ein Versuch, an allen Bayes-Filtern herumzukommen.
    "Preisausschreiben" kennen sie.

    Insbesondere mit HTML-Mails und drinne schlimm codierten Inhalten, werden viele Spamfilter nicht gegen 3 Zeichen sperren können, zumal sie wöchentlich oder so wechseln. Dagegen müßte gegenprogrammiert werden, das dauert Jahre. Ist nicht nur je ein Update der Virenerkennungsdatei.



  • Edit: Der Beweis war tatsächlich unvollständig, da habe ich zu früh abgeschickt.

    Das heißt, wenn i (oder m) prim ist, dann gilt das ebenfalls.

    Wieso aber ist die Surjektivität deiner Funktion so wichtig?

    spimat schrieb:

    Das wäre doch viel weniger auffällig.

    Dass diese Mails eine geheime Botschaft enthalten, ist ein Hirngespinst, dass niemals ernst gemeint war.



  • Hier mein Beweis:

    Die multiplikativen Moduli von i und m seien definiert als die Menge der Werte die ni mod mn * i \ mod \ m für alle nN0n \in \mathbb{N}_0 annehmen kann.
    Es ist zu zeigen, dass die multiplikativen Moduli alle Werte in [0, m) enthalten, wenn m und i teilerfremd sind.

    Nun sei k die kleinste Zahl, sodass sie durch m und i teilbar ist. Wenn es einen gemeinsamen Teiler p > 1 gibt, den i und m besitzen, dann ist k=mipk = \frac{m * i}{p}.

    k ist (per Definition) nach 0 das kleinste Vielfache von i, welches durch m teilbar ist. Das heißt: es ist (nach 0) ebenfalls das kleinste Vielfache von i, für welches k mod m=0k \ mod \ m = 0 gilt.

    Das heißt, alle Zahlen in [0, k), die ein Vielfaches von i sind, erzeugen bezüglich m alle unterschiedliche Moduli, und die Menge dieser Moduli bilden die multiplikativen Moduli.

    Damit ist die Größe der Menge der multiplikativen Moduli gegeben: ki=mp\frac{k}{i} = \frac{m}{p}. Da diese kleiner ist als m, und die Menge der multiplikativen Moduli also weniger Elemente hat als das Intervall [0, m), gibt es Elemente in [0, m) die sie nicht enthält.
    Wenn p aber 1 ist (weil m und i teilerfremd sind und das ihr größter Teiler ist), dann enthält die Menge genau m (unterschiedliche) Zahlen. Da nur Werte in [0, m) vorkommen können, kommt damit jeder Wert in [0, m) in der Menge der Moduli vor.
    QED (quod est dubitandum)

    Beispiel: Für i=4 und m=6 ist die Menge der multiplikativen Moduli
    {4, 2, 0}.
    k ist 462=12\frac{4*6}{2} = 12, die Größe der Menge ist 62=3\frac{6}{2}=3.
    Da die Größe der Menge (3) kleiner ist als 6, enthält sie nicht alle Elemente von {0, 1, 2, 3, 4, 5}.
    Dasselbe ist für 5 und 6 aufzuschreiben, jedoch wird man feststellen dass die Menge der Multiplikativen Moduli 6 Elemente enthält.



  • yahoooooooo schrieb:

    volkard schrieb:

    Würde reichen, um für ein Botnet neue Commands mitzuteilen, 4 Bytes IP-Adresse und noch eins als Befehl.

    Commands per Mail an fremde Adressen? 😕
    Dafür müssten ja erstmal Zugangsdaten zu vielen Mailaccounts verfügbar sein und bei jedem Passwörtwechsel schließt sich ein Kanal.

    Nicht unbedingt.
    Theoretisch könnte der Bot den gesamten IP Datenverkehr des Hosts mitlauschen. Wenn der Host dann über z.B. POP die Mail runterlädt, dann kann der Host darin relativ einfach Absender, Subject und Body ausmachen. Und wenn die "passend" erscheinen (alles Strings aus 3 Kleinbuchstaben), dann dekodiert er sie und macht damit was auch immer er machen soll.
    Mit etwas mehr Aufwand wäre es vermutlich sogar möglich die drei Strings aus HTML Seiten der grösseren Webmail Provider rauszuziehen.

    ----

    Was das Format der Mails angeht: die "Payload" der Mails scheint aus drei Strings zu bestehen:
    * Der Teil der Sender-Adresse vor dem "@yahoo.com"
    * Subject
    * Body
    Alle drei Strings sind drei Zeichen lang und bestehen ausschliesslich aus Kleinbuchstaben. Keine Ziffern und keine Grossbuchstaben.
    Sieht für mich nicht nach Base64 aus. Würde eher auf ne selbst-erdachte Kodierung tippen.
    Und 9 Kleinbuchstaben sind etwas mehr als 42 Bit Information - reicht also locker für ne IPv4 + Prüfsumme oder sowas.



  • P.S.: Volkard, ich weiß immer noch nicht was ich studieren soll, und ich muss mich relativ bald entscheiden (in genau einem Jahr muss es feststehen).



  • Sone schrieb:

    Hier mein Beweis:

    Die multiplikativen Moduli von i und m seien definiert als die Menge der Werte die ni mod mn * i \ mod \ m für alle nN0n \in \mathbb{N}_0 annehmen kann.
    Es ist zu zeigen, dass die multiplikativen Moduli alle Werte in [0, m) enthalten, wenn m und i teilerfremd sind.

    Nun sei k die kleinste Zahl, sodass sie durch m und i teilbar ist. Wenn es einen gemeinsamen Teiler p > 1 gibt, den i und m besitzen, dann ist k=mipk = \frac{m * i}{p}.

    k ist (per Definition) nach 0 das kleinste Vielfache von i, welches durch m teilbar ist. Das heißt: es ist (nach 0) ebenfalls das kleinste Vielfache von i, für welches k mod m=0k \ mod \ m = 0 gilt.

    Das heißt, alle Zahlen in [0, k), die ein Vielfaches von i sind, erzeugen bezüglich m alle unterschiedliche Moduli, und die Menge dieser Moduli bilden die multiplikativen Moduli.

    Damit ist die Größe der Menge der multiplikativen Moduli gegeben: ki=mp\frac{k}{i} = \frac{m}{p}. Da diese kleiner ist als m, und die Menge der multiplikativen Moduli also weniger Elemente hat als das Intervall [0, m), gibt es Elemente in [0, m) die sie nicht enthält.
    Wenn p aber 1 ist (weil m und i teilerfremd sind und das ihr größter Teiler ist), dann enthält die Menge genau m (unterschiedliche) Zahlen. Da nur Werte in [0, m) vorkommen können, kommt damit jeder Wert in [0, m) in der Menge der Moduli vor.
    QED (quod est dubitandum)

    Beispiel: Für i=4 und m=6 ist die Menge der multiplikativen Moduli
    {4, 2, 0}.
    k ist 462=12\frac{4*6}{2} = 12, die Größe der Menge ist 62=3\frac{6}{2}=3.
    Da die Größe der Menge (3) kleiner ist als 6, enthält sie nicht alle Elemente von {0, 1, 2, 3, 4, 5}.
    Dasselbe ist für 5 und 6 aufzuschreiben, jedoch wird man feststellen dass die Menge der Multiplikativen Moduli 6 Elemente enthält.

    Viel Text um nix. Ja, ich weiß schon, Du hast im Prinzip alles richtig gemacht und fühlst Dich jetzt ungerecht behandelt, wirste sagen. Aber ich finde, daß Du den Kern überhaupt nicht getroffen hast. m und i müssen teilerfremd sein. Welche Zahlen sind zu Zweierpotenzen teilerfremd? Alle, die keine 2 als Primfaktor drin haben, also alle ungeraden Zahlen.

    Menno, der key muss schlicht ungerade sein, sonst nix.

    Wieso aber ist die Surjektivität deiner Funktion so wichtig?

    Weil sie so billig ist, darf man sie nicht vernachlässigen. Ist wohl klar, daß es ganz nett ist, wenn man beim Verschlüsseln den Datentyp nicht wechseln muss bzw man beim Behalten des Typs keine Bits verliert.


Anmelden zum Antworten