কীভাবে কাজ করে
কোনো নতুন উদ্ভাবন নেই - শুধু ভালোভাবে যাচাই করা প্রিমিটিভ: BIP-39, X25519, HKDF-SHA256, XChaCha20-Poly1305। এই হলো পুরো পথ, সহজ ভাষায়।
১২টি শব্দই পুরো পরিচয়
প্রোফাইল শুরু হয় একটি BIP-39 সিড ফ্রেজ দিয়ে - ১২টি ইংরেজি শব্দ, যাতে ১২৮ বিট এনট্রপি থাকে। শব্দগুলো প্রসারিত হয়ে একটি সিড তৈরি করে, আর HKDF সেখান থেকে এনক্রিপশনের কী-জোড়া বের করে। যেকোনো ডিভাইসে একই শব্দগুলো একই কী ফিরিয়ে আনে: ফেরত পাওয়ার মতো কোনো “অ্যাকাউন্ট” নেই, আছে শুধু ফ্রেজটি।
ঠিকানাই পাবলিক কী
আপনার X25519 পাবলিক কী, sk প্রিফিক্সসহ bech32-এ এনকোড করা, সেটাই আপনার ঠিকানা - sk1 দিয়ে শুরু হওয়া প্রায় ৬০টি অক্ষর। টেক্সট বা QR কোড হিসেবে দিয়ে দিন। নিবন্ধনের কোনো ডিরেক্টরি নেই, আর নাম ও মানুষ মেলানোর কোনো সার্ভারও নেই।
sk1qsva3e52awafjvedj5ethvc5hs9j4t0ml26m83kn6kycsh9m46rejzha
বার্তা হয়ে ওঠে একটি খাম
টেক্সটটি একটি র্যান্ডম মেসেজ কী দিয়ে XChaCha20-Poly1305 ব্যবহার করে একবারই এনক্রিপ্ট হয়। তারপর সেই কী প্রতিটি প্রাপকের জন্য একটি স্লটে মোড়ানো হয় - আর সবসময় আপনার জন্যও একটি বাড়তি স্লটে। এ কারণেই আপনার পাঠানো বার্তাগুলো পড়ার যোগ্য থাকে: ইতিহাস ডিক্রিপ্ট করা আর আসা বার্তা পড়া - একই কাজ।
স্লটগুলো বেনামি ও এলোমেলো করা: খামে কোনো ঠিকানা থাকে না, বাইরের কেউ শুধু আকারগুলোই দেখে। প্রতিটি স্লটের কী ঠিক হয় দুটি X25519 হ্যান্ডশেকে - একটি এই খামের জন্য তৈরি ক্ষণস্থায়ী কী-র সঙ্গে (forward secrecy), অন্যটি প্রেরকের স্থায়ী কী-র সঙ্গে (প্রেরক যাচাই)।
খাম চলে সাধারণ টেক্সট হিসেবে
বাইনারি খামটি base64-এ মুড়ে একটি আর্মার্ড ব্লক বানানো হয়। এটি স্বয়ংসম্পূর্ণ: মেসেঞ্জার, ইমেইল, ফোরাম পোস্ট বা ফাইলে পেস্ট করুন - টেক্সট পৌঁছে দেয় এমন যেকোনো চ্যানেল Secret Keeper-এর বার্তাও পৌঁছে দেয়।
-----BEGIN SECRET MESSAGE V1----- AlXhZ0Qq7bfPj…base64…M42kLBi6p4Jro -----END SECRET MESSAGE V1-----
ফাইল: .skf কনটেইনার
ফাইলও একই স্লট-ব্যবস্থা ব্যবহার করে, তবে মূল অংশটি খণ্ডে খণ্ডে এনক্রিপ্ট হয়, যাতে কয়েক গিগাবাইটের ভিডিও মেমোরিতে না উঠে স্ট্রিম হয়ে যায়। খণ্ডগুলোর nonce STREAM নির্মাণ অনুসরণ করে (age ও Tink-এর মতো): একটি কাউন্টার ক্রম ওলটপালট ও নকল ধরে, আর শেষ বাইট ধরে অসম্পূর্ণ কেটে যাওয়া। এমনকি ফাইলের নামও থাকে এনক্রিপ্টেড হেডারের ভেতরে।
ব্যাকআপ
ব্যাকআপ হলো একটি .skb ফাইল: সেটিংস, পরিচিতি ও ইতিহাস - সবই নিজের কাছে এনক্রিপ্ট করা একটিমাত্র কন্টেইনারে, এনক্রিপ্ট করা ফাইলের মতো একই স্কিমে; বাইরে থেকে কিছুই পড়া যায় না, এমনকি পরিচিতিদের ঠিকানাও নয়। সিড ফ্রেজ কখনোই ব্যাকআপে থাকে না - প্রোফাইল ফিরে আসে ১২টি শব্দ দিয়ে, আর ব্যাকআপ ফিরিয়ে আনে তার চারপাশের সবকিছু।
এতে যা পাওয়া যায়
- Forward secrecy
- প্রতিটি খামের জন্য নতুন ক্ষণস্থায়ী কী
- প্রেরক নিজে পড়তে পারেন
- আপনার পাঠানো প্রতিটি খামে আপনার নিজের স্লট
- কোনো স্টেট নেই
- জোড়ায় জোড়ায় সেশন নেই, সার্ভারে কিছুই জমা থাকে না
- কোনো ইউজার আইডি নেই
- ঠিকানাই স্বয়ং পাবলিক কী
- দুটি বাস্তবায়ন
- অ্যাপে Dart, এক্সটেনশনে @noble - অভিন্ন টেস্ট ভেক্টর দিয়ে পরস্পর যাচাই করা
নিজে যাচাই করতে চান?
বাইট-স্তরের পূর্ণাঙ্গ স্পেসিফিকেশন উন্মুক্ত - অ্যাপ ও এক্সটেনশন এই একই নথির বিপরীতে পরীক্ষিত: