Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add:ttpmenuのログインパスワードの暗号化機能追加 #246

Closed
hkanou opened this issue Jul 7, 2024 · 17 comments
Closed

add:ttpmenuのログインパスワードの暗号化機能追加 #246

hkanou opened this issue Jul 7, 2024 · 17 comments
Labels
enhancement New feature or request
Milestone

Comments

@hkanou
Copy link
Contributor

hkanou commented Jul 7, 2024

ttpmenuのログインパスワードの暗号化機能追加を提案させて頂きます。

#213 (comment)
ttpmenu内のパスワードエンコード/デコード
起動時にパスワード入れないと使えないオプションがあっても(あるほうが)よさそう。

概要

  • ttpmenuのログインパスワードの暗号化/復号対応

修正理由

  • 現状
    ttpmenuに入力されたパスワードはエンコードされ、レジストリ又はiniファイルに保存されます。
    保存されたパスワードをデコードすることで、第三者がパスワードを知ることができます。
  • 修正後
    レジストリ又はiniファイルに保存されるパスワードをAES-256-CTR(共通鍵)で暗号化し、第三者がパスワードを知ることが出来ないようにします。
    ログインパスワードを暗号化/復号する機能をLockBoxと呼びます。

修正内容

  • 画面イメージ
    https://github.com/hkanou/ttpmacro/tree/main?tab=readme-ov-file#ttpmenu

  • 実行ファイル
    https://github.com/hkanou/ttpmacro/raw/main/ttpmenu1/Release/ttpmenu_mod.exe

  • List Confiturationダイアログ
    ログインパスワードを暗号化して保存できるよう、下記のコントロールを追加します。

    • チェックボックス "use LockBox"
      OFFの場合は、ログインパスワードはエンコードされて保存されます。(現状どおり)
      ONの場合は、ログインパスワードはLockBoxで設定したパスワードを用いて暗号化されます。
    • プッシュボタン "LockBox"
      LockBoxを押すとパスワード入力ダイアログが表示されます。

    リストボックスで登録済ホストを選択した場合のふるまい:

    • 登録済ホストがLockBoxを使用する設定でLockBoxのパスワードが未入力又は誤りがある場合は、パスワード入力ダイアログが表示されます。
      LockBoxのパスワードでログインパスワードを復号できなかった場合は、パスワードは""(空文字)で表示されます。
  • 自動ログイン(ポップアップメニュー内の「Execute」)
    ログイン対象ホストがLockBoxを使用する設定で、LockBoxのパスワードでログインパスワードを復号できなかった場合は、パスワード入力ダイアログが表示されます。
    パスワード入力ダイアログでCancelボタンが押された場合は、対象ホストに接続後Tera Termでパスワード入力待ちになります。

  • その他

    • ttpmenu/registry.cpp : RegSetBinary()
      レジストリ又はiniファイルにホスト情報を書き込むと、Password=XXXの末尾のスペースが、保存される度に1文字づつ増えていく不具合を修正します。
    • ttpmenu/ttpmenu.cpp : ManageWMCommand_Config()
      詳細設定(Details)ダイアログで実行ファイル名に"ttermpro.exe"か含まれていると"use SSH"のチェックボックスがONになる処理を廃止します。(telnet使用時、想定外の挙動となるため)
    • installer/makelang.bat
      マウイ語の変換が漏れていたので下記を追加します
      perl utf8_to.pl cp65001 release/lang_utf8/Tamil.lng release/lang/Tamil.lng

修正時に迷ったこと

  • 機能名を何にするか?
    ログインパスワードやSSHのKeyfileとの混同が無く、利用者にわかりやすい名称としてLockBoxにしています。
  • List ConfiturationダイアログへのLockBoxの追加
    LockBoxはログイン対象ホスト毎に設定するものではないため、"Password"の下に"use LockBox"、"LockBox"があるのはおかしい?
    → ユーザやグループ単位にLockBoxのパスワードを付与するケースも考えられるため、ログインパスワードの下に追加しています。
  • LockBoxのパスワード入力ダイアログのタイトル
    Tera Term lauch toolとTeraTerm Menuのどちらの名称を使用すべきか?
    → どちらの名称でもわかるよう併記しています。
  • langファイル
    機械翻訳ですが、各言語向けに翻訳しています。
hkanou added a commit to hkanou/teratermproject_teraterm that referenced this issue Jul 7, 2024
hkanou added a commit to hkanou/teratermproject_teraterm that referenced this issue Jul 7, 2024
hkanou added a commit to hkanou/teratermproject_teraterm that referenced this issue Jul 7, 2024
@nmaya
Copy link
Member

nmaya commented Jul 8, 2024

LockBoxはログイン対象ホスト毎に設定するものではない

INIファイルでもホストごとに「LockBoxFlag=1」と保存されていますし、接続時にも設定したホストではパスワードを聞かれ、そうでないホストではパスワードを聞かれません。
Configuration=ログイン対象ホストごとに設定する機能に見えますが、違うのですか?

機能名

アプリケーション起動のときに1つのパスワードを入力するものであれば、「マスターパスワード」と言われる機能だと思います。
ログイン対象ホスト毎に設定する「ログインパスワードを保存するときに保護(暗号化)するパスワード」ということになりますよね?
短くていい名前が思いつきません。

機械翻訳

使っている機械翻訳は、出力のライセンスがどうなると言っていますか?
ライセンスが明示されていない場合、私はそれをライセンスがない(利用の許可がない)ものとみなします。

Tera Term lauch tool

これは About ダイアログにある文字列ですか?
"TeraTerm Menu" としか読んだことがないのでこちらでよいと思います。
また"Tera Term lauch tool" は名前の一部ではなく説明(「日本語ワープロソフト 一太郎」の「日本語ワープロソフト」の部分)のように思います。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 9, 2024

LockBoxはログイン対象ホスト毎に設定するものではない

INIファイルでもホストごとに「LockBoxFlag=1」と保存されていますし、接続時にも設定したホストではパスワードを聞かれ、そうでないホストではパスワードを聞かれません。
Configuration=ログイン対象ホストごとに設定する機能に見えますが、違うのですか?

「マスターパスワード」のイメージが強く混乱してしまいました。
おっしゃるとおり、ログイン対象ホストごとに設定する機能ですので"Password"と同じ扱いで良かったですね。

機能名

アプリケーション起動のときに1つのパスワードを入力するものであれば、「マスターパスワード」と言われる機能だと思います。
ログイン対象ホスト毎に設定する「ログインパスワードを保存するときに保護(暗号化)するパスワード」ということになりますよね?
短くていい名前が思いつきません。

はい、「ログインパスワードを保存するときに保護(暗号化)するパスワード」になります。
名称は悩みましたが、tipsで説明すれば伝わるのではということでLockBoxにしています。

機械翻訳

使っている機械翻訳は、出力のライセンスがどうなると言っていますか?
ライセンスが明示されていない場合、私はそれをライセンスがない(利用の許可がない)ものとみなします。

ご指摘いただきありがとうございます。
権利関係の考慮が漏れておりました、見直しいたします。

Tera Term lauch tool

これは About ダイアログにある文字列ですか?
"TeraTerm Menu" としか読んだことがないのでこちらでよいと思います。
また"Tera Term lauch tool" は名前の一部ではなく説明(「日本語ワープロソフト 一太郎」の「日本語ワープロソフト」の部分)のように思います。

Tera Term lauch toolは、About ダイアログとreadme.txtにあった文字列です。
lauch toolは説明部分である旨腹落ちしました。"Tera Term Menu"に修正いたします。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 9, 2024

もう一つ確認頂きたい箇所がありました。
#128 (comment) の"パスワードなどが漏れる可能性があることをマニュアルに追記"対応で下記を加筆しています。
この記載で良いか見ていただけないでしょうか...

doc/ja/html/usage/TTMenu/TTMenu.html

  1. Tera Term Menuとは

NOTE: 管理者権限を持つユーザはProcess Explorerなどのツールを用いてTeraTerm Menuから起動されたTera Termのユーザ名、パスワードなどの引数を表示させることが可能です。
情報漏洩のリスクがある環境では、TeraTerm Menuの利用をお控えください。

  1. レジストリ

レジストリ、iniファイルにはユーザ名、パスワードなどが保存されていますので取り扱いには注意してください。

@nmaya
Copy link
Member

nmaya commented Jul 10, 2024

パスワードなどが漏れる可能性があることをマニュアルに追記

ありがとうございます。よいと思います。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 11, 2024

パスワードなどが漏れる可能性があることをマニュアルに追記

ご多用な中確認頂きありがとうございます。

zmatsuo added a commit that referenced this issue Jul 17, 2024
hkanou added a commit to hkanou/teratermproject_teraterm that referenced this issue Jul 17, 2024
@hkanou
Copy link
Contributor Author

hkanou commented Jul 17, 2024

fix document #246
衍字並びに修正漏れを直して頂きありがとうございます。

メッセージの見直し #246

機械翻訳
使っている機械翻訳は、出力のライセンスがどうなると言っていますか?
ライセンスが明示されていない場合、私はそれをライセンスがない(利用の許可がない)ものとみなします。

langファイル他、メッセージを見直しました。

"TeraTerm Menu" としか読んだことがないのでこちらでよいと思います。

ダイアログのタイトルを"TeraTerm Menu"に修正致しました。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 18, 2024

富士通の対話型生成AI(Fujitsu Research Portal)につきまして、問い合わせの回答を頂きましたので共有させて頂きます。

  1. 富士通の対話型生成AI

    トップページ https://portal.research.global.fujitsu.com/
    対話型生成AI https://documents.research.global.fujitsu.com/chat-gen-ai/
    利用規約 https://portal.research.global.fujitsu.com/tou-list
    -> https://portal.research.global.fujitsu.com/content/terms-of-use-2024060701.pdf
    -> https://fjresearchportal.blob.core.windows.net/azureadb2c/static/cga/tou.html

  2. 問い合わせ結果

    問い合わせ先: FJ-AI-Innovation-PF [email protected]
    (問い合わせ先内容によっては、別MLへの再問合せが必要になるとのことです)
    前提: APIは使用せずチャットインターフェース(Web)により翻訳を行う
    問い合わせ結果:

    Q1. 翻訳結果のテキストが誰に帰属するか教えて下さい。
    A. 利用者(入力者)に帰属します。
    詳細は各生成AIエンジンの利用規約をご参照ください。

    Q2. 翻訳結果の複製、改変、再頒布が許可されているか教えて下さい。
    Q3. 翻訳結果の利用上の指定等がありましたら教えて下さい。(例 powered by XXX の表示が必要)
    A . 翻訳結果は利用者帰属なので、Q2,3に関する制約などはありません。

    Q4. 翻訳結果を自由に使用して良いでしょうか?
    A. 各利用規約の禁止事項で定められている用途(悪用、権利侵害など)でなければ、自由に使用できます。
    https://portal.research.global.fujitsu.com/content/terms-of-use-2024060701.pdf
    https://fjresearchportal.blob.core.windows.net/azureadb2c/static/cga/tou.html

    Q5. 対話型生成AIの出力結果に関して、ライセンス関係の情報をFAQまたは利用規約に加筆頂けないでしょうか?
    A. ご指摘ありがとうございます。内部で検討してまいります。

    Q5. 本問い合わせのご回答を公開しても良いでしょうか?
    A. OSSコミュニティへの公開とのことなので、問題ありません。

以下、私の主観/印象になります。

  1. 対話型生成AI
    https://documents.research.global.fujitsu.com/chat-gen-ai/
    • 幻覚(ハルシネーション)検出機能
      もっともらしい誤りの誤りらしさを数値で出してくれます。
      回答の理由自体は自分で判断しなければいけないのですが、根拠がわかるのが秀逸です。
    • 応答
      知らないことは知らないと言う素直なAI。
      話を逸らしたりしないので、調べものに良いです。
  2. 富士通サポート
    • 問い合わせ後、3営業日で回答を頂けました。
      権利関係は時間がかかると思っていましたが、想定以上に回答が早かったです。
    • OSSに対して好意的にご対応頂きました。
      今回、Tera Termの翻訳で利用したい旨お伝えしましたので、問い合わせ時はその旨連絡頂くと話が速いかもしれません。
  3. その他

zmatsuo added a commit that referenced this issue Jul 20, 2024
@zmatsuo
Copy link
Member

zmatsuo commented Jul 20, 2024

fix document #246
衍字並びに修正漏れを直して頂きありがとうございます。

手もとでマージをテストして、内容を見たりしていました。
途中で眠くなって自分のリポジトリにpushするつもりが
github.com/TeraTermProject/teraterm にpushしていました。
失礼しました。

修正提案をpushして見てもらうのも便利ですね。

不要なコードを見つけました。見てもらえないでしょうか。 @hkanou
#246_ttpmenu_merge ブランチです。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 20, 2024

手もとでマージをテストして、内容を見たりしていました。
修正提案をpushして見てもらうのも便利ですね。

ありがとうございます。

不要なコードを見つけました。見てもらえないでしょうか。 @hkanou
#246_ttpmenu_merge ブランチです。

不要なコードでした、ご指摘頂きありがとうございます。
DlgCallBack_LockBox()も同様、不要部分を削除正致しました。
また、LockBoxのパスワード入力ダイアログのメッセージが右に寄っていたので、中央に表示されるよう修正致しました。

zmatsuo added a commit that referenced this issue Jul 20, 2024
add:ttpmenuのログインパスワードの暗号化機能追加 #246
@hkanou
Copy link
Contributor Author

hkanou commented Jul 20, 2024

マージ頂きまして、大変ありがとうございます。
お陰様で魔改造と呼ばれなくて済みそうです。
いつもありがとうございます。

@zmatsuo
Copy link
Member

zmatsuo commented Jul 20, 2024

マージしたあと少し直しました。
609f1b9 をビルドしました。

https://ci.appveyor.com/project/teraterm/github-main/builds/50251240/artifacts

プロジェクトは(実は私がです) GitHub を使うこと、
PRを受け入れるということに慣れていないので
改善などアドバイスいただければ嬉しいです #178

お陰様で魔改造と呼ばれなくて済みそうです。

😃

@hkanou
Copy link
Contributor Author

hkanou commented Jul 21, 2024

マージしたあと少し直しました。
609f1b9 をビルドしました。

ありがとうございます。
ローカル環境の設定のままでした、お手数をおかけいたしました。

プロジェクトは(実は私がです) GitHub を使うこと、
PRを受け入れるということに慣れていないので
改善などアドバイスいただければ嬉しいです #178

こちらこそGitHubに不慣れでご迷惑をおかけしていないか心配です。
私は素人ですが、何か気づきがありましたらお伝えさせて頂きます。

https://ci.appveyor.com/project/teraterm/github-main/builds/50251240/artifacts

改めて確認いたしました。
優先度は低そうですが、一旦共有させて頂きます(備忘)

  1. ttpmenuの名称
    スペース有無の表記ゆれ"Tera Term Menu"、"TeraTerm Menu"がありました。
    使用方法の記載は"Tera Term Menu"、ソースや更新履歴等は"TeraTerm Menu"です。
    (私見)"Tera Term"本体ではないことを伝えるため、"TeraTerm Menu"に寄せているかもと思いました。

    <td>This function is called when Tera Term menu is initialized. The function allows to insert new menu item into original Tera Term menu.</td>

  2. installer/release/ttmenu_readme-j.txt
    ttmenu_readme-j.txt はv0.94r2用でした(最新版に更新しても良いかもしれません)

  3. English.lng
    \lang\English.lngは有りませんが、\lang_utf16le\English.lngは有ります。
    installer/makearchive.bat

    del /f %dst%\lang\English.lng

    del /f %dst%\lang_utf16le\English.lng を追加すると揃いそうです。

  4. installer/teraterm.iss

    Source: release\lang_utf16le\Default.lng; DestDir: {app}\lang_utf16le; Components: TeraTerm; Flags: onlyifdoesntexist uninsneveruninstall; Permissions: authusers-modify

    101行目の後ろに下記を追加しても良いように思われました。
    Source: release\lang\Tamil.lng; DestDir: {app}\lang; Components: TeraTerm; Attribs: readonly; Flags: uninsremovereadonly overwritereadonly

  5. テーマファイル
    https://github.com/TeraTermProject/teraterm/tree/main/installer/release/theme
    新しい書式([BG Theme]他)に更新しても良いように思われました。

@zmatsuo
Copy link
Member

zmatsuo commented Jul 23, 2024

ありがとうございます。
すぐに答えられそうなところから

  1. ttpmenu

名前は TeraTerm Menu が正式でok…と決めましょうか。

  1. installer/release/ttmenu_readme-j.txt

ttpmenu/readme.txt が正で、
installer/release/ttmenu_readme-j.txt がコピーだと(だった)思います。
ttmenu_readme-j.txt は保守されていないですね。

ソースツリーから削除して、
リリースを作るときに、正からコピーするようにしたほうがよさそうです。

  1. English.lng

English.lng は、デフォルトと同じになるから削除されているのかな?
あってもよさそうに思います。

  1. installer/teraterm.iss

lang\ の lngファイルは Windows(9x) 向けで、
Unicode ini ファイル読み込みができないため別に分けています。
参考

Tera Termは、9xをサポートするコンパイラでビルドすれば、
9xで動作するつもりではあります。
(環境を準備するのはMinGWが一番簡単です。最近テストしていません。)

リリースのTera Termは、9xで動作しないexeとなるので、
lang\ フォルダは不要といは不要ですね。

タミル(Unicode)をサポートした9xがあるのか、
あるならテストできるのか分からないです。

  1. テーマファイル

テーマは後回しになっています。

--

issueにするのかな?という内容とか
雑多な話題などを扱うのにMLを使えるようにしたい、
と準備しようとしたのですが挫折中です。

あまり使われてないですがチャットもあります。

@zmatsuo
Copy link
Member

zmatsuo commented Jul 24, 2024

名前は TeraTerm Menu が正式でok…と決めましょうか。

ここも調整が必要ですね。
https://teratermproject.github.io/manual/5/ja/usage/TTMenu/TTMenu.html

#261 を作りました。

雑多な話題などを扱うのにMLを使えるようにしたい、

ML準備中です。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 27, 2024

名前は TeraTerm Menu が正式でok…と決めましょうか。

承知いたしました。

ここも調整が必要ですね。
https://teratermproject.github.io/manual/5/ja/usage/TTMenu/TTMenu.html

#261 を作りました。

ありがとうございます、
#261でPRを出せるよう準備いたします。

雑多な話題などを扱うのにMLを使えるようにしたい、

Discordも使わせて頂きます。

@zmatsuo
Copy link
Member

zmatsuo commented Jul 27, 2024

#261 を作りました。

ありがとうございます、
#261でPRを出せるよう準備いたします。

#261 修正中です。
もうすぐpushできると思います。 @hkanou

自分に assign しておきますね。

@hkanou
Copy link
Contributor Author

hkanou commented Jul 29, 2024

クローズさせて頂きます。
ありがとうございました。

@hkanou hkanou closed this as completed Jul 29, 2024
@nmaya nmaya added this to the 5.3 milestone Aug 19, 2024
@nmaya nmaya added the enhancement New feature or request label Aug 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants