1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
---|
2 | <html xmlns="http://www.w3.org/1999/xhtml"> |
---|
3 | <head> |
---|
4 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
---|
5 | <meta http-equiv="Content-Style-Type" content="text/css" /> |
---|
6 | <meta name="generator" content="pandoc" /> |
---|
7 | <title>File encryption using OpenSSL and GnuPG (GPG/PGP)</title> |
---|
8 | <style type="text/css">code{white-space: pre;}</style> |
---|
9 | <link href="data:text/css,%2F%2A%0A%20%20%20%20Buttondown%0A%20%20%20%20A%20Markdown%2FMultiMarkdown%2FPandoc%20HTML%20output%20CSS%20stylesheet%0A%20%20%20%20Author%3A%20Ryan%20Gray%0A%20%20%20%20Date%3A%2015%20Feb%202011%0A%20%20%20%20Revised%3A%2021%20Feb%202012%0A%20%20%20%0A%20%20%20%20General%20style%20is%20clean%2C%20with%20minimal%20re%2Ddefinition%20of%20the%20defaults%20or%20%0A%20%20%20%20overrides%20of%20user%20font%20settings%2E%20The%20body%20text%20and%20header%20styles%20are%20%0A%20%20%20%20left%20alone%20except%20title%2C%20author%20and%20date%20classes%20are%20centered%2E%20A%20Pandoc%20TOC%20%0A%20%20%20%20is%20not%20printed%2C%20URLs%20are%20printed%20after%20hyperlinks%20in%20parentheses%2E%20%0A%20%20%20%20Block%20quotes%20are%20italicized%2E%20Tables%20are%20lightly%20styled%20with%20lines%20above%20%0A%20%20%20%20and%20below%20the%20table%20and%20below%20the%20header%20with%20a%20boldface%20header%2E%20Code%20%0A%20%20%20%20blocks%20are%20line%20wrapped%2E%20%0A%20%0A%20%20%20%20All%20elements%20that%20Pandoc%20and%20MultiMarkdown%20use%20should%20be%20listed%20here%2C%20even%20%0A%20%20%20%20if%20the%20style%20is%20empty%20so%20you%20can%20easily%20add%20styling%20to%20anything%2E%0A%20%20%20%20%0A%20%20%20%20There%20are%20some%20elements%20in%20here%20for%20HTML5%20output%20of%20Pandoc%2C%20but%20I%20have%20not%20%0A%20%20%20%20gotten%20around%20to%20testing%20that%20yet%2E%0A%2A%2F%0A%20%0A%2F%2A%20NOTES%3A%0A%20%0A%20%20%20%20Stuff%20tried%20and%20failed%3A%0A%20%20%20%20%0A%20%20%20%20It%20seems%20that%20specifying%20font%2Dfamily%3Aserif%20in%20Safari%20will%20always%20use%20%0A%20%20%20%20Times%20New%20Roman%20rather%20than%20the%20user%27s%20preferences%20setting%2E%0A%20%20%20%20%0A%20%20%20%20Making%20the%20font%20size%20different%20or%20a%20fixed%20value%20for%20print%20in%20case%20the%20screen%20%0A%20%20%20%20font%20size%20is%20making%20the%20print%20font%20too%20big%3A%20Making%20font%2Dsize%20different%20for%20%0A%20%20%20%20print%20than%20for%20screen%20causes%20horizontal%20lines%20to%20disappear%20in%20math%20when%20using%20%0A%20%20%20%20MathJax%20under%20Safari%2E%0A%2A%2F%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Front%20Matter%20%2D%2D%2D%2D%20%2A%2F%0A%20%0A%2F%2A%20Pandoc%20header%20DIV%2E%20Contains%20%2Etitle%2C%20%2Eauthor%20and%20%2Edate%2E%20Comes%20before%20div%23TOC%2E%20%0A%20%20%20Only%20appears%20if%20one%20of%20those%20three%20are%20in%20the%20document%2E%0A%2A%2F%0A%20%0Adiv%23header%2C%20header%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Put%20border%20on%20bottom%2E%20Separates%20it%20from%20TOC%20or%20body%20that%20comes%20after%20it%2E%20%2A%2F%0A%20%20%20%20border%2Dbottom%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%2Etitle%20%2F%2A%20Pandoc%20title%20header%20%28h1%2Etitle%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20%7D%0A%20%0A%2Eauthor%2C%20%2Edate%20%2F%2A%20Pandoc%20author%28s%29%20and%20date%20headers%20%28h2%2Eauthor%20and%20h3%2Edate%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20Pandoc%20table%20of%20contents%20DIV%20when%20using%20the%20%2D%2Dtoc%20option%2E%0A%20%20%20NOTE%3A%20this%20doesn%27t%20support%20Pandoc%27s%20%2D%2Did%2Dprefix%20option%20for%20%23TOC%20and%20%23header%2E%20%0A%20%20%20Probably%20would%20need%20to%20use%20div%5Bid%24%3D%27TOC%27%5D%20and%20div%5Bid%24%3D%27header%27%5D%20as%20selectors%2E%0A%2A%2F%0A%20%0Adiv%23TOC%2C%20nav%23TOC%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Put%20border%20on%20bottom%20to%20separate%20it%20from%20body%2E%20%2A%2F%0A%20%20%20%20border%2Dbottom%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20div%23TOC%2C%20nav%23TOC%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20Don%27t%20display%20TOC%20in%20print%20%2A%2F%0A%20%20%20%20%20%20%20%20display%3A%20none%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Headers%20and%20sections%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Ah1%2C%20h2%2C%20h3%2C%20h4%2C%20h5%2C%20h6%0A%7B%0A%20%20%20%20font%2Dfamily%3A%20%22Helvetica%20Neue%22%2C%20Helvetica%2C%20%22Liberation%20Sans%22%2C%20Calibri%2C%20Arial%2C%20sans%2Dserif%3B%20%2F%2A%20Sans%2Dserif%20headers%20%2A%2F%0A%20%0A%20%20%20%20%2F%2A%20font%2Dfamily%3A%20%22Liberation%20Serif%22%2C%20%22Georgia%22%2C%20%22Times%20New%20Roman%22%2C%20serif%3B%20%2F%2A%20Serif%20headers%20%2A%2F%0A%20%0A%20%20%20%20page%2Dbreak%2Dafter%3A%20avoid%3B%20%2F%2A%20Firefox%2C%20Chrome%2C%20and%20Safari%20do%20not%20support%20the%20property%20value%20%22avoid%22%20%2A%2F%0A%7D%0A%20%0A%2F%2A%20Pandoc%20with%20%2D%2Dsection%2Ddivs%20option%20%2A%2F%0A%20%0Adiv%20div%2C%20section%20section%20%2F%2A%20Nested%20sections%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dleft%3A%202em%3B%20%2F%2A%20This%20will%20increasingly%20indent%20nested%20header%20sections%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Ap%20%7B%7D%0A%20%0Ablockquote%0A%20%20%20%20%7B%20%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20%7D%0A%20%0Ali%20%2F%2A%20All%20list%20items%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ali%20%3E%20p%20%2F%2A%20Loosely%20spaced%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dtop%3A%201em%3B%20%2F%2A%20IE%3A%20lack%20of%20space%20above%20a%20%3Cli%3E%20when%20the%20item%20is%20inside%20a%20%3Cp%3E%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Aul%20%2F%2A%20Whole%20unordered%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aul%20li%20%2F%2A%20Unordered%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aol%20%2F%2A%20Whole%20ordered%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aol%20li%20%2F%2A%20Ordered%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ahr%20%7B%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Some%20span%20elements%20%2D%2D%2D%20%2A%2F%0A%20%0Asub%20%2F%2A%20Subscripts%2E%20Pandoc%3A%20H%7E2%7EO%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Asup%20%2F%2A%20Superscripts%2E%20Pandoc%3A%20The%202%5End%5E%20try%2E%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aem%20%2F%2A%20Emphasis%2E%20Markdown%3A%20%2Aemphasis%2A%20or%20%5Femphasis%5F%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aem%20%3E%20em%20%2F%2A%20Emphasis%20within%20emphasis%3A%20%2AThis%20is%20all%20%2Aemphasized%2A%20except%20that%2A%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dstyle%3A%20normal%3B%0A%20%20%20%20%7D%0A%20%0Astrong%20%2F%2A%20Markdown%20%2A%2Astrong%2A%2A%20or%20%5F%5Fstrong%5F%5F%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Links%20%28anchors%29%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aa%20%2F%2A%20All%20links%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Keep%20links%20clean%2E%20On%20screen%2C%20they%20are%20colored%3B%20in%20print%2C%20they%20do%20nothing%20anyway%2E%20%2A%2F%0A%20%20%20%20text%2Ddecoration%3A%20none%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20screen%0A%20%20%20%20%7B%0A%20%20%20%20a%3Ahover%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20On%20hover%2C%20we%20indicate%20a%20bit%20more%20that%20it%20is%20a%20link%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20text%2Ddecoration%3A%20underline%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20a%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20In%20print%2C%20a%20colored%20link%20is%20useless%2C%20so%20un%2Dstyle%20it%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20color%3A%20black%3B%0A%20%20%20%20%20%20%20%20background%3A%20transparent%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20a%5Bhref%5E%3D%22http%3A%2F%2F%22%5D%3Aafter%2C%20a%5Bhref%5E%3D%22https%3A%2F%2F%22%5D%3Aafter%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20However%2C%20links%20that%20go%20somewhere%20else%2C%20might%20be%20useful%20to%20the%20reader%2C%0A%20%20%20%20%20%20%20%20%20%20%20so%20for%20http%20and%20https%20links%2C%20print%20the%20URL%20after%20what%20was%20the%20link%20%0A%20%20%20%20%20%20%20%20%20%20%20text%20in%20parens%0A%20%20%20%20%20%20%20%20%2A%2F%0A%20%20%20%20%20%20%20%20content%3A%20%22%20%28%22%20attr%28href%29%20%22%29%20%22%3B%0A%20%20%20%20%20%20%20%20font%2Dsize%3A%2090%25%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Images%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aimg%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Let%20it%20be%20inline%20left%2Fright%20where%20it%20wants%20to%20be%2C%20but%20verticality%20make%20%0A%20%20%20%20%20%20%20it%20in%20the%20middle%20to%20look%20nicer%2C%20but%20opinions%20differ%2C%20and%20if%20in%20a%20multi%2Dline%20%0A%20%20%20%20%20%20%20paragraph%2C%20it%20might%20not%20be%20so%20great%2E%20%0A%20%20%20%20%2A%2F%0A%20%20%20%20vertical%2Dalign%3A%20middle%3B%0A%20%20%20%20%7D%0A%20%0Adiv%2Efigure%20%2F%2A%20Pandoc%20figure%2Dstyle%20image%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Center%20the%20image%20and%20caption%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20auto%3B%0A%20%20%20%20margin%2Dright%3A%20auto%3B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20%7D%0A%20%0Ap%2Ecaption%20%2F%2A%20Pandoc%20figure%2Dstyle%20caption%20within%20div%2Efigure%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Inherits%20div%2Efigure%20props%20by%20default%20%2A%2F%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Code%20blocks%20and%20spans%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Apre%2C%20code%20%0A%20%20%20%20%7B%0A%20%20%20%20background%2Dcolor%3A%20%23fdf7ee%3B%0A%20%20%20%20%2F%2A%20BEGIN%20word%20wrap%20%2A%2F%0A%20%20%20%20%2F%2A%20Need%20all%20the%20following%20to%20word%20wrap%20instead%20of%20scroll%20box%20%2A%2F%0A%20%20%20%20%2F%2A%20This%20will%20override%20the%20overflow%3Aauto%20if%20present%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20pre%2Dwrap%3B%20%2F%2A%20css%2D3%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Dmoz%2Dpre%2Dwrap%20%21important%3B%20%2F%2A%20Mozilla%2C%20since%201999%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Dpre%2Dwrap%3B%20%2F%2A%20Opera%204%2D6%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Do%2Dpre%2Dwrap%3B%20%2F%2A%20Opera%207%20%2A%2F%0A%20%20%20%20word%2Dwrap%3A%20break%2Dword%3B%20%2F%2A%20Internet%20Explorer%205%2E5%2B%20%2A%2F%0A%20%20%20%20%2F%2A%20END%20word%20wrap%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Apre%20%2F%2A%20Code%20blocks%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Distinguish%20pre%20blocks%20from%20other%20text%20by%20more%20than%20the%20font%20with%20a%20background%20tint%2E%20%2A%2F%0A%20%20%20%20padding%3A%200%2E5em%3B%20%2F%2A%20Since%20we%20have%20a%20background%20color%20%2A%2F%0A%20%20%20%20border%2Dradius%3A%205px%3B%20%2F%2A%20Softens%20it%20%2A%2F%0A%20%20%20%20%2F%2A%20Give%20it%20a%20some%20definition%20%2A%2F%0A%20%20%20%20border%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20%2F%2A%20Set%20it%20off%20left%20and%20right%2C%20seems%20to%20look%20a%20bit%20nicer%20when%20we%20have%20a%20background%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20%200%2E5em%3B%0A%20%20%20%20margin%2Dright%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20screen%0A%20%20%20%20%7B%0A%20%20%20%20pre%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20On%20screen%2C%20use%20an%20auto%20scroll%20box%20for%20long%20lines%2C%20unless%20word%2Dwrap%20is%20enabled%20%2A%2F%0A%20%20%20%20%20%20%20%20white%2Dspace%3A%20pre%3B%0A%20%20%20%20%20%20%20%20overflow%3A%20auto%3B%0A%20%20%20%20%20%20%20%20%2F%2A%20Dotted%20looks%20better%20on%20screen%20and%20solid%20seems%20to%20print%20better%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20border%3A%201px%20dotted%20%23777%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0Acode%20%2F%2A%20All%20inline%20code%20spans%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ap%20%3E%20code%2C%20li%20%3E%20code%20%2F%2A%20Code%20spans%20in%20paragraphs%20and%20tight%20lists%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Pad%20a%20little%20from%20adjacent%20text%20%2A%2F%0A%20%20%20%20padding%2Dleft%3A%20%202px%3B%0A%20%20%20%20padding%2Dright%3A%202px%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Ali%20%3E%20p%20code%20%2F%2A%20Code%20span%20in%20a%20loose%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20We%20have%20room%20for%20some%20more%20background%20color%20above%20and%20below%20%2A%2F%0A%20%20%20%20padding%3A%202px%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Math%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aspan%2Emath%20%2F%2A%20Pandoc%20inline%20math%20default%20and%20%2D%2Djsmath%20inline%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Tried%20font%2Dstyle%3Aitalic%20here%2C%20and%20it%20messed%20up%20MathJax%20rendering%20in%20some%20browsers%2E%20Maybe%20don%27t%20mess%20with%20at%20all%2E%20%2A%2F%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Emath%20%2F%2A%20Pandoc%20%2D%2Djsmath%20display%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aspan%2ELaTeX%20%2F%2A%20Pandoc%20%2D%2Dlatexmathml%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0Aeq%20%2F%2A%20Pandoc%20%2D%2Dgladtex%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Tables%20%2D%2D%2D%2D%20%2A%2F%0A%20%0A%2F%2A%20%20A%20clean%20textbook%2Dlike%20style%20with%20horizontal%20lines%20above%20and%20below%20and%20under%20%0A%20%20%20%20the%20header%2E%20Rows%20highlight%20on%20hover%20to%20help%20scanning%20the%20table%20on%20screen%2E%0A%2A%2F%0A%20%0Atable%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dcollapse%3A%20collapse%3B%0A%20%20%20%20border%2Dspacing%3A%200%3B%20%2F%2A%20IE%206%20%2A%2F%0A%20%0A%20%20%20%20border%2Dbottom%3A%202pt%20solid%20%23000%3B%0A%20%20%20%20border%2Dtop%3A%202pt%20solid%20%23000%3B%20%2F%2A%20The%20caption%20on%20top%20will%20not%20have%20a%20bottom%2Dborder%20%2A%2F%0A%20%0A%20%20%20%20%2F%2A%20Center%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20auto%3B%0A%20%20%20%20margin%2Dright%3A%20auto%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Athead%20%2F%2A%20Entire%20table%20header%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dbottom%3A%201pt%20solid%20%23000%3B%0A%20%20%20%20background%2Dcolor%3A%20%23eee%3B%20%2F%2A%20Does%20this%20BG%20print%20well%3F%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Atr%2Eheader%20%2F%2A%20Each%20header%20row%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0Atbody%20%2F%2A%20Entire%20table%20%20body%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20Table%20body%20rows%20%2A%2F%0A%20%0Atr%20%20%7B%0A%20%20%20%20%7D%0Atr%2Eodd%3Ahover%2C%20tr%2Eeven%3Ahover%20%2F%2A%20Use%20%2Eodd%20and%20%2Eeven%20classes%20to%20avoid%20styling%20rows%20in%20other%20tables%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20background%2Dcolor%3A%20%23eee%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20Odd%20and%20even%20rows%20%2A%2F%0Atr%2Eodd%20%7B%7D%0Atr%2Eeven%20%7B%7D%0A%20%0Atd%2C%20th%20%2F%2A%20Table%20cells%20and%20table%20header%20cells%20%2A%2F%0A%20%20%20%20%7B%20%0A%20%20%20%20vertical%2Dalign%3A%20top%3B%20%2F%2A%20Word%20%2A%2F%0A%20%20%20%20vertical%2Dalign%3A%20baseline%3B%20%2F%2A%20Others%20%2A%2F%0A%20%20%20%20padding%2Dleft%3A%20%20%200%2E5em%3B%0A%20%20%20%20padding%2Dright%3A%20%200%2E5em%3B%0A%20%20%20%20padding%2Dtop%3A%20%20%20%200%2E2em%3B%0A%20%20%20%20padding%2Dbottom%3A%200%2E2em%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20Removes%20padding%20on%20left%20and%20right%20of%20table%20for%20a%20tight%20look%2E%20Good%20if%20thead%20has%20no%20background%20color%2A%2F%0A%2F%2A%0Atr%20td%3Alast%2Dchild%2C%20tr%20th%3Alast%2Dchild%0A%20%20%20%20%7B%0A%20%20%20%20padding%2Dright%3A%200%3B%0A%20%20%20%20%7D%0Atr%20td%3Afirst%2Dchild%2C%20tr%20th%3Afirst%2Dchild%20%0A%20%20%20%20%7B%0A%20%20%20%20padding%2Dleft%3A%200%3B%0A%20%20%20%20%7D%0A%2A%2F%0A%20%0Ath%20%2F%2A%20Table%20header%20cells%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dweight%3A%20bold%3B%20%0A%20%20%20%20%7D%0A%20%0Atfoot%20%2F%2A%20Table%20footer%20%28what%20appears%20here%20if%20caption%20is%20on%20top%3F%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Acaption%20%2F%2A%20This%20is%20for%20a%20table%20caption%20tag%2C%20not%20the%20p%2Ecaption%20Pandoc%20uses%20in%20a%20div%2Efigure%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20caption%2Dside%3A%20top%3B%0A%20%20%20%20border%3A%20none%3B%0A%20%20%20%20font%2Dsize%3A%200%2E9em%3B%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E3em%3B%20%2F%2A%20Good%20for%20when%20on%20top%20%2A%2F%0A%20%20%20%20padding%2Dbottom%3A%200%2E2em%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Definition%20lists%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Adl%20%2F%2A%20The%20whole%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%202pt%20solid%20black%3B%0A%20%20%20%20padding%2Dtop%3A%200%2E5em%3B%0A%20%20%20%20border%2Dbottom%3A%202pt%20solid%20black%3B%0A%20%20%20%20%7D%0A%20%0Adt%20%2F%2A%20Definition%20term%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dweight%3A%20bold%3B%0A%20%20%20%20%7D%0A%20%0Add%2Bdt%20%2F%2A%202nd%20or%20greater%20term%20in%20the%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%201pt%20solid%20black%3B%0A%20%20%20%20padding%2Dtop%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Add%20%2F%2A%20A%20definition%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0Add%2Bdd%20%2F%2A%202nd%20or%20greater%20definition%20of%20a%20term%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%201px%20solid%20black%3B%20%2F%2A%20To%20separate%20multiple%20definitions%20%2A%2F%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20%2D%2D%2D%2D%20Footnotes%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aa%2Efootnote%2C%20a%2EfootnoteRef%20%7B%20%2F%2A%20Pandoc%2C%20MultiMarkdown%20footnote%20links%20%2A%2F%0A%20%20%20%20font%2Dsize%3A%20small%3B%20%0A%20%20%20%20vertical%2Dalign%3A%20text%2Dtop%3B%0A%7D%0A%20%0Aa%5Bhref%5E%3D%22%23fnref%22%5D%2C%20a%2Ereversefootnote%20%2F%2A%20Pandoc%2C%20MultiMarkdown%2C%20%3F%3F%20footnote%20back%20links%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20a%5Bhref%5E%3D%22%23fnref%22%5D%2C%20a%2Ereversefootnote%20%2F%2A%20Pandoc%2C%20MultiMarkdown%20%2A%2F%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20Don%27t%20display%20these%20at%20all%20in%20print%20since%20the%20arrow%20is%20only%20something%20to%20click%20on%20%2A%2F%0A%20%20%20%20%20%20%20%20display%3A%20none%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Efootnotes%20%2F%2A%20Pandoc%20footnotes%20div%20at%20end%20of%20the%20document%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Efootnotes%20li%5Bid%5E%3D%22fn%22%5D%20%2F%2A%20A%20footnote%20item%20within%20that%20div%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20You%20can%20class%20stuff%20as%20%22noprint%22%20to%20not%20print%2E%20%0A%20%20%20Useful%20since%20you%20can%27t%20set%20this%20media%20conditional%20inside%20an%20HTML%20element%27s%20%0A%20%20%20style%20attribute%20%28I%20think%29%2C%20and%20you%20don%27t%20want%20to%20make%20another%20stylesheet%20that%20%0A%20%20%20imports%20this%20one%20and%20adds%20a%20class%20just%20to%20do%20this%2E%0A%2A%2F%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20%2Enoprint%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20display%3Anone%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A" rel="stylesheet" type="text/css" /> |
---|
10 | </head> |
---|
11 | <body> |
---|
12 | <div id="header"> |
---|
13 | <h1 class="title">File encryption using OpenSSL and GnuPG (GPG/PGP)</h1> |
---|
14 | </div> |
---|
15 | <div id="TOC"> |
---|
16 | <ul> |
---|
17 | <li><a href="#notes"><span class="toc-section-number">1</span> Notes</a></li> |
---|
18 | <li><a href="#exercises"><span class="toc-section-number">2</span> Exercises</a><ul> |
---|
19 | <li><a href="#install-gnupg-aka-pgpgpg"><span class="toc-section-number">2.1</span> Install GnuPG (aka PGP/GPG)</a></li> |
---|
20 | <li><a href="#generate-a-publicprivate-key-pair"><span class="toc-section-number">2.2</span> Generate a public/private key pair</a></li> |
---|
21 | <li><a href="#encrypt-with-gpg-using-public-key"><span class="toc-section-number">2.3</span> Encrypt with GPG using public key</a></li> |
---|
22 | <li><a href="#decrypting-files"><span class="toc-section-number">2.4</span> Decrypting files</a></li> |
---|
23 | </ul></li> |
---|
24 | </ul> |
---|
25 | </div> |
---|
26 | <h1 id="notes"><a href="#notes"><span class="header-section-number">1</span> Notes</a></h1> |
---|
27 | <ul> |
---|
28 | <li>Commands preceded with "$" imply that you should execute the command as a general user - not as root.</li> |
---|
29 | <li>Commands preceded with "#" imply that you should be working as root.</li> |
---|
30 | <li>Commands with more specific command lines (e.g. "RTR-GW>" or "mysql>") imply that you are executing commands on remote equipment, or within another program.</li> |
---|
31 | </ul> |
---|
32 | <h1 id="exercises"><a href="#exercises"><span class="header-section-number">2</span> Exercises</a></h1> |
---|
33 | <p>We're going to use PGP to perform encryption. First we need to install the software, then generate a public/private key pair, as we learned about during lectures.</p> |
---|
34 | <h2 id="install-gnupg-aka-pgpgpg"><a href="#install-gnupg-aka-pgpgpg"><span class="header-section-number">2.1</span> Install GnuPG (aka PGP/GPG)</a></h2> |
---|
35 | <pre><code>$ sudo apt-get install gnupg |
---|
36 | $ sudo apt-get install rng-tools</code></pre> |
---|
37 | <p>Answer 'y' if you are told the packages cannot be authenticated. Don't worry about this right now.</p> |
---|
38 | <p>Once the software is installed, copy paste the following commands:</p> |
---|
39 | <pre><code>$ sudo sed -i -e 's|#HRNGDEVICE=/dev/hwrng|HRNGDEVICE=/dev/urandom|' /etc/default/rng-tools |
---|
40 | $ sudo service rng-tools start</code></pre> |
---|
41 | <p>... this starts a service that will help produce more random numbers. This is needed for the key generation in the next step.</p> |
---|
42 | <h2 id="generate-a-publicprivate-key-pair"><a href="#generate-a-publicprivate-key-pair"><span class="header-section-number">2.2</span> Generate a public/private key pair</a></h2> |
---|
43 | <p>Note: For this lab, you will work as a group, since the sysadm user can only have one keyring in their home directories.</p> |
---|
44 | <p>Run the command:</p> |
---|
45 | <pre><code>$ gpg --gen-key</code></pre> |
---|
46 | <p>You will see:</p> |
---|
47 | <pre><code>gpg: directory `/home/sysadm/.gnupg' created |
---|
48 | gpg: new configuration file `/home/sysadm/.gnupg/gpg.conf' created |
---|
49 | gpg: keyring `/home/sysadm/.gnupg/secring.gpg' created |
---|
50 | gpg: keyring `/home/sysadm/.gnupg/pubring.gpg' created</code></pre> |
---|
51 | <p>... Followed by a menu</p> |
---|
52 | <pre><code>Please select what kind of key you want: |
---|
53 | (1) RSA and RSA (default) |
---|
54 | (2) DSA and Elgamal |
---|
55 | (3) DSA (sign only) |
---|
56 | (4) RSA (sign only) |
---|
57 | Your selection?</code></pre> |
---|
58 | <p>Press '1' and return.</p> |
---|
59 | <p>You will then be prompted to pick a key size:</p> |
---|
60 | <pre><code>RSA keys may be between 1024 and 4096 bits long. |
---|
61 | What keysize do you want? (2048)</code></pre> |
---|
62 | <p>Press return to accept the default of 2048</p> |
---|
63 | <pre><code>Requested keysize is 2048 bits</code></pre> |
---|
64 | <p>You will then have to decide if the key will expire in time, or remain active until explicitly revoked</p> |
---|
65 | <pre><code>Please specify how long the key should be valid. |
---|
66 | 0 = key does not expire |
---|
67 | <n> = key expires in n days |
---|
68 | <n>w = key expires in n weeks |
---|
69 | <n>m = key expires in n months |
---|
70 | <n>y = key expires in n years |
---|
71 | Key is valid for? (0)</code></pre> |
---|
72 | <p>Press '0' and return.</p> |
---|
73 | <pre><code>Key does not expire at all |
---|
74 | Is this correct? (y/N)</code></pre> |
---|
75 | <p>Answer 'y', then return.</p> |
---|
76 | <pre><code>You need a user ID to identify your key; the software constructs the user ID |
---|
77 | from the Real Name, Comment and Email Address in this form: |
---|
78 | "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"</code></pre> |
---|
79 | <p>Here, enter your name, email, and a comment about this key:</p> |
---|
80 | <pre><code>Real name: Bob Bobson <-- use your name ... |
---|
81 | Email address: bob@bob.com <-- ... and email address here! |
---|
82 | Comment: Work address</code></pre> |
---|
83 | <p>You will be asked to confirm:</p> |
---|
84 | <pre><code>You selected this USER-ID: |
---|
85 | "Bob Bobson (Work address) <bob@bob.com>" |
---|
86 | |
---|
87 | Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?</code></pre> |
---|
88 | <p>Type 'O' then return.</p> |
---|
89 | <p>You are then asked to enter a passphrase to protect your key:</p> |
---|
90 | <pre><code>You need a Passphrase to protect your secret key. |
---|
91 | |
---|
92 | gpg: gpg-agent is not available in this session |
---|
93 | Enter passphrase:</code></pre> |
---|
94 | <p>Pick a passphrase that is short enough to be typed without too much difficulty, but not too short that it can be guessed. The passphrase will not be shown.</p> |
---|
95 | <p>You will be asked to enter the passphrase twice.</p> |
---|
96 | <pre><code>Repeat passphrase:</code></pre> |
---|
97 | <p>Once you've entered the passphrase twice, GPG will then proceed to create the keys, and you will see output similar to this (of course the key fingerprints and the name + email will be different)</p> |
---|
98 | <pre><code>We need to generate a lot of random bytes. It is a good idea to perform |
---|
99 | some other action (type on the keyboard, move the mouse, utilize the |
---|
100 | disks) during the prime generation; this gives the random number |
---|
101 | generator a better chance to gain enough entropy. |
---|
102 | [...] |
---|
103 | gpg: /home/sysadm/.gnupg/trustdb.gpg: trustdb created |
---|
104 | gpg: key C9FBE546 marked as ultimately trusted |
---|
105 | public and secret key created and signed. |
---|
106 | |
---|
107 | gpg: checking the trustdb |
---|
108 | gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model |
---|
109 | gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u |
---|
110 | pub 2048R/C9FBE546 2013-07-30 |
---|
111 | Key fingerprint = 913E E323 6BF2 CA8E 5270 A78E 2E33 1A5B C9FB E546 |
---|
112 | uid Bob Bobson (Work address) <bob@bob.com> |
---|
113 | sub 2048R/3BE8FE75 2013-07-30</code></pre> |
---|
114 | <p>Ok, we know have a public and private key pair.</p> |
---|
115 | <p>You can see the files containing these files like this:</p> |
---|
116 | <pre><code>$ cd |
---|
117 | $ ls -l .gnupg |
---|
118 | total 32 |
---|
119 | -rw------- 1 sysadm sysadm 9398 Jul 30 14:07 gpg.conf |
---|
120 | -rw------- 1 sysadm sysadm 1198 Jul 30 14:08 pubring.gpg |
---|
121 | -rw------- 1 sysadm sysadm 1198 Jul 30 14:08 pubring.gpg~ |
---|
122 | -rw------- 1 sysadm sysadm 600 Jul 30 14:08 random_seed |
---|
123 | -rw------- 1 sysadm sysadm 2575 Jul 30 14:08 secring.gpg |
---|
124 | -rw------- 1 sysadm sysadm 1280 Jul 30 14:08 trustdb.gpg</code></pre> |
---|
125 | <p>Notice the presence of the files "pubring.gpg" and "secring.gpg".</p> |
---|
126 | <p>Those files contain, respectively:</p> |
---|
127 | <ul> |
---|
128 | <li><p>your public key, and, you will see later, the public keys of OTHER people in the class</p></li> |
---|
129 | <li><p>your private key, which should NEVER be disclosed</p></li> |
---|
130 | </ul> |
---|
131 | <p>You can also use the following command to list the keys in your keyrings:</p> |
---|
132 | <pre><code>$ gpg --list-keys</code></pre> |
---|
133 | <p>This will show you a list of keys. You will notice that you have not only one public/private key pair, but also have a so-called "sub" keys.</p> |
---|
134 | <pre><code>/home/sysadm/.gnupg/secring.gpg |
---|
135 | ------------------------------- |
---|
136 | sec 2048R/C9FBE546 2013-07-30 |
---|
137 | uid Bob Bobson (Work address) <bob@bob.com> |
---|
138 | ssb 2048R/3BE8FE75 2013-07-30</code></pre> |
---|
139 | <p>One interesting feature of PGP is the ability to <em>sign</em> keys. This means that you can ask a third party you trust, and more importantly, who trusts you, to use their <em>private</em> key to "sign" <em>your</em> <em>public</em> key. This is a way for them to say "I believe this person really is who they say they are, and here's my proof".</p> |
---|
140 | <ul> |
---|
141 | <li>Why is it necessary to sign keys ?</li> |
---|
142 | <li>Can anyone create a key and pretend to be another person ?</li> |
---|
143 | <li>Can you think of a way to make sure that a given key really belongs to the person listed on the key ?</li> |
---|
144 | <li>What do you think are the benefits of signing keys ?</li> |
---|
145 | </ul> |
---|
146 | <p>Sometimes, you will find that it is necessary to get rid of "old" keys, and make some new ones. But what if many people have signed your key ?</p> |
---|
147 | <p>Not to worry! People who have signed your key actually sign your "Master key".</p> |
---|
148 | <p>Master keys are used to sign sub keys. Which means, that you can replace those, and still benefit from the "trust" of those who have signed your master key..</p> |
---|
149 | <h2 id="encrypt-with-gpg-using-public-key"><a href="#encrypt-with-gpg-using-public-key"><span class="header-section-number">2.3</span> Encrypt with GPG using public key</a></h2> |
---|
150 | <p>It's time to encrypt files with GPG.</p> |
---|
151 | <p>If you have deleted the file my-secrets-myname.txt from earlier, and you weren't able to decrypt it from the encryption version, you will need to recreate a new file:</p> |
---|
152 | <pre><code>$ cd |
---|
153 | $ cat > my-secrets-myname.txt <<EOF |
---|
154 | |
---|
155 | My name is "My Name" |
---|
156 | |
---|
157 | My credit card number is 1234-5678-9012-3456 |
---|
158 | |
---|
159 | The password for my phone is 42 |
---|
160 | |
---|
161 | EOF</code></pre> |
---|
162 | <p>Once that is done, let's encrypt the file:</p> |
---|
163 | <pre><code>gpg -e my-secrets-myname.txt</code></pre> |
---|
164 | <p>GPG is going to tell you you didn't include a recipient / user ID.</p> |
---|
165 | <pre><code>You did not specify a user ID. (you may use "-r") |
---|
166 | |
---|
167 | Current recipients: |
---|
168 | |
---|
169 | Enter the user ID. End with an empty line:</code></pre> |
---|
170 | <p>Here, you can just write your own email (userid) you chose earlier, for example: bob@bob.com if that is your email:</p> |
---|
171 | <pre><code>Current recipients: |
---|
172 | 2048R/3BE8FE75 2013-07-30 "Bob Bobson (Work address) <bob@bob.com>"</code></pre> |
---|
173 | <p>It then asks you if there are other recipients. Just press RETURN to continue without adding more recipients.</p> |
---|
174 | <p>Normally, GPG should finish quietly and leave you back at the shell.</p> |
---|
175 | <p>Verify that you now have encrypted files present in your directory:</p> |
---|
176 | <pre><code>$ ls -l my-secrets-myname.txt* |
---|
177 | -rw-rw-r-- 1 sysadm sysadm 102 Jul 30 12:45 my-secrets-myname.txt |
---|
178 | -rw-rw-r-- 1 sysadm sysadm 441 Jul 30 14:30 my-secrets-myname.txt.gpg</code></pre> |
---|
179 | <p>... you may see other files from previous labs, but you should see a ".gpg" file.</p> |
---|
180 | <p>Just like in the OpenSSL labs, try and view the contents of the file with more (or less). The file is encoded in binary. You will notice that is is somewhat larger then the file encrypted by OpenSSL.</p> |
---|
181 | <p>Let's encrypt with an ASCII encoding - and this time we'll save time and specify the recipient directly with the '-r' flag:</p> |
---|
182 | <pre><code>$ gpg -a -e -r bob@bob.com my-secrets-myname.txt</code></pre> |
---|
183 | <p>By the way, do you notice anything ?</p> |
---|
184 | <p>Hint: Did you have to specify the passphrase at any point to ENCRYPT ?</p> |
---|
185 | <p>Check the contents of the directory again:</p> |
---|
186 | <pre><code>$ ls -l my-secrets-myname.txt* |
---|
187 | -rw-rw-r-- 1 sysadm sysadm 102 Jul 30 12:45 my-secrets-myname.txt |
---|
188 | -rw-rw-r-- 1 sysadm sysadm 441 Jul 30 14:30 my-secrets-myname.txt.gpg |
---|
189 | -rw-rw-r-- 1 sysadm sysadm 694 Jul 30 14:40 my-secrets-myname.txt.asc</code></pre> |
---|
190 | <p>You should see an ".asc" file present.</p> |
---|
191 | <p>Look at its contents!</p> |
---|
192 | <p>Now, you can delete the original .txt file.</p> |
---|
193 | <pre><code>$ rm my-secrets-myname.txt</code></pre> |
---|
194 | <h2 id="decrypting-files"><a href="#decrypting-files"><span class="header-section-number">2.4</span> Decrypting files</a></h2> |
---|
195 | <p>To decrypt a file with GnuPG/PGP, all you have to do is type:</p> |
---|
196 | <pre><code>$ gpg my-secrets-myname.txt.asc</code></pre> |
---|
197 | <p>GnuPG/GPG automatically figures out who the file is encrypted for, and checks to see if you are in possession of the private key (you are), and you are prompted for your <em>passphrase</em>:</p> |
---|
198 | <pre><code>You need a passphrase to unlock the secret key for |
---|
199 | user: "Bob Bobson (Work address) <bob@bob.com>" |
---|
200 | 2048-bit RSA key, ID 3BE8FE75, created 2013-07-30 (main key ID C9FBE546) |
---|
201 | |
---|
202 | gpg: gpg-agent is not available in this session |
---|
203 | Enter passphrase:</code></pre> |
---|
204 | <p>If the file original file still exists, then gpg will ask you before it overwrites it:</p> |
---|
205 | <pre><code>File `my-secrets-myname.txt' exists. Overwrite? (y/N) y</code></pre> |
---|
206 | <p>If you answer 'y', it will overwrite as indicated.</p> |
---|
207 | <p>Look at the contents of the file 'my-secrets-myname.txt' and confirm that they are correctly decrypted!</p> |
---|
208 | <p>In the next lab, we will learn to exchange keys and send encrypted files to each other in the class!</p> |
---|
209 | <ul> |
---|
210 | <li>Note: Note that GPG call also do symmetric encryption! You can do what you did in the previous lab, using GPG instead of OpenSSL. There is no real advantage to this - your public/private key pair isn't used: you will be prompted for a passphrase at encryption time, just like with OpenSSL.</li> |
---|
211 | </ul> |
---|
212 | <p>Example:</p> |
---|
213 | <pre><code>$ gpg --output filename.enc -z 0 --symmetric filename.txt</code></pre> |
---|
214 | <p>Note that by default GPG always compresses the file - to disable encryption, you would use "-z 0" as specified in the example above (for speeding up encryption on very large files, or media like sound, video).</p> |
---|
215 | </body> |
---|
216 | </html> |
---|