নিজে যাচাই করুন

signed by Lollyverify-yourself.htmlHTMLAI generatedgenerated by Geminiনিজেই যাচাই করুনGet the signed filepixels, not shapes১০ KB

Lolly-র প্রাইভেসি ও সিকিউরিটি পেজগুলো দাবি করে: কোনো অ্যানালিটিক্স নেই, কোনো ট্র্যাকিং নেই, ফাইল কখনও ডিভাইস ছেড়ে যায় না, পুরো সিস্টেমে একটি মাত্র কুকি। এই পেজটি ভিন্ন: এটি আপনাকে এসবের কোনোটিই বিশ্বাস করতে বলে না। এটি একটি প্রক্রিয়ার তালিকা, প্রতিটির সাথে সঠিক কমান্ড বা ক্লিক-পাথ এবং আপনি যে আউটপুট দেখবেন তা রয়েছে। এখানকার প্রতিটি দাবি মিনিটের মধ্যে ভুল প্রমাণযোগ্য, বেশিরভাগ কিছু ইনস্টল না করেই।

এই পেজের কোনো চেক যদি দেখানো ফলাফল না দেয়, তাহলে সেটা হয় একটি বাগ নয়তো একটি ভাঙা প্রতিশ্রুতি। যেভাবেই হোক এটি রিপোর্ট করুন, এবং আমরা এটিকে একটি ভাঙা প্রতিশ্রুতির যোগ্য গুরুত্ব দিয়ে বিবেচনা করব।

দশ সেকেন্ডে এটি কাজ করতে দেখুন

প্রক্রিয়াগুলোর আগে, ফলাফলটি দেখুন। /verify খুলুন এবং তাতে একটি ফাইল ড্রপ করুন - কোনো আপলোড নেই, কোনো অ্যাকাউন্ট নেই, সার্ভারের জন্য কোনো অপেক্ষা নেই। এখানে এটি আমাদের AI stance পেজ থেকে জেনারেট করা Queensland ঝড় যাচাই করছে: একটি Gemini ইমেজ যা Lolly খুলেছে, রিসাইজ করেছে ও এক্সপোর্ট করেছে। নিচের প্রতিটি ব্যাজ ডিভাইসে গণনা করা হয়েছে, ফাইলের নিজস্ব বাইট থেকে।

ফোন-প্রস্থের স্ক্রিনে Verify - ঝড়ের ছবি, একটি সবুজ Made with Lolly রায় এবং এর নিচে সাজানো ক্রেডেনশিয়াল-অক্ষত ও বাইট-অপরিবর্তিত ব্যাজsigned by Lollyvector SVGAI generatedনিজেই যাচাই করুনGet the signed file১৪৭ paths~9.4k nodes৭২ groups২ images২৫৪ KBফোন-প্রস্থের স্ক্রিনে Verify - ঝড়ের ছবি, একটি সবুজ Made with Lolly রায় এবং এর নিচে সাজানো ক্রেডেনশিয়াল-অক্ষত ও বাইট-অপরিবর্তিত ব্যাজsigned by Lollyvector SVGAI generatedনিজেই যাচাই করুনGet the signed file১৪৭ paths~9.4k nodes৭২ groups২ images২৫৪ KB

রায়টি একটি ব্যাজ নয় বরং তাদের একটি ছোট স্তূপ, প্রতিটি একটি স্বতন্ত্র তথ্য:

এবং সম্পূর্ণ ইতিহাস ফাইলটির সাথে ভ্রমণ করে। এখানে নয়টি ধাপ টিকে আছে - পাঁচটি Google রেকর্ড করেছিল যখন এটি ছবিটি জেনারেট ও ওয়াটারমার্ক করেছিল, তারপর চারটি Lolly রেকর্ড করেছিল যখন এটি এই পেজে কপিটি খুলেছিল, চিহ্নিত করেছিল ও রূপান্তর করেছিল - সরাসরি বাইট থেকে পড়া হয়েছে, আপনার ডিভাইসে, এবং একটি টাইমলাইন হিসেবে উপস্থাপিত। এটি একই ছবি, একই পদ্ধতিতে যাচাই করা, যেমন AI stance পেজে C2PA টাইমলাইনে।

Verify ঝড়ের ছবি থেকে ফিরিয়ে পড়া পরিবর্তনের ইতিহাস - Google-এর রেকর্ড করা পাঁচটি ধাপ, তারপর Lolly-র চারটি, এই পেজের WebP-তে গিয়ে শেষ হয়েছেsigned by Lollyvector SVGনিজেই যাচাই করুনGet the signed file৭১ paths~8.9k nodes৭৮ groups১১১ KBVerify ঝড়ের ছবি থেকে ফিরিয়ে পড়া পরিবর্তনের ইতিহাস - Google-এর রেকর্ড করা পাঁচটি ধাপ, তারপর Lolly-র চারটি, এই পেজের WebP-তে গিয়ে শেষ হয়েছেsigned by Lollyvector SVGনিজেই যাচাই করুনGet the signed file৭১ paths~8.9k nodes৭৮ groups১১১ KB

যদিও এসবের কোনোটাই বিশ্বাসের দাবি নয় - এটি শুধু একটি প্রদর্শনী। এই পৃষ্ঠার বাকি অংশটাই আসল বিশ্বাসের দাবি: উপরের প্রতিটি ব্যাজ পুনরুৎপাদনযোগ্য, আর এখানে দেখানো হলো কীভাবে আপনি তার পেছনের গ্যারান্টিগুলো নিজে যাচাই করবেন।

আপনার ব্রাউজারে, কোনো টুল ছাড়াই

১. নেটওয়ার্ক লক্ষ্য করুন। lolly.tools খুলুন, আপনার ব্রাউজারের DevTools খুলুন (F12), Network ট্যাবে যান এবং একটি টুল ব্যবহার করুন - QR Code-এ একটি URL টাইপ করুন, রং বদলান, একটি PNG এক্সপোর্ট করুন। প্রতিটি রিকোয়েস্ট lolly.tools-এর মধ্যেই থাকে: অ্যাপ শেল, টুলের নিজস্ব ফাইল, ক্যাটালগ অ্যাসেট। কোনো অ্যানালিটিক্স হোস্ট নেই, কোনো CDN বিকন নেই, কোনো ফন্ট সার্ভিস নেই, কোনো "এরর রিপোর্টিং" এন্ডপয়েন্ট নেই। আপনি একটি টুলে যা টাইপ করেন তা কোনো রিকোয়েস্টেই দেখা যায় না - রেন্ডারিং স্থানীয়ভাবে হয়।

সৎ ব্যতিক্রমগুলো - প্রতিটিই ঐচ্ছিক, ব্যবহারকারী-উদ্যোগে ঘটে এবং ঘটার সময় একই Network ট্যাবে দৃশ্যমান থাকে: ব্র্যান্ড এডিটরে একটি Google Font যোগ করলে সেই একটি ফ্যামিলি Google থেকে আনা হয়, একটি সম্মতি ডায়ালগের পর যা প্রথম ফেচের আগে ঠিক এই বিষয়টি একবার জানায়; একটি ICC press-profile preset-এ ক্লিক করলে সেই প্রোফাইলটি color.org-এ ICC-এর পাবলিক রেজিস্ট্রি থেকে আনা হয়; ঐচ্ছিক বিল্ট-ইন রেডিও চালালে স্টেশন থেকে স্ট্রিম হয়; Meeting Planner-এ একটি অবস্থান লিখলে তার স্থানাঙ্ক ও টাইম জোনের জন্য open-meteo-র জিওকোডিং সার্ভিসে সেটি খোঁজা হয়, প্রতি শহরে একবার (উত্তর আপনার ডিভাইসে সংরক্ষিত থাকে), আর ইনপুটের ঠিক পাশেই এই প্রকাশ্য তথ্যটি লেখা থাকে; আর URL Screenshot স্বাভাবিকভাবেই আপনার টাইপ করা URL-টি লোড করে - এটাই তার কাজ, এবং আপনি সেটা ঘটতে দেখেন। কোনো টুল যদি নেটওয়ার্ক ক্ষমতা ঘোষণা করে, তবে সেটি শুধু তার ম্যানিফেস্টের অনুমোদিত হোস্টগুলো থেকেই ফেচ করতে পারে, আর এই ব্যবস্থাটি ব্যর্থ-হলে-বন্ধ (fail-closed) ধরনের; বর্তমানে চালু কোনো টুলই এমন ঘোষণা করে না, তাই ব্রাউজার-বলবৎ Content-Security-Policy-ই সেই সীমানা যা উপরের তালিকাকে তার হোস্টগুলোর মধ্যে বেঁধে রাখে। প্রাইভেসি পলিসি-তে এসবের সম্পূর্ণ প্রামাণিক তালিকা রয়েছে; এর স্থায়ী নিয়ম হলো - সেই তালিকায় না থাকা কোনো নেটওয়ার্ক সংযোগ কখনো ঘটে না।

২. প্লাগ খুলে ফেলুন। অ্যাপটি লোড করুন এবং একটি বা দুটি টুল খুলুন, তারপর অফলাইনে চলে যান - এয়ারপ্লেন মোড, বা DevTools → Network → Offline। রিলোড করুন। গ্যালারি এবং আপনার খোলা প্রতিটি টুল কাজ করতে থাকে, এমনকি আপনার ব্যবহৃত ফরম্যাটগুলোতে রেন্ডারিং ও এক্সপোর্টও - একটি টুলের ফাইল এবং একটি ফরম্যাটের এনকোডার প্রথমবার ব্যবহারের সময়ই ক্যাশ হয়ে যায়, তাই অফলাইনে পরীক্ষা করার আগে একবার অনলাইনে টুলটি চালিয়ে দেখুন। এই পৃষ্ঠার সবচেয়ে শক্তিশালী একক পরীক্ষা এটিই: যে সফটওয়্যার ঘরে ফোন করে (phones home), তার কর্ড কেটে দিলে সে টিকতে পারে না।

৩. কুকি গুনুন। DevTools → Application (Firefox: Storage) → Cookies → https://lolly.tools। তালিকাটি খালি - অ্যাপটি কোনো কুকি সেট করে না। অথবা কনসোলে document.cookie পেস্ট করুন: আপনি পাবেন ""। (পুরো সিস্টেমে একমাত্র কুকিটি, lolly_ca_state, একটি ঐচ্ছিক আইডেন্টিটি সাইন-ইনের সময় সর্বোচ্চ দশ মিনিট থাকে - সাইন-ইন সম্পন্ন হওয়ার মুহূর্তেই মুছে যায় - /api/ca-তে সীমাবদ্ধ এবং HttpOnly: প্রাইভেসি পলিসি এটি নির্ভুলভাবে বর্ণনা করে।)

৪. নিজের স্টোরেজ পড়ুন। একই Application প্যানেল: Lolly যা কিছু রাখে তা আপনার সামনেই পরীক্ষণযোগ্য - কয়েক ডজন সাধারণ localStorage কী (থিম, ভাষা, সাইডবার প্রস্থ, সাউন্ড ও ভিউ সেটিংস, এবং পাবলিক টুল-ক্যাটালগ ইনডেক্সের একটি ক্যাশড কপি), এবং IndexedDB-তে আপনার নিজের ডকুমেন্ট। প্রতিটি মান পাঠযোগ্য স্ট্রিং বা JSON - কিছুই অস্পষ্ট করা নেই, পড়া নিরুৎসাহিত করার জন্য কিছুই এনকোড করা নেই। Profile → Clear all my data এটি মুছে দেয়; ব্রাউজারে সাইটের ডেটা মুছলেও একই কাজ হয়, কারণ টিকে থাকার মতো কোনো সার্ভার-সাইড কপি নেই।

৫. যাচাই করুন যে প্রকাশ যোগাযোগ ঠিকানা আছে। /.well-known/security.txt একটি RFC 9116 যোগাযোগ ব্লক দিয়ে উত্তর দেয়, কোনো HTML পৃষ্ঠা দিয়ে নয়।

একটি টার্মিনাল থেকে

৬. রেন্ডার এন্ডপয়েন্ট lolly.tools-এ বন্ধ। সার্ভারের একমাত্র বৈশিষ্ট্য যা ব্যবহারকারী-টাইপ করা ইনপুট একটি URL-এ রাখত - হট-লিংক রেন্ডার - সার্ভিসটি সংগঠন-মালিকানাধীন হোস্টিংয়ে স্থানান্তরিত না হওয়া পর্যন্ত এখানে নিষ্ক্রিয় (প্রাইভেসি পলিসি কারণটি ব্যাখ্যা করে):

curl -s -o /dev/null -w '%{http_code}\n' 'https://lolly.tools/tool/qr-code.svg?url=test'
# 404

সুইচটি প্রতি-ডিপ্লয়মেন্ট ভিত্তিক (LOLLY_DISABLE_RENDER_GET=1): lolly.art-এ, যা পাবলিক ডেমো ইনস্ট্যান্স, হট-লিংক রেন্ডার ইচ্ছাকৃতভাবে সক্রিয়, তাই সেখানে একই প্রোব একটি ছবি ফেরত দেয় - এই পার্থক্যটি ফ্ল্যাগটি কাজ করার প্রমাণ, কোনো অসঙ্গতি নয়।

৭. সার্ভার সারফেস গণনাযোগ্য। Server Surface বিদ্যমান প্রতিটি সার্ভার-সাইড রুট তালিকাভুক্ত করে, এই স্থায়ী নিয়মসহ যে সেই পৃষ্ঠায় নেই এমন কোনো এন্ডপয়েন্ট Lolly-র অংশ নয়। curl দিয়ে সেগুলো পরীক্ষা করুন; খুঁজে পাওয়ার মতো আর কিছু নেই।

সোর্সে

উপরের সবকিছুই তখনও নাটক হতে পারত যদি ডিপ্লয় করা কোড পাবলিক কোড থেকে ভিন্ন হতো। তাই কোডটি পরীক্ষা করুন - ডিপ্লয়মেন্টটি পাবলিক রিপোজিটরি থেকে বিল্ড হয়:

git clone --recurse-submodules https://github.com/lolly-tools/lolly.git
cd lolly

৮. কোনো ট্র্যাকার নেই, কোথাও কোনো অ্যানালিটিক্স SDK নেই। যে কোড শিপ হয় তা অনুসন্ধান করুন - ইঞ্জিন, প্রতিটি শেল (ব্রাউজার এক্সটেনশন, Tauri ব্রিজ ওভাররাইড এবং সার্ভিস ওয়ার্কারসহ), সার্ভার ফাংশন এবং টুল প্যাক - স্বাভাবিক সন্দেহভাজনদের জন্য:

grep -rn --include='*.ts' --include='*.js' --include='*.mjs' --include='*.html' \
  -e googletagmanager -e google-analytics -e posthog -e mixpanel -e hotjar \
  -e sentry.io -e segment.com -e '@vercel/analytics' \
  engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
  shells/web/public/sw.js services packages api community brands/*/tools
# (no output)

৯. কোনো তৃতীয়-পক্ষ DNS রিজলভার নেই। Verify-র SEAL চেক কখনো DNS-over-HTTPS প্রদানকারীর মাধ্যমে লুকআপ রুট করে না - ওয়েব অ্যাপে আসলে কোনো রিজলভারই নেই:

grep -rn --include='*.ts' --include='*.js' --include='*.mjs' \
  -e cloudflare-dns.com -e dns.google -e /dns-query \
  engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
  shells/web/public/sw.js services packages api community brands/*/tools
# (no output: outside this page and its built copies, the only place those
#  hostnames appear in the repo is tests/no-trackers.test.ts, the test that
#  bans them)

১০. সার্টিফিকেট সার্ভিস কিছুই ধরে রাখে না। আইডেন্টিটি CA-র কোনো ইস্যুয়েন্স লগ নেই - না আপনার ইমেইল, না কোনো টাইমস্ট্যাম্প, না কোনো ওয়েবহুক। এই অনুপস্থিতিটি গ্রেপযোগ্য:

grep -rn logIssuance services/ca api/ca
# (no output)

টেস্ট দ্বারা বলবৎ, প্রতিশ্রুতি দিয়ে নয়

উপরের তিনটি সোর্স চেক কোনো এককালীন নিরীক্ষা নয় - সেগুলো টেস্ট স্যুটে পিন করা আছে, যাতে সেগুলো নীরবে ক্ষয়ে যেতে না পারে। tests/no-trackers.test.ts বিল্ড ব্যর্থ করে দেয় যদি:

ক্লোনে নিজেই এগুলো চালান (Node 22.18+; এই ফাইলের জন্য npm install প্রয়োজন নেই):

node --test tests/no-trackers.test.ts
# ✔ no analytics or tracking SDK appears anywhere in shipped source
# ✔ no third-party DNS-over-HTTPS resolver is contacted
# ✔ the certificate service logs no personal data
# ✔ privacy policy states a controller, a legal basis and a right to complain

সম্পূর্ণ স্যুট (npm install && npm test) আরও কয়েক হাজার টেস্ট চালায়, যার মধ্যে Security & Verification-এ বর্ণিত প্রতিকূল ক্রিপ্টোগ্রাফি টেস্টগুলোও অন্তর্ভুক্ত।

আপনি বাইরে থেকে যা যাচাই করতে পারবেন না - স্পষ্টভাবে বলা হলো

এই ধরনের একটি পৃষ্ঠা নিজের সীমা স্বীকার করেই বিশ্বাস অর্জন করে:

কোনো চেক ব্যর্থ হলে

এই পৃষ্ঠা এবং পর্যবেক্ষিত আচরণের মধ্যে কোনো অসঙ্গতি একটি নিরাপত্তা প্রতিবেদন, আর আমরা সত্যিই এটা না শোনার চেয়ে শুনতেই চাইব: fitzy+security@suse.com, যেকোনো lolly-tools রিপোজিটরি-তে Report a vulnerability বাটন, বা /.well-known/security.txt-এ থাকা যোগাযোগ। সমন্বিত প্রকাশ ও প্রতিবেদকের কৃতিত্ব হলো স্থায়ী নীতি - বিস্তারিত রয়েছে SECURITY.md-এ।