質問: 結果を印刷する代わりにファイルにパイプするときに、pgpの暗号化が異なるのはなぜですか? pub.pemに保存されている次のpgpキーを使用します。-----begin pgp public key block----- version: pgpfreeware 6.5.8 for non-commercial use <http://www.pgp.com> mqgibdp1yy0rbadvlydewvwltbs7hnhcg3bxlvuodfkn/00tdbm2spnoaikj4gib ylop7mg+hr5y7fibvmpwx06in6jjnqisbpshp5yhv57ufe79nejdwustqt/7j7ij gkhytbrhqmiahmgt8ib5d3gfq52jsa8hw/ixmp09a0rw8rp9+koe4s9urqcg/zvh ihswdc/mb50pjdexwnjxqbkd/3ljyezz8eulfhb4rvac1yri21lypf0dimfqg5j9 xbxy4odfjkyf22peuajp9rourribgikigh8exf+mav9oqedd80jben1hzualk1rf k1xjjmfrdkxz+q7jmrdbs3zxxav2cywalgzext5kuxunlthltnloefop8hl3xm4/ pdqmbackkhb07vpy5l429tdxql00le6ledlbw4flji534qgselsruxq5u5y0wg1z //a66l5qkyamrpshkfklhdapovcs/weg6elwd/cubem1y9yb5dab0njdzb3yxcm8 w23hpkjdanb7sbasa16gbiwrlvrb/qu+mzaj+exrdjmwmjq2y7qjbmv0axzhignh znrvcmkgpg5ldgl2ywnab25lym94lmnvbt6jae4eebecaa4fajp1yy0ecwmcaqiz aqakcrdfpfclyzxzswiraj0s3djckjjpualrye+vwnfnhvjmdgcftebn2n6glgwo mrog1tqlzowbd5q5ag0eonxllraiapzcv7cifwgxcqk61qlc8wxo+vmrou+28w65 szgg2ggnvqmu6y9avfpqb8blq6murfdmzizj+aydvwxpf9sh01d49vlf3hzstz09 jdvomefxklnn/biude/f/ha8g8vhmghofmlm/xx5u/2rxscbqtnbno2gpxi61brw v0yawcvl9ij9we5j280gtj3kkqc2aznsoa1fhq98ilmcffstjvbzyspaq/clwxin jrtvjlhdonm0/xwxv0ojhrhs3jmhlluq/zzhsslagbgnfisncnlwhsqdgcghkxrk lqzzlp+r0apqmwjg0wg9zqrdqz+cfl2jsyizjrqrol7dvekyczsaagih+wvfkd3a fedebhqdzukjldljikhk4glokeq60r9nllfynfigsvgsii5uwly9+gz2fignp3yc gxzh1hasv+pg1sw0mnhutxzui3e3mt69uv1ktltgykfs+mxbw4qr7hxavckf45we f/9qlj6hskvjy4ycewdvpopm9s4gvcbq+edtp1negscyj3yhfieo0jel40mnohx7 hudjbbibmknmbzojxzbbedpcu7fwv/ldcwifogg9uwy2kocit7snxvjbukbsgyg2 hzob2jpaqcqi5+4yfucumnld0lktt7s1v3/6xszenybql7tmtmrzzfafhfawlnpa blxdf/b26gbrtt+jaeyegbecaayfajp1yy0acgkqxarxjwm180ttbqcg98c40j41 ixkp9cuqgr0lbj46vnaanj+5dh9n226fbp5tn0rayxwbvetk =0vva -----end pgp public key block----- キーのインポート:>>> gpg < pub.pem pub 1024d/6335f34b 2001-01-29 netiva caftori <netivac@onebox.com> sub 2048g/97f431a1 2001-01-29 >>> gpg --import < pub.pem gpg: key 6335f34b: "netiva caftori <netivac@onebox.com>" not changed gpg: total number processed: 1 gpg: unchanged: 1 結果の暗号化と印刷:>>> echo "encrypt this." | gpg --armor --recipient 18a489a6 --encrypt gpg: 9bd7d221: there is no assurance this key belongs to the named user pub 4096r/9bd7d221 2014-11-06 apotheke2 primary key fingerprint: caaf 8f36 3b87 e945 25d9 8af8 9b73 8ee5 18a4 89a6 subkey fingerprint: 6817 e44b e8cf b4a8 4d88 bed4 b74b 3dac 9bd7 d221 it is not certain that the key belongs to the person named in the user id. if you *really* know what you are doing, you may answer the next question with yes. use this key anyway? (y/n) y -----begin pgp message----- version: gnupg v1 hqima7dlpayb19ihaq/+pqsnwvgakwjeqsotcvfev95rfqnhfj7edelrbgdhwqau 0mgcg7mrcrt8hr6kkvxg1fmpx8ql9/czfqf5iqsnl6v0k8zqcpet7rrhl2tuuwmm 3qlkecbtzieoukkyqhvqascbsyufpnptkocywdscuib4trbrsgbca9yjvf3igatv fcdoyspgef4qaecgj/mafhun0atqszgperxl87hbbgav6vnc9l/0jpev3lzdn4cf yn5jtoogsizcvnqem8uwunn7j2s1hd0yfadtu6ngb9g4gxqq3uein1hxhuzbsgud n2c4/dgnkgdkvy9ufiv9rjyhwaewyyqbchrwilxfhirzh1oy/pljmtyy4bpgx3hp eemunw8tfjkxncisdv0/nb/ll+29dk/ww0ni1/4yu6lmakaxc+zlct+gak9kiqk1 rkumk4ds5crdrvtno5zpwkdyklzcxezczdvbbjlzbhiwoyaohr7mofhm1n2qfr78 lkm/nyhvm34ydkjsloegygflo9oszi+l/bex9ihoyo3o8p5p+sisqzoti7jfsdzp 1irdcu7wkyvi74byhu6czob7awyi3qtmcgy83igb6ntlwjwt/j2oobt9k9wboijc l3uqurltfjpsvdfzeqpadr9aisu7rld7lh2xwezs2yrdlg74ey8ruz+kynvsi0ds sqhfqlwyqpb+r5kw/gbdodxvfsvzmpz0qyncufendafcrcdwdmyqpc47+2ty8xsn y/zitdx9ram0nc99gddxkmxgsz15vqfe/ak= =uhqf -----end pgp message----- 結果を暗号化してファイルにパイプします。>>> echo "encrypt this." | gpg --armor --recipient 18a489a6 --encrypt > text.enc gpg: 9bd7d221: there is no assurance this key belongs to the named user pub 4096r/9bd7d221 2014-11-06 apotheke2 primary key fingerprint: caaf 8f36 3b87 e945 25d9 8af8 9b73 8ee5 18a4 89a6 subkey fingerprint: 6817 e44b e8cf b4a8 4d88 bed4 b74b 3dac 9bd7 d221 it is not certain that the key belongs to the person named in the user id. if you *really* know what you are doing, you may answer the next question with yes. use this key anyway? (y/n) y >>> cat text.enc -----begin pgp message----- version: gnupg v1 hqima7dlpayb19iharaaq5sgcqr+rexh8v35zvfcl3l/auqq/eknwiichw9lfflb exst6whaf2t/wmkscw0kkycoqbw6typd4hida4jg5qjytwjezwpa6qlcpf9ltmxg ho4vpvoyp9sk1140lhqtk4lktheyrcs9hc1uy4kuvheoyll43xwn8ofo7vfkumzj kmskwniehsfye3kucvbpqshw14vk193gggyladwkrqvwkexizdn1wv8xq6wspocp q96fo5gtn5rxtllz5ujgdvqgjugks1v+lnuabqgaloejdmfkcmrviue680doajzf a2ny+rfodjyfskfnwhebd2v21vkruswfrsevlradklejgzjumnd7oflajax0hyt2 ufijrhlshrmtpmgmxai+vsx3lgtma5fjvkz/5k9svm/e7puoagead1y3dm81f99j vvmcrvsvsabmwa7yvqz/c4i4pgd/lteizmuvu7ynbp9ipvulp8xrvkou1xbzxvfa ggd4o8ttkgcfoy2d+dbnuseh4ftqope4oc7q9jabesue3bai8dc8odkidjpgyvx/ rdfz6n2xw4w3siu4tegkmpnjacgrnchpybdesxywj/9p/gvrumx7xt6kbicjvpte r5wi7yszcvlyvnwocqfz2vu6atgk2enb6n9ochdynkgzoqz3pkqzyc2hw+zoksns sqhlnbyaslhyqndh8oyn5ukczfip+r67r0kv8pyshflodidfaderrwmovdfo9vre japhu2pgub2jkqnhcwcuslyy4nvbm8qkd8m= =r7ho -----end pgp message----- 結果の暗号化が同一でないのはなぜですか?
回答: ここでの違いには複数の理由があります。 openpgpはハイブリッド暗号システムであり、対称的な公開鍵/秘密鍵暗号を組み合わせています。ランダムに生成されたセッションキーは実際のメッセージを暗号化するために使用され、セッションキー自体は公開キーを使用して暗号化されます。新しいメッセージが暗号化されるたびにセッションキーがランダムに選択されるため、stdinからであろうとファイルからであろうと、何かを暗号化するたびに新しい暗号化テキストを取得します。 (圧縮および暗号化される前の)実際のメッセージを含む最内層である「リテラルデータパケット」には、ファイル名(stdinから暗号化した場合は空の文字列)が含まれます。 上記のリテラルデータパケットには、タイムスタンプ、通常は暗号化されたファイルのタイムスタンプ、またはstdinから暗号化するときの現在の時刻も含まれます。 これらすべての点で、入力のわずかな違いに対して非常に異なる暗号テキストが生成されます。したがって、1秒前にすでに暗号化すると、まったく関係のない暗号化テキストが生成されます。 最後に、暗号化(および使用されている場合は署名)パケットにもタイムスタンプがありますが、これらは個々のタイムスタンプのみを変更し、暗号化テキスト全体は変更しません。