Gibt es einen besten .NET-Algorithmus für die Kreditkartenverschlüsselung?

8

Der Namespace .NET System.Security.Cryptography enthält eine ziemlich verwirrende Sammlung von Algorithmen, die ich für die Verschlüsselung von Kreditkartendaten verwenden könnte. Welches ist das Beste?

Es muss eindeutig für eine relativ kurze Saite sicher sein.

EDIT: Ich bin in Großbritannien, wo ich verstehe, dass wir OK sind, verschlüsselte Kreditkartendaten zu speichern, solange die dreistellige CVV-Nummer nicht gespeichert wird. Und danke allen für die tollen Antworten.

    
Jeremy McGee 03.09.2008, 05:46
quelle

10 Antworten

23

Nichts für ungut, aber die Frage ist ein wenig "fehlgeleitet". Es gibt keine "Silberkugel" -Lösung. Ich würde empfehlen, Kryptographie im Allgemeinen zu lesen und dann eine Bedrohungsmodellierung durchzuführen. Einige Fragen (auf keinen Fall eine umfassende Liste) sollten Sie sich fragen:

  • Verarbeitet das Modul die Verschlüsselung, die es entschlüsseln muss (in diesem Fall symmetrisches Krypto) oder sendet es Daten an ein anderes Modul (auf einer anderen Maschine), das es verwenden wird (in diesem Fall sollten Sie es berücksichtigen) Public-Key-Krypto)
  • Was möchten Sie vorbeugen? Jemand, der auf die Datenbank zugreift, aber nicht den Quellcode hat (in diesem Fall können Sie den Verschlüsselungsschlüssel direkt in die Quelle kodieren)? Jemand schnüffelt an Ihrem lokalen Netzwerk (Sie sollten transparente Lösungen wie IPSec in Erwägung ziehen)? Jemand stiehlt Ihren Server (das kann sogar in Rechenzentren passieren - in diesem Fall sollte eine vollständige Festplattenverschlüsselung in Betracht gezogen werden)?
  • Müssen Sie wirklich die Daten behalten? Können Sie es nicht direkt an den Kreditkartenprozessor weiterleiten und löschen, nachdem Sie die Bestätigung erhalten haben? Können Sie es nicht lokal auf dem Client in einem Cookie oder Flash LSO speichern? Wenn Sie es auf dem Client speichern, stellen Sie sicher, dass Sie es serverseitig verschlüsseln, bevor Sie es in einen Cookie setzen. Wenn Sie Cookies verwenden, stellen Sie außerdem sicher, dass Sie nur http angeben.
  • Ist es genug, um die Gleichheit der Daten zu vergleichen (dh die Daten, die der Kunde mir gegeben hat, sind die gleichen Daten, die ich habe)? Wenn ja, erwäge, einen Hash davon zu speichern. Da Kreditkartennummern relativ kurz sind und einen reduzierten Satz von Symbolen verwenden, sollte vor dem Hashing ein eindeutiges Salz erzeugt werden.

Späteres Bearbeiten : Beachten Sie, dass Standardverschlüsselungsalgorithmen der gleichen Kategorie (z. B. 3DES und AES - beide symmetrische Blockcipher) von vergleichbarer Stärke sind. Die meisten (kommerziellen) Systeme sind nicht kaputt, weil jemand ihre Verschlüsselung brutal erzwang, aber weil ihre Bedrohungsmodellierung nicht detailliert genug war (oder ganz offen, sie hatten keine). Zum Beispiel können Sie alle Daten verschlüsseln, aber wenn Sie eine öffentlich zugängliche Webschnittstelle haben, die anfällig für SQL-Injection ist, wird es Ihnen nicht viel helfen.

    
Grey Panther 03.09.2008, 06:02
quelle
11

Es ist egal.

Vollständige Kartennummern sollten niemals die Festplatte berühren.

Alles, was zählt, ist der Auth-Code.

Für Traces usw. werden nur die letzten 4 Ziffern xxxx xxxx xxxx 1234 und das Verfallsdatum verwendet.

Wenn Sie Kartennummern speichern, wird die Kryptografieentscheidung von der erwerbenden Bank angeordnet.

Es sei denn, Sie sind der Erwerber, in welchem ​​Fall es einen alten Unix-Programmierer / db2-Typ geben sollte, den Sie fragen sollten.

"Können Sie es nicht lokal auf dem Client in einem Cookie speichern" & lt; - NIE

    
Brian Leahy 04.09.2008 08:40
quelle
7
___ answer43352 ___

Es ist egal.

Vollständige Kartennummern sollten niemals die Festplatte berühren.

Alles, was zählt, ist der Auth-Code.

Für Traces usw. werden nur die letzten 4 Ziffern xxxx xxxx xxxx 1234 und das Verfallsdatum verwendet.

Wenn Sie Kartennummern speichern, wird die Kryptografieentscheidung von der erwerbenden Bank angeordnet.

Es sei denn, Sie sind der Erwerber, in welchem ​​Fall es einen alten Unix-Programmierer / db2-Typ geben sollte, den Sie fragen sollten.

"Können Sie es nicht lokal auf dem Client in einem Cookie speichern" & lt; - NIE

    
___ answer41228 ___

Nichts für ungut, aber die Frage ist ein wenig "fehlgeleitet". Es gibt keine "Silberkugel" -Lösung. Ich würde empfehlen, Kryptographie im Allgemeinen zu lesen und dann eine Bedrohungsmodellierung durchzuführen. Einige Fragen (auf keinen Fall eine umfassende Liste) sollten Sie sich fragen:

  • Verarbeitet das Modul die Verschlüsselung, die es entschlüsseln muss (in diesem Fall symmetrisches Krypto) oder sendet es Daten an ein anderes Modul (auf einer anderen Maschine), das es verwenden wird (in diesem Fall sollten Sie es berücksichtigen) Public-Key-Krypto)
  • Was möchten Sie vorbeugen? Jemand, der auf die Datenbank zugreift, aber nicht den Quellcode hat (in diesem Fall können Sie den Verschlüsselungsschlüssel direkt in die Quelle kodieren)? Jemand schnüffelt an Ihrem lokalen Netzwerk (Sie sollten transparente Lösungen wie IPSec in Erwägung ziehen)? Jemand stiehlt Ihren Server (das kann sogar in Rechenzentren passieren - in diesem Fall sollte eine vollständige Festplattenverschlüsselung in Betracht gezogen werden)?
  • Müssen Sie wirklich die Daten behalten? Können Sie es nicht direkt an den Kreditkartenprozessor weiterleiten und löschen, nachdem Sie die Bestätigung erhalten haben? Können Sie es nicht lokal auf dem Client in einem Cookie oder Flash LSO speichern? Wenn Sie es auf dem Client speichern, stellen Sie sicher, dass Sie es serverseitig verschlüsseln, bevor Sie es in einen Cookie setzen. Wenn Sie Cookies verwenden, stellen Sie außerdem sicher, dass Sie nur http angeben.
  • Ist es genug, um die Gleichheit der Daten zu vergleichen (dh die Daten, die der Kunde mir gegeben hat, sind die gleichen Daten, die ich habe)? Wenn ja, erwäge, einen Hash davon zu speichern. Da Kreditkartennummern relativ kurz sind und einen reduzierten Satz von Symbolen verwenden, sollte vor dem Hashing ein eindeutiges Salz erzeugt werden.

Späteres Bearbeiten : Beachten Sie, dass Standardverschlüsselungsalgorithmen der gleichen Kategorie (z. B. 3DES und AES - beide symmetrische Blockcipher) von vergleichbarer Stärke sind. Die meisten (kommerziellen) Systeme sind nicht kaputt, weil jemand ihre Verschlüsselung brutal erzwang, aber weil ihre Bedrohungsmodellierung nicht detailliert genug war (oder ganz offen, sie hatten keine). Zum Beispiel können Sie alle Daten verschlüsseln, aber wenn Sie eine öffentlich zugängliche Webschnittstelle haben, die anfällig für SQL-Injection ist, wird es Ihnen nicht viel helfen.

    
___ qstnhdr ___ Gibt es einen besten .NET-Algorithmus für die Kreditkartenverschlüsselung? ___ answer41237 ___

Gemäß den PCI DSS Compliance-Regeln ist jeder branchenführende Verschlüsselungsstandard ausreichend. Also ein 3DES mit einem 256 Bit Schlüssel ist gut genug (obwohl andere Standards verwendet werden können). Schau dir das Ссылка

an     
___ antwort43399 ___

Ich würde zu der Ansicht hinzufügen, dass Sie sie einfach nicht speichern sollten, es sei denn, Sie haben einen wirklich guten Grund dafür, und das Speichern in einem Cookie ist eine wirklich schlechte Idee - sie " es ist einfach zu zu einfach (was passiert, wenn jemand einen Keks stiehlt - dann wird es nicht egal wie verschlüsselt es ist).

Wenn Sie wiederkehrende Zahlungen durchführen müssen, bieten die meisten CC-Anbieter eine Möglichkeit, eine Art Token aus der ursprünglichen Zahlung zu speichern, ohne die Kartennummer zu behalten (Sie können einfach die letzten vier Ziffern anzeigen lassen) an den Kunden, damit sie wissen, welche Karte gespeichert ist).

Wirklich, mach es einfach nicht!

Sie sollten auch niemals den CCV-Code behalten.

    
___ qstntxt ___

Der Namespace .NET %code% enthält eine ziemlich verwirrende Sammlung von Algorithmen, die ich für die Verschlüsselung von Kreditkartendaten verwenden könnte. Welches ist das Beste?

Es muss eindeutig für eine relativ kurze Saite sicher sein.

EDIT: Ich bin in Großbritannien, wo ich verstehe, dass wir OK sind, verschlüsselte Kreditkartendaten zu speichern, solange die dreistellige CVV-Nummer nicht gespeichert wird. Und danke allen für die tollen Antworten.

    
___ answer45040 ___

Vergessen Sie hier nicht die Integrität. Es gibt Fälschungsangriffe gegen Standard-Krypto, wenn der Angreifer den Schlüssel nicht kennt, aber den Geheimtext manipulieren kann. Diese können besonders unangenehm sein, wenn:

  • kurze Zeichenketten verschlüsseln,
  • mit bekannten Teilstrings

Genau das ist bei Kreditkarten der Fall. Daher kann es gefährlich sein, System.Security.Cryptography AES oder 3DES im CBC-Modus zu verwenden, ohne die eigene Prüfsumme zu übertragen. Lesen: Es besteht die Möglichkeit, dass ein Angreifer ohne den geheimen Schlüssel eine Kreditkartennummer durch eine andere ersetzt.

    
___ answer41221 ___

3des ist ziemlich gut, speichern Sie das Salz neben, und behalten Sie einen Standardschlüssel irgendwo nicht in der Datenbank oder in einer Config-Datei. Auf diese Weise können sie nicht entschlüsselt werden.

    
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ tag123security ___ Themen in Bezug auf Anwendungssicherheit und Angriffe auf Software. Bitte verwenden Sie dieses Tag nicht alleine, da dies zu Mehrdeutigkeiten führt. Wenn es sich bei Ihrer Frage nicht um ein spezielles Programmierproblem handelt, können Sie es stattdessen bei Information Security SE anfordern: https://security.stackexchange.com ___ answer47598 ___

Wenn Sie ein Zahlungsgateway eines Drittanbieters verwenden, müssen Sie die Nummern nicht speichern.

Es gibt keinen Sinn.

    
___ answer4766675 ___

Verschlüsseln Sie die Kreditkarte mit einem öffentlichen Schlüssel. Geben Sie den privaten Schlüssel nur dem Zahlungsprozessorcomputer. Die Zahlungsprozessormaschine kann dann die Datenbank abfragen und die Arbeit ausführen, und niemand sonst, auch nicht die Maschine, die den Eintrag hinzugefügt hat, kann sie entschlüsseln.

Etwas wie PHP's openssl_seal, wenn Sie vielleicht mit einem anderen Algorithmus wollen.

    
___ tag123encryption ___ Verschlüsselung ist der Prozess der Umwandlung von Information (Klartext genannt) in eine unlesbare Form (Ciphertext genannt) unter Verwendung eines Verschlüsselungsalgorithmus kombiniert mit einem Parameter (genannt Verschlüsselungsschlüssel). Nur diejenigen, die den Entschlüsselungsschlüssel besitzen, können den Prozess umkehren und den ursprünglichen Klartext wiederherstellen. Konzeptionelle Fragen zur Verschlüsselung können auf crypto.stackexchange.com bessere Antworten liefern. ___ antwort43383 ___

Tipp: Sie sollten prüfen, ob das Speichern von Kreditkartennummern legal ist. In Schweden müssen Sie beispielsweise von PCI (Payment Card Industry) zertifiziert sein, wo Ihre interne und externe Sicherheit getestet wird (a lang mit vielen anderen Dingen).

Sie sollten sowohl ein- als auch zweimal überlegen, bevor Sie Kreditkartendaten speichern, da die Kosten für den Rechtsstreit teuer sein können.

    
___ answer43375 ___

Es gibt auch den rechtlichen Aspekt zu beachten. Ich kenne die Situation nicht woanders, aber in Deutschland darf man einfach keine Kreditkartennummern speichern 1 . Punkt. Es spielt keine Rolle, ob Sie sie verschlüsseln oder nicht und in welchem ​​Format Sie sie speichern.

Alles, was Sie können tun (und hier verweise ich aus dem Gedächtnis, ohne irgendwelche juristischen Kenntnisse) ist ein starker Hash (SHA-256?) der Kreditkartennummer, zusammen mit dem letzten vier Ziffern und die Kontonummer. Und ja, es ist trivial, die vollständige Zahl aus diesen Informationen allein wieder aufzubauen. Gesetze sind nicht immer logisch.

1) Außer wenn Sie ein staatlich anerkanntes Kreditkarteninstitut sind.

    
___ tag123cryptography ___ Kryptographie umfasst unter anderem Verschlüsselung, Hashing und digitale Signaturen. Kryptografische Fragen, die nicht direkt mit der Softwareentwicklung zusammenhängen, werden bei crypto.stackexchange.com besser gestellt. ___
Whisk 04.09.2008 09:24
quelle
4

Gemäß den PCI DSS Compliance-Regeln ist jeder branchenführende Verschlüsselungsstandard ausreichend. Also ein 3DES mit einem 256 Bit Schlüssel ist gut genug (obwohl andere Standards verwendet werden können). Schau dir das Ссылка

an     
Vaibhav 03.09.2008 06:13
quelle
1

Vergessen Sie hier nicht die Integrität. Es gibt Fälschungsangriffe gegen Standard-Krypto, wenn der Angreifer den Schlüssel nicht kennt, aber den Geheimtext manipulieren kann. Diese können besonders unangenehm sein, wenn:

  • kurze Zeichenketten verschlüsseln,
  • mit bekannten Teilstrings

Genau das ist bei Kreditkarten der Fall. Daher kann es gefährlich sein, System.Security.Cryptography AES oder 3DES im CBC-Modus zu verwenden, ohne die eigene Prüfsumme zu übertragen. Lesen: Es besteht die Möglichkeit, dass ein Angreifer ohne den geheimen Schlüssel eine Kreditkartennummer durch eine andere ersetzt.

    
Purfideas 05.09.2008 00:30
quelle
1

Wenn Sie ein Zahlungsgateway eines Drittanbieters verwenden, müssen Sie die Nummern nicht speichern.

Es gibt keinen Sinn.

    
FlySwat 06.09.2008 16:04
quelle
0

3des ist ziemlich gut, speichern Sie das Salz neben, und behalten Sie einen Standardschlüssel irgendwo nicht in der Datenbank oder in einer Config-Datei. Auf diese Weise können sie nicht entschlüsselt werden.

    
DevelopingChris 03.09.2008 05:48
quelle
0

Es gibt auch den rechtlichen Aspekt zu beachten. Ich kenne die Situation nicht woanders, aber in Deutschland darf man einfach keine Kreditkartennummern speichern 1 . Punkt. Es spielt keine Rolle, ob Sie sie verschlüsseln oder nicht und in welchem ​​Format Sie sie speichern.

Alles, was Sie können tun (und hier verweise ich aus dem Gedächtnis, ohne irgendwelche juristischen Kenntnisse) ist ein starker Hash (SHA-256?) der Kreditkartennummer, zusammen mit dem letzten vier Ziffern und die Kontonummer. Und ja, es ist trivial, die vollständige Zahl aus diesen Informationen allein wieder aufzubauen. Gesetze sind nicht immer logisch.

1) Außer wenn Sie ein staatlich anerkanntes Kreditkarteninstitut sind.

    
Konrad Rudolph 04.09.2008 09:00
quelle
0
___ answer43352 ___

Es ist egal.

Vollständige Kartennummern sollten niemals die Festplatte berühren.

Alles, was zählt, ist der Auth-Code.

Für Traces usw. werden nur die letzten 4 Ziffern xxxx xxxx xxxx 1234 und das Verfallsdatum verwendet.

Wenn Sie Kartennummern speichern, wird die Kryptografieentscheidung von der erwerbenden Bank angeordnet.

Es sei denn, Sie sind der Erwerber, in welchem ​​Fall es einen alten Unix-Programmierer / db2-Typ geben sollte, den Sie fragen sollten.

"Können Sie es nicht lokal auf dem Client in einem Cookie speichern" & lt; - NIE

    
___ answer41228 ___

Nichts für ungut, aber die Frage ist ein wenig "fehlgeleitet". Es gibt keine "Silberkugel" -Lösung. Ich würde empfehlen, Kryptographie im Allgemeinen zu lesen und dann eine Bedrohungsmodellierung durchzuführen. Einige Fragen (auf keinen Fall eine umfassende Liste) sollten Sie sich fragen:

  • Verarbeitet das Modul die Verschlüsselung, die es entschlüsseln muss (in diesem Fall symmetrisches Krypto) oder sendet es Daten an ein anderes Modul (auf einer anderen Maschine), das es verwenden wird (in diesem Fall sollten Sie es berücksichtigen) Public-Key-Krypto)
  • Was möchten Sie vorbeugen? Jemand, der auf die Datenbank zugreift, aber nicht den Quellcode hat (in diesem Fall können Sie den Verschlüsselungsschlüssel direkt in die Quelle kodieren)? Jemand schnüffelt an Ihrem lokalen Netzwerk (Sie sollten transparente Lösungen wie IPSec in Erwägung ziehen)? Jemand stiehlt Ihren Server (das kann sogar in Rechenzentren passieren - in diesem Fall sollte eine vollständige Festplattenverschlüsselung in Betracht gezogen werden)?
  • Müssen Sie wirklich die Daten behalten? Können Sie es nicht direkt an den Kreditkartenprozessor weiterleiten und löschen, nachdem Sie die Bestätigung erhalten haben? Können Sie es nicht lokal auf dem Client in einem Cookie oder Flash LSO speichern? Wenn Sie es auf dem Client speichern, stellen Sie sicher, dass Sie es serverseitig verschlüsseln, bevor Sie es in einen Cookie setzen. Wenn Sie Cookies verwenden, stellen Sie außerdem sicher, dass Sie nur http angeben.
  • Ist es genug, um die Gleichheit der Daten zu vergleichen (dh die Daten, die der Kunde mir gegeben hat, sind die gleichen Daten, die ich habe)? Wenn ja, erwäge, einen Hash davon zu speichern. Da Kreditkartennummern relativ kurz sind und einen reduzierten Satz von Symbolen verwenden, sollte vor dem Hashing ein eindeutiges Salz erzeugt werden.

Späteres Bearbeiten : Beachten Sie, dass Standardverschlüsselungsalgorithmen der gleichen Kategorie (z. B. 3DES und AES - beide symmetrische Blockcipher) von vergleichbarer Stärke sind. Die meisten (kommerziellen) Systeme sind nicht kaputt, weil jemand ihre Verschlüsselung brutal erzwang, aber weil ihre Bedrohungsmodellierung nicht detailliert genug war (oder ganz offen, sie hatten keine). Zum Beispiel können Sie alle Daten verschlüsseln, aber wenn Sie eine öffentlich zugängliche Webschnittstelle haben, die anfällig für SQL-Injection ist, wird es Ihnen nicht viel helfen.

    
___ qstnhdr ___ Gibt es einen besten .NET-Algorithmus für die Kreditkartenverschlüsselung? ___ answer41237 ___

Gemäß den PCI DSS Compliance-Regeln ist jeder branchenführende Verschlüsselungsstandard ausreichend. Also ein 3DES mit einem 256 Bit Schlüssel ist gut genug (obwohl andere Standards verwendet werden können). Schau dir das Ссылка

an     
___ antwort43399 ___

Ich würde zu der Ansicht hinzufügen, dass Sie sie einfach nicht speichern sollten, es sei denn, Sie haben einen wirklich guten Grund dafür, und das Speichern in einem Cookie ist eine wirklich schlechte Idee - sie " es ist einfach zu zu einfach (was passiert, wenn jemand einen Keks stiehlt - dann wird es nicht egal wie verschlüsselt es ist).

Wenn Sie wiederkehrende Zahlungen durchführen müssen, bieten die meisten CC-Anbieter eine Möglichkeit, eine Art Token aus der ursprünglichen Zahlung zu speichern, ohne die Kartennummer zu behalten (Sie können einfach die letzten vier Ziffern anzeigen lassen) an den Kunden, damit sie wissen, welche Karte gespeichert ist).

Wirklich, mach es einfach nicht!

Sie sollten auch niemals den CCV-Code behalten.

    
___ qstntxt ___

Der Namespace .NET %code% enthält eine ziemlich verwirrende Sammlung von Algorithmen, die ich für die Verschlüsselung von Kreditkartendaten verwenden könnte. Welches ist das Beste?

Es muss eindeutig für eine relativ kurze Saite sicher sein.

EDIT: Ich bin in Großbritannien, wo ich verstehe, dass wir OK sind, verschlüsselte Kreditkartendaten zu speichern, solange die dreistellige CVV-Nummer nicht gespeichert wird. Und danke allen für die tollen Antworten.

    
___ answer45040 ___

Vergessen Sie hier nicht die Integrität. Es gibt Fälschungsangriffe gegen Standard-Krypto, wenn der Angreifer den Schlüssel nicht kennt, aber den Geheimtext manipulieren kann. Diese können besonders unangenehm sein, wenn:

  • kurze Zeichenketten verschlüsseln,
  • mit bekannten Teilstrings

Genau das ist bei Kreditkarten der Fall. Daher kann es gefährlich sein, System.Security.Cryptography AES oder 3DES im CBC-Modus zu verwenden, ohne die eigene Prüfsumme zu übertragen. Lesen: Es besteht die Möglichkeit, dass ein Angreifer ohne den geheimen Schlüssel eine Kreditkartennummer durch eine andere ersetzt.

    
___ answer41221 ___

3des ist ziemlich gut, speichern Sie das Salz neben, und behalten Sie einen Standardschlüssel irgendwo nicht in der Datenbank oder in einer Config-Datei. Auf diese Weise können sie nicht entschlüsselt werden.

    
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ tag123security ___ Themen in Bezug auf Anwendungssicherheit und Angriffe auf Software. Bitte verwenden Sie dieses Tag nicht alleine, da dies zu Mehrdeutigkeiten führt. Wenn es sich bei Ihrer Frage nicht um ein spezielles Programmierproblem handelt, können Sie es stattdessen bei Information Security SE anfordern: https://security.stackexchange.com ___ answer47598 ___

Wenn Sie ein Zahlungsgateway eines Drittanbieters verwenden, müssen Sie die Nummern nicht speichern.

Es gibt keinen Sinn.

    
___ answer4766675 ___

Verschlüsseln Sie die Kreditkarte mit einem öffentlichen Schlüssel. Geben Sie den privaten Schlüssel nur dem Zahlungsprozessorcomputer. Die Zahlungsprozessormaschine kann dann die Datenbank abfragen und die Arbeit ausführen, und niemand sonst, auch nicht die Maschine, die den Eintrag hinzugefügt hat, kann sie entschlüsseln.

Etwas wie PHP's openssl_seal, wenn Sie vielleicht mit einem anderen Algorithmus wollen.

    
___ tag123encryption ___ Verschlüsselung ist der Prozess der Umwandlung von Information (Klartext genannt) in eine unlesbare Form (Ciphertext genannt) unter Verwendung eines Verschlüsselungsalgorithmus kombiniert mit einem Parameter (genannt Verschlüsselungsschlüssel). Nur diejenigen, die den Entschlüsselungsschlüssel besitzen, können den Prozess umkehren und den ursprünglichen Klartext wiederherstellen. Konzeptionelle Fragen zur Verschlüsselung können auf crypto.stackexchange.com bessere Antworten liefern. ___ antwort43383 ___

Tipp: Sie sollten prüfen, ob das Speichern von Kreditkartennummern legal ist. In Schweden müssen Sie beispielsweise von PCI (Payment Card Industry) zertifiziert sein, wo Ihre interne und externe Sicherheit getestet wird (a lang mit vielen anderen Dingen).

Sie sollten sowohl ein- als auch zweimal überlegen, bevor Sie Kreditkartendaten speichern, da die Kosten für den Rechtsstreit teuer sein können.

    
___ answer43375 ___

Es gibt auch den rechtlichen Aspekt zu beachten. Ich kenne die Situation nicht woanders, aber in Deutschland darf man einfach keine Kreditkartennummern speichern 1 . Punkt. Es spielt keine Rolle, ob Sie sie verschlüsseln oder nicht und in welchem ​​Format Sie sie speichern.

Alles, was Sie können tun (und hier verweise ich aus dem Gedächtnis, ohne irgendwelche juristischen Kenntnisse) ist ein starker Hash (SHA-256?) der Kreditkartennummer, zusammen mit dem letzten vier Ziffern und die Kontonummer. Und ja, es ist trivial, die vollständige Zahl aus diesen Informationen allein wieder aufzubauen. Gesetze sind nicht immer logisch.

1) Außer wenn Sie ein staatlich anerkanntes Kreditkarteninstitut sind.

    
___ tag123cryptography ___ Kryptographie umfasst unter anderem Verschlüsselung, Hashing und digitale Signaturen. Kryptografische Fragen, die nicht direkt mit der Softwareentwicklung zusammenhängen, werden bei crypto.stackexchange.com besser gestellt. ___
Patrik 04.09.2008 09:10
quelle
0

Verschlüsseln Sie die Kreditkarte mit einem öffentlichen Schlüssel. Geben Sie den privaten Schlüssel nur dem Zahlungsprozessorcomputer. Die Zahlungsprozessormaschine kann dann die Datenbank abfragen und die Arbeit ausführen, und niemand sonst, auch nicht die Maschine, die den Eintrag hinzugefügt hat, kann sie entschlüsseln.

Etwas wie PHP's openssl_seal, wenn Sie vielleicht mit einem anderen Algorithmus wollen.

    
Zer 22.01.2011 07:24
quelle