Jemand ist die Speicherung von Kreditkarten-Daten - wie tun Sie es?
Speicherung der Kreditkarten-Informationen sicher und legal ist sehr schwer und sollte nicht versucht werden,. Ich habe nicht die Absicht, die Speicherung von Kreditkarten-Daten, aber ich bin zu sterben, um herauszufinden, die folgenden:
Meine Kreditkartendaten gespeichert, die auf einem server irgendwo in der Welt. Diese Daten werden (hoffentlich) nicht gespeichert wird auf eine merchant-server, aber irgendwann muss es gespeichert werden, um zu überprüfen, und laden Sie das Konto identifiziert, der vom Händler übermittelten Daten.
Meine Frage ist: wenn Sie wurden beauftragt, mit der die Speicherung von Kreditkarten-Daten, was die Verschlüsselung Strategie würden Sie verwenden, sichern Sie die Daten auf der Festplatte? Was ich sagen kann, übermittelte Kreditkarten-info geprüft wird mehr oder weniger in Echtzeit. Ich bezweifle, dass jeder Verschlüsselungsschlüssel verwendet, um sichere die Daten werden manuell eingegeben, so dass die Entschlüsselung durchgeführt wird on the fly", was bedeutet, dass die Tasten selbst sind gespeichert auf der Festplatte. Wie würden Sie Ihre Daten sichern und Ihre Schlüssel in einem automatisierten system wie diesem?
- Anstatt zu Fragen, bezahlten wir Sie für uns tun 🙂
- +1 Aber ich finde diese Frage sehr interessant, als ich fragte es mich selbst vor ein paar Jahren, wie gut!
- Ich habe gerade gelesen das. Es Klang wie ein verschwörerisches flüstern. "Hey, Jungs, jemand ist die Speicherung von Kreditkarten-Daten...ssshhhh...wie tun Sie es?"
- Dies wird deine Frage nicht beantworten, also einfach nur einen Kommentar zu der Annahme, "irgendwann ist es [die credit card info] gespeichert werden muss": Theoretisch wäre das nicht sogar notwendig sein - wenn auch nur SATZ gewonnen hatte, mehr Traktion: en.wikipedia.org/wiki/Secure_Electronic_Transaction
- Ich hatte einen Vertrag arbeitet an einem system für einen großen hotel-Kette. Ihre Lösung war die Verwendung eines flat-file-Datenbank gespeichert, die nicht nur die Kartennummer, sondern die Rohdaten track von jedem geklaut-Karten. Im Klartext. Auf der box unter jedem front-desk. Mit der gleichen (allgemein bekannt) root-Passwort verwendet Bundesweit. Dieses war etwa 3 Jahre, bevor Sie die PCI-standards wurden in Position gebracht. Ich hoffe, dass die Dinge besser geworden sind, drüben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich die Speicherung der Anzahl, würde ich ein Riesen-service-Anbieter mit einer großen Datenbank. Die Datenbank befindet sich auf einem hoch-redundante Speicher-array, bestehend aus mehreren Schränken, in separaten Räumen oder im Idealfall in getrennten geographischen Orten, verbunden durch einen SAN. Meine größte insider-Bedrohung ist die verteilte physische Anlage, die Konstanten Strom von worn-out-Laufwerke und mehrere tägliche Schichten von Technikern, Administratoren und-Ingenieure. Es ist eine große Bedrohung.
Daher würde ich die Daten verschlüsseln, die auf einer physikalisch isolierten computer, der Verbindung zum Massenspeicher über ein Netzwerk. Würde die software so einfach wie möglich sein: Verschlüsselung und-Anzahl überprüfung. Die öffentlichen Schnittstellen und business Logik geht anderswo. Zugriffe werden protokolliert, um eine separate SAN.
Verschlüsseln mit so etwas wie AES. Die raw-AES-Schlüssel ist immer nur im RAM gespeichert. Der Schlüssel ist verpackt in einer PGP-Datei für jeden administrator, der hat seine eigene passphrase, um den server zu aktivieren. Weniger Vertrauenswürdige Personal gegeben werden kann, teilweise Passphrasen zu verwenden, im disaster-recovery -, oder Passphrasen können gespeichert werden, in einem Tresor irgendwo. Für die Verschlüsselung wählen Sie eine einzigartige Initialisierungsvektor (IV) für jede Karte, die Nummer, AES-verschlüsseln Sie die Nummer mit, die IV, und speichern Sie die IV und die verschlüsselte Zahl an den SAN. Die Entschlüsselung erfolgt nur mit einem privilegierten client-Schnittstelle; normalen client-verbindungen verwendet, für die Einkäufe können nie bekommen eine Entschlüsselung.
Anbietern verarbeiten und speichern Ihre Kreditkarten-Informationen, Sie haben in der Regel zu bekommen, PCI-zertifiziert. Die Anforderungen sollten skizziert werden hier. Einige der Anforderungen sind sehr einfach, und andere sind vage und offen für interpretation. Going durch den Prozess ist nicht lustig, und ein Unternehmen, dass die Zertifizierung bedeutet nicht, dass Ihre Daten sicher sind.
Aber es ist besser als nichts, nehme ich an.
Es ist ziemlich leicht zu lagern, ein salted hash einer Kredit-Karte Zahl, sondern die Anzahl selbst für sichere Suchvorgänge. Für 99% der Szenarien gibt, dies würde ausreichen, Kreditkarte für die Lagerung-schnell und sehr sicher.
Wenn Sie wirklich brauchen reversible Verschlüsselung einer Kreditkarte für einige Szenario (Fortsetzung Abrechnung, zum Beispiel), würde ich mit einem symmetrischen Schlüssel an einem sicheren Speicherort gespeichert anderen als die Datenbank. Es ist schon eine Weile her, seit ich schaute auf die PCI-specs, aber ich bin mir ziemlich sicher, dass die PCI-konform.
Wenn Sie schnelle lookups zusammen mit umkehrbarer Verschlüsselung, verwenden Sie beide Optionen: eine hash und Verschlüsselung.
Edit:
Es scheint einige kontroversen über meine Antwort. Ich möchte darauf hinweisen, die folgenden sehr interessanten Aufsatz von Integrity.com (PDF-Datei):
Hashing Kreditkarte Zahlen: Unsichere Anwendung Praktiken
Es wird ausführlich auf viele der Probleme, die bei der Speicherung eines hash der Daten der Kreditkarte, aber seine Schlussfolgerung bestätigt meinen Vorschlag.
Ja, eine raw-hash der Karte ist nicht sicher; das ist, warum Salzen wir unsere hashes! Aber ein statischer salt ist auch nicht sicherer, Sie erlauben die Erstellung von rainbow tables für bekannte statische Salze. So ist es am besten, um unsere Salze variieren in gewisser Weise, ist unberechenbar. Im Falle von Passwörtern, es ist ausreichend, um eine separate, random-hash für jedes Passwort wird überprüft; es kann auch sich in der gleichen Tabelle/Zeile wie das gehashte Kennwort. Für den Fall von Kreditkarten, diese sollte die gleiche sein, -- einen zufälligen salt für jede Instanz von der Kreditkarte wird ein Hashwert ist. Wenn die Kreditkartennummer gespeichert wird pro Transaktion eine separate Salz für jede Transaktion.
Es gibt vor-und Nachteile für diesen Ansatz, aber es ist ausreichend sicher. Die Vorteile sind das fehlen des Schlüssel-management; das Salz und hash sind genau dort, und brauchen nicht zu ändern, während immer noch so dass für die Kontrollen der hash; z.B. bedeutet, dass die Kreditkarte "hash match" - dieses bekannte Kreditkarten-Nummer?
Die Nachteile sind auf der Suche, es ist nicht möglich, effektiv die Suche für einen bestimmten Kredit-Karten-Nummer, das über viele Transaktionen.
Natürlich, Sie haben dieses Problem mit der externen Verschlüsselung ohnehin; es sei denn, die Datenbank selbst verschlüsselt ist (was nur einige Datenbanken unterstützen), werden Sie nicht in der Lage zu suchen, sehr gut. Selbst dann, Verschlüsselung auf Datenbank-oder sogar die Tabelle reduziert suchen Effektivität deutlich.
Die letzten paar Male, die ich arbeitete mit creditcard Zahlungen, die Sie nie wirklich gespeichert werden, ist die tatsächliche CC-Informationen auf Ihrem eigenen Server. Lassen Sie das Payment-gateway umzugehen. Was Sie übrig blieb, war eine Transaktions-id, die Sie verwenden, um zu überprüfen, dass die Kreditkarte war noch gültig und hatte die angeforderte Menge Geld zur Verfügung. Dann, wenn Sie tatsächlich packten die Sachen, die Sie gekauft haben, würden Sie Problem, ein capture-Befehl an das Payment Gateway.
Dieser Ansatz vereinfacht den Prozess der Integration der CC-Zahlungen auf eine Website, da alles, was Sie jemals notwendig zu wissen, war die Transaktions-id für einen bestimmten Kunden. Dies natürlich nicht zulassen, Sie tun, um die amazon-"trick" ist, dass Ihre CC-info zur 1-click-shopping. Wenn Sie die Transaktions-id habe kompromittiert, alle, die es verwendet werden könnte, für die war das erfassen von Zahlungs-Anfang oder Abbruch der Transaktion insgesamt (in dem Fall Sie würden es herausfinden, wenn Sie verifiziert, dass die Zulassung war immer noch gültig, vor dem Versand). Die Transaktion konnte nicht verwendet werden, zu sammeln eine größere Summe als das, was der Kunde zugestimmt hatte bereits, noch würde es jemand erlauben, zu erfassen, um ein anderes Konto als das, was der "shop" wurde konfiguriert.
Vielleicht nicht die genaue Antwort, die Sie gesucht, aber vielleicht könnte es lösen, Ihre gesamte Thema zu verbringen, ohne ein Vermögen für Anbieter von Sicherheitslösungen.
In einigen Situationen werden die Verschlüsselungsschlüssel gespeichert nicht auf der Festplatte sondern auf einem hardware-Gerät. Eine spezielle server-Verschlüsselung wird verwendet, um zu tun, die verschlüsseln/entschlüsseln oder das entschlüsseln erfolgt mit einem Schlüssel gespeichert, der auf, sagen wir, ein hardware-dongle. Auf diese Weise, kann ein hacker nicht stehlen die Schlüssel entschlüsseln, ohne Diebstahl des physischen Geräts, die diese enthält (da der Schlüssel verlässt nie das Gerät).
Andere Methode, die ich gesehen habe, ist die Speicherung von verschlüsselten Daten in einer Datenbank/datacenter hat keine direkte Verbindung zur Außenwelt (Sie können nicht hacken, was Sie nicht zugreifen können). Eine interface-server sitzt zwischen den "sicheren" Teil des Netzwerkes sind und den "Internet-facing"/"unsicher" Teil des Netzwerks als proxy. Zwingen sichern des Datenverkehrs zu Trichter, durch den diese Sicherheit drosselstelle kann es schwieriger für einen Eindringling, um Zugriff auf die gesicherten Daten.
Weder von diesen, dass Ihre Daten vollkommen sicher, natürlich.
Als Händler können Sie wählen, um zu speichern die CC-Daten in Ihrer eigenen Datenbank oder Auslagerung an externe Dienstleister.
Drittanbieter wie IPPayments oder Großbanken wie Westpac in Australien sind level 1 PCI konform. Für web-Anwendungen, die Sie können wählen, um eine Zahlung, Annahme-web-Seite (vorgestellt, die irgendwo in Ihrem Kunden-workflow) von Ihnen Markenprodukte für Ihr Unternehmen. Für windows-apps (z.B. Unternehmens-CRM-app) und wiederkehrenden Zahlungen, die Sie haben in der Regel ein gateway verwendbar mit Ihrer API, die eine tokenisation-service, ist, dass Sie akzeptieren eine CC-Nummer, registriert und wieder ein einmaliges token, das sieht aus wie eine CC-Nummer. Das token kann sicher gespeichert werden in der DB und für alle weiteren Transaktionen, batch-Zahlungen, Versöhnung etc. mit der bank. Natürlich können Sie das große Problem ist die operativen Kosten pro Transaktion. Ein utility, das dauert monatliche Zahlung mit Kreditkarte von einer Millionen Kunden die Transaktionskosten erheblich sein kann.
Wenn Sie wählen Sie speichern, um die CC-Nummer in Ihren eigenen DB-triple-DES-Verschlüsselung ist ausreichend. Eine bessere option ist, um Sie transparenter Verschlüsselung in der DB wie Oracle advanced security oder SQLServer, wo auch das DBA nicht entschlüsseln kann die CC-Nummer. Dann gibt es schwere Verantwortung für Schlüssel-management, Datensicherung, physische Sicherheit, Netzwerk-Sicherheit, SSL-übertragung, die änderung der Standardeinstellungen für alle server-Ausrüstungen und-firewall, anti-virus -, auditing -, security-Kameras und auf und auf ...
Zunächst falls Sie mit Kreditkarte zahlen, werden Sie brauchen, um sich PCI-DSS - konform, und wenn Sie die zahlen speichern, alle 12 Abschnitte des PCI-DSS-Spezifikation gelten. Das ist ein großer Aufwand für die meisten Organisationen, und wenn Sie don ' T haben die Zeit, Ressourcen und finanziellen Mitteln, Sie sollten nicht nach unten gehen den Weg der Speicherung von Kreditkartennummern.
Wir haben gewonnen, PCI-DSS-compliance auf Windows-basierten e-commerce-system, das speichert die Kreditkarten. Es verwendet eine 256-bit-AES-Verschlüsselung. Der key selbst wird verschlüsselt durch Windows-DPAPI D. H. es kann nur entschlüsselt werden, die durch einen Prozess ausgeführt wird, der unter dem gleichen Benutzerkonto wie der, der verschlüsselt es. Der verschlüsselte Schlüssel wird in der Registrierung gespeichert.
Den Schlüssel gedreht, alle 12 Monate, und eine backup-Taste, kopieren gespeichert ist kaputt in 3 Teile A,B,C und verfügt über 3 USB-Laufwerke, jedes gehalten von einer anderen person. Laufwerk 1 ist A+B, Festplatte 2 B+C, Drive 3 hat A+C. Also 2 Festplatten sind erforderlich zum Aufbau einer vollständigen Schlüssel (A+B+C). Diese Regelung ist tolerant, um den Verlust von 1-Laufwerke. Schlüssel-Teile selbst sind verschlüsselt mit einem Passwort kennt nur der drive-Besitzer.
Ihre Annahme, dass der Händler muss, legen Sie die Karte irgendwie falsch. Wahrscheinlich werden die Händler ist die Speicherung von token, die Sie erhalten von der Zahlungsabwicklung-gateway das erste mal, wenn Sie die Karte. Die token eindeutig identifiziert, die die Kombination von Kaufmann und Karte. Anschließend können Sie Einkäufe machen, dass der Händler ohne Angabe deiner card-Nummer wieder. Wenn der Großhändler-Datenbank kompromittiert wird, die Marken sind wenig Wert auf die Angreifer. Sie sind nur gültig für die Händler, und alle können abgebrochen werden, wenn die Verletzung erkannt wird.
Zur Beantwortung Ihrer konkreten Frage, ist es möglich, zum speichern der Kreditkarten-Verschlüsselungsschlüssel verschlüsselt auf der Festplatte. Der Schlüssel verschlüsseln Schlüssel kann aus einer passphrase abgeleitet, muss eingegeben werden, wenn der server gestartet wird. Shamir ' s secret-splitting-Schema kann verwendet werden, so dass k aus N Aktien werden benötigt, um zu konstruieren, dass das Geheimnis als Schlüssel verschlüsseln Schlüssel. Der entschlüsselt der Verschlüsselungs-Schlüssel/Geheimnis ist dann im Speicher gespeichert. Wenn der server neu gestartet werden muss, dann müssen Sie k-Aktien. Dies ist natürlich ein großer Aufwand und die meisten Kaufleute, die ich kenne nicht diese umzusetzen. Sie tun aber in der Regel bewahren Sie den Schlüssel getrennt von den verschlüsselten Daten für einige intermediate der Sicherheit, so dass der Zugriff auf eine bedeutet nicht automatisch Zugriff auf die anderen in der Gesamtheit (noch sehr schlecht).
Löschte ich den Inhalt meiner original-post da, dass nicht direkt die Frage beantworten. Es genügt zu sagen, dass die Schlüsselverwaltung und die richtige Verschlüsselung sind ein wichtiger Teil, aber immer noch ein kleiner Teil der Geschichte.
PCI-Auditoren nicht möglich, sicherzustellen, dass Sie alles richtig gemacht haben.
Wenn Sie möchten, zu beseitigen, eine Kreditkarte zu stehlen Kopfschmerzen, Sie hash mit salt-Werte nicht in der Datenbank gespeichert (zusätzlich zum salt-Werte in der Datenbank gespeichert). Hashing mit einem modernen hashing-Algorithmus, der ziemlich viel zur Ruhe setzen können die meisten Probleme mit Kreditkarten-Diebstahl, aber es bedeutet, Verbraucher müssen re-geben Sie Ihre Kreditkarte für jeden Kauf. Gearbeitet an einem Projekt, die sich mit Speicherung von Kreditkartennummern, fand ich, dass hashing Ihnen schneiden die überprüfung der Sicherheit die Kosten um eine Größenordnung (zugegeben, das Projekt war vor PII betrifft).
Wenn Sie gehen, um symmetrische Verschlüsselung, dann geben Sie ein neues Reich der Komplikation, kommt es nur auf die Verwaltung und Kontrolle der Entschlüsselungs-Schlüssel. Ich werde sagen, dass selbst wenn Sie den hash der Kreditkarte zahlen, die Sie noch brauchen, um deal mit umkehrbarer Verschlüsselung, da alle personenbezogenen Daten(personenbezogene Informationen) verschlüsselt werden muss. SQL Server 2008 ist eine neue Extensible Key Management plugin-Architektur ermöglicht die Verwendung von Drittanbieter-Programme zu verwalten, die die Kontrolle über den Entschlüsselungs-Schlüssel, einschließlich split-Tasten.
Weitere Infos:
Die Bereitstellung von SQL Server 2008 auf der Basis der Payment Card Industry Data Security Standards (PCI DSS) in der Version 1.2.
eines automatisierten Systems für die Entschlüsselung von verschlüsselten Informationen ist völlig unsicher. Durch die Automatisierung des Prozesses, den Sie sind, den Sieg über die Verschlüsselung. Alle verschlüsselten Daten sollte nur dann entschlüsselt werden, die von einem Benutzer eingegebenen geheimen Schlüssel.