প্রথমে মাস্টার পাসওয়ার্ড দিয়ে Vault তৈরি বা আনলক করুন। Settings → Security (সেটিংস → নিরাপত্তা) খুলুন, প্রদানকারীর অবস্থা দেখে নিন এবং বায়োমেট্রিক আনলক চালু করুন। নিবন্ধনের সময় নতুন করে সিস্টেম প্রমাণীকরণ চাওয়া হয়। এরপর লগইন স্ক্রিনে মাস্টার-পাসওয়ার্ড ফর্মের পাশাপাশি Touch ID, Windows Hello বা ফিঙ্গারপ্রিন্ট আনলকও দেখা যায়। Disable and remove enrollment (নিষ্ক্রিয় করুন ও নিবন্ধন সরান) শুধু এই অ্যাপ্লিকেশনের ক্যাশ করা কী সরায়, অপারেটিং সিস্টেমে নিবন্ধিত ফিঙ্গারপ্রিন্ট কখনো নয়।
মাস্টার পাসওয়ার্ড অবশ্যই সংরক্ষণ করে রাখুন: বাতিল করা, টাইমআউট, হার্ডওয়্যার/কীরিং অনুপলব্ধ থাকা এবং অবৈধ হয়ে যাওয়া নিবন্ধন, এসব ক্ষেত্রে পাসওয়ার্ড বিকল্প প্রয়োজন। বায়োমেট্রিক নিবন্ধন শুধু এই ব্যবহারকারী, ডিভাইস ও Vault-এ সীমাবদ্ধ। এটি পুনরুদ্ধারের ব্যবস্থা বা ব্যাকআপ নয়। Vault রিসেট করলে নিবন্ধন বাতিল হয় এবং বিদ্যমান এনক্রিপ্টেড প্রোফাইল ও হোস্ট ফিঙ্গারপ্রিন্ট মুছে যায়, তবে কেবল বিদ্যমান SMAZAT নিশ্চিতকরণের পরে।
| প্ল্যাটফর্ম | প্রমাণীকরণ ও সংরক্ষণ | প্রয়োজনীয়তা ও সীমাবদ্ধতা |
|---|---|---|
| macOS Apple Silicon | নেটিভ LocalAuthentication / Touch ID; biometryCurrentSet ও WhenUnlockedThisDeviceOnly-সহ Security.framework Keychain আইটেম |
নিবন্ধিত Touch ID, উপলব্ধ সেন্সর ও ব্যবহারযোগ্য লগইন Keychain। ফিঙ্গারপ্রিন্ট পরিবর্তন হলে আইটেমটি অবৈধ হয়। প্রোডাকশন আপডেটের জন্য স্থিতিশীল Developer ID সাইনিং ব্যবহার করুন; ad hoc Alpha সাইনিং Keychain আস্থা ও লোকাল-নেটওয়ার্ক অনুমতির ট্র্যাকিং ব্যাহত করতে পারে। |
| Windows x64 | মূল HWND-এর সঙ্গে যুক্ত নেটিভ WinRT Windows Hello ডেস্কটপ ইন্টারঅপ; Windows Credential Manager-এ বর্তমান ব্যবহারকারীর DPAPI দিয়ে এনক্রিপ্ট করা কী | কনফিগার করা Hello ফিঙ্গারপ্রিন্ট, মুখমণ্ডল বা PIN। এটি সুবিধাজনক আনলক: Hello অনুমোদন অ্যাপ প্রয়োগ করে, কিন্তু DPAPI নিজে বায়োমেট্রিক দিয়ে সুরক্ষিত নয়। একই ব্যবহারকারী হিসেবে চলা অন্য কোড ক্রেডেনশিয়ালটি ডিক্রিপ্ট করতে পারে। |
| Ubuntu x64 | fprintd D-Bus-এর মাধ্যমে বর্তমান ব্যবহারকারীর নিবন্ধিত ফিঙ্গারপ্রিন্ট; স্পষ্ট libsecret / Secret Service ক্রেডেনশিয়াল সংরক্ষণ | সমর্থিত রিডার, নিবন্ধিত ফিঙ্গারপ্রিন্ট, চালু থাকা ডেস্কটপ Secret Service ও ডিফল্ট কীরিং। সুবিধাজনক আনলক: কীরিংয়ের ক্রেডেনশিয়াল ক্রিপ্টোগ্রাফিকভাবে ফিঙ্গারপ্রিন্ট যাচাইয়ের সঙ্গে যুক্ত নয়। basic_text বা সাধারণ-পাঠ ফাইলের কোনো বিকল্প নেই। |
Ubuntu-তে ঐচ্ছিক রানটাইম প্যাকেজগুলো হলো python3-gi, gir1.2-secret-1, gnome-keyring (বা অন্য সামঞ্জস্যপূর্ণ Secret Service) এবং fprintd। অনুপস্থিত প্যাকেজগুলো সাধারণ OS প্যাকেজ ম্যানেজার দিয়ে ইনস্টল করুন, তারপর OS সেটিংসে একটি ফিঙ্গারপ্রিন্ট নিবন্ধন করুন। প্রমাণীকরণ বর্তমান ব্যবহারকারী দিয়ে হয়, root লাগে না এবং PAM বদলায় না। ডেস্কটপ কীরিং ছাড়া হেডলেস SSH সেশন "অনুপলব্ধ" জানায়; এটি নীরবে অন্য কোথাও কী সংরক্ষণ করে না।
লকের নিয়ম
বিদ্যমান ইনস্টলেশনে স্বয়ংক্রিয় লক বন্ধ থাকে। চালু করলে ডিফল্টভাবে 15 মিনিট বেছে নেওয়া হয়; সমর্থিত মান হলো Never, 1, 5, 10, 15, 30 ও 60 মিনিট। অ্যাপ্লিকেশন উইন্ডোতে কীবোর্ড ও মাউস ইনপুট কার্যকলাপ হিসেবে গণ্য হয়; আগত SSH আউটপুট নয়। ঐচ্ছিক ফোকাস লক অ্যাপ্লিকেশনের প্লাগইন উইন্ডোকে অ্যাপের অংশ হিসেবে গণ্য করে এবং চলমান সিস্টেম প্রমাণীকরণ প্রম্পট শেষ হতে দেয়। এই নিয়মগুলো বদলাতে মাস্টার পাসওয়ার্ড প্রয়োজন।
নিষ্ক্রিয়তা ও ফোকাস লকসহ প্রতিটি Vault লক সক্রিয় SSH সেশন বিচ্ছিন্ন করে, প্লাগইন বন্ধ করে এবং ডায়াগনস্টিকস থামায়। লক করার আগে রিমোট সম্পাদনা সংরক্ষণ করুন। এতে বিদ্যমান ম্যানুয়াল-লকের আচরণ বজায় থাকে; লকের পর কোনো SSH ক্রেডেনশিয়াল ব্যাকগ্রাউন্ড প্লাগইনের জন্য উপলব্ধ থাকে না।
ঐচ্ছিক সংবেদনশীল-কার্য নীতি প্রোফাইল মুছে ফেলা, প্লাগইন ইনস্টল/সরানো, ইনস্টলার চালু করা এবং আনলক করা Vault রিসেটের সময় নতুন করে সিস্টেম প্রমাণীকরণ চায়। রিমোট টার্মিনাল কমান্ড ও প্লাগইনের ফাইল সম্পাদনা এই নীতির আওতার বাইরে। নীতিটি SSH সার্ভারের অনুমোদনের বিকল্প নয়। প্রদানকারী কাজ করা বন্ধ করলে মাস্টার পাসওয়ার্ড দিয়ে আনলক করুন এবং সেই পাসওয়ার্ড দিয়ে নীতি বদলান। লক করা পুনরুদ্ধার স্ক্রিন থেকে ধ্বংসাত্মক কাজের নিশ্চিতকরণের পর রিসেট উপলব্ধ থাকে।
Vault ও IPC নকশা
বিদ্যমান v1 Vault এখনো scrypt-সহ AES-256-GCM; নিবন্ধন এর ফাইল নতুন করে লেখে না বা এর স্কিমা বদলায় না। OS ক্রেডেনশিয়াল সংরক্ষণে যায় শুধু এর প্রাপ্ত 32-বাইট কী-র একটি কপি। সাধারণ-পাঠ মাস্টার পাসওয়ার্ড কখনো সংরক্ষিত হয় না। স্থানীয় নিবন্ধন মেটাডেটায় থাকে এলোমেলো ক্রেডেনশিয়াল ID, প্রদানকারী এবং Vault-এর অপরিবর্তনীয় মেটাডেটার সঙ্গে যুক্ত একটি SHA-256। পুনরুদ্ধার করা কী-কে সেশন খোলার আগে প্রমাণীকৃত ডিক্রিপশনে উত্তীর্ণ হতে হয়। মূল প্রসেসের বাফার ব্যবহারের পর মুছে ফেলা হয়; নেটিভ প্রোটোকল স্ট্রিং অস্থায়ী প্রসেস মেমোরিতে থাকে, এটি পরিচালিত রানটাইমে মেমোরি সম্পূর্ণ মুছে ফেলার দাবি নয়।
হেল্পার সীমিত ব্যক্তিগত stdin/stdout পাইপের মাধ্যমে যোগাযোগ করে, কোনো শেল কমান্ড গ্রহণ করে না, প্রমাণীকরণ টাইমআউট রাখে এবং পরিশোধিত ত্রুটি কোড ফেরত দেয়। হেল্পারগুলো ASAR-এর বাইরে resources/biometrics-এ প্যাকেজ করা হয়; এগুলো স্বতন্ত্র নেটিভ এক্সিকিউটেবল, তাই কোনো Electron ABI নেটিভ মডিউল প্রয়োজন হয় না। Linux হেল্পার সিস্টেম Python ও GI ব্যবহার করে। নেটিভ অবজেক্ট ও প্রাপ্ত কী কখনো রেন্ডারার/প্লাগইন ব্রিজ পার হয় না। বায়োমেট্রিক IPC সক্রিয় মূল উইন্ডো ও এর মূল ফ্রেম যাচাই করে; প্লাগইন এটি ডাকতে পারে না। স্পষ্ট লক অপেক্ষমাণ বায়োমেট্রিক ও পাসওয়ার্ড আনলকের কাজ বাতিল করে, ফলে দেরিতে আসা অনুমোদন Vault আবার খুলতে পারে না। নিবন্ধন সরালে OS স্টোর অফলাইন থাকলেও এর স্থানীয় বন্ধন বাতিল হয়; অপ্রাপ্য স্টোরে একটি অব্যবহারযোগ্য অনাথ ক্রেডেনশিয়াল থেকে যেতে পারে।
বিল্ড ও যাচাই
npm run biometrics:build হোস্ট প্ল্যাটফর্মের হেল্পার প্রস্তুত করে; ডেভেলপমেন্ট স্টার্ট ও রিলিজ প্রস্তুতি এটি স্বয়ংক্রিয়ভাবে চালায়। macOS-এর জন্য Security ও LocalAuthentication-সহ Swift/Apple SDK প্রয়োজন; Windows-এর জন্য Visual Studio C++ Build Tools, Windows SDK ও C++/WinRT; Linux Python হেল্পার কপি করে। কোনো নতুন npm ডিপেনডেন্সি যোগ হয় না। প্রতিটি লক্ষ্য OS-এ নেটিভভাবে বিল্ড করুন। macOS হেল্পার রিকার্সিভ বান্ডেল সাইনিংয়ে অন্তর্ভুক্ত; এর কোনো App Sandbox এনটাইটেলমেন্ট লাগে না, কারণ এই ডেস্কটপ অ্যাপ স্যান্ডবক্সে চলে না। প্রোডাকশন macOS বিতরণে OpenPGP রিলিজ স্বাক্ষর থেকে আলাদাভাবে এখনো Developer ID সাইনিং ও নোটারাইজেশন প্রয়োজন।
npm test, npm run test:biometrics:ui ও npm run test:diagnostics:ui চালান। বায়োমেট্রিক Node পরীক্ষা ও বিচ্ছিন্ন UI স্মোক টেস্ট একটি মক OS অ্যাডাপ্টার ব্যবহার করে সফলতা, প্রত্যাখ্যান/বাতিল, ভুল কী, হার্ডওয়্যার/নিবন্ধন না থাকা, রিসেট, টাইমআউট ও দেরিতে আসা ফলাফল, অনুপলব্ধ Linux কীরিং, OS ক্রেডেনশিয়াল ব্যর্থতা, PIN-অনুমোদিত Windows প্রতিক্রিয়া, macOS নিবন্ধন পরিবর্তন, বিদ্যমান Vault-এর সঙ্গে সামঞ্জস্য, IPC বিচ্ছিন্নতা ও SSH পরিষ্কারকরণ কভার করে। এতে সফল হার্ডওয়্যার প্রমাণীকরণ প্রমাণিত হয় না।
নেটিভ কম্পাইলেশন macOS arm64 ও Windows x64-এ যাচাই করা হয়েছে। macOS Touch ID উপলব্ধ বলে জানায়; Windows VM Hello অনুপলব্ধ বলে জানায়। ফিঙ্গারপ্রিন্ট/মুখমণ্ডল/PIN নিবন্ধন, সুরক্ষিত কী-র প্রকৃত পুনরুদ্ধার, OS ডায়ালগ বাতিল এবং নিবন্ধন পরিবর্তনে অবৈধকরণ, এসবের জন্য প্রতিটি সমর্থিত সিস্টেমে এখনো ইন্টারঅ্যাক্টিভ হার্ডওয়্যার পরীক্ষা প্রয়োজন। Linux হেল্পার অতিরিক্তভাবে সমর্থিত fprintd রিডারসহ একটি ডেস্কটপে পরীক্ষা করতে হবে; হেডলেস VM এই যাচাই প্রতিষ্ঠা করতে পারে না।
প্ল্যাটফর্মের রেফারেন্স: Apple বায়োমেট্রিক অ্যাক্সেস কন্ট্রোল, Windows ডেস্কটপ Hello ইন্টারঅপ, fprintd ডিভাইসের জীবনচক্র, Secret Service স্পেসিফিকেশন।
macOS-এ SSH-এর লোকাল-নেটওয়ার্ক প্রবেশাধিকার
প্রতিটি স্থানীয় SSH প্রোফাইল connect EHOSTUNREACH দিয়ে ব্যর্থ হলে, অথচ একই সংযোগ টার্মিনালে কাজ করলে, System Settings → Privacy & Security → Local Network → CH-J Server Manager (সিস্টেম সেটিংস → গোপনীয়তা ও নিরাপত্তা → লোকাল নেটওয়ার্ক → CH-J Server Manager) দেখে নিন, প্রবেশাধিকার দিন, অ্যাপটি সম্পূর্ণ বন্ধ করে আবার খুলুন। আগে থেকেই চালু থাকলে অনুমতিটি একবার বন্ধ-চালু করে রিস্টার্ট করুন। রাউটিং, Wi-Fi/Ethernet ও VPN-ও যাচাই করুন: শুধু এই ত্রুটি গোপনীয়তা প্রত্যাখ্যানের প্রমাণ নয়। এই ত্রুটির জন্য Vault রিসেট করবেন না বা বিশ্বস্ত SSH ফিঙ্গারপ্রিন্ট ফেলে দেবেন না।
অ্যাপটি NSLocalNetworkUsageDescription ঘোষণা করে এবং macOS নেটওয়ার্ক অনুমতি/রুট ত্রুটির জন্য স্থানীয়কৃত নির্দেশনা দেয়। এটি নিজেকে অনুমতি দিতে পারে না। Apple পরামর্শ দেয় Apple-ইস্যু করা সাইনিং পরিচয় ব্যবহার করতে, যাতে macOS বিভিন্ন বিল্ডে নেটওয়ার্ক গোপনীয়তা নির্ভরযোগ্যভাবে ট্র্যাক করতে পারে; বর্তমান ad hoc Alpha বিল্ডে এই সীমাবদ্ধতা রয়ে গেছে। দেখুন লোকাল-নেটওয়ার্ক গোপনীয়তা নিয়ে Apple-এর নির্দেশিকা।
Ubuntu অ্যাপ্লিকেশনের আইকন
Debian প্যাকেজ বিদ্যমান CH-J আইকনটি স্ট্যান্ডার্ড hicolor আকারে (16–512 px) ইনস্টল করে, সঙ্গে মানানসই ডেস্কটপ এন্ট্রি ও Electron উইন্ডো ক্লাস। মূল উইন্ডো নতুন করে তৈরি হলেও আইকনটি পায়। আগে থেকে পিন করা পুরোনো লঞ্চার আপডেটের পর সেটি আনপিন করে নতুন ইনস্টল করা অ্যাপ্লিকেশনটি পিন করুন; ডেস্কটপ থেকে লগআউট/লগইন করলে পুরোনো GNOME লঞ্চার ক্যাশ রিফ্রেশ হতে পারে।