結婚式の写真を安心して共有するために。ハレシェアの安全性への考え方

HAREShareは、開発メンバー自身が結婚式の写真集めに苦労した経験から生まれました。
自分の友人から写真を受け取るのは、それほど難しくありません。しかし、パートナー側のゲストとなると事情が変わります。個別に連絡先を聞くのも、全員をLINEグループへ招待するのも気を使います。写真は渡したいけれど、個人のアカウントまでは知られたくないという人もいます。
そこで、ゲスト同士が個人的につながらなくても、写真だけをひとつの場所へ集められるサービスを作ろうと考えました。
ただし、参加の手間を減らすだけでは十分ではありません。
結婚式の写真には、家族が写っています。親しい人にしか見せていない表情や、その場にいた人たちだけで共有したい瞬間も残ります。ゲスト登録なしで参加できる手軽さを実現しながら、悪意を持った第三者が簡単に入り込めないこと。そして、仮に入口へたどり着いたとしても、勝手な操作ができないこと。この二つを同時に満たす必要がありました。
全員を同じ利用者として扱わない
HAREShareのセキュリティ設計で、最初に決めたのは、それぞれの利用者へ必要以上の権限を与えないことです。
新郎新婦は、アルバムの主催者です。すべての写真を閲覧でき、投稿された写真の削除やアルバムの管理も行えます。サービスを利用するお二人が結婚式の主役であり、最終的に写真を受け取る人でもあるためです。
一方、共同ホストとゲストには、それぞれの役割に必要な権限だけを与えます。アルバムに参加できることと、設定を変更できること、すべての写真を閲覧できることは別の権限です。
ログインしているゲストと、ログインせずに参加しているゲストも区別しています。ログインしたゲストは、自分が投稿した写真を後から確認し、削除できます。これをブラウザに残った情報だけで本人と判断する設計にはしませんでした。共有端末や公共の端末を使った場合、次に端末を触った人が前の利用者として操作できる可能性があるためです。
便利にできるからといって、すべての操作を便利にするとは限りません。誰の操作かを厳密に確認したい機能では、あえてログインを必要としています。
一度作った仕組みを、作り直したこともあります
開発当初、ゲストを招待するQRコードはアルバムごとに固定していました。仕組みとしては単純で、普段の利用だけを考えれば問題なく見えました。
しかし、QRコードが写った印刷物を紛失したり、招待リンクが意図しない相手へ転送されたりした場合、固定されたままでは緊急対応ができません。アクセスを止めるためにアルバムそのものを作り直すようでは、安心して使える設計とはいえないと判断しました。
現在は、招待用のQRコードとリンクを再発行できます。再発行すると古い招待情報を無効にし、そこから作られたゲストのセッションも利用できなくなります。
すでに参加している人だけを残せれば便利に見えるかもしれません。しかし、正規のゲストと、流出したリンクから参加した第三者を正確に見分けることはできません。再発行は頻繁に行う操作ではなく、漏えいが疑われるときのための操作です。そのためHAREShareでは、利便性よりも、一度すべてのアクセスを切り直せることを優先しました。
複雑な例外を増やすより、緊急時の動作を明確にする。
これはHAREShareが大切にしている考え方のひとつです。
人間関係を事前登録しなくても、公開範囲を選べる
結婚式に集まる人たちの関係はさまざまです。
全員の集合写真を参加者みんなへ届けたい人もいれば、自分の顔を全員に見られたくない人もいます。学生時代の友人だけ、同じ卓のメンバーだけ、親族だけで見たい写真もあります。
HAREShareでは、写真の投稿時に次の公開範囲を選べます。
- 参加者全員へ共有する
- 新郎新婦だけへ届ける
- 合言葉を知っている人たちだけで共有する
グループ共有のために、新郎新婦が事前にゲストを分類する必要はありません。投稿する人が合言葉を付け、普段使っているLINEグループなどで伝えるだけです。
たとえば、「合言葉は『吹奏楽部いつメン』にしたよ」と、いつもの会話の中で共有できます。
結婚式前の新郎新婦は、準備することがたくさんあります。他社サービスに見られるような事前のグループ分けを必須にしなかったのは、細かな公開範囲へ対応しながら、お二人の準備を増やしたくなかったからです。
合言葉付きの写真も、新郎新婦は合言葉を入力せず閲覧できます。誰かが二人のために残した写真が、合言葉を知らないという理由で主役へ届かないことを避けるためです。
画面から隠すだけでは、アクセス制御にならない
HAREShareでは、写真の一覧画面に表示するかどうかだけで権限を判断していません。
写真や動画の保存領域は、そのまま公開せず、閲覧要求を受けた時点でイベント、利用者のセッション、写真の公開範囲などをサーバー側で確認します。確認を通過した場合に限り、一定時間利用できる配信用URLを発行します。
通常の画面からは送れないリクエストも、直接APIへ送ることはできます。そのためテストでは、正しい画面操作だけでなく、悪意を持った操作も想定しています。
たとえば、別のアルバムの写真IDを混ぜる、ゲストが新郎新婦限定の写真を要求する、別の人が投稿した写真を自分の写真として操作するといったリクエストです。権限のない写真が一件でも混ざっていれば、閲覧できる写真だけを部分的に返すのではなく、要求全体を拒否するケースもテストしています。
公開期間が終了したアルバムも、画面から見えなくするだけではありません。バックエンドで期限を判定し、主催者のアルバム閲覧、ゲストの参加、写真の取得や配信用URLの発行を拒否します。APIを直接呼び出した場合も同じです。
なお、正規に発行された期限付きURLは、有効期限までは利用できる場合があります。表示中の写真のURLを、不特定多数が見られる場所へ共有しないようにしてください。
作って終わりにしない
HAREShareの開発には、高い機密性が求められるBtoB向けAPIやAWS基盤、世界向けに提供されるスマートフォンアプリのサーバー・アセット配信基盤などを開発してきた経験が生かされています。
その経験から一貫して重視しているのは、最小権限と継続的な監視です。
変更を公開する前には、単体テスト、結合テスト、スモークテストに加え、実際のブラウザ操作に近い確認も行っています。AIによるレビューも活用していますが、AIの判断だけで変更を公開することはありません。最終的に人が内容を確認し、承認したものだけを反映します。
公開後も、複数の指標に適切な閾値と細かなアラートを設定し、異常を検知した場合は速やかに調査します。特定の製品や防御機能だけに任せるのではなく、日々サービス全体を見直し、改善を続けています。
具体的な検知条件や制限値は、それ自体が攻撃の手がかりになり得るため公開していません。
招待リンクは、招待状と同じように扱ってください
システム側で対策を重ねても、サービスだけでは守りきれないことがあります。それが招待リンクの管理です。
QRコードを印刷した用紙を誰でも見られる場所へ放置する、招待リンクをSNSや掲示板へ掲載するといった使い方をすると、第三者もアルバムへ参加できる可能性があります。
招待リンクやQRコードは、結婚式の招待状と同じように、参加してほしい相手にだけ共有してください。意図しない相手に渡った可能性がある場合は、再発行することで古いアクセスを無効にできます。
安全性を、言葉だけで終わらせない
どのようなサービスにも「絶対に安全」と言い切ることはできません。HAREShareも、根拠なくそう主張することはしません。
その代わり、次の対策を積み重ねています。
- 利用者ごとに権限を分ける
- 入口を通過した後も操作を制限する
- 期限切れのアクセスをバックエンドで拒否する
- 通常とは異なる使われ方までテストする
- 公開後も監視を続ける
AIの普及によって攻撃手法も変化していきます。現在の対策を完成形とは考えず、監視、テスト、レビューの方法も継続的に更新していきます。
難しい技術用語を並べるのではなく、どのような考えで写真を守っているのかを具体的にお伝えすることも、写真を預かるサービスの責任だと私たちは考えています。
HAREShareは、ゲストが気軽に参加でき、新郎新婦が大切な写真を安心して受け取れる場所であり続けるために、これからも改善を続けます。
