暗号化ファイル共有サービス / 未公開
SilentDrop
ファイルをブラウザ内で暗号化し、共有先が復号して受け取るファイル送信サービスです。

概要
ファイルをブラウザ内で圧縮・暗号化し、分割して送信するWebサービスです。受け取る側もブラウザ内で復号し、サーバーには暗号化後のデータを保存します。
分割送信の再開、アカウントを持たない人の受け取り、保存期限後の自動削除を実装しています。サービスは未公開です。
- 想定利用者
- メール添付では扱いにくいファイルを、安全性に配慮しながら相手へ渡したい人。
- 制作目的
- ファイルの内容をサーバー側で平文のまま扱わず、送信から期限後の削除までを一つの流れにすること。
- 現在の状態
- アプリ機能と本番デプロイ・運用手順は整備済みですが、サービスは未公開です。公開URLはありません。
主な機能
- ブラウザ内でgzip圧縮とAES-GCM暗号化を行ってから送信する
- ファイルを分割して送信し、中断したアップロードを再開する
- 共有URLからゲストがファイルを受け取り、ブラウザ内で復号する
- Googleログイン、メールOTP、パスワード認証を使い分ける
- 送信済みファイルの一覧・履歴・保存期限を確認する
- 期限切れファイル、未完了アップロード、退会データを定期削除する
制作範囲
- 個人開発としての要件整理とファイル送受信フローの設計
- ブラウザ側の暗号化・復号、分割アップロード、再開処理の実装
- 認証、ファイル管理、履歴、期限削除を扱うバックエンド・DB実装
- 容量制限、入力検証、CSRF、レート制限を含むセキュリティ設計
- VPS、Nginx、systemd、監視、バックアップ、ロールバック手順の整備
- 単体・統合テストと本番構成の契約テスト
技術情報
- 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 / パスワード / ゲスト受け取り
- Infrastructure
- Ubuntu 24.04 / Nginx / systemd / Monit / fail2ban / restic / Cloudflare R2 backup
- Testing
- JUnit / Spring Boot Test。暗号化、転送、認証、削除、production構成を検証