WORK 04
暗号化ファイル共有サービス
SilentDrop
未公開
ブラウザ内の暗号化・復号と、分割送信の再開に対応した未公開のファイル共有サービスです。

制作のポイント
- 何のために
- ファイルをサーバー上で平文のまま扱わず、共有から期限後の削除まで行うために制作しました。
- 担当した範囲
- 送受信・認証・DB・期限削除の実装と公開手順の整備を担当し、サービスは未公開です。
- 工夫した点
- ブラウザ内で圧縮・暗号化してから分割送信し、中断したアップロードを再開できるようにしました。
ABOUT
概要
送る側のブラウザでファイルを圧縮・暗号化し、分割してアップロードするWebサービスを制作しました。受け取る側もブラウザで復号します。サーバーには暗号化後のデータを保存する設計です。
送信中断後の再開、アカウントを持たない人の受け取り、履歴表示、期限切れデータの削除を実装しています。アプリと公開手順は用意していますが、サービスは未公開です。
- 想定利用者
- メール添付では扱いにくいファイルを、共有先へ渡したい人。
- 制作目的
- ファイルの内容をサーバー側で平文のまま扱わず、送信から期限後の削除までを一つの流れにすること。
- 現在の状態
- 未公開です。アプリ機能と本番公開を想定した手順は整備していますが、公開URLはありません。
主な機能
- 01
ブラウザ内でgzip圧縮とAES-GCM暗号化を行ってから送信する
- 02
ファイルを分割して送信し、中断したアップロードを再開する
- 03
共有URLからゲストがファイルを受け取り、ブラウザ内で復号する
- 04
Googleログイン、メールOTP、パスワード認証を使い分ける
- 05
送信済みファイルの一覧・履歴・保存期限を確認する
- 06
期限切れファイル、未完了アップロード、退会データを定期削除する
制作範囲
- ファイルの送信・受信・期限切れ削除までの要件とデータ設計
- ブラウザ側の圧縮・暗号化・復号、1MiB単位の分割送信と再開処理の実装
- ゲスト受け取り、認証、履歴、期限削除のバックエンド・DB実装
- 1ファイル250MiB上限、入力検証、CSRF、レート制限の実装
- 本番公開を想定したVPS、監視、バックアップ、ロールバック手順の整備
- 単体・統合テストと本番構成の契約テスト
TECHNOLOGY
技術情報
- Backend
- Java 21 / Spring Boot 3.4 / Spring Security
- Frontend
- Thymeleaf / HTML / CSS / Vanilla JavaScript / Web Worker
- Encryption
- Web Crypto API / AES-GCM / gzip。暗号化・復号はブラウザ内で実行
- Transfer
- 1MiB単位のチャンク送信、再開、1ファイル250MiB上限
- Database
- PostgreSQL 16 / MyBatis / Flyway
- Authentication
- Google OAuth / メールOTP / パスワード / ゲスト受け取り
- Deployment plan
- Ubuntu 24.04 / Nginx / systemd / Monit / fail2ban / restic / Cloudflare R2。未公開のため、稼働中の構成ではなく整備した手順
- Testing
- JUnit / Spring Boot Test。暗号化、転送、認証、削除、production構成を検証