Frage:
Woher weiß eine Website sofort, ob eine bestimmte Kreditkartennummer falsch ist?
tony9099
2015-02-16 21:35:27 UTC
view on stackexchange narkive permalink

Ich habe mein Internetabonnement über das Online-Portal meines ISP erneuert. Was mir aufgefallen ist, war, als ich meine Kreditkartendaten eingegeben habe, den Typ meiner Kreditkarte (MasterCard, Visa, AA usw.) und wann Ich habe die Nummern eingegeben, es gab eine Nummer, die ich falsch eingegeben habe. Als ich den Senden-Button drückte, gab mir die Website automatisch den Fehler, dass die von mir eingegebene Kartennummer ungültig war. Ich spüre, dass dies lokal im Browser durchgeführt wurde und keine Daten auf einem Server gepusht und überprüft und eine Antwort zurückgesendet wurden.

Meine Frage ist, gibt es eine Zahlenfolge, die jeder Anbieter hat? Wie würde die Website sonst (lokal) von der falschen Nummer erfahren?

Da eine CC-Nummer nicht wirklich eine einzelne Nummer ist, hat sie eine interne Struktur. Beispielsweise bezeichnet die erste Ziffer den Unternehmenstyp, bei dem der Emittent z. Amex ist 3, weil es wirklich ein Reisebüro ist, keine Bank, die 4 oder 5 wäre. Die nächsten Ziffern für Amex müssen 4 oder 7 sein. Und so weiter und so fort.
Mein Verständnis mit Visa / MC war, dass die ersten 2 Gruppen bezeichneten, welche Karte es war, die zweite Gruppe bezeichnete Bank und die letzte Gruppe bezeichnete Konto.
Zu Ihrer Information, es sind mehrere Test-Kreditkartennummern verfügbar. Zum Beispiel hier: https://www.merchantplus.com/help/logos-test-numbers/
Fünf antworten:
Peteris
2015-02-16 23:11:50 UTC
view on stackexchange narkive permalink

Prüfsummen

CC-Nummern sowie so ziemlich alle anderen gut gestalteten wichtigen Nummern (z. B. Kontonummern in Banken) enthalten in der Regel eine Prüfsumme, um die Integrität der Nummer zu überprüfen. Ein anständiger Prüfsummenalgorithmus ist zwar kein Sicherheitsmerkmal (da die Berechnung trivial ist), kann jedoch garantieren, dass er immer fehlschlägt, wenn (a) ein einzelner Tippfehler gemacht wurde oder (b) zwei benachbarte Ziffern vertauscht wurden. Dies sind die beiden häufigsten Fehler, wenn sie manuell ausgeführt werden Die Eingabe langer Zahlen.

http://rosettacode.org/wiki/Luhn_test_of_credit_card_numbers ist ein Beispiel für einen solchen Test.

Aussteller

Wenn eine CC-Nummer technisch korrekt ist, ist sie möglicherweise immer noch keine echte CC-Nummer. Die Methode zur Überprüfung ist einfach und gleichzeitig kompliziert. Wenn Sie über einen entsprechenden Zugriff verfügen, können Sie im Allgemeinen die Ausstellerinstitution für jeden Bereich von Kartennummern nachschlagen und dann die Kartensysteme des Ausstellers fragen, ob Sie denken, dass dies eine gültige Karte ist. Nun, der zweite Teil geschieht im Allgemeinen als Teil einer CC-Zahlung, aber die Überprüfung des Emittenten erfolgt manchmal vorher als erweiterter Test. aber nicht im Client-Browser.

Als Beispiel für "technisch korrekt" besteht die Visa-Karte 4111-1111-1111-1111 den Luhn-Test, ist aber eindeutig nicht echt.
@Bobson Ich bin mir ziemlich sicher, dass das eine Testnummer ist.
@MiniRagnarok - Ja. Es ist der Standardtest für Visa, speziell weil es Luhn * besteht *.
Wenn der ISP beabsichtigt, die Kreditkarte tatsächlich zu belasten, autorisiert er normalerweise einen kleinen Betrag (z. B. 1 USD). Dies verringert nicht das Guthaben, sondern dient als schneller Indikator, der etwa die Zeit einer Webanforderung in Anspruch nimmt, wenn die Karte tatsächlich gültig ist, da die Bank der Karte den autorisierten Betrag bestätigen muss. Dies erfolgt häufig nach Überprüfung der syntaktischen Gültigkeit der Karte, um die Wahrscheinlichkeit eines Kreditkartenpralls erheblich zu verringern.
EarlCrapstone
2015-02-16 21:40:00 UTC
view on stackexchange narkive permalink

In den USA verwenden sie den Luhn-Algorithmus:

http://en.wikipedia.org/wiki/Luhn_algorithm

Wie der Der Algorithmus überprüft eine Zahl:

  1. Von der am weitesten rechts stehenden Ziffer, der Prüfziffer, die sich nach links bewegt, verdoppeln Sie den Wert jeder zweiten Ziffer. Wenn das Produkt dieser Verdopplungsoperation größer als 9 ist (z. B. 8 × 2 = 16), summieren Sie die Ziffern der Produkte (z. B. 16: 1 + 6 = 7, 18: 1 + 8 = 9).
  2. Nimm die Summe aller Ziffern.
  3. Wenn das gesamte Modulo 10 gleich 0 ist (wenn die Summe mit Null endet), ist die Zahl gemäß der Luhn-Formel gültig; Andernfalls ist es nicht gültig.
  4. ol>

    So berechnen Sie die Prüfziffer:

    Die Prüfziffer wird erhalten, indem die Summe der Ziffern berechnet und dann das 9-fache des Wertes Modulo 10 berechnet wird In Algorithmusform:

    1. Berechnen Sie die Summe der Ziffern (nach Verdoppelung jeder zweiten Ziffer).
    2. Multiplizieren Sie mit 9.
    3. Die letzte Ziffer ist die Prüfziffer.
    4. ol>

      Beispiel:

      Nummer: 4321-5678-7531-456x (wobei x ist die Prüfziffer).

        1. Nummer: 4 3 2 1 5 6 7 8 7 5 3 1 4 5 6 X2. Verdoppeln Sie jede Sekunde: 8 4 10 14 14 6 8 123. Summe der Ziffern >9: 8 3 4 1 1 6 5 8 5 5 6 1 8 5 34. Summe aller Ziffern: 8 + 3 + 4 + 1 + 1 + 6 + 5 + 8 + 5 + 5 + 6 + 1 + 8 + 5 + 3 = 695. Multiplizieren Sie die Summe mit 9: 69 x 9 = 6216. Nehmen Sie den Wert mod 10: 621 mod 10 = 1 = > x = 1  

      Die Prüfziffer ist 1 und die vollständig gültige Nummer ist 4321-5678-7531-4561 .

      Wenn Sie möchten Führen Sie den Algorithmus erneut durch, um die Nummer zu überprüfen. Dann wäre die Summe aller Ziffern in Schritt 4 69 + 1 = 70 . Dann ist 70 mod 10 = 0 , sodass die Nummer gemäß dem Algorithmus gültig ist.

Ich habe es mit meiner Nummer versucht und anscheinend verwendet es einen anderen Algorithmus.
@tony9099 Bei Verwendung von MOD 10 gingen ihnen tatsächlich die gültigen Zahlen aus, sodass sie (die Banken) auf einen modifizierten Algorithmus umstellten, der stattdessen MOD 5 verwendet, aber das Prinzip ist dasselbe. Die Prüfziffer muss erzwingen, dass der gesamte summierte Wert (wie beschrieben) entweder mit 5 oder 0 endet. Alle Karten in den USA verwenden diesen Algorithmus, es ist jedoch Sache des Kartenanbieters, ob sie MOD 10 oder MOD verwenden 5. Ich bin mir zum Beispiel ziemlich sicher, dass Diners MOD 10 verwendet, während Visa und Mastercard MOD 5 verwenden.
Wie können sie Verifizierungsalgorithmen mit Millionen von Kreditkartenterminals und Softwareanwendungen im Feld wechseln, die mit dem neuen Algorithmus neu geschrieben werden müssten?
@Johnny-Terminals und Softwareanwendungen können nur die Mod 5-Version verwenden. Jede Zahl, die den Mod 10-Test besteht, besteht per Definition auch den Mod 5-Test.
@Johnny Dieser Wechsel erfolgte vor vielen Jahrzehnten, als die Terminals dümmer waren und nur blind alles übermittelten, was die magnetische Prüfsumme beim Durchziehen der Karte überschritten hatte. Eine manuelle Eingabe war ebenfalls möglich, aber diese Systeme führten keine Validierung durch, sondern verschwendeten Bandbreite, als sie mit der ungültigen Nummer nach Hause telefonierten (zu einer Bank usw.). Tatsächlich bin ich mir ziemlich sicher, dass die meisten Terminals heutzutage nicht davon ausgehen, dass eine gültige Nummer eine ist, die sie offline überprüfen können. Einige Websites verwenden eine grundlegende Validierung (z. B. ist eine Start-4 Visa und 16 Zahlen), aber nur wenige implementieren die Luhn-Prüfung.
Luhn ist nicht nur in den USA weit verbreitet. Dies ist jedoch nicht die einzige sofortige Überprüfung, die ohne Verbindung zum Autorisierungshost des Kartenausstellers durchgeführt werden kann.
baordog
2015-02-16 21:39:03 UTC
view on stackexchange narkive permalink
  1. Viele Websites haben clientseitige Überprüfungen der CC #. Alle Kreditkartennummern sind ungefähr gleich lang. (Wie Kommentatoren hervorheben, gibt es mehrere Längen. Im Allgemeinen sind die Längen dem Implementierer bekannt und es gibt eine kleine Menge.) Es gibt Zahlenfolgen, die sich auf jeden Anbieter beziehen.
  2. Aus Sicherheitsgründen sollten auch einige serverseitige Überprüfungen durchgeführt werden. Wenn Sie ein Pen-Tester sind, sollten Sie dies überprüfen. Wenn nicht, dann bleiben Sie dran, weil Sie in große Schwierigkeiten geraten könnten.
  3. ol>

    https://www.mint.com/blog/trends/credit-card-code-01202011/

Beim Stapeltausch geht es darum, beim Thema zu bleiben. In diesem Artikel geht es nicht um jedes Thema auf der Erde. Es ist in Ordnung, die Leute wissen zu lassen, dass dies bei jedem Stack-Austausch jemals der Fall war.
Die Sache ist, dies ist nicht Stack Exchange, dies ist https://security.stackexchange.com/, also bezog sich meine Frage auf die Sicherheit. Also ich denke es ist eine gültige. Ich muss Ihnen nicht sagen, dass es nicht so ist.
Dies ist eine sehr gültige Sicherheitsfrage. Vor langer Zeit brauchten Sie keinen Computer, um gültige CC-Nummern zu formulieren. Deshalb ist CCV jetzt implementiert.
"Alle Kreditkartennummern sind gleich lang." - Bist du sicher?
*> [Eine ISO / IEC 7812-Kartennummer ist am häufigsten 16-stellig und kann bis zu 19-stellig sein.] (Http://en.wikipedia.org/wiki/Bank_card_number) *; AmEx ist 15-stellig.
@Virusboy Ihr Kommentar "Aus diesem Grund wird CCV jetzt implementiert" - gibt es eine Möglichkeit, eine CCV vorab zu überprüfen? Hat es in irgendeiner Weise etwas mit der CC # zu tun?
@tcrosley, das konnte ich nicht feststellen. Die beteiligten Faktoren sind die Ausgabe einer Banknummer oder eines RNG vom Kreditkartenaussteller.
MikeRoger
2015-02-17 18:51:45 UTC
view on stackexchange narkive permalink

Prüfsummen, Kartenbereichserkennung und Längenprüfungen

Die meisten (aber nicht alle) Kartenschemata verwenden die in anderen Antworten beschriebenen Prüfsummenprüfungen (Luhn). Zusätzlich verwenden einige Algorithmen jedoch auch (ziemlich einfache) Kartenbereichserkennung (CRR) basierend auf dem Beginn der Kartennummer (AKA der Bereich). Einige überprüfen auch die Kartenlänge.

Siehe zum Beispiel die Ähnlichkeiten in vielen der verschiedenen Algorithmen, die unter folgender Adresse beschrieben werden: - https://stackoverflow.com/questions/72768/how-do-you- Erkennung des Kreditkartentyps anhand der Nummer

Einige Kollegen haben mich kürzlich auf http://www.exactbins.com/bin-lookup eingestellt. Sie finden es zuverlässiger als konkurrierende Websites. Ich habe jedoch eine Einschränkung: Für mich werden Bereiche, die wir von UPI haben, falsch identifiziert, als Maestro und nicht als UnionPay.
user68527
2015-02-22 18:46:07 UTC
view on stackexchange narkive permalink

Der Vollständigkeit halber: Der Luhn-Algorithmus weist einen kleinen Fehler auf.

TL; DR: "Der Luhn-Algorithmus erkennt die Transposition benachbarter Ziffern, wenn sie nicht 09 oder 90 sind."

Wenn d1 und d2 sind benachbarte Ziffern in der Kreditkartennummer (d1! = d2), dann beträgt ihr Beitrag zur Prüfsumme entweder f (d1) + d2 oder f (d2) + d1, und wenn sie transponiert sind, sind sie entweder f (d2) + d1 oder f (d1) + d2. Wenn diese beiden Beträge gleich sind oder ihre Differenz ein Vielfaches von 10 ist, unterscheidet die Prüfsumme nicht zwischen ihrer Umsetzung.

"Kreditkarten" 2007 in Eine Einführung in die Mathematik des Geldes , Springer New York, NY, S. 101-112.

Die Funktion f (d) ist die Verdoppelung und Summe der Ziffern, die in Python für Ganzzahlen d wie folgt definiert werden können: def f (d): Rückgabesumme ([int (x) für x in str (2 * d) ])

Im obigen Szenario gibt es keine zwei Ziffern, die Null Mod 10 sind. Der Beweis ist langwierig, aber er kann vollständig in der folgenden Ressource gefunden werden, aus der ich das obige Blockzitat entnommen habe.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...