Was ist der Unterschied zwischen Verschlüsselung und in der asymmetrischen Verschlüsselung Wenn Sie sich?

StackOverflow https://stackoverflow.com/questions/454048

Frage

Was ist der Unterschied zwischen ein paar Daten zu verschlüsseln vs einige Daten Signierung (mit RSA)?

Ist es einfach umgekehrt die Rolle der öffentlich-privaten Schlüssel?

Zum Beispiel möchte ich meine privaten Schlüssel verwenden, um Nachrichten zu erzeugen, so kann ich nur möglicherweise der Absender sein. Ich möchte meinen öffentlichen Schlüssel verwendet werden, um die Nachrichten zu lesen und ist mir egal, wer sie liest. Ich möchte in der Lage, bestimmte Informationen zu verschlüsseln und sie als Produkt-Schlüssel für meine Software zu benutzen. Ich kümmere mich nur, dass ich der einzige bin, der diese erzeugen kann. Ich möchte meinen öffentlichen Schlüssel in meiner Software enthalten die Unterschrift des Schlüssels zu entschlüsseln / lesen. Mir ist es egal, wer die Daten im Schlüssel lesen können, Ich kümmere mich nur, dass ich die einzige überprüfbare eine bin, die sie erzeugen kann.

Ist Unterzeichnung nützlich in diesem Szenario?

War es hilfreich?

Lösung

Wenn die Verschlüsselung verwenden Sie ihre öffentlichen Schlüssel , um eine Nachricht zu schreiben und sie nutzen ihre privaten Schlüssel zu lesen.

Bei der Unterzeichnung, verwenden Sie Ihre privaten Schlüssel Nachricht Unterschrift zu schreiben, und sie verwenden Ihre öffentlichen Schlüssel überprüfen, ob es Ihnen wirklich.

  

Ich mag meinen privaten Schlüssel verwenden, um Nachrichten zu erzeugen, so kann ich nur möglicherweise der Absender sein.

     

Ich möchte meinen öffentlichen Schlüssel verwendet werden, um die Nachrichten zu lesen, und ich sorge mich nicht, wer liest sie

Dies ist Anmeldung , ist es mit Ihrem privaten Schlüssel getan.

  

Ich möchte in der Lage sein, bestimmte Informationen zu verschlüsseln und sie als Produktschlüssel für meine Software.

     

Ich kümmere mich nur, dass ich der einzige bin, der diese erzeugen kann.

Wenn Sie nur an sich selbst wissen müssen, brauchen Sie nicht mit den Tasten zu verwirren, dies zu tun. Sie können nur Zufallsdaten erzeugen und sie in einer Datenbank halten.

Aber wenn man die Leute wollen wissen, dass die Tasten sind wirklich von Ihnen, Sie müssen Zufallsdaten erzeugen, halten in eine Datenbank und unterschreiben Sie mit Ihrem Schlüssel.

  

Ich möchte meinen öffentlichen Schlüssel in meiner Software enthalten die Unterschrift des Schlüssels zu entschlüsseln / lesen.

Sie werden wahrscheinlich ein Zertifikat für den öffentlichen Schlüssel von einem kommerziellen Anbieter wie Verisign oder Thawte kaufen müssen, so dass die Menschen, dass niemand Ihre Software gefälscht hatte prüfen können und ersetzt Ihren öffentlichen Schlüssel mit ihnen.

Andere Tipps

In RSA-Krypto, wenn Sie ein Schlüsselpaar erzeugen, ist es völlig willkürlich, welches wählen Sie den öffentlichen Schlüssel zu sein, und das ist der private Schlüssel. Wenn Sie mit einem verschlüsseln, können Sie mit dem anderen entschlüsseln -. In beide Richtungen funktioniert

Also, es ist ziemlich einfach zu sehen, wie Sie eine Nachricht mit dem verschlüsseln können Empfänger öffentlich drücken, so dass der Empfänger sie entschlüsselt mit ihrem privat drücken.

Eine Signatur ist ein Beweis dafür, dass die Unterzeichner den privaten Schlüssel haben, die einige öffentlichen Schlüssel übereinstimmt. Um dies zu tun, wäre es genug sein, um die Nachricht mit, dass Absenders private Schlüssel und umfasst die verschlüsselte Version neben der unverschlüsselten Text-Version zu verschlüsseln. Um den Absender zu überprüfen, entschlüsselt die verschlüsselte Version, und überprüfen, ob es die gleichen wie der Klartext ist.

Natürlich bedeutet dies, dass Ihre Nachricht nicht geheim ist. Jeder kann es entschlüsseln, da der öffentliche Schlüssel bekannt ist. Aber wenn sie es tun, sie haben bewiesen, dass der Schöpfer des verschlüsselten Textes den entsprechenden privaten Schlüssel hat.

Dies bedeutet jedoch, die Größe der Übertragung zu verdoppeln - Klar- und Geheimtext zusammen (vorausgesetzt, Sie Leute wollen, die bei der Überprüfung der Signatur nicht daran interessiert sind, um die Nachricht zu lesen). Also statt, in der Regel wird eine Signatur, indem ein erstellt Hash des Klartexts. Es ist wichtig, dass gefälschter Hashes nicht, so verschlüsselte Hash-Algorithmen wie SHA-2 verwendet werden, erstellt werden.

So:

  • eine Signatur zu erzeugen, macht einen Hash aus dem unverschlüsselten Text, verschlüsseln Sie es mit Ihrem privaten Schlüssel, schließt mich neben dem unverschlüsselten Text.
  • eine Signatur zu überprüfen, macht einen Hash aus dem unverschlüsselten Text, entschlüsselt die Signatur mit dem öffentlichen Schlüssel des Absenders überprüfen, ob beide Hashes gleich sind.

Ja denken Unterzeichnung Daten, wie sie Ihre eigenen Wachs Stempel geben, dass niemand sonst hat. Es wird getan, um zu erreichen Integrität und Nachweisbarkeit . Die Verschlüsselung ist so niemand sonst kann die Daten sehen. Dies geschieht, um zu erreichen Vertraulichkeit . Siehe Wikipedia http://en.wikipedia.org/wiki/Information_security#Key_concepts

Eine Signatur ist ein Hash Ihrer Nachricht mit Ihrem privaten Schlüssel signiert.

Signing ist ein „Hash“ mit Ihrem privaten Schlüssel erzeugen, die mit dem öffentlichen Schlüssel verifiziert werden kann. Der Text wird im Klartext gesendet.

Encrypting verwendet den öffentlichen Schlüssel des Empfängers, die Daten zu verschlüsseln; Decodierung mit ihrem privaten Schlüssel getan.

So ist die Verwendung von Schlüsseln nicht mehr rückgängig gemacht (sonst Ihr privater Schlüssel würde nicht mehr privat sein!).

Es gibt zwei unterschiedliche, aber eng miteinander verbundenen Probleme eine sichere Kommunikation bei der Einrichtung

  1. Verschlüsseln von Daten, so dass nur autorisierte Personen kann es entschlüsseln und lesen.
  2. Überprüfen Sie die Identität / Authentifizierung des Absenders.

Diese beiden Probleme elegant sein können mit Public-Key-Kryptographie gelöst.

I. Verschlüsselung und Entschlüsselung von Daten

Alice möchte eine Nachricht an Bob schicken, die niemand sollte lesen können.

  • Alice verschlüsselt die Nachricht mit Bobs öffentlichen Schlüssel und sendet ihn über.
  • Bob erhält die Nachricht und entschlüsselt sie mit seinem privaten Schlüssel.
  

Beachten Sie, dass, wenn A möchte eine Nachricht an B senden, A, die Öffentlichkeit verwenden muss   Schlüssel von B (die jedermann öffentlich zugänglich ist) und weder öffentlich   noch private Schlüssel von A kommen ins Bild hier.

Wenn Sie also eine Nachricht an mich schicken, sollten Sie meinen öffentlichen Schlüssel kennen und nutzen, die ich Ihnen bieten und nur ich in der Lage sein, die Nachricht zu entschlüsseln, da ich der einzige bin, der Zugriff auf den entsprechenden privaten Schlüssel hat .

II. Überprüfen Sie die Identität des Absenders (Authentifizierung)

Alice will wieder eine Nachricht an Bob senden. Das Problem der Daten der Verschlüsselung wird unter Verwendung des obigen Verfahrens gelöst.

Aber was, wenn ich zwischen Alice und Bob sitze, mich als ‚Alice‘ Bob Einführung und meine eigene Nachricht an Bob sendet stattdessen die eine der Spedition von Alice geschickt. Auch wenn ich nicht entschlüsseln kann und die ursprüngliche Nachricht von Alice geschickt lesen (dass der Zugang zu Bob privaten Schlüsseln erfordert) ich das ganze Gespräch zwischen ihnen am Hijacking.

Gibt es eine Möglichkeit Bob bestätigen kann, dass die Botschaften, die er empfängt, werden von Alice tatsächlich gesendet?

  • Alice signiert die Nachricht mit ihrem privaten Schlüssel und sendet ihn über. (In der Praxis, was signiert ist ein Hash der Nachricht, beispielsweise SHA-256 oder SHA-512.)
  • Bob empfängt und überprüft es Alices öffentlichen Schlüssel. Da Alice erfolgreich öffentlichen Schlüssel die Nachricht überprüft, kann Bob dem Schluss, dass die Nachricht von Alice signiert wurde.

Signing bedeutet, dass Sie wirklich die Quelle sind oder bürgen des Objekts unterzeichnet. Jeder kann das Objekt lesen, though.

Encrypting bedeutet, dass nur diejenigen mit dem entsprechenden privaten Schlüssel lesen können, aber ohne Anmeldung gibt es keine Garantie Sie hinter dem verschlüsselten Objekt sind.

Sie beschreiben genau, wie und warum Unterzeichnung in Public-Key-Kryptographie verwendet wird. Beachten Sie, dass es sehr gefährlich zu unterschreiben (oder verschlüsseln) aritrary Nachrichten von anderen geliefert -. Diese Angriffe auf die Algorithmen ermöglicht, die Ihre Schlüssel beeinträchtigen könnte

In Ihrem Szenario, Sie verschlüsseln nicht im Sinne der asymmetrischen Verschlüsselung; Ich würde lieber nennen es „codieren“.

So können Sie Ihre Daten in eine binäre Darstellung kodieren, dann unterschreiben Sie mit Ihrem privaten Schlüssel. Wenn Sie nicht die Unterschrift über Ihren öffentlichen Schlüssel überprüfen können, wissen Sie, dass die signierten Daten nicht mit Ihrem privaten Schlüssel erzeugt werden. ( „Überprüfung“, was bedeutet, dass die unsignierten Daten nicht sinnvoll sind)

Funktionell benutzen Sie öffentliche / private Key-Verschlüsselung sicher nur den Empfänger machen können Ihre Nachricht lesen. Die Nachricht wird verschlüsselt dann verschlüsselt mit dem öffentlichen Schlüssel des Empfängers.

Unterschreiben Sie den Empfänger lassen verwenden kennen Sie die Nachricht erstellt und es wird während der Übertragung nicht geändert. Nachrichtensignierung ist Ihre eigenen privaten Schlüssel gemacht werden.

Wie für den Algorithmus verwendet: diese involes Prime-Zahlen. Ich würde für eine bessere Erklärung einer Suche auf Google tun.

  

Was ist der Unterschied zwischen ein paar Daten zu verschlüsseln vs einige Daten Signierung (mit RSA)?

Verschlüsselung bewahrt die Vertraulichkeit der Nachricht ( „some Daten“), während Unterzeichnung Unbestreitbarkeit sieht vor: das heißt nur die Einheit, die unterzeichnet sie es unterzeichnet haben könnte. Es gibt funktionelle Unterschiede als auch, lesen Sie weiter.

  

Ist es einfach umgekehrt die Rolle der öffentlich-privaten Schlüssel?

Absolut nicht. Die Verwendung der gleichen privaten Schlüssel zum Signieren und Entschlüsselung (oder, ebenfalls der gleiche öffentliche Schlüssel zur Verifikation und Verschlüsselung ) ist verpönt, da Sie nicht Zwecke mischen sollten. Dies ist nicht so sehr ein mathematisches Problem (RSA sollte noch sicher sein), aber ein Problem mit Schlüsselmanagement , wobei z.B. die Signaturschlüssel sollte eine kürzere Live haben und mehr Schutz enthalten, bevor sie verwendet wird.

Für die gleiche Nachricht, sollten Sie den Absender privaten Schlüssel zum Signieren verwenden und die Empfänger vertrauenswürdigen öffentlichen Schlüssel für die Verschlüsselung. Häufig unterzeichnen-then-Encrypt verwendet wird sonst ein Gegner die Unterschrift mit seinem eigenen ersetzen könnte. Ebenso sollten Sie den privaten Schlüssel des Empfängers für die Entschlüsselung verwenden und die vertraute öffentliche Schlüssel des Absenders zur Verifikation.

Darüber hinaus sollten Sie verstehen, dass die Erzeugung der Signatur verwendet keine „Verschlüsselung mit dem privaten Schlüssel“. Obwohl alle RSA-Operationen auf modulare Exponentiation basiert, ist die Polsterung Schema für die Erzeugung der Signatur vollständig anders. Darüber hinaus hat der öffentliche Schlüssel ganz andere Eigenschaften als der privaten RSA-Schlüssel in allen praktischen Anwendungen von RSA.

  

Zum Beispiel möchte ich meine privaten Schlüssel verwenden, um Nachrichten zu erzeugen, so kann ich nur möglicherweise der Absender sein.

Das ist Unbestreitbarkeit Eigenschaft, die durch die Unterzeichnung erreicht werden kann.

  

Ich möchte meinen öffentlichen Schlüssel verwendet werden, um die Nachrichten zu lesen und ist mir egal, wer sie liest.

Der öffentliche Schlüssel sollte in Betracht gezogen von allen bekannt sein. Wenn Sie alle die Nachrichten lesen möchten, dann einfach Sie sie nicht verschlüsselt werden.

Signing beeinflusst im Allgemeinen nicht den Inhalt der Nachricht. Die Nachricht wird als getrennt von Unterschriften. Offiziell solche Signaturen werden als „Signaturen mit Anhang“ bekannt, wo der Blinddarm ist die Botschaft. Es ist ein bisschen seltsam Namen wie die Nachricht als die Signatur über es wichtiger angesehen wird, aber ja. Nur wenige Signaturen bieten (Teil-) Nachricht Erholung; sie sind nicht viel mehr verwendet und sind in der Regel deprecated betrachtet.

Beachten Sie, dass Signatur-Protokolle wie CMS kann ein Container-Format implementieren, die sowohl die Nachricht und die Signatur enthält. In diesem Fall müssen Sie zuerst die bekommen - noch unverschlüsselt - Nachricht aus dem Behälter, ähnlich wie eine Datei aus einem einfachen ZIP-Archiv entpacken. So ist die Nachricht aus dem Blick verborgen werden kann und nicht direkt in diesem Fall verwendet werden kann.

  

Ich möchte in der Lage sein, bestimmte Informationen zu verschlüsseln und sie als Produkt-Schlüssel für meine Software zu benutzen. Ich kümmere mich nur, dass ich der einzige bin, der diese erzeugen kann.

Die Verschlüsselung wird verwendet, Vertraulichkeit zu erreichen. In der letzten Generation RSA-Signatur wurde oft als „Verschlüsselung mit dem privaten Schlüssel“ gedacht. Allerdings sind die Vorgänge ganz anders, wie oben erläutert, und die späteren Standards verzweifelt versuchen und eine separate Verschlüsselung und Signaturerzeugung.

  

Ich möchte meinen öffentlichen Schlüssel in meiner Software enthalten die Unterschrift des Schlüssels zu entschlüsseln / lesen. Mir ist es egal, wer die Daten im Schlüssel lesen können, Ich kümmere mich nur, dass ich die einzige überprüfbare eine bin, die sie erzeugen kann.

Ja, heißt dies zur Gründung Vertrauen in dem öffentlichen Schlüssel. Allerdings ist Ihr Programmcode schützen sehr verschieden von Nachrichten zu schützen. Sie können ausführen Codesignierung , aber dann würden Sie brauchen etwas, th zu überprüfene Unterschrift außerhalb des Codes . Es gibt Betriebssysteme, die diese anbieten.

Es gibt Microsoft Authenticode zum Beispiel. Anwendung speichert wie die iStore und Android App-Store kann oder nicht Codesignatur verwenden, aber sie bieten eine gewisse Sicherheit, dass Ihre Anwendung nicht geklont oder zumindest nicht in dem Speicher geklont. Cryptography ist nicht immer die Lösung, nachdem alle.

Halten Sie Ihren Code vor einer geklonten / verändert an alle ist viel schwieriger, und Sie würden fest in DRM Gebiet sein, wenn Sie diesen Weg gehen.

  

Ist Unterzeichnung nützlich in diesem Szenario?

Ja, absolut. Es kann sicherlich dafür sorgen, helfen, dass die Nachrichten nur von Ihnen unterzeichnet wurden, wenn das Vertrauen in den öffentlichen Schlüsseln. Wenn es hilfreich sein kann, Ihre Anwendungscode / integrierten öffentlichen Schlüssel zur Authentifizierung hängt ganz von der Umgebung, die Sie erwarten, dass der Code in auszuführen.

Die Beantwortung dieser Frage in den Inhalt, die Fragesteller Absicht, die Lösung für Software-Lizenzierung zu verwenden war, sind die Anforderungen:

  1. No 3. Partei kann einen Lizenzschlüssel von decompiling der App
  2. produzieren
  3. Der Inhalt des Software-Schlüssels muss nicht sicher sein
  4. Software Schlüssel nicht lesbar ist

Eine digitale Signatur wird dieses Problem als die Rohdaten lösen, die den Schlüssel machen, kann mit einem privaten Schlüssel signiert werden, die es nicht menschlich lesbar macht, konnte aber decodiert werden, wenn Reverse Engineering. Aber der private Schlüssel ist sicher was bedeutet, dass niemand in der Lage sein, Lizenzen für Ihre Software zu machen (das ist der Punkt).

Denken Sie daran, Sie können keinen Fachmann aus dem Entfernen der Software-Sperren auf Ihrem Produkt verhindern. Also, wenn sie jede Version hacken, die freigegeben wird. Aber Sie wirklich nicht wollen, dass sie in der Lage sein, neue Schlüssel zu generieren für Ihr Produkt, das für alle Versionen gemeinsam genutzt werden kann.

Python Die PyNaCl Dokumentation hat ein Beispiel für ‚Digital Signature‘, die den Zweck Suite wird. http://pynacl.readthedocs.org/en/latest/signing/

und von Ursache NaCl Projekt C Beispiele

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top