Qithub-BOT / QiiCipher

✅ GitHub の SSH 公開鍵でファイルを暗号化およびローカルの秘密鍵で復号・署名・検証するスクリプトのリポジトリです。
https://qiita.com/KEINOS/items/2abce1e5b15d799ac6d7
Creative Commons Attribution Share Alike 4.0 International
4 stars 3 forks source link

verifyがエラーになる? #31

Closed emadurandal closed 3 years ago

emadurandal commented 3 years ago

e9bac1e9e502ad8d4604648e808837d4e20dd105 で試しておりますが、verifyがうまくいかないようです。

signはうまくいきますが。

╰─ sign emadurandal ~/.ssh/github hello.txt
ファイル hello.txt の署名ファイルを生成中 ... Enter pass phrase for /home/emadurandal/.ssh/github:
OK
✅ hello.txt の電子署名が作成されました。

電子署名の検証を行います

emadurandal の GitHub 上の公開鍵を取得中 ... OK
RSA 形式の公開鍵を PKCS8 形式に変換中 ... OK
ファイル hello.txt の署名ファイルを検証中 ... Verified OK
✅ 電子署名ファイルの検証が完了しました

✅ 署名を完了しました。このファイルを対象ファイルとセットでご利用ください。
対象ファイル    : hello.txt
電子署名ファイル: hello.txt.sig

verifyでパーミッションについておこられ、

╰─ verify ~/.ssh/github hello.txt emadurandal

/home/emadurandal/.ssh/github を電子署名 emadurandal で検証します

- hello.txt の GitHub 上の公開鍵を取得中 ... OK
- RSA 形式の公開鍵を PKCS8 形式に変換中 ... @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0664 for '/tmp/verify-/hello.txt.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/tmp/verify-/hello.txt.pub": bad permissions
NG:RSA -> PKCS8 変換中にエラーが発生しました。

86行目あたりに試しにパーミッション600にしてみても、

image

invalid formatとなってしまいます。

╰─ verify ~/.ssh/github hello.txt emadurandal

/home/emadurandal/.ssh/github を電子署名 emadurandal で検証します

- hello.txt の GitHub 上の公開鍵を取得中 ... OK
- RSA 形式の公開鍵を PKCS8 形式に変換中 ... Load key "/tmp/verify-/hello.txt.pub": invalid format
NG:RSA -> PKCS8 変換中にエラーが発生しました。

ちょっと自分で調べた限りでは原因がよくわかりませんでした。 環境はWindows10のWSL2、Ubuntu20.04です。キーはkeygenスクリプトで生成しています。

yoshi389111 commented 3 years ago

引数が違っているように思えます。

verify の引数は、「検証したいファイル」「githubのユーザー名」「署名ファイル」を指定するようになっています。 なので verify hello.txt emadurandal hello.txt.sig のように指定するのだと思います。

「署名ファイル」が「検証したいファイル」+ .sig の場合には「署名ファイル」も省略可能です。 verify hello.txt emadurandal

例えば、私が abc というファイルを署名・検証したい場合、以下のようになると思います。

$ echo abc > abc
$ bin/sign yoshi389111 ~/.ssh/id_rsa.pem abc
ファイル abc の署名ファイルを生成中 ... OK
✅ abc の電子署名が作成されました。

電子署名の検証を行います

yoshi389111 の GitHub 上の公開鍵を取得中 ... OK
RSA 形式の公開鍵を PKCS8 形式に変換中 ... OK
ファイル abc の署名ファイルを検証中 ... Verified OK
✅ 電子署名ファイルの検証が完了しました

✅ 署名を完了しました。このファイルを対象ファイルとセットでご利用ください。
対象ファイル    : abc
電子署名ファイル: abc.sig

$ bin/verify abc yoshi389111 abc.sig

abc を電子署名 abc.sig で検証します

- yoshi389111 の GitHub 上の公開鍵を取得中 ... OK
- RSA 形式の公開鍵を PKCS8 形式に変換中 ... OK
- ファイル abc の署名ファイルを検証中 ... Verified OK

✅ 署名の検証を完了しました。このファイルは正しく署名されています。
- 対象ファイル: abc
- 署名者     : yoshi389111

$ bin/verify abc yoshi389111

abc を電子署名 abc.sig で検証します

- yoshi389111 の GitHub 上の公開鍵を取得中 ... OK
- RSA 形式の公開鍵を PKCS8 形式に変換中 ... OK
- ファイル abc の署名ファイルを検証中 ... Verified OK

✅ 署名の検証を完了しました。このファイルは正しく署名されています。
- 対象ファイル: abc
- 署名者     : yoshi389111
emadurandal commented 3 years ago

@yoshi389111 ほんとだ。おっしゃるとおり引数勘違いしてました。引数直したらうまくいきました。ありがとうございます。

ただ、返ってくるエラー内容でどうしてもキー起因のエラーに思えてしまうところは何か対策したほうがいいかもしれません。 それと、signする際に秘密鍵のパスを間違えても(エラーは返るものの).sigファイルが生成されてしまうなど、ここらへんは仕様が安定化したあたりでの改善でいいかもしれませんが、いずれIssueとして対応したほうが良いかな、と思います。 あとは各スクリプトの引数の順番をそろえた方が良さそう?など。 (Issue化の是非はおまかせします)

本件はCloseでかまいません。

KEINOS commented 3 years ago

返ってくるエラー内容でどうしてもキー起因のエラーに思えてしまう

それは私もテスト作成で経験して感じていました。

Permissions 0xxx for '...' are too open. と言われアクセス権を変えたのに、叱られ。引数間違えてるだけなのに、まるで露出狂のように言われ、不本意な思いをしました。

なので Issue #33 を立てました。

signする際に秘密鍵のパスを間違えても(エラーは返るものの).sigファイルが生成されてしまう

これも再現したので Issue #34 を立てましたー

各スクリプトの引数の順番をそろえた方が良さそう?

引数の見直しは必要かもしれません。ヘルプを嫁と言われればそれまでなのですが、変更は v2.0 で行うとして順番の提案を募集したいと思います。

ディスカッションで #36 を立てましたー

なので、この Issue はクローズいたし 💪