kann ich einen privaten schlüssel als öffentlichen schlüssel verwenden und umgekehrt?
<p>ich habe code zum verschlüsseln von daten mit einem öffentlichen schlüssel und zum entschlüsseln mit einem privaten schlüssel. dies ist nützlich, wenn ein client daten an einen server senden möchte und weiß, dass nur der server sie entschlüsseln kann.</p><p>angenommen, ich möchte, dass der server daten mit dem schlüssel <em>privat</em> verschlüsselt und mit dem schlüssel <em>öffentlich</em> entschlüsselt, um daten zu verteilen, deren überprüfung überprüft werden kann richtiger server. kann ich den privaten schlüssel einfach veröffentlichen und den öffentlichen schlüssel geheim halten, anstatt den code zu ändern, um dies zu ermöglichen? beeinträchtigt dies die sicherheit des systems?</p>
<blockquote> <p>angenommen, der server soll daten mit dem privaten schlüssel verschlüsseln und mit dem öffentlichen schlüssel entschlüsseln, um daten zu verteilen, von denen überprüft werden kann, dass sie vom richtigen server stammen.</p> </blockquote><p>sie können dies tun - auf eine sehr vereinfachte ebene funktioniert die rsa-signatur (anmerkung, vereinfacht - es steckt noch ein bisschen mehr dahinter).</p><blockquote> <p>kann ich den privaten schlüssel einfach veröffentlichen und den öffentlichen schlüssel geheim halten, anstatt den code zu ändern, um dies zu ermöglichen? beeinträchtigt dies die sicherheit des systems?</p> </blockquote><p>sie <strong> müssen den privaten schlüssel überhaupt nicht </strong> veröffentlichen - rsa ist eine trapdoor-permutation, was bedeutet:</p><ul> <li>wenn sie mit einem öffentlichen schlüssel verschlüsseln, können sie mit dem privaten schlüssel entschlüsseln.</li> <li>wenn sie mit einem privaten schlüssel verschlüsseln, können sie mit einem öffentlichen schlüssel entschlüsseln.</li> </ul><p>daher unterstützt rsa sowohl das signieren als auch das verschlüsseln, wobei der endbenutzer nur über den öffentlichen schlüssel verfügt.</p><p>wenn der client in ihrem fall überprüfen möchte, ob daten vom server stammen, wenden sie den zweiten fall von rsa an und entschlüsseln die signaturdaten mit dem bereits vorhandenen öffentlichen schlüssel.</p><p>da es sich um eine permutation handelt, sollten sie ihren code außerdem überhaupt nicht ändern müssen. beide tasten sollten mit derselben funktion arbeiten. ich würde erwarten, dass jede anständige kryptobibliothek apis zur überprüfung von signaturen gemäß den unterschiedlichen standards hat - eine davon wäre wahrscheinlich eine gute wahl.</p><p>rsa labs bieten ein nice <a href="https://web.archive.org/web/20130718172549/https://www.rsa.com/rsalabs/node.asp?id=2182">erklärung hierfür</a> .</p><p>wenn sie dies zwischen servern erweitern oder die clientkommunikation überprüfen möchten, generieren sie schlüssel für jede entität und tauschen sie die öffentlichen aus. das verfahren kann dann an beiden enden angewendet werden.</p><p>theoretisch sind e und d austauschbar (weshalb rsa funktioniert) (man muss als geheim bezeichnet und geheim gehalten werden), aber p und q müssen <strong> immer </strong> sein geheim gehalten, da diese es ihnen ermöglichen, d von e abzuleiten und umgekehrt. sie müssen jedoch beim verständnis des privaten schlüssels äußerst vorsichtig sein - speichert ihre software p/q im privaten schlüssel? wenn ja, können sie es nicht so veröffentlichen, wie es ist. auch wenn ich austauschbar sage - sobald sie eines dieser paare (e oder d zusammen mit ihrem modul n) veröffentlicht haben, müssen sie das andere <em> mit ihrem leben</em> schützen. praktisch gesehen <a href="https://stackoverflow.com/questions/696472/given-a-private-key-is-it-possible-to-derive-its-public-key">wie graeme in den kommentaren verlinkt</a> e wird oft als kleiner/fester wert gewählt. mein kommentar, dass e/d austauschbar ist, trifft eindeutig nicht zu, wenn e leicht zu bestimmen ist. wenn sie so etwas tun, kann dies zu verwirrung und fehlimplementierung führen. verwenden sie eine bibliothek eines drittanbieters/veröffentlichen sie keine privaten schlüssel.</p>
<p>ich denke nicht, dass es sich um geheime oder sensible informationen handelt, z. b. "geheime informationen sind maskiert und sensible nicht". (die unterscheidung ist problematisch; viele geheimnisse müssen auch geteilt werden).</p><p>ich denke, cc- und ssn-informationen werden aus mehreren gründen nicht ausgeblendet. sie sind keine harte tatsache, aber dennoch sind hier einige:</p><ol> <li> <p>das zu tun, was alle anderen tun, überrascht den benutzer nicht. passwörter kamen lange vor webformularen und waren bereits maskiert. wenn sie in anmeldeformularen verwendet wurden, wurden sie auch maskiert. als das online-geschäft und die online-verwaltung hinzukamen, erforderte der stand der technik (papierformulare) (offensichtlich) die nicht maskierte eingabe sensibler informationen, sodass webformulare die gleiche wahl trafen.</p> </li> <li> <p>es wäre sehr einfach, einen fehler zu machen und eine falsche nummer einzugeben, wenn sie nicht sehen würden, was sie eingegeben haben. im falle eines falschen passworts ist dies nur leicht ärgerlich und sie erhalten sofortiges feedback. im fall anderer falsch sensibler daten kann dies weitere konsequenzen haben, die nicht sofort klar sind (z. b. die ablehnung einer anfrage an ein regierungsbüro aufgrund einer falschen ssn oder eine nicht durchgeführte zahlung - obwohl in den fällen cc und ssn dies wird normalerweise dadurch abgesichert, dass geprüft wird, ob die prüfsumme richtig ist, und sofortiges feedback gegeben wird, wenn dies nicht der fall ist.</p> </li> <li> <p>viele leute kennen ihre cc-nummer nicht aus dem speicher und kopieren sie von der eigentlichen kreditkarte. die nummer ist also sowieso für einen zuschauer sichtbar; das ausblenden des eingabefeldes würde nicht viel zum schutz der nummer am client-ende beitragen und verdient daher nicht die zusätzlichen schwierigkeiten, die durch 2 verursacht werden.</p> </li> <li> <p>auswirkung - eine gestohlene cc-nummer hat nicht unbedingt die gleiche auswirkung wie ein gestohlenes passwort, insbesondere wenn sie der ansicht sind, dass informationen, die durch einen blick über die schulter gestohlen wurden, höchstwahrscheinlich von personen gestohlen werden, die sie kennen (kollegen bei der arbeit, familienmitglieder, klassenkameraden) usw.) und möchten ihr passwort aus einem ganz bestimmten grund, der persönliche konsequenzen hätte. otoh, selbst wenn sie an ihrer cc-nummer interessiert wären, müssten sie den finanziellen schaden nicht in kauf nehmen, da die cc-firma ihn wahrscheinlich übernehmen würde. aus dem gleichen grund macht es ihnen nichts aus, einen kellner oder verkäufer ihre kreditkarte sehen zu lassen, obwohl er sie kopieren und an jemand anderen verkaufen könnte ...</p> </li> </ol><p>nummer 4 gilt jedoch möglicherweise nicht für andere arten von vertraulichen informationen.</p> sollte ein austausch zb privater daten notwendig sein, wird man für private nachrichten freigeschaltet.danke schön, das hilft mir weiter. Da musst du dich mit den Begriffen "digitale Signatur" (siehe <http://de.wikipedia.org/wiki/Digitale_Signatur>) und PKI bzw. Zertifikate auseinander setzen. Ist nicht sooo schwierig, wenn man einmal das Grundprinzip begriffen hat. Und es gibt auch genug Gratis-Lösungen wie z.B. PGP.


In einem Schnellverfahren erklärt:
Ein solcher digitaler "Schlüssel" besteht immer aus 2 Teilen, einem privaten Schlüssel (das ist dein Heiligtum, welches du nie weitergeben darfst) und einem öffentlichen Schlüssel (den müssen alle Beteiligten bekommen -> den musst du so viel wie möglich verbreiten bzw. sollte der auf einem Server im Internet für alle verfügbar gemacht werden).


Wenn du nun etwas verschlüsselst, musst du das **immer mit dem öffentlichen Schlüssel aller Empfänger** verschlüsseln (die musst du natürlich vorher von denen bekommen) -> denn nur diese können die E-Mail dann mit Hilfe ihres jeweiligen privaten Schlüssels wieder entschlüsseln.


Fazit: nur mit solchen Techniken lassen sich Manipulationen verhindern bzw. nachweisen. > 
> Das Briefgeheimnis und das Recht auf Privatsphäre (Geheimsphäre) schützt Briefeschreiber vor einer Veröffentlichung ihrer Briefe. 
> 
> 
> 


Korrekt, wenn du die Wörter "Briefgeheimnis und das" streichst. 



> 
> Wenn ich bsw. meinem Chef einen Brief schreibe, so darf dieser den Brief nicht einfach herumzeigen oder gar veröffentlichen.
> 
> 
> 


Im Grundsatz schon. Das kommt ganz auf den Inhalt des Briefes und die äußeren Umstände an.



> 
> Doch wie sieht das mit Briefen von Ämtern oder der Stadt aus. Unterliegen Behörden und Ämter ebenso diesem Privacy-Schutz, oder ist dies wegen des Amtes da anders. 
> 
> 
> 


Behörden, Ämter usw. genießen keinen Persönlichkeitsschutz, wohl aber die Mitarbeiter. Außerdem kann sich aus der Natur der rechtlichen und sachlichen Beziehung zueinander ein Anspruch auf Geheimniswahrung ergeben.



> 
> Kann ich ein Schreiben meiner Stadt auf meine Website stellen ohne vorher um Erlaubnis zu fragen?
> 
> 
> 


Im Grundsatz ja. Aber es gibt einige Schranken zu beachten:


1. Du solltest aber den Namen des Mitarbeiters (auch sein Kürzel) unkenntlich machen, da du gegen sein Persönlichkeitsrecht verstoßen könntest.
2. Du könntest aufgrund Vertrages oder Gesetzes oder aufgrund deiner Aufgabe oder der Art der Beziehung zu der Behörde zur Geheimhaltung verpflichtet sein.
3. Das Schreiben könnte urheberrechtlichen Schutz genießen (bei einer alltäglichen Mitteilung allerdings unwahrscheinlich). hallo,

jeder kann eine verschlüsselung entwickeln, die er selbst nicht brechen kann. das bedeutet allerdings keinesfalls, das diese sicher ist und einer cryptoanalyse standhält.

das erste, was mir an deinem chiffrierten text auffällt, ist das er nicht wirklich zufällig ist. verschlüsselte daten so… <p>zunächst einmal würde ich mich nicht als sicherheitsexperte bezeichnen, aber ich war in der lage, diese frage beantworten zu müssen. was ich herausgefunden habe, hat mich ein bisschen überrascht: <em> es gibt kein vollständig sicheres system</em>. nun, ich denke, ein völlig sicheres system wäre eines, bei dem alle server ausgeschaltet sind :)</p><p>jemand, der damals mit mir zusammenarbeitete, beschrieb das entwerfen eines sicheren systems in bezug auf <em> die messlatte höher legen</em> für eindringlinge. jede sicherungsebene verringert also die möglichkeit eines angriffs.</p><p>selbst wenn sie beispielsweise den privaten schlüssel perfekt sichern könnten, ist das system nicht <em> vollständig</em> sicher. die korrekte verwendung der sicherheitsalgorithmen und die aktualisierung der patches legen jedoch die messlatte höher. aber ja, ein supercomputer, der leistungsfähig genug ist und genügend zeit hat, kann die verschlüsselung unterbrechen. ich bin sicher, dass all dies verstanden wird, also werde ich die frage zurückbekommen.</p><p>die frage ist klar, also werde ich zuerst versuchen, jeden ihrer punkte anzusprechen:</p><blockquote> <p>angenommen, der schlüssel ist durch das sicherheitsmodell des dateisystems geschützt. aber was ist mit (böswilligen) superusern oder plattformen, die keine solche wiedergabetreue bieten?</p> </blockquote><p>ja, wenn sie etwas wie <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb204778%28v=vs.85%29.aspx">windows key store</a> oder einen kennwortverschlüsselten privaten tls-schlüssel verwenden, sind sie den benutzern ausgesetzt, die über das kennwort (oder den zugriff) auf die privaten schlüssel verfügen. aber ich denke, sie werden mir zustimmen, dass dies die messlatte höher legt. die dateisystem-acls bieten (wenn sie ordnungsgemäß implementiert sind) ein ziemlich gutes schutzniveau. und sie sind in der lage, ihre superuser persönlich zu überprüfen und zu kennen.</p><blockquote> <p>oder der schlüssel ist fest in software-binärdateien codiert, kann aber immer dekompiliert werden, und was ist mit open source-software oder interpretiertem code?</p> </blockquote><p>ja, ich habe fest codierte schlüssel in binärdateien gesehen. auch dies legt die messlatte ein wenig höher. jemand, der dieses system angreift (wenn es java ist), muss verstehen, dass java erzeugt bytecode (usw.) und versteht, wie man es dekompiliert, liest es. wenn sie eine sprache verwenden, die direkt schreibt beim maschinencode können sie sehen, dass dies die messlatte etwas höher legt. dies ist keine ideale sicherheitslösung, könnte aber ein gewisses maß an schutz bieten.</p><blockquote> <p>wenn der schlüssel generiert wird, müsste ein solcher algorithmus (vermutlich) deterministisch sein, und dann gilt das gleiche problem für den startwert.</p> </blockquote><p>ja, im wesentlichen wird der algorithmus dann zur privaten schlüsselinformation zum erstellen des privaten schlüssels. es müsste also jetzt geschützt werden.</p><p>ich denke, sie haben bei jeder sicherheitsrichtlinie ein kernproblem festgestellt: <strong> schlüsselverwaltung </strong>. die einrichtung einer schlüsselverwaltungsrichtlinie ist für die bereitstellung eines sicheren systems von zentraler bedeutung. und es ist ein <a href="http://en.wikipedia.org/wiki/key\_management">ziemlich breites thema</a> .</p><p>die frage ist also, wie sicher ihr system (und damit der private schlüssel) sein muss. wie hoch muss in ihrem system die messlatte höher gelegt werden?</p><p>wenn sie bereit sind zu zahlen, gibt es einige leute, die lösungen dafür finden. am ende haben wir ein <a href="http://en.wikipedia.org/wiki/hardware\_security\_module">hsm (hardware security module)</a> verwendet. es handelt sich im grunde genommen um einen manipulationssicheren server, der einen schlüssel in der hardware enthält. dieser schlüssel kann dann verwendet werden, um andere schlüssel zu erstellen, die für die verschlüsselung verwendet werden. die idee hier ist, dass (wenn richtig konfiguriert) der schlüssel <em> nie verlässt</em> das hsm. hsms kosten <em> viel</em>. in einigen unternehmen (z. b. beim schutz von kreditkartendaten) sind die kosten eines verstoßes jedoch viel höher. es gibt also ein gleichgewicht.</p><p>viele hsms verwenden schlüsselkarten aus der wartung und verwaltung der funktionen. ein quorum von schlüsselkarten (5 von 9, sagen wir) muss physisch in den server eingelegt werden, um einen schlüssel zu ändern. dies legt die messlatte also ziemlich hoch, indem nur dann ein verstoß zugelassen wird, wenn ein quorum von superusern zusammenarbeitet.</p><p>es gibt möglicherweise softwarelösungen, die ähnliche funktionen wie ein hsm bieten, aber ich weiß nicht, um welche es sich handelt.</p><p>ich weiß, dass dies nur einen weg zur beantwortung der frage darstellt, aber ich hoffe, dass dies hilft.</p> <blockquote> <p>openssl genrsa -out private.pem gibt mir eine pem-datei, die nur einen privaten schlüssel enthält</p> </blockquote><p>nicht wirklich. im prinzip kann rsa nur einen privaten schlüssel ohne öffentlichen schlüssel speichern, aber das von openssl verwendete rsaprivatekey-format (von pkcs1 alias rfcs 2313 2437 3447 <a href="https://tools.ietf.org/html/rfc8017#appendix-a.1.2">8017</a> ) speichert beide. die für andere asymmetrische algorithmen (dsa, dh, ecc) verwendeten formate haben ebenfalls diese eigenschaft. dies bedeutet, dass sie immer nur die privatekey-datei speichern und bei bedarf den publickey erhalten können. gpg macht das gleiche; die informationen zum öffentlichen schlüssel sind immer im "geheimen" schlüssel enthalten, wie sie aus historischen gründen genannt werden. openssh verwendet (meistens) die openssl-formate, daher ist dies keine nützliche beobachtung.</p><blockquote> <p>openssl rsa -in private.pem -outform pem -pubout -out public.pem gibt mir eine pem-datei, die einen öffentlichen schlüssel enthält</p> </blockquote><p>welches enthält <em> nur </em> den öffentlichen schlüssel. und ist so gut wie nutzlos, weil (1) es aus der privatekey-datei neu generiert werden kann und (2) die meisten anwendungen nicht nur den publickey, sondern stattdessen ein zertifikat verwenden.</p><blockquote> <p>nachdem ich diese beiden befehle ausgeführt habe, habe ich mein rs-256-schlüsselpaar (ist es der richtige name? die schlüssel sind meines wissens 2048 bit, warum also rs-256, nicht rs-2048?).</p> </blockquote><p>technisch gesehen ist es ein schlüsselpaar, aber wie oben führt openssl im grunde das konzept des schlüsselpaars mit dem privaten schlüssel zusammen und unterscheidet nur den öffentlichen schlüssel - der zu unterscheiden ist, weil er öffentlich ist.</p><p>ja, kryptoschlüssel werden fast immer in bits gemessen. der schemaname rs256 (kein bindestrich) wird in json web signature (jws) und json web token (jwt) verwendet, um die rsa-signatur (insbesondere das von pkcs1 definierte rsa-signaturschema rsassa-pkcs1-v1\_5) <em> mit sha zu bezeichnen -256 für den hash </em>. dies hängt nicht mit der größe des rsa-schlüssels zusammen und kann mit jeder (implementierten) größe verwendet werden. der beispielschlüssel für rs256 in rfc7517 ist 1024-bit - obwohl rsa-1024 heute keinen ausreichenden sicherheitsspielraum bietet und von behörden wie nist und cabforum (und damit den meisten webbrowsern) seit mehreren jahren verboten ist. die rsa-signatur (und auch die rsa-verschlüsselung) wird in vielen anderen anwendungen als jws/jwt verwendet.</p><blockquote> <p>kann ich die 2 dateien, die ich (private.pem + public.pem) habe, bereits als zertifikat betrachten?</p> </blockquote><p>zunächst eine klarstellung: 'zertifikat' ist ein allgemeines konzept, das in vielen zusammenhängen verwendet wird. bei krypto sind die interessierenden zertifikate normalerweise public-key-zertifikate, die einen public-key an eine identität (oder manchmal eine rolle) mit einigen verwandten attributen binden, und die mit abstand häufigsten sind die durch <a href="https://en.wikipedia.org/wiki/x.509">definierten public-key-zertifikate x.509</a> , ein standard, der 1988 von der damaligen ccitt (jetzt itu-t) erstellt und seitdem von vielen standardorganisationen verbessert und nützlicher, aber nicht grundlegend anders gemacht wurde. die internetstandards für zertifikate basieren auf x.509 und werden als public key infrastructure unter verwendung von x.509, abgekürzt pkix, bezeichnet. x.509 repräsentiert seine daten wie einige andere computerstandards mithilfe einer generischen syntax namens abstract syntax notation 1, abgekürzt <a href="https://en.wikipedia.org/wiki/abstract\_syntax\_notation\_one">asn.1</a> .</p><p>nachdem dies gesagt wurde, nein. <strong> ein public-key/x.509-zertifikat <em> enthält </em> einen publickey, aber es ist nicht nur ein publickey. </strong> es enthält viele andere informationen, die für die art und weise, wie sie verwendet werden, von entscheidender bedeutung sind, obwohl der öffentliche schlüssel wohl die wichtigste einzelne information ist. ein zertifikat wird <em> für </em> einen öffentlichen schlüssel erstellt, der normalerweise als zertifikatsignierungsanforderung (auch als csr oder einfach als anforderung bezeichnet) von einer entität namens <a href="https://en.wikipedia.org/wiki/certificate\_authority">certificate authority</a> oder ca verpackt wird, die das zertifikat digital signiert den schlüssel der zertifizierungsstelle, damit niemand ihn ändern kann, und somit kann jedes programm, das ihn verwendet, ihm vertrauen. grundsätzlich kann jeder als zertifizierungsstelle fungieren, und insbesondere das openssl-befehlszeilenprogramm kann die technischen vorgänge ausführen, die eine zertifizierungsstelle ausführt, z. b. das ausstellen von zertifikaten. in den meisten situationen hängt der wert und die nützlichkeit eines zertifikats jedoch davon ab, wie gut und umfassend der ausstellenden zertifizierungsstelle vertraut wird. daher sind die erfolgreichsten zertifizierungsstellen diejenigen, die sich als vertrauenswürdig etabliert haben, z. b. digicert (jetzt einschließlich symantec) -verisign, comodo, godaddy usw.</p><p>als sonderfall ist es möglich, ein selbstsigniertes zertifikat zu haben, das mit einem eigenen schlüssel anstelle des schlüssels einer zertifizierungsstelle signiert wird. dieses zertifikat kann kein vertrauen wie eines von einer echten zertifizierungsstelle vermitteln, da es nicht effektiv gegen substitution geschützt ist. es kann jedoch auch dann erstellt werden, wenn sie eine zertifizierungsstelle nicht kontaktieren und/oder bezahlen können, und es kann normalerweise mit verarbeitet werden manuelle genehmigung oder überschreibung durch programme, die normalerweise ein zertifikat verwenden oder erfordern.</p><blockquote> <p>was ist der inhalt von cer-, crt- oder p12-dateien? ich kann keine wirklichen beispiele für diese dateien finden.</p> </blockquote><p>cer und crt werden (beide) häufig als erweiterungen für eine datei mit einem x.509-zertifikat verwendet und können in beiden fällen je nach dateisystem verwendet werden. für den dateiinhalt werden zwei gängige codierungen verwendet: "der", eine von asn.1 definierte binäre codierung (distinguished encoding rules); und <a href="https://en.wikipedia.org/wiki/privacy-enhanced\_electronic\_mail">"pem"</a> , das den binären der in base64 konvertiert, in zeilen mit geeigneter größe unterteilt und mit header- und trailer-zeilen versehen, was für personen bequemer ist, insbesondere für dinge wie ausschneiden und einfügen. pem wird so genannt, weil diese codierung ursprünglich für privacy enhanced (e) mail definiert wurde, ein schema, das von anderen e-mail- und nachrichtentechnologien ersetzt wurde, dieses format jedoch weiterhin verwendet wird. diese codierungen sehen sehr unterschiedlich aus, enthalten jedoch genau dieselben informationen (sofern sie nicht beschädigt sind), und viele programme, die sich mit zertifikaten befassen, können beide lesen. von openssl geschriebene pem-dateien enthalten häufig kommentarinformationen vor dem header oder nach dem trailer. programme sollten dies ignorieren, aber manchmal werden sie verwirrt und sie müssen die überflüssigen informationen entfernen. achten sie unter windows auch darauf, nicht das 'utf-8'-format zu verwenden, das normalerweise ein <a href="https://en.wikipedia.org/wiki/byte\_order\_mark">byte order mark</a> hinzufügt, das auf dem display nicht sichtbar ist, aber ein programm stört, das die datei liest.</p><p>obwohl pem häufig für zertifikate verwendet wird und viele pem-dateien zertifikate sind, sollten sie beachten, dass pem auch für viele andere zwecke verwendet wird. nehmen sie nicht an, dass eine pem-datei ein zertifikat ist. überprüfen sie stattdessen die kopfzeile, in der in diesem fall bequemerweise <code>begin certificate</code> oder manchmal <code>begin x509 certificate</code> steht. siehe <a href="https://tools.ietf.org/html/rfc7468">rfc7468</a> für viel mehr details dazu.</p><p>p12 wird häufig verwendet, um dateien im format <a href="https://tools.ietf.org/html/rfc7292">pkcs12 aka pfx</a> zu identifizieren, was ganz anders ist. obwohl der pkcs12-standard eine große anzahl von optionen unterstützt, wird er normalerweise verwendet, um einen privaten schlüssel plus des entsprechenden zertifikats plus zu enthalten. in den meisten fällen handelt es sich um ein oder mehrere "ketten" - oder "zwischen" -zertifikate, die zur bildung einer vertrauenskette erforderlich sind überprüfen sie das endentitätszertifikat. in der praxis sind pkcs12-dateien immer binär, obwohl es keinen technischen grund gibt, warum sie nicht pem-codiert oder auf andere weise benutzerfreundlicher gemacht werden könnten.</p><blockquote> <p>wie generiere ich cer, crt oder p12 aus meinen 2 pem-dateien, die ich habe?</p> </blockquote><p>um ein zertifikat zu erhalten, müssen sie entweder eine zertifizierungsstelle (entweder eine etablierte oder eine von ihnen erstellte diy) verwenden oder ein selbstsigniertes zertifikat erstellen. je nachdem, welche software (und ggf. ca) sie verwenden, gibt es wahrscheinlich hunderte von variationen, aber für openssl und <em> die meisten </em> cas die <em> üblichen </em> ) verfahren ist:</p><ol> <li>erstellen sie eine csr mit <code>openssl req -new -key privatekey [... other options] &gt;csr</code></li> </ol><p>weitere informationen finden sie in der manpage zu <code>req</code>. wenn sie das zertifikat <em> für ssl/tls einschließlich https </em> verwenden möchten, geben sie als 'common name' den (oder einen) namen an, unter dem auf den server zugegriffen wird. dies ist normalerweise der vollständige name qualifizierter domainname (fqdn). wenn sie das zertifikat für andere anwendungen verwenden möchten, hängen die erforderlichen identitätsinformationen von den anwendungen ab.</p><ol start="2"> <li>senden sie für eine echte zertifizierungsstelle die csr zusammen mit dem identitätsnachweis oder einer anderen autorisierung und möglicherweise der erforderlichen zahlung an die zertifizierungsstelle (häufig auf einem webformular, das pem bequem macht).</li> </ol><p>sie sollten im gegenzug ein neu ausgestelltes 'end-entity'-zertifikat (das ihren öffentlichen schlüssel und ihre identität enthält) und normalerweise ein oder zwei zertifikate mit öffentlichen schlüsseln und identität (en) für zwischenzertifizierungsstellen erhalten, die zum erstellen der vertrauenskette verwendet werden . dies können separate dateien (entweder der oder pem) oder eine verkettung (nur pem) oder ein bestimmter fall des <a href="https://tools.ietf.org/html/rfc2315">pkcs7</a> -standards (signeddata ohne daten oder signaturen, nur zertifikate) sein, die normalerweise als p7b oder p7c bezeichnet werden.</p><p>2 '. oder mach das selbst. erstellen sie einen ca-schlüssel und ein zertifikat (nur einmal) und verwenden sie dann entweder <code>openssl ca ...</code> oder <code>openssl x509 -req -ca -cakey ...</code>, um die csr zu lesen und ein zertifikat unter ihrer eigenen ca auszustellen.</p><p>dieses zertifikat kann nur mit systemen und programmen verwendet werden, die von ihnen selbst gesteuert werden, oder mit personen, die ihnen implizit vertrauen <em> und </em>. sie können ihr ca-zertifikat technisch installieren. dies ist normalerweise eine kleine gruppe, manchmal eine leere einer. achten sie auch darauf, dass sie ihrem ca-zertifikat und dem end-entity-zertifikat nicht denselben namen geben, indem sie beispielsweise die standardeinstellungen in <code>req</code> akzeptieren. wenn sie dies tun, können die resultierenden zertifikate nirgendwo verwendet werden.</p><ol start="3"> <li>verwenden sie das zertifikat nach bedarf zusammen mit dem privaten schlüssel und den kettenzertifikaten. dies <em> kann </em> das kombinieren zu einem pkcs12 unter verwendung von <code>openssl pkcs12 -export</code> beinhalten.</li> </ol><p>wie oben erwähnt, können sie anstelle eines von der zertifizierungsstelle ausgestellten zertifikats ein selbstsigniertes zertifikat erstellen. ersetzen sie die schritte 1 und 2/2 'durch den einzelschritt: <code>openssl req -new -x509 -key privatekey ... &gt;cert</code></p><p>beachten sie das hinzufügen des flags <code>-x509</code>, und auf der manpage werden zahlreiche zusätzliche optionen beschrieben. dies hat alle eigenschaften und einschränkungen einer diy-zertifizierungsstelle sowie mehr: sie (und/oder ihre freunde) können das diy-zertifizierungsstellenzertifikat nicht nur einmal installieren, sondern müssen jedes endentitätszertifikat separat installieren und den vorgang jederzeit wiederholen ihre zertifikate müssen ersetzt werden, da sie ablaufen oder relevante informationen geändert werden.</p><blockquote> <p>ich habe einige informationen gesehen, dass die p12-datei durch ein passwort geschützt werden kann - was ist der grund, diese datei mit einem passwort zu schützen -, dass das passwort erneut irgendwo gespeichert werden muss. wir speichern die p12-datei bereits an einem sicheren ort, auf den niemand zugriff haben sollte nach rechts?</p> </blockquote><p>das passwort muss nicht unbedingt gespeichert werden. programme können bei bedarf dazu auffordern (und das programm <code>openssl</code> tut dies insbesondere). obwohl pkcs12/pfx heute häufig zum speichern verwendet wird, war es ursprünglich für die übertragung eines privaten schlüssels mit zertifikaten von einem system auf ein anderes vorgesehen, ein prozess, der sehr oft nicht sicher ist. selbst für speicher, systeme und orte, die sie für sicher halten, erweisen sich manchmal als nicht sicher, und die gründliche verteidigung der verschlüsselung des privaten schlüssels lohnt sich. aber in einigen fällen ist das passwort nur ein kleines bisschen zusätzliche arbeit ohne wirklichen nutzen.</p><blockquote> <p>ich habe ein beispiel gesehen, in dem 1 pem-datei sowohl öffentliche als auch private schlüssel enthielt. gibt es nicht eine entschiedene struktur von pem? kann ich dort die gewünschten schlüssel ablegen?</p> </blockquote><p>ob mehr als ein objekt aus einer einzelnen pem-datei gelesen und somit sinnvoll in dieser gespeichert werden kann, hängt vom programm ab, das das lesen durchführt. openssl kann in <em> den meisten </em> (aber nicht allen) fällen damit umgehen. daher ist die verwendung solcher dateien mit openssl (und programmen, die die openssl-bibliothek aufrufen) mäßig häufig. andere programme und bibliotheken können unterschiedlich sein. wie oben ist das speichern des öffentlichen schlüssels als solchen fast nie sinnvoll. speichern von z.b. der privatekey und das <em> zertifikat </em> oder alle zertifikate in der kette können nützlich sein. programme wie apache httpd und nginx unterstützen dies (benötigen es jedoch nicht).</p><blockquote> <p>ich sah auch eine pem-datei mit " begin certificate " und " end certificate ". was ist das für ein zertifikat?</p> </blockquote><p>siehe oben für zertifikate im allgemeinen. wenn sie die details eines bestimmten zertifikats wissen möchten (den namen des schlüsselbesitzers, der als "betreff" bezeichnet wird; den öffentlichen schlüssel; den zeitraum, in dem das zertifikat gültig ist; die ausstellende zertifizierungsstelle und seine seriennummer usw.), können sie verwenden <code>openssl x509 -text &lt;file</code> oder abhängig von ihrem system können normalerweise mehrere andere programme zertifizierungsdetails anzeigen. unter windows für <code>.cer .crt</code> können sie einfach auf eine datei doppelklicken (oder sie im dialogfeld 'ausführen' oder im befehl <code>start</code> in cmd benennen), und ein dialogfeld mit einer registerkarte details wird angezeigt.</p> <h2>tl; dr</h2><p>tor bietet anonymes surfen im internet, jedoch keine sicherheit. vpn-dienste bieten sicherheit (art) und anonymität, aber die anonymität kann je nach dienst stärker in frage gestellt werden. da sie darauf angewiesen sind, dass sie keine informationen protokollieren, die möglicherweise auf sie zurückgeführt werden können oder nicht.</p><h2>vpns</h2><p><strong> traditionell </strong><br> ein traditionelles virtuelles privates netzwerk erweitert ihren isp nicht. ein vpn erweitert ein vorhandenes privates netzwerk über ein öffentliches netzwerk. angenommen, mein unternehmen verfügt über ein privates netzwerk mit e-mail-servern, webservern (intranet) und dns-setup für unternehmensbezogene dienste. es ist ein privates netzwerk nur für mitarbeiter des unternehmens. einige mitarbeiter möchten jedoch von zu hause aus arbeiten. ein vpn ist so eingerichtet, dass mitarbeiter <strong> sicher </strong> eine remote-verbindung zum privaten netzwerk herstellen können. dies bietet zwei funktionen:</p><ol> <li>authentifizierung - benutzer legen ihre anmeldeinformationen vor, um zugriff auf das vpn zu erhalten</li> <li>verschlüsselung - der gesamte tunnel zwischen dem remotebenutzer und dem gateway des privaten netzwerks ist verschlüsselt.</li> </ol><p>nehmen sie die letzte aussage: "der gesamte tunnel zwischen dem remote-benutzer und dem gateway des privaten netzwerks ist verschlüsselt." sobald sie das gateway durchlaufen haben, ist die kommunikation unverschlüsselt. es sei denn, die dienste innerhalb des privaten netzwerks selbst verwenden ein anderes mittel zur sicheren kommunikation.</p><p><em> beachten sie, dass dieses setup keine anonymität bietet.</em> tatsächlich weiß das unternehmen genau, welche ips mit seinem privaten netzwerk verbunden sind.</p><p><strong> vpn-dienste </strong><br> heutzutage scheint vpn viele bedeutungen zu haben, und online/cloud/[internet-schlagwort hier einfügen] haben komplizierte dinge. wir sehen jetzt fragen: <a href="http://torrentfreak.com/which-vpn-services-take-your-anonymity-seriously-2014-edition-140315/">"welches vpn nimmt ihre anonymität ernst?"</a> was passiert ist, ist, dass vpn-dienste zu einer art "sicherem anonymitätsdienst" geworden sind. ein dienst stellt eine sichere kommunikation zu einem proxyserver bereit, der ihre kommunikation dann an ein beliebiges ziel weiterleitet.</p><p>dies ist ähnlich wie bei einem herkömmlichen vpn, nur dass die aussage "ein vpn erweitert ihren isp" jetzt ein bisschen wahr ist. jetzt verschlüsseln sie nur noch die erste hälfte ihrer kommunikation. es <strong> erweitert </strong> in dem sinne, dass sie auf websites und dienste zugreifen können, die sie aufgrund ihres geografischen standorts normalerweise nicht können. aber "erweitert" ist wirklich nicht das richtige wort.</p><hr><p>nehmen wir zum beispiel <a href="https://www.expressvpn.com/?a\_aid=zpeti&amp;data1=top10">expressvpn</a> , es wirbt für folgendes:</p><ol> <li>verschlüsseln sie ihren internetverkehr und verbergen sie ihre ip-adresse vor hackern und spionen.</li> <li>greifen sie ohne geografische einschränkungen oder zensur auf websites oder apps zu.</li> </ol><p>nehmen sie "verschlüsseln sie ihren internetverkehr" aus der ersten anweisung heraus, und sie haben im grunde einen anonymen proxy. jetzt, da der tunnel verschlüsselt ist, handelt es sich um ein vpn zu ihrem anonymen proxy (gateway), das ihren datenverkehr dann an das öffentliche internet weiterleitet.</p><h2>tor browser</h2><p><strong> zwiebel-routing </strong><br></p><p>das zwiebel-routing wurde entwickelt, um eine vollständige <em> anonymität</em> für eine verbindung bereitzustellen. dies wird durch verschlüsselung erreicht. drei verschlüsselungsebenen. bei verwendung des tor-netzwerks wird ein pfad mit einem <em> minimum</em> von 3 knoten bestimmt (kann mehr sein). verschlüsselungsschlüssel werden eingerichtet und zwischen ihnen und allen drei knoten ausgetauscht. allerdings haben nur sie alle verschlüsselungsschlüssel. sie verschlüsseln ihre daten mit jedem schlüssel des knotens, beginnend mit dem letzten knoten (ausgangsknoten) und endend mit dem ersten (eingangsknoten). während sich ihre daten durch das netzwerk bewegen, wird eine verschlüsselungsebene abgezogen und an den nächsten knoten weitergeleitet.</p><p>wie sie sehen können, entschlüsselt der exit-knoten die letzte ebene und leitet ihre daten an ihr ziel weiter. das heißt, ihre daten sind im "klartext"<sup>1</sup> zu diesem zeitpunkt ist jedoch vollständige anonymität erreicht. bei mindestens 3 knoten kennt kein knoten sowohl die quelle <em> als auch</em> ziel.</p><p><strong> anonymität nicht sicherheit </strong><br> tor verspricht keine sichere kommunikation. die verschlüsselung wird nur verwendet <strong>, um die anonymität zwischen den knoten zu gewährleisten </strong>. andernfalls werden ihre daten nicht verschlüsselt. aus diesem grund wird dringend empfohlen, https-fähige websites während der verwendung von tor zu verwenden. wie @lieryan in einem kommentar eines anderen threads erwähnt hat, wird durch das senden von personenbezogenen daten über tor ohne andere sicherheitsmaßnahmen die von tor bereitgestellte anonymität verletzt.</p><h2>verkehrssichtbarkeit</h2><p>wenn sich ein administrator im netzwerk befindet, kann er ihren datenverkehr sehen. nehmen wir eine situation mit einem vpn: sie haben ihren remote-laptop r und ihr privates netzwerk-gateway/ihren sicheren anonymen proxy (g). jetzt haben sie eine private netzwerk-ip, die von r nach g verschlüsselt ist. ein netzwerkadministrator, der auf g sitzt, kann ihren klartext sehen<sup>1</sup>. wie oben erwähnt, wird der "klartext" wirklich verschlüsselt, wenn sie ein anderes sicheres protokoll wie ssl/tls über den vpn/vpn-dienst verwenden, und der netzwerkadministrator sieht nur verschlüsselte daten.</p><p>dies hängt also wirklich davon ab, wo sich der netzwerkadministrator in der verbindung befindet und ob sie ein sekundäres sicheres protokoll unter dem vpn verwenden oder nicht. dieselbe logik gilt für tor. denn wie bereits erwähnt, wird die verschlüsselung nur zur wahrung der anonymität verwendet.</p><p>sowohl herkömmliche vpns als auch vpn-dienste sollen vor <strong> externer sichtbarkeit </strong> im netzwerk schützen. keiner von beiden schützt sie vor <strong> autorisierten administratoren </strong> <em> für das netzwerk, in dem sie sich befinden</em>. es geht darum, ihre daten vor unbefugten augen zu schützen. selbst mit ssl/tls sieht eine website, die sie besuchen, ihren entschlüsselten datenverkehr. es muss, um die anfrage zu bearbeiten. administratoren auf dieser website können dieselben anfragen sehen und/oder protokollieren. es sind die ursprünglich und dazwischen verwendeten sicherheitsprotokolle, die den größten unterschied in der sicherheit der kommunikation ausmachen.</p><hr><p><sup>1</sup> es ist klartext, soweit die gesendeten daten hier zu sehen sind. wenn die daten vor dem zwiebel-routing mit ssl/tls verschlüsselt werden, werden die verschlüsselten daten an dieser stelle angezeigt.</p> <p>die kurze antwort lautet nein. es sollte kein problem geben, da <em> email</em> ein gültiger und <a href="https://www.iana.org/assignments/jwt/jwt.xhtml">registrierter</a> <a href="https://tools.ietf.org/html/rfc7519#section-4.2">öffentlicher anspruch</a> ist.</p><blockquote> <p>ich habe eine benutzer-db, in der die eindeutige id jedes benutzers seine e-mail-adresse ist ...</p> </blockquote><p>nun, es gibt eine <em> <a href="https://tools.ietf.org/html/rfc7519#section-4.1">geschützte behauptung</a> </em> für die benutzer-id. der anspruch <code>sub</code>.</p><blockquote> <p><strong> 4.1.2. "sub" (betreff) anspruch </strong></p> <p>der anspruch "sub" (subjekt) identifiziert den auftraggeber, der gegenstand des jwt ist. die ansprüche in einem jwt sind normalerweise aussagen über das thema. <strong> der betreffwert muss entweder so festgelegt sein, dass er im kontext des emittenten lokal eindeutig oder global eindeutig ist </strong>. <strong> die bearbeitung dieses anspruchs ist in der regel anwendungsspezifisch </strong>. der wert "sub" unterscheidet zwischen groß- und kleinschreibung und enthält einen stringoruri-wert. die verwendung dieses anspruchs ist optional.</p> </blockquote><p>vielleicht wäre es besser, den anspruch <code>sub</code> anstelle von <code>email</code> zu verwenden, da die e-mail in ihrem system eine id ist und sie sie wahrscheinlich unabhängig vom format als solche behandeln möchten.</p><p>nichts hindert sie jedoch daran, sowohl <code>sub</code> als auch <code>email</code> zu implementieren. das ist auch anwendungsspezifisch.</p><p>unter sicherheitsgesichtspunkten sollten die hauptanliegen darin bestehen, <a href="https://en.wikipedia.org/wiki/transport\_layer\_security"> tls </a> (https) und <a href="https://www.owasp.org/index.php/json\_web\_token\_(jwt)\_cheat\_sheet\_for\_java#other\_cheatsheets">vorzeichen/verschlüsselung des tokens</a> zu implementieren =.</p> <p>leider gibt es keine "richtige" antwort auf ihre frage. richtlinien zur vorratsdatenspeicherung sind spezifisch für die anforderungen eines unternehmens und werden häufig aus der notwendigkeit heraus implementiert, <a href="https://www.secureworks.com/blog/generalfive-things-to-consider-when-implementing-a-log-management-strategy">verschiedene gesetzliche anforderungen</a> einzuhalten, die je nach art der gespeicherten daten sowie der gerichtsbarkeit variieren dass die daten unter fallen.</p><p>das aufbewahren von protokolldaten kann eine post-mortem-analyse ermöglichen, wenn ein verstoß festgestellt wird, auf den sie in ihrer frage hinweisen. aufbewahrte daten können jedoch auch ein eigenständiges sicherheitsrisiko darstellen, wenn die protokolle vertrauliche informationen enthalten. daher müssen bei bedarf schritte unternommen werden, um protokolldateien zu sichern. der andere offensichtliche faktor im spiel sind die kosten für die aufbewahrung der protokolle. abhängig von den verfügbarkeitsanforderungen sind verschiedene sicherungslösungen möglicherweise kostengünstiger als andere, z. b. wenn alte protokolle nicht auf dem bandspeicher gespeichert werden, anstatt festplattenredundanz zu verwenden.</p>