Watermarker Bot Untuk Antisipasi Penyalahgunaan Foto Dokumen

Rogo Jagad Alit
5 min readNov 14, 2021

--

Di tahun 2021 ini kita beberapa kali mendengar berita mengenai kebocoran data digital yang disimpan di berbagai instansi.

Contohnya data BPJS Kesehatan, data nasabah BRI Life dan data e-Hac.

Kemudian pada tanggal 30 Agustus 2021 Kementrian Komunikasi dan Informatika merilis sebuah tweet yang berisikan tips — tips untuk mengantasipasi penyalahgunaan foto dokumen data pribadi.

Singkatnya, sebelum kita mengunggah atau mengirim foto dokumen pribadi ke suatu pihak, kita bisa menambahkan watermark ke dalam gambar tersebut yang berisikan waktu dan tujuan kegunaan foto gambar tersebut.

Tujuannya, kalaupun foto dokumen tersebut bocor, pihak tidak berwenang yang memperoleh gambar tersebut tidak bisa menggunakannya karena gambarnya sudah kita beri watermark sesuai dengan kegunaannya dan kepada pihak mana kita menyerahkan gambar tersebut.

Caranya cukup mudah, kita bisa memanfaatkan aplikasi editing gambar yang tersedia Google Play Store atau App Store atau aplikasi editing gambar bawaan smartphone kita.

Kemudian kita bisa menambahkan tulisan watermark untuk menandai kegunaan foto dokumen tersebut.

Misalnya, “keperluan verifikasi Bank Jagoan Maret 2021” atau “keperluan daftar pinjol Uang Kaget Desember 2042”.

Tapi bagi saya pribadi, cara yang disarankan oleh Kementrian Kominfo masih terlalu repot karena terlalu banyak melibatkan proses manual.

Bagaimana saya bisa membuat proses tersebut menjadi lebih mudah dan cepat?

Bagaimana jika kita bisa mengirim gambar dokumen kita, disertai dengan tulisan yang kita inginkan sebagai watermark, lalu kita akan memperoleh gambar dengan watermark sesuai yang kita inginkan?

Memperkenalkan OTRW Image Watermarker Bot

Bot ini adalah chatbot Telegram yang saya buat untuk mengotomatisasi tips yang sudah diberikan oleh Kementrian Kominfo.

Secara sederhana, teman — teman cukup mengirim gambar dokumen yang ingin teman — teman berikan watermark.

Kemudian bot ini akan meminta teks yang ingin teman — teman gunakan sebagai watermark.

Setelah itu bot akan mengembalikan gambar dokumen yang teman — teman kirim yang sudah diberikan watermark.

Sehingga, teman — teman tidak perlu mengeditnya secara manual.

“Wah bisa dipercaya nggak nih? Jangan — jangan bot ini adalah scam? Nggak cuman ngedit gambar kita saja tapi juga ngesave gambar dokumennya?”

Tenang, sebagai jaminan bahwa bot ini tidak menyimpan gambar dokumen teman — teman, kode sumber dari bot ini dapat diakses di repository Github saya di sini: https://github.com/rogojagad/watermarker-bot

Silahkan teman — teman periksa dengan cara membaca kodenya (kalau teman — teman bukan seorang programmer atau tidak bisa membaca kode pemrograman, silahkan minta bantuan teman kalian yang bisa hehehe).

Kalaupun ada implementasi yang ternyata menyebabkan bahwa gambar dokumen teman — teman tersimpan dan bisa diakses, silahkan submit issue di repository yang sudah saya berikan di atas.

Resiko Terkait Behaviour Server Telegram

Ada beberapa informasi yang relevan terkait behaviour dari server Telegram yang harus teman-teman ketahui:

  1. Secara implementasi bot yang saya buat tidak akan menyimpan gambar apapun yang teman-teman kirim tetapi server Telegram akan menyimpan gambar tersebut pada storage mereka.
  2. Behaviour ini adalah behavior server Telegram secara umum dan bukan hanya spesifik pada bot yang saya buat ini.
  3. Pertanyaanya, apakah gambar yang disimpan oleh Telegram bisa diakses? Iya bisa. Tapi untuk mengaksesnya hanya bisa melalui API yang dijelaskan pada dokumentasi ini.
  4. Sehingga, kecuali ada pihak yang bisa memperoleh informasi yang dibutuhkan untuk mengakses API tersebut seperti misalnya bot secret token atau chat id, maka foto dokumen teman — teman tidak dapat diakses.

Terkait dengan hal tersebut, maka resiko keamanan terkait file yang disimpan pada server Telegram secara otomatis menjadi resiko dalam menggunakan bot ini.

Perlu diingat bahwa penggunaan bot ini tidak akan menjamin bahwa data pribadi teman — teman akan aman dari kebocoran.

Seperti yang sudah saya jelaskan di atas, bahwa dengan memberikan watermark pada foto dokumen anda (baik secara manual ataupun menggunakan bot ini), hanya akan mencegah foto dokumen anda disalahgunakan dan mengetahui sumber kebocoran data tersebut.

Implementasi

Bot ini saya kembangkan menggunakan bahasa pemrograman Typescript dengan beberapa library pendukung seperti:

  • Sharp (library untuk melakukan pengolahan gambar)
  • Node Telegram Bot API (library untuk melakukan komunikasi dengan server Telegram)

Saya memilih menggunakan library Sharp karena pernah menggunakan library ini di kantor saya sebelumnya untuk salah satu keperluan pemrosesan gambar.

Bedasarkan dokumentasi Sharp yang saya baca, library Sharp hanya bisa menambahkan watermark ke dalam gambar apabila watermark-nya dalam format gambar.

Sedangkan teks watermark yang dikirimkan oleh user adalah sebuah string.

Saya sempat mencoba beberapa library yang dari repository NPM yang dikhususkan untuk menambahkan watermark ke dalam gambar.

Namun, banyak library tersebut sudah discontinued, tidak memiliki rating yang baik atau tidak memiliki implementasi yang saya inginkan.

Sehingga, dengan berbagai pertimbangan saya memilih untuk menggunakan Sharp.

Setelah membaca lebih jauh, ternyata library Sharp mampu membentuk sebuah gambar SVG dari inputan string yang ada dalam format tag SVG.

Problem ini pun terselesaikan dan bot saya bisa berfungsi dengan sebagaimana yang saya inginkan.

Implementasi pemberian watermark pada gambar

Namun, ada hal lain yang menjadi pertimbangan saya terkait stack yang saya gunakan, yaitu bahasa pemrograman Typescript dan engine Node.js.

Salah satu pertimbangan yang dianjurkan ketika mengembangkan aplikasi dengan Node.js adalah sebisa mungkin menghindari proses yang bersifat CPU-intensive

Karena hal tersebut dapat menghambat jalannya event loop dan ketersediaan thread pada Node.js untuk melayani request lain yang masuk.

Contoh proses yang bersifat CPU-intensive adalah operasi rekursif, membaca file dari sistem secara sinkronus, proses hashing, kalkulasi public-private key dan juga manipulasi gambar.

Sehingga secara best practice bot ini sebenarnya tidak cocok apabila dikembangkan menggunakan Node.js.

Dapat diprediksi jika bot ini menghandle request yang cukup banyak dalam satu waktu maka akan terjadi penurunan performa secara response time.

Tetapi saya tetap menggunakan bahasa pemrograman Typescript dengan pertimbangan sebagai berikut:

  1. Integrasi antara API Telegram dengan bahasa pemrograman Typescript / Javascript adalah yang paling mudah dari yang saya rasakan selama ini. Sehingga, secara proses pengembangan tidak akan seberapa susah.
  2. Pengguna dari bot ini tidak banyak, paling hanya saya sendiri dan beberapa teman yang mungkin tertarik untuk menggunakannya di masa depan. Sehingga, request yang masuk pun rasanya tidak akan terlalu banyak.

Akhir Kata

Bagi teman — teman yang ingin menggunakan bot ini, bisa langsung meng-add chat bot ini di Telegram dengan username: @otrw_image_watermarker_bot.

Tentu masih banyak hal yang bisa dikembangkan dari chatbot ini, seperti misalnya menambah opsi untuk meletakkan posisi watermark atau memilih ukuran teks watermark pada gambar.

Atau teman — teman ingin memberikan usulan fitur atau saran? Silahkan tuliskan di kolom Issue pada repository saya atau tinggalkan komentar pada tulisan ini.

Terimakasih sudah membaca, semoga bot ini bisa berguna untuk teman — teman semua dan kita bisa lebih memperhatikan keamanan data kita di era digital ini.

--

--