【新・個人開発】Slackでパスワードを送る、あの“ヒヤリ”をなくしたい。テキスト暗号化ツール『Secure Snippet(仮)』を作ります

こんばんは!IT業界で働くアライグマです!

「Slackやメールで、パスワードやAPIキーといった機密情報を送る時、一瞬手が止まって『これ、本当に大丈夫か…?』と、ヒヤリとした経験はありませんか?」

リモートワークが当たり前になった現代において、これは多くのエンジニアやPjMが、日常的に遭遇する、極めてリアルで、しかし多くの人が「仕方ない」と諦めてしまっている、根深い課題だと私は考えています。

今日は、この日常に潜む重大なセキュリティリスクを解決するため、私自身の新しい個人開発プロジェクト『Secure Snippet(仮)』を始動させることを、ここに宣言します。

私たちの「性善説」は、もう限界かもしれない

なぜ、この問題はこれほどまでに根深いのでしょうか。それは、私たちの多くが、日々のコミュニケーションを「性善説」の上で成り立たせているからです。

「社内のクローズドなSlackだから大丈夫だろう」

「パスワードと、それが何のパスワードかを、別のメッセージで送れば安全だろう」

「すぐに消せば、履歴にも残らないはずだ」

これらの「気休め」の対策は、残念ながら、現代のセキュリティ脅威の前では、あまりにも無力です。PjMとして、私はプロジェクトのリスクを管理する立場にありますが、この「機密情報の平文送信」という行為は、私たちが認識している以上に、深刻なリスクを内包しています。

通信経路のリスク

たとえ社内ツールであっても、その通信経路が100%安全であるとは限りません。悪意のある第三者による中間者攻撃(Man-in-the-middle attack)のリスクは、常に存在します。また、カフェのフリーWi-Fiなど、信頼性の低いネットワークからアクセスする際の危険性は、言うまでもありません。

ログと履歴のリスク

これが、多くの人が見落としがちな、最も恐ろしいリスクかもしれません。Slackや各種チャットツールのログは、私たちの想像以上に長く、そして様々な場所に保存されています。退職したメンバーのアカウントや、万が一のサービス側の情報漏洩によって、数ヶ月前、数年前にやり取りされた機密情報が、意図せず流出する可能性はゼロではないのです。「後で消したから大丈夫」という考えは、サーバーのバックアップやデータ保持ポリシーの前では、気休めにしかなりません。

ヒューマンエラーのリスク

そして、これが最も頻繁に起こり、最も防ぐのが難しいリスクです。宛先を間違えて、全く関係のないチャンネルや個人に、重要なパスワードを送ってしまった…。考えただけでもぞっとするようなヒューマンエラーは、どんなに気をつけていても起こり得ます。PjMとして、私はこの「ヒヤリ」を放置することを、プロジェクト全体を危険に晒す、重大なリスク管理の欠如だと考えます。

この課題を解決するための、大げさな法人向けツールではない、もっと手軽で、個人レベルで使えるシンプルな解決策が、世の中にはまだ不足していると感じています。

新サービス『Secure Snippet(仮)』の構想

この課題を解決するために、私が作ろうとしている新しいWebサービスの概要を、ご紹介します。

  • コア機能:
    1. あなたが送りたいテキスト(パスワードやAPIキーなど)と、それを受け取る相手とだけが知っている「合言葉(パスワード)」を入力します。
    2. あなたのブラウザ上で、入力されたテキストが、合言葉を使って強力なアルゴリズム(AES暗号化など)で暗号化され、意味不明な文字列が生成されます。
    3. あなたはその暗号化された文字列だけを、Slackなどで相手に送ります。
    4. 受け取った相手は、このツールを開き、暗号化された文字列と、事前に共有した「合言葉」を入力することで、初めて元のテキストに復号(元に戻すこと)ができます。
  • 核心的な思想:「ゼロ知識」このツールの最も重要な点は、あなたの入力した「テキスト」も、それを暗号化するための「合言葉」も、一切サーバーに送信されないということです。全ての暗号化・復号処理は、あなたのブラウザの中だけで完結します(クライアントサイド暗号化)。これにより、たとえこのツール自体の通信が盗聴されたとしても、あるいは万が一、このサービス自体が悪意を持っていたとしても、第三者があなたの機密情報を知ることは、原理的に不可能です。私たちは、ユーザーのデータについて「何も知らない(ゼロ知識)」のです。この思想こそが、セキュリティツールにおける、最高の信頼性の証となります。

MVP(最小限の製品)の姿と、その先のロードマップ

この構想を実現するため、まずは「登録不要で、全ての処理がブラウザ上で完結する、超シンプルなWebツール」を、MVPとして開発します。

「正規表現ストッカー」の開発で得た学びを活かし、ユーザーがサイトにアクセスした瞬間から、一切のストレスなく、そのコアな価値を体験できることを、最優先します。

そして、その先の未来には、私たちが以前議論した、美しいフリーミアム戦略を描いています。

  • v1.0 (Pro版):もし、多くのユーザーがこのツールを愛用し、「暗号化したスニペットを、後から見返せるように保存しておきたい」「チームで、安全なスニペットを共有したい」という、次の「痛み」を感じてくれたなら。その時こそが、ユーザー登録機能と、クラウド上に暗号化されたままデータを保存できる、Pro版の開発に着手する最高のタイミングです。このPro版においても、「ゼロ知識」の思想は貫きます。サーバーに保存されるのは、あくまで「暗号化されたデータ」であり、それを復号するための「合言葉」は、決してサーバーには保存しません。

なぜ、私がこのツールを作るのか(開発思想)

このツールのアイデアは、私の過去のアプリプランのリストの中に、ずっと眠っていました。そして、そのアイデアは、私自身の「PjMとしての責任感」と、「エンジニアとしての技術的好奇心」から生まれています。

PjMとして、私はチームの情報を守る責任があります。日々の業務で「ヒヤリ」を感じながら、それを放置することは、プロフェッショナルとして許されません。

エンジニアとして、私は暗号化という、Webの根幹をなす美しい技術に、強い興味を持っています。クライアントサイドのJavaScriptだけで、どこまで堅牢なセキュリティが実現できるのか、自分自身で試してみたい。

自分自身が、このツールの「最初のユーザー」であり、そして「最高のユーザー」であること。

これこそが、個人開発を成功に導き、やり遂げるための、最も強力なモチベーションになると私は信じています。

まとめ

ということで、本日から、私の新しい挑戦が始まります。

「正規表現ストッカー」の開発ジャーニーで得た学びを活かし、今度は「セキュリティ」という、また違う角度から、私たち開発者の日常を少しだけ良くするためのツール開発に、全力を注ぎたいと思います。

このブログが、単なる技術情報の発信の場であるだけでなく、一個のWebサービスが、アイデアの種から生まれ、設計され、実装され、そして世に放たれるまでの全過程を記録する「ドキュメンタリー」の場にもなれば、と考えています。

これから、このブログを通じて「Secure Snippet(仮)」の開発過程――どんな技術で悩み、どんな壁にぶつかり、どうやってそれを乗り越えていくのか――を、リアルタイムで発信していきます。

もし、このツールに「確かに、こういうの欲しかったかも」と少しでも共感してくれたなら、ぜひ、この開発ジャーニーを一緒に見守っていただけると嬉しいです。あなたの応援が、私の開発の大きな力になります。