Windows에서도 타원 곡선 DSA를 사용하여 git 태그에 서명

(2017-11-26)@spiegel-im-spiegel의 논평을 통해 내용을 수정했다.
(2018-04-17) Kleopatra의 버전 업그레이드에서 Ed25519 키를 만들 수 있기 때문에 보충이 필요합니다.
(2015-05-02) 각 제출 권한 수여 서명에 대한 추기 방법

git 태그에 사인하고 싶어요.


Windows의 환경에서 TortoiseGiit에서부터git를 사용하기 때문에 TortoiseGiit에서 서명이 달린 라벨을 붙이면 편리하겠다고 생각했는데 실제로 해보니까 잘 안 되더라고요.
이와 동시에 2017/09/19에 발행Gpg4winv3.0.0은 타원 커브 암호에 해당하는 GnuPG2입니다.두 시리즈를 탑재했기 때문에 사인이 나오기 전에 제대로 했다.

사인할 수 있을 때까지.


여기Git for WindowsTortoiseGit가 설치되어 있습니다.

Gpg4win 설치


git에 제출하거나 탭에 서명하려면 OpenPGP 형식의 공개 키/개인 키 쌍이 필요합니다.
또한 실제 서명은 OpenPGP 형태의 키 처리 소프트웨어에서 가장 광범위하게 사용되는 오픈 소스 구현Gnu Privacy Guard (GnuPG)을 활용해 이뤄졌다.
Windows의 경우Gpg4win는 Windows를 위해 구축된 GnuPG를 포함하는 도구 그룹으로, GnuPG 외에 키/인증서 관리자의 Kleopatra, Outlook용 메일 암호화 플러그인인 GpgOL, GnuPG를 조개껍질에 통합한 GnuEX와 함께 설치할 수 있다.Kleopatra 아이콘 뭐 하나 더 해주면 안 돼요?
기본적으로 공식 사이트에서 설치 프로그램을 다운로드하여 설치를 실행하면 된다.
Chocolatey를 사용하면 PS> choco install gpg4win -y도 설치할 수 있습니다.
제대로 설치되면 GnuPG로의 경로도 자동으로 추가됩니다.

키 만들기


Kleopatra(설치 후 작업 트레이에 상주할 수 있음) 창의 왼쪽 상단에 있는 파일에서 New Key Pair를 선택하여 개인용 OPEN PGP 키 쌍을 만듭니다.


이번에는 타원 곡선 DSA로 서명하고자 하기 때문에 상세 설정에서 ECDSA를 선택하고 사용할 타원 곡선을 선택한다(2017년 11월 26일까지 Ed25519 곡선이 선택할 수 없는 모습 Ed25119 키를 선택할 수 있다(ed255159+cv25519).
RSA로 서명하려면 RSA를 선택하고 타원 곡선 대신 키 길이를 선택합니다.
이 때 키의 유효기간을 적당히 설정하는 것을 권장합니다.

자세한 설정이 완료되면 이름과 메일 주소를 입력하고 키 생성을 진행할 때 키에 설정된 암호문을 묻습니다. 입력하고 설정하는 것을 권장합니다.
생성된 키는 자동으로 Kleopatra에 추가되고 관리됩니다.

git에 사용할 키 지정


한마디로 실행$ git config --global --set user.signingkey "[key ID]"은 가능하지만 어렵기 때문에 토토이즈기트부터 설정한다.
TortoiseGiit의 설정에서 [Git] 메뉴를 선택하고 로컬 창고의 설정이면 전역 사용자 정보의 서명 키 ID에 Kleopatra가 만든 키Key-ID 표시줄의 문자열을 입력합니다.


Giit for Windows gpgexe의git를 사용하지 않는 gpg입니다.exe 지정


그럼 Gpg4win 등을 설치하러 왔을 텐데, 사실 Giit for Windows에는 GnuPG가 포함되어 있습니다.
Git2.15.0.windows.1에서 동시에 설치된 것은 gpg 1.4.22이다.
$ git --version
git version 2.15.0.windows.1

$ gpg --version
gpg (GnuPG) 1.4.22
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
타원 커브를 사용할 수 있는 것은 GnuPG의ver2입니다.1부터 시작하기 때문에 이 버전은 사용할 수 없습니다.
또 Gpg4win을 사용해 설치한 GnuPG%AppData%\Roaming\GnuPG 이하에는 열쇠고리가 저장되지만, Giit for Windows에 묶인 GnuPG는 %USERPROFILE%\.gnupg 이하로 저장된다.
이 버전의 차이와 기본 참조 위치에 따라 Kleopatra에서 관리하는 키는 git로 묶인 GnuPG에서 볼 수 없으며 %USERPROFILE%\.gnupg 이하 파일은 %AppData%\Roaming\GnuPG 이하 파일의 기호 링크로 되어 있어도 주요 버전이 다르기 때문에 읽을 수 없습니다.
보통git는 번들로 된 GnuPG를 사용하기 때문에 Kleopatra에서 관리하는 키를 계속 사용할 수 없습니다.
따라서 git가 묶은 GnuPG를 사용하는 것을 방지하기 위해 {Git for Windowsインストールディレクトリ}\usr\bin\ 중의 gpg.exegp~.exe로 이름 바꾸거나 삭제한다.
이렇게 하면 경로가 통과하는 곳에 존재하는gpg.exe 대신 사용되며, 일반적으로 위에서 설치한 Gpg4win에 포함된 GnuPGgpg.exe를 사용한다.
또한 Windows 버전의 Git for Windows가 업그레이드될 때마다 이 gpg.exe 를 무효화해야 합니다.
git에서 사용하는 gpg입니다.git config로 exe의 경로 gpg.program 를 지정하십시오.(thanks@spiegel-im-spiegel선생님)
PS > git config --global gpg.program /path/to/GnuPG/bin/gpg.exe
전에 쓴 방법보다 훨씬 낫다.
Windows용 Giit 를 업데이트할 때는 더 이상 설정할 필요가 없습니다.
Windows용 Giit for GnuPG ver22 나중에 묶어주시면 돼요.현재 GnuPG에서 사용되고 있는 Pinentry가 X11에 의존하기 때문에 MSYS2에서 사용할 수 없음Alexpux/MSYS2-packages#986

서명 라벨


여기까지만 설정하면 쉬워요.
TortoiseGiit에서 태그를 지정할 때 서명 확인란을 선택하면 서명 태그가 작성됩니다.
이 때 키 암호문에 대한 질문을 받기 때문에 태그를 할 때마다 입력합니다.
현재 TortoiseGiit$ git commit -S는 어떻게 해야 할지 모르지만 모든 제출에 서명하는 사람은 적을 것이기 때문에 라벨에 서명하면 충분하다(편견).

제출에 서명하다


제출에 서명하려면 TortoiseGiit의 제출 창에서 전환할 수 없을 것 같습니다. $ git commit -S 제출마다 서명할지 여부입니다. (아시면 알려주십시오.)
모든 제출에 서명할 경우git 설정commit.gpgsigntrue로 설정하면 TortoiseGiit에서 제출해도 서명할 수 있습니다.
git config --global commit.gpgsign true  # 全てのリポジトリについて行う場合
git config --local commit.gpgsign true   # 現在のリポジトリについて行う場合
서명 설정을 삭제하려면 다음 명령을 실행합니다.
git config --global --unset commit.gpgsign  # 全てのリポジトリについて行う場合
git config --local --unset commit.gpgsign   # 現在のリポジトリについて行う場合

(추가) Ed25519 키 만들기


Kleopatra에서 Ed25519 열쇠를 만들 수 있습니다!
아래 글은 남겠지만 GUI가 열쇠를 만들 수 있기 때문에 적극적으로 적용할 이유가 없어졌다.
죄송합니다. Kleopatra는 Ed25519 키를 만들 수 없지만 명령을 실행하여 만들 수 있습니다.
또 제작 외 관리는 클레오파트라에서 할 수 있다.
단순gpg --gen-keygpg --full-gen-key도 타원 곡선을 선택할 수 없지만 추가--expert 옵션으로 실행--full-gen-key하면 타원 곡선 DSA/비밀번호를 선택할 수 있습니다.
이 경우 일반적으로 Ed25519가 후보의 타원 커브 목록에 표시되고 프롬프트에 따라 키가 생성됩니다.
PS > gpg --expert --full-gen-key
gpg (GnuPG) 2.2.3; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA と RSA (デフォルト)
   (2) DSA と Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
   (7) DSA (機能をあなた自身で設定)
   (8) RSA (機能をあなた自身で設定)
   (9) ECC と ECC                    <- 楕円曲線DSAで署名し楕円曲線暗号で暗号化する鍵
  (10) ECC (署名のみ)
  (11) ECC (機能をあなた自身で設定)
  (13) 既存の鍵
あなたの選択は? 9
ご希望の楕円曲線を選択してください:
   (1) Curve 25519                   <- Ed25519曲線
   (3) NIST P-256
   (4) NIST P-384
   (5) NIST P-521
   (6) Brainpool P-256
   (7) Brainpool P-384
   (8) Brainpool P-512
   (9) secp256k1
あなたの選択は? 1
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)5y
鍵は11/25/22 15:00:54 東京 (標準時)で期限切れとなります
これで正しいですか? (y/N) y

GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名: [name]
電子メール・アドレス: [email protected]
コメント: <comment>
次のユーザIDを選択しました:
    "[name] (<comment>) <[email protected]>"

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
gpg: 鍵0000000000000000を究極的に信用するよう記録しました
gpg: 鍵0000000000000001を究極的に信用するよう記録しました
gpg: 失効証明書を '%AppData%/gnupg/openpgp-revocs.d\0000000000000000000000000000000000000000.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。

pub   ed25519 2017-11-26 [SC] [有効期限: 2022-11-25]
      0000000000000000000000000000000000000000
uid                      [name] (<comment>) <[email protected]>
sub   cv25519 2017-11-26 [E] [有効期限: 2022-11-25]
또한 이 방법으로 생성된 키도 자동으로 Kleopatra 관리에 들어가기 때문에 키 생성 이외에 명령을 사용할 필요가 없습니다.

좋은 웹페이지 즐겨찾기