#6: SSH, GPG について調査、GitHub への登録

今日やったこと(Done)

  • SSH key の作成、GitHub への登録。
  • GPG key の作成、GitHub への登録。(途中)

SSH

$ ssh-keygen -t rsa -b 4096 -C "ryocalm-macmini"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ryocalm/.ssh/id_rsa):
Created directory '/Users/ryocalm/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
$ ssh-add .ssh/id_rsa
$ ssh-add -l #登録できているか確認

GitHub へ登録。

Adding a new SSH key to your GitHub account - GitHub Docs

GPG

$ brew install gnupg

インストール後に表示されたメッセージを一応メモしておきます。

# (中略)

==> Installing gnupg
==> Pouring gnupg-2.2.21.high_sierra.bottle.tar.gz
🍺  /usr/local/Cellar/gnupg/2.2.21: 134 files, 11.1MB
==> Caveats
==> gettext
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/gettext
==> libffi
libffi is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

For compilers to find libffi you may need to set:
  set -gx LDFLAGS "-L/usr/local/opt/libffi/lib"
  set -gx CPPFLAGS "-I/usr/local/opt/libffi/include"

==> openssl@1.1
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl@1.1/certs

and run
  /usr/local/opt/openssl@1.1/bin/c_rehash

openssl@1.1 is keg-only, which means it was not symlinked into /usr/local,
because macOS provides LibreSSL.

If you need to have openssl@1.1 first in your PATH run:
  echo 'set -g fish_user_paths "/usr/local/opt/openssl@1.1/bin" $fish_user_paths' >> ~/.config/fish/config.fish

For compilers to find openssl@1.1 you may need to set:
  set -gx LDFLAGS "-L/usr/local/opt/openssl@1.1/lib"
  set -gx CPPFLAGS "-I/usr/local/opt/openssl@1.1/include"

==> unbound
To have launchd start unbound now and restart at startup:
  sudo brew services start unbound

Generating a new GPG key - GitHub Docs

いろいろ調べていたら時間がかかったので今日は途中まで進めて中断しました。

わかったこと(Fact)

  • Homebrew で gpggnupg でそれぞれ複数の Formulae が存在するが alias のようなものだった。
    • gpg == gpg2 == gnupg
    • gpg1 == gnupg@1.4

出力結果

$ brew search gpg
==> Formulae
gpg                  gpg1                 gpg2                 gpgme                libgpg-error
==> Casks
gpg-suite                                            gpg-sync
gpg-suite-no-mail                                    homebrew/cask-versions/gpg-suite-nightly
gpg-suite-pinentry
$ brew search gnupg
==> Formulae
gnupg                              gnupg-pkcs11-scd                   gnupg@1.4
$ brew info gpg
gnupg: stable 2.2.21 (bottled)
...
$ brew info gpg1
gnupg@1.4: stable 1.4.23 (bottled)
...
$ brew info gpg2
gnupg: stable 2.2.21 (bottled)
...
  • PGP (Pretty Good Privacy) の主な用途はファイルやメールの暗号化、および署名やその検証。
    • SSL/TLSSSH とは異なり通信の暗号化はしない。
  • PGPシマンテック社の商用の有償ソフトウェアらしい。
  • OpenPGP は PGP の暗号化方式を標準化した仕様で IETF によって RFC 4880 として公開されている。
  • GPG (GNU Privacy Guard) は OpenPGP に基づいた PGP の別実装。GPL (GNU General Public License) に基づき無料で利用できる。

OpenPGP は、ファイルを暗号化するために使用される鍵方式の暗号化で、意図した受信者だけがファイルを受信して復号化できます。OpenPGP は電子メール通信の保護に広く使用されていますが、その技術は FTP にも適用できます。

OpenPGP は2つの暗号化キーを使ってファイルを保護します。公開鍵を使ってファイルを暗号化し、対応する秘密鍵だけがファイルを復号化できます。

通信を暗号化するSSLSSH とは異なり、OpenPGP はアップロードする前にファイルを暗号化する方法です。そのため OpenPGP モードは、標準の FTPSSLSSH 接続と組み合わせて使用できます。

from: PGP、OpenPGP、GnuPG 暗号化の違い

  • 2048 bit 以下の RSA/DSA 鍵は強度が不足しているという認識でよい。

References

SSH, GPG に関する記事、資料など。

SSH

GitHub への SSH 接続の設定について。

PGP, GPG

Windows 環境でのセットアップについて。

Homebrew

その他

次にやること(Next)

  • [ ] GitHub の GPG key の設定(続き)