Jak převést PGP privátní a veřejný klíč do jiného počítače?




Četl jsem [tento článek, který vysvětlil velmi dobře, jak správně nastavit PGP na OS X](http://www.robertsosinski.com/2008/02/18/working-with-pgp-and-mac-os-x/) , ale mám v plánu použít generované klíče pro podepisování git zavazuje, takže jsem přijít musím převést klíče k mému druhému počítači. Je to správně? a pokud ano, jak mám jít o přenos klíče?
Ano, budete muset převést klíče. Mac a Linux fungují stejně, ukládání klíče `~/.gnupg`. Nejbezpečnější způsob, jak přenést soubory je použití `scp`(část SSH):



```
scp -rp ~/.gnupg othermachine:

```

Nicméně, budete muset mít `ssh`práci jako první.


Přenos je, řekněme, USB flash disk není tak skvělý nápad, protože váš soukromý klíč bude zanechal na této jednotce i poté, co jste odstranili soubor. I když je chráněna přístupovým heslem, pokud se někdo dostal do rukou kopie souboru klíčů mohli připojit dlouhotrvající útok hrubou silou na něj na svém lesiure.


Nevím o umístění adresáře systému Windows. Dokumentace gpg řekne, a obsah pak bude téměř jistě být stejné.


Kopírování celé klíčenku je rychlá a snadná, ale někdy chcete být schopen se pohybovat jednotlivé klíče mezi stroji bez přepisování celý klíčenku a ztrátě klíče, které již existují. Kopírování jednotlivých kláves volitelně může být provedeno s `gpg --export-secret-key`a `gpg --import`. Pokud máte SSH přístup k cílovému počítači, můžete to udělat s trubkou a nepotřebují k ukládání průběžném klíč kdekoliv:


Pokud jste na počítači, který již má klíč:



```
gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import

```

Pokud jste na počítači, který potřebuje klíč:



```
ssh othermachine gpg --export-secret-key SOMEKEYID | gpg --import

```

Pokud `gpg`není v jednom z výchozích míst na vzdáleném počítači (např je v `/opt/local/bin`počítači Mac), budete muset dát svou plnou cestu k ssh, nebo symbolický odkaz do jednoho ze standardních místech, jako jsou `/usr/local/bin`.


Všimněte si, že data, která je přenesena je stále chráněn přístupové heslo a klíč bude mít stejné přístupové heslo do místa určení, jak tomu bylo u zdroje. Chcete-li mít různé hesel v každém místě, budete muset změnit přístupové heslo na místo určení, nebo ji změnit dočasně u zdroje před exportem. Potřeboval jsem sdílet tajný klíč s kolegou, s cílem dát mu možnost aktualizovat si Debian balíček repo oba řídit, ale nechtěl jsem se podělil o své přístupové heslo s ním. Tak jsem změnil přístupové heslo na něco dočasného, ​​poslal mu exportovaný klíč (podle gpg šifrované e-mailu!), Řekl mu dočasné heslo ústně, a požádal ho, aby nastavit nové přístupové heslo ihned po importu klíč. Pak jsem změnil přístupové heslo na mém kopie klíče zpět na to, co to bylo původně.
Proč se ptáš na to stejné pořád dokola - odpověď s návodem jak převést disk na gpt jsi dostal včera - tak to laskavě udělej.PS: Toto není problém který se řeší několik dní..... Máš nastavenou domácí/pracovní síť neboveřejnou? V pracovní/domácí je ten port otevřený, ve veřejné zavřený. Když nastavíš veřejnou (zavřeš ten port), tak nebudeš moci kopírovat data z počítače na počítač.Nebezpečné je to v tom ohledu, že když se ti dostane ramsonware na jeden počítač, zašifruje ti rovnou i sdílené složky na druhém počítači, pokud tam máš povolený přístup. <blockquote> <p>řekněme však, že chci, aby server šifroval data pomocí soukromého klíče a dešifroval je pomocí veřejného klíče, což je způsob distribuce dat, o kterých lze ověřit, že pocházejí ze správného serveru.</p> </blockquote><p>můžete to udělat - je to na velmi zjednodušující úrovni, jak funguje podepisování rsa (poznámka: zjednodušující - je toho o něco více).</p><blockquote> <p>namísto úpravy kódu, aby to bylo možné, mohu jednoduše publikovat soukromý klíč a udržet veřejný klíč v tajnosti? ovlivňuje to bezpečnost systému?</p> </blockquote><p>vy <strong> nemusíte </strong> vůbec publikovat soukromý klíč - rsa je permutace trapdoor, což znamená:</p><ul> <li>pokud zašifrujete veřejný klíč, můžete dešifrovat soukromým klíčem.</li> <li>pokud zašifrujete soukromý klíč, můžete jej dešifrovat pomocí veřejného klíče.</li> </ul><p>rsa tedy podporuje provádění podpisu i šifrování spoléhající se na to, že koncový uživatel má pouze veřejný klíč.</p><p>pokud si klient přeje ověřit data pocházející ze serveru, použijete druhý případ rsa a dešifrujte data podpisu pomocí veřejného klíče, který již máte.</p><p>navíc, protože se jedná o permutaci, neměli byste svůj kód vůbec upravovat. obě klávesy by měly fungovat pomocí stejné funkce. očekával bych, že každá slušná krypto knihovna bude mít api pro ověřování podpisů podle měnících se standardů, které existují - jedním z nich by pravděpodobně byla dobrá sázka.</p><p>rsa labs poskytují nice <a href="https://web.archive.org/web/20130718172549/https://www.rsa.com/rsalabs/node.asp?id=2182">vysvětlení</a> .</p><p>pokud to chcete rozšířit mezi servery nebo ověřit komunikaci klienta - vygenerujte klíče pro každou entitu a vyměňte veřejné. proces lze poté použít na obou koncích.</p><p>teoreticky jsou e a d vzájemně zaměnitelné (proto rsa funguje) (jeden musí být označen jako tajný a udržovaný v tajnosti), ale p a q musí <strong> vždy </strong> být udržované v tajnosti, protože vám umožňují odvodit d z e a naopak. při pochopení soukromého klíče však musíte být velmi opatrní - ukládá váš software v soukromém klíči p/q? pokud ano, nemůžete jej publikovat tak, jak je. také, když řeknu zaměnitelným - jakmile jednou publikujete jeden z těchto párů (e nebo d spolu s vaším modulem n), musíte chránit druhého <em> svým životem</em>. prakticky řečeno <a href="https://stackoverflow.com/questions/696472/given-a-private-key-is-it-possible-to-derive-its-public-key">jak graeme v komentářích odkazuje</a> e je často vybíráno jako malá/pevná hodnota. můj názor na zaměnitelnost e/d se zjevně nevztahuje, pokud je e snadno určitelné. dělat takovou věc má tedy potenciál k záměně a nesprávnému provedení. použijte knihovnu třetích stran/nezačněte publikovat soukromé klíče.</p> <p>nejsem si jistý, zda váš soukromý klíč bude fungovat v ubuntu, ale stojí za to. stačí zkopírovat klíče do <code>/home/yourname/.ssh/</code> pojmenujte soukromý klíč jako <code>id\_rsa</code> a veřejný klíč jako <code>id\_rsa.pub</code>.</p><p>pokud to nefunguje, můžete si vytvořit vlastní ssh pár klíčů pomocí <code>ssh-keygen</code> a zkopírujte nový veřejný klíč na server a ssh následovně</p><pre><code>ssh -i ~/.ssh/id\_rsa\_ubuntu.pub &lt;hostname&gt; </code></pre><p>s tím jsem nehrál, ale slyším, že ssh-agent může být také použit ke správě ssh-klíčů.</p> <p>záleží na tom, jak moc chcete oddělit role.</p><p><strong> základní systém: </strong> váš „podpis“ je <a href="http://en.wikipedia.org/wiki/message\_authentication\_code"> mac </a> . „klíč api“ je tajná hodnota, se kterou se sdílí server a uživatel. normální mac algoritmy jako <a href="http://en.wikipedia.org/wiki/hmac"> hmac </a> mohou používat libovolné sekvence bitů jako klíč, takže klíč lze snadno vygenerovat pomocí <code>/dev/urandom</code> (linux, * bsd , macos x), volání <code>cryptgenrandom()</code> (win32) nebo pomocí <code>java.security.securerandom</code> (java).</p><p><strong> vylepšený systém: </strong> váš podpis je skutečný <a href="http://en.wikipedia.org/wiki/digital\_signature">digitální podpis</a> . to má smysl, pokud chcete oddělit generátor klíčů (který může vytvářet klíče, které bude server akceptovat), od samotného serveru (který ověřuje příchozí podpisy). klíče pro algoritmy podpisu jsou matematické objekty se spoustou vnitřní struktury a každý algoritmus zahrnuje specifický algoritmus generování klíčů. použijte knihovnu, která již implementuje potřebné bity (např. <a href="http://www.openssl.org/">openssl</a> ).</p><hr><p><strong> v každém případě </strong> je toho více než jen generování klíčů a podpisy. například se pravděpodobně chcete vyhnout <em>opakované útoky</em>: špatně zamýšlená třetí strana špehuje v síti a zaznamenává platnou žádost podepsanou běžným uživatelem. útočník později odešle požadavek znovu, doplněný jeho podpisem, aby se účinek replikoval. abyste se vyhnuli opakovaným útokům, musíte přidat nějaký externí protokol a tyto věci je obtížné udělat (není těžké definovat protokol; je <em>velmi</em> obtížné definovat <em>zabezpečené]</em> protokol). chytrá věc je proto opětovné použití existujícího, dobře prověřeného protokolu, což v praxi znamená <a href="http://en.wikipedia.org/wiki/transport\_layer\_security">ssl/tls</a> .</p><p>u ssl je „základní systém“ omezen na odesílání klíče api v záhlaví na začátku konverzace (to je přesně to, co se děje při ověřování hesla na webech https). "rozšířený systém" je pak "ssl s klientským certifikátem".</p> Takže už jsem na to přišel... na druhém počítači nenastavíme bránu stejnou jako IP připojeného, ale adresu dns serveru stejnou jako IP počítače, který sdílí... <p>samozřejmostí je autentizace klienta. může být použit ke zlepšení zabezpečení v kombinaci s přístupovým heslem nebo čipovou kartou nebo jako pohodlná náhrada za zadání hesla.</p><p>zajímavý návrh v tomto kontextu je <a href="http://webid.info/">webid single sign on protocol</a> .</p><p>hlavní problém s klientskými certifikáty je v tom, že je vázán na prohlížeč. takže pokud jste na jiném počítači, nemáte k nim přístup, pokud jste neučinili preventivní opatření.</p> Vyndat HDD a strčit ho do jiného PC/NTB. Tam zkopírovat soubory. Častou chybou je klonování pomocí výchozího připojení (HTTPS) namísto SSH. Tuto chybu můžete napravit tak, že přejdete do svého úložiště, kliknete na tlačítko "Klonovat nebo stáhnout", pak kliknete na tlačítko "Použít SSH" nad polem URL a aktualizujete adresu URL svého původního vzdáleného serveru takto:



```
git remote set-url origin [[email protected]](/cdn-cgi/l/email-protection):username/repo.git
```

Tento postup je zdokumentován na GitHubu: [Přepnutí vzdálených adres URL z HTTPS na SSH](https://help.github.com/articles/changing-a-remote-s-url/#switching-remote-urls-from-https-to-ssh). Pro druhou konzoli bych měl spíš zvlášť MS účet a pak si nastavil sdílení her v rodině, nebo jak se tomu u ms říká.(stejně pro mp je třeba mít ve většině případů hru 2x a většinou/někdy i zaplacenej xbox live gold nebocoto..)