制作実績一覧

WORK 04

暗号化ファイル共有サービス

SilentDrop

未公開

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

鍵を内包した雫のマークとSilentDropのロゴ
暗号化ファイル共有サービス / 未公開

制作のポイント

何のために
ファイルをサーバー上で平文のまま扱わず、共有から期限後の削除まで行うために制作しました。
担当した範囲
送受信・認証・DB・期限削除の実装と公開手順の整備を担当し、サービスは未公開です。
工夫した点
ブラウザ内で圧縮・暗号化してから分割送信し、中断したアップロードを再開できるようにしました。

ABOUT

概要

送る側のブラウザでファイルを圧縮・暗号化し、分割してアップロードするWebサービスを制作しました。受け取る側もブラウザで復号します。サーバーには暗号化後のデータを保存する設計です。

送信中断後の再開、アカウントを持たない人の受け取り、履歴表示、期限切れデータの削除を実装しています。アプリと公開手順は用意していますが、サービスは未公開です。

想定利用者
メール添付では扱いにくいファイルを、共有先へ渡したい人。
制作目的
ファイルの内容をサーバー側で平文のまま扱わず、送信から期限後の削除までを一つの流れにすること。
現在の状態
未公開です。アプリ機能と本番公開を想定した手順は整備していますが、公開URLはありません。

主な機能

  1. 01

    ブラウザ内でgzip圧縮とAES-GCM暗号化を行ってから送信する

  2. 02

    ファイルを分割して送信し、中断したアップロードを再開する

  3. 03

    共有URLからゲストがファイルを受け取り、ブラウザ内で復号する

  4. 04

    Googleログイン、メールOTP、パスワード認証を使い分ける

  5. 05

    送信済みファイルの一覧・履歴・保存期限を確認する

  6. 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構成を検証