Was ist der einfachste Weg, die Verschlüsselung mit öffentlichen Schlüsseln durchzuführen?

381
user4757074

Ich bewerbe mich für eine Stelle und sie haben mich gebeten, ihnen meine SSN per E-Mail zu senden. Nennen Sie mich paranoid, aber das passt mir nicht gut.

Ich suche also nach einer einfachen Form der Verschlüsselung mit öffentlichen Schlüsseln, die eine nicht-technische Person aus dem Personalbereich einen öffentlichen Schlüssel generieren kann. Sie kann sie mir senden, ich könnte mein SSN verschlüsseln, sie senden und dann die Person aus dem Personalwesen entschlüsseln ihr privater Schlüssel.

Vielleicht so etwas wie diese Website http://travistidwell.com/jsencrypt/demo/index.html, aber auf dieser Website funktioniert die Verschlüsselung nicht ohne den privaten Schlüssel (Basis und Modul ... werden wahrscheinlich regeneriert).

0
Senden Sie keine SSN, geben Sie sie nicht in einen Webbrowser ein. Rufen Sie sie an, vertrauen Sie ihnen nicht, rufen Sie an, stellen Sie sicher, dass Sie sich an das richtige Unternehmen wenden. Sagen Sie ihnen die SSN am Telefon. zaph vor 7 Jahren 0

2 Antworten auf die Frage

1
Artjom B.

Was ist der einfachste Weg, die Verschlüsselung mit öffentlichen Schlüsseln durchzuführen?

Am einfachsten für wen? Ich denke, Sie meinen für die Person aus der Personalabteilung. Das einfachste Protokoll, das ich sehe, kann implementiert werden, so dass sie nur zweimal auf die Website zugreifen müssen, ohne dass sie zusätzliche Maßnahmen ergreifen müssen.

Sie müssen auf Ihrem Personal Server eine nicht statische Site erstellen, auf der Sie ziemlich sicher sind, dass der Serveranbieter nicht auf der Festplatte des Servers sucht.

Sehen wir uns die Schritte an (Implementierungsdetails sind mit dem Protokoll verwoben):

  1. Generieren Sie zwei kryptische URLs auf Ihrem Server und senden Sie die erste URL an die Person des Personals (ab jetzt Empfänger). Sie bitten den Empfänger, Sie anzurufen, sobald er auf die URL geklickt hat.

  2. Der Empfänger klickt auf die URL und einige Dinge passieren:

    • Der Server prüft, ob diese URL zuvor angefordert wurde, und zeigt gegebenenfalls einen Fehler an. In diesem Fall muss dieser Vorgang erneut gestartet werden.

    • Wenn dies der erste Aufruf der URL ist, generiert JavaScript ein Schlüsselpaar (public + private).

      • Der öffentliche Schlüssel wird an den Server gesendet und dort gespeichert, und der private Schlüssel wird im localStorage im Empfängerbrowser gespeichert.

      • Darüber hinaus generiert der Empfängerbrowser eine zufällige Zeichenfolge (als Token bezeichnet), speichert sie in localStorage und sendet sie an den Server, auf dem sie gespeichert ist.

  3. Nun ruft der Empfänger Sie an. Sie fragen dann, ob ein Fehler aufgetreten ist. Wenn es keine gab, müssen Sie die zweite kryptische URL öffnen, die Sie in Schritt 1 generiert haben. Diese kryptische URL ist mit den Informationen verknüpft, die Sie in Schritt 2 vom Empfänger erhalten haben, und enthält ein Formular, in das Sie Ihren SSN eingeben können.

  4. Das SSN wird mit dem gespeicherten öffentlichen Schlüssel verschlüsselt, und der Chiffretext wird unter einer dritten kryptischen URL veröffentlicht, die auf dem Token von Schritt 2 basiert.

  5. Sie bitten den Empfänger, erneut auf den Link zu klicken, und er erhält eine Fehlerseite. Diese Fehlerseite wird jedoch schnell ausgeblendet, da der localStorage zusätzliche Werte enthält, was bedeutet, dass es sich um eine legitime Anforderung handelt. Der Browser des Empfängers führt Folgendes aus:

    • Es holt das Token von localStorage und fragt den Chiffretext ab.

    • Es holt den privaten Schlüssel von localStorage und entschlüsselt den Chiffretext.

    • Es zeigt die SSN an.

Dieses Protokoll behebt das Problem, dass das SSN niemals im Klartext auf dem Server gespeichert wird. Wenn jemand vor oder nach dem beabsichtigten Empfänger auf den Link geklickt hätte, würden sie nichts sehen. Dies kann jedoch immer noch anfällig für das Abfangen von SSL durch einen böswilligen Hoster sein, und es gibt Einstiegspunkte für das Social Engineering.

Sie können dies ein wenig verbessern, indem Sie lange Abfragen oder Web-Sockets verwenden, wenn der Empfänger nicht ein zweites Mal auf die URL klicken soll.


Wenn Sie das für Sie am einfachsten meinen, müssen Sie entweder die Sicherheit beeinträchtigen oder persönlich in ihre Büros gehen.


Sie sollten JSEncrypt dafür nicht verwenden. Es wäre schwer, es hier zu integrieren. Sie sollten entweder Schmiede (bietet RSA und alles um ihn herum) oder sjcl ( ElGamal- Verschlüsselung über KEM, das zusammen mit AES-GCM implementiert werden muss; daher auch nicht wirklich einfach).

In den USA haben wir keine Ausweise, die Sozialversicherung ist ein Stück Papier ohne Fälschungsschutz. So gilt die SSN * als * geheim, damit kann man sich als anderer ausgeben. Wir sind in den USA irgendwie rückständig zaph vor 7 Jahren 0
Nun, dies ist sicherer, als es ihnen einfach per Telefon mitzuteilen, vorausgesetzt, das Zertifikat ist nicht gefährdet. Mobilfunk-Basisstationen können von Einzelpersonen aufgebaut werden und können Anrufe an die beabsichtigten Basisstationen weiterleiten, wodurch das "Abhören" von Personen (die heutzutage Festnetzanschlüsse verwenden) leicht gemacht wird. Dies ist jedoch höchst unwahrscheinlich. Zumindest in Deutschland werden solche gefälschten Basisstationen schnell gefunden. Artjom B. vor 7 Jahren 0
0
user4757074

Verwenden Sie eine Website wie https://www.igolder.com/PGP/generate-key/, um öffentliche und private PGP-Schlüssel zu generieren. Lassen Sie sich von der Person des Personals ihren öffentlichen Schlüssel senden. Mit ihrem öffentlichen Schlüssel verschlüsseln Sie Ihr SSN und senden Sie es dann an die Person des Personals, die es dann mit ihrem privaten Schlüssel entschlüsseln kann.