← 制作実績一覧

暗号化ファイル共有サービス / 未公開

SilentDrop

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

鍵を内包した雫のマークと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構成を検証