PowerShellでパスワードマネージャを作る

はじめに

様々な IT サービスが跳梁跋扈,もとい,不易流行する現代.サービス利用にはアカウント登録が欠かせない.Google 等一部のアカウントは色々なサービスと連携して入るものの,アカウントがなくなることはない.

周囲の人達の状況を尋ねてみると,かなり多くの人が平文テキストでパスワードを管理している様子.また平文テキスト管理の脆弱性は理解しつつも,諸般の理由でパスワードマネージャの導入ははばかられると言う.それで良いのか IT 屋さん.

  安全なパスワードの作成だけでなく、他人に知られないよう、かつ自分でも忘れてしまうことがないように管理をしましょう。自分で忘れてしまわぬようにメモを作成した場合は、それが他人に見られることのないよう、肌身離さず持ち歩くなど、厳重に保管をするよう心がけましょう。

総務省 安心してインターネットを使うために 国民のための情報セキュリティサイト

USBメモリすら知らない人間でもサイバーセキュリティ担当大臣ができる国のセキュリティサイト.思うところが無いわけではないが,このサイトによるとパスワードを書いたメモを作ったら厳重に管理せよと書いてある.ファイル管理は厳重にしているつもりでも,コロナの影響でテレワークが普及した昨今,うっかり画面録画している会議にパスワードリストを晒した人もきっといることでしょう.

パスワード管理方法

平文テキスト

読んで字のごとく平文テキストでパスワードを管理する.未だ多くの熱狂的な信者を有する,最も初歩的かつ前時代的な管理方法.セキュリティリスクは言わずもがな.

代表的なアプリ:メモ帳,付箋,秀丸,サクラ,etc.

ローカルアプリのパスワードマネージャ

ローカル環境で動作するパスワードマネージャアプリ.自動入力やパスワード生成等,便利な機能がたくさん.クラウド連携機能のあるものも.一方でアプリがアカウント情報を抜き取るような邪悪な処理が混入していないか不安に思う人もちらほら.

代表的なアプリ:BitwardenLastPass1PasswordKeePass,etc.

クラウドのパスワードマネージャ

アプリ連携するも良し.ブラウザベースで管理するも良し.ローカルアプリの利便性に加えて,どのデバイスからでもアカウント情報を統合管理.アカウント情報をクラウド上で管理する事への不信感,アカウント情報がインターネット上を通ることへの不安.個人利用はしていてもエンタープライズ用途はまだまだ利用が少ない印象.

代表的なサービス:GoogleパスワードマネージャiCloudキーチェーン,etc.

自分でパスワードマネージャを実装

現代では様々なパスワードマネージャが台頭してきているにもかかわらず,それらの恩恵を受けられない環境.もしくは,セキュリティリスクは気になるものの,平文テキストしか選択出来ない残念な環境に身を置かざるを得ない人たちも一定数いると思われる.

そんな人は最早自前でパスワードマネージャを実装するしか無い.世間一般広く普及している Windows であれば幸いなことに,.NET や PowerShell といった OS 標準の強力なツールが用意されているので,これを使わない手はない.

代表的な手段:???

PowerSehll x .NET で パスワードマネージャ実装

ということで前置きが長かったがここからが本題.

現代で最も普及している OS は Windwos.世界シェアは 80% 近い.

Source: StatCounter Global Stats – OS Market Share

Windows アプリ開発ツールや方法は VBS,HTA,WPF,PowerSehll,などなど色々あるが,パスワードマネージャを導入できないよう環境では IDE の導入もきっとはばかられるだろう.PowerShell ISE は標準で利用できるので,今回は PowreShell で実装する.

Linux の GUI なら Qt,CLI なら whiptail などなど,探してみれば意外と手段はあるのかもしれない.

PowerShell で簡単なパスワードマネージャを作る

System.Windows.Forms を呼び出すことで結構簡単に GUI アプリを作れる.

なんやかんやでこんなかんじ.まだマスターパスワードは機能していないが,アカウントデータは DPAPI で暗号化される.

まだ色々と手直ししたいところはあるので追々直していくとして,概ね欲しい機能は実装出来たのでまぁ良しとする.

ついでにパスワード生成アプリも用意.

これでうっかり平文テキストを覗かれることも,パスワードを考える手間に悩まされることもなくなる.

おわりに

ということで,なんやかんやあって PowerShell でパスワードマネージャが出来た.

ソースは GitHub に置いといたので需要があればどうぞ.

GitHub - HeavyMoon/PSAccountManager: PowerSehll Account Manager
PowerSehll Account Manager. Contribute to HeavyMoon/PSAccountManager development by creating an account on GitHub.

コメント

タイトルとURLをコピーしました