স্বাক্ষর অক্ষুণ্ণ রেখে প্রকাশ করুন

স্বাক্ষর অক্ষুণ্ণ রেখে প্রকাশ করুন

যার সুরক্ষিত ক্ষেত্রগুলো উন্মুক্ত হয়ে যায়, তাকে সাধারণত প্ল্যাটফর্মের ওপরই ভরসা করতে হয়। আমরা প্রতিটি ক্ষেত্র আলাদাভাবে স্বাক্ষর করি যাতে সেগুলো স্বাধীনভাবে যাচাই করা যায়।

একটি ডিজিটাল পণ্য পাসপোর্ট সবাইকে একই তথ্য দেখায় না। একজন ক্রেতা সর্বজনীন তথ্য দেখতে পান। একটি মেরামতের দোকান বা পুনর্নবীকরণকারী আরও তথ্য দেখতে পান। একটি বাজার তদারকি কর্তৃপক্ষ সবকিছুই দেখতে পায়। এটি স্পষ্ট করা হয়েছে, এবং ইউরোপীয় মানগুলো এখন স্পষ্টভাবে এটি নির্দেশ করে।

আসলে আরও সূক্ষ্ম একটি প্রশ্ন আছে: যদি কাউকে জনসাধারণের তথ্যের পাশাপাশি সুরক্ষিত ক্ষেত্রগুলো দেখানো হয়, তাহলে তারা কি নিশ্চিত করতে পারে যে এই নির্দিষ্ট ক্ষেত্রগুলো আসল? নাকি তাদের বিশ্বাস করতে হবে যে প্ল্যাটফর্ম সেগুলো সঠিকভাবে বেছে নিয়েছে এবং অপরিবর্তিতভাবে পৌঁছে দিয়েছে?

অধিকাংশ প্ল্যাটফর্মের জন্য, সৎ উত্তর হল: বিশ্বাস। আমরা আমাদেরটি এমনভাবে তৈরি করেছি যাতে উত্তরটি ‘প্রমাণ’ হয় - শুধুমাত্র পাবলিক ফিল্ডগুলোর জন্য নয়, বরং প্রতিটি ফিল্ডের জন্য যা প্রকাশের সময়ই যোগ করা হয়। কেন এই পার্থক্যটি গুরুত্বপূর্ণ, এবং কেন আমরা অধিক শ্রমসাধ্য পথটি বেছে নিয়েছি।

সবারই একইভাবে অ্যাক্সেস নিয়ম মেনে চলা

DPP-তে অ্যাক্সেস অধিকার, নিরাপত্তা এবং গোপনীয়তার জন্য ইউরোপীয় মান EN 18239, প্রতিটি ডেটা উপাদানের ভিত্তিতে অ্যাক্সেস নিয়ন্ত্রণ প্রয়োজন: প্রতিটি ক্ষেত্রের জন্য একটি নিয়ম রয়েছে যা নির্ধারণ করে কে এটি দেখতে পারবে। এটি সঠিক প্রয়োজনীয়তা, এবং এটি পূরণ করা কঠিন নয়। আমরা harmonised standards-এর অধীনে এই মানগুলির অবস্থা বিস্তারিতভাবে উপস্থাপন করেছি।

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

তবে, একটি ফাঁক রয়েছে, যা স্ট্যান্ডার্ডে উল্লেখ নেই: এই অংশটি স্বাক্ষরবিহীনভাবে আসে। পাঠক একটি বিশেষভাবে তৈরি করা ভিউ পান এবং তাকে বিশ্বাস করতে হয় যে সার্ভার এটি সততার সাথে বেছে নিয়েছে এবং পথে কিছুই পরিবর্তিত হয়নি। একটি সর্বজনীন তথ্যপত্রের জন্য এটা ঠিক আছে। কিন্তু পুনর্ব্যবহারকারী যখন একটি ব্যবহৃত ব্যাটারির দাম নির্ধারণের ভিত্তি হিসেবে এটি ব্যবহার করে, তখন প্রচুর বিশ্বাস প্রয়োজন।

যেখানে একটি একক স্বাক্ষর তার সীমায় পৌঁছায়

স্পষ্ট সমাধান হল ডেটা স্বাক্ষর করা। উভয় প্রান্তের জন্য, একটি স্ট্যান্ডার্ড স্বাক্ষর ভালোভাবে কাজ করে: পাবলিক ভিউ স্বাক্ষর করুন, সম্পূর্ণ ডেটা সেট স্বাক্ষর করুন, এবং কোনো সার্ভারকে মধ্যস্থতাকারী হিসেবে না রেখে উভয়কেই একটি পাবলিক কী-এর বিরুদ্ধে যাচাই করুন। এটি কীভাবে বিস্তারিতভাবে কাজ করে তা DPP-তে স্বাক্ষর ও সার্টিফিকেট-এ ব্যাখ্যা করা হয়েছে।

সমস্যাটি মাঝামাঝি ক্ষেত্রেই দেখা দেয়। একটি স্বাক্ষর যা পুরো নথিটিকে আচ্ছাদন করে, তা ঠিক একটি ক্ষেত্রের সেটকে আচ্ছাদন করে, অর্থাৎ স্বাক্ষরের সময় উপস্থিত থাকা ক্ষেত্রগুলোকে। যদি একজন অনুমোদিত পাঠককে একটি অতিরিক্ত সুরক্ষিত ক্ষেত্রের অ্যাক্সেস দেওয়া হয়, তাহলে সেই ক্ষেত্রটি স্বাক্ষরিত সেটের বাইরে থাকে এবং স্বাক্ষরবিহীনভাবে তার কাছে পৌঁছে। অন্যদিকে, যদি শুরু থেকেই পুরো ডেটাসেটটি স্বাক্ষরিত হয়, তাহলে স্বাক্ষরটি সবকিছুই অন্তর্ভুক্ত করে, কিন্তু তখন সবাইকে সবকিছুই দেখাতে হবে।

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

প্রতিটি ক্ষেত্র পৃথকভাবে স্বাক্ষর করা

একটি আরও ভালো পদ্ধতি আছে, এবং এটির ওপরই আমরা প্ল্যাটফর্মটি তৈরি করছি। সম্পূর্ণ নথিটিকে একক ব্লক হিসেবে স্বাক্ষর করার পরিবর্তে, ইস্যুকারী একটি একক স্বাক্ষর প্রক্রিয়ায় প্রতিটি ক্ষেত্র পৃথকভাবে নির্দিষ্ট করে (যারা স্ট্যান্ডার্ড সম্পর্কে জানেন তাদের জন্য: নির্বাচনী প্রকাশের জন্য W3C স্পেসিফিকেশন ecdsa-sd-2023)।

প্রতিটি ভিউ পাবলিক কোর দিয়ে শুরু হয়

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

একটি ওয়াকথ্রু: মেরামতের দোকান

একটি ওয়াকথ্রু দেখায় যে এটি বাস্তবে কীভাবে কাজ করে। একটি মেরামতের দোকান ব্যাটারিতে বৈধ স্বার্থ নিবন্ধন করেছে, যা ব্যাটারি বিধিমালায় স্পষ্টভাবে প্রদত্ত অ্যাক্সেস স্তরগুলির একটি। তাদের কর্মশালা সিস্টেম তাদের API কী ব্যবহার করে আমাদের ইন্টারফেসে লগইন করে এবং পাসটি পুনরুদ্ধার করে।

প্রতিক্রিয়াটি সেই একই পাবলিক পাসপোর্ট যা ক্রেতা দেখেন, তবে ঠিক একটি অতিরিক্ত ক্ষেত্র সহ: বিচ্ছিন্নকরণ নির্দেশনা, যা শুধুমাত্র অনুমোদিত পাঠকদের কাছে প্রকাশ করা হয়। কোনো দ্বিতীয় নথি নেই, কোনো বিশেষ সংস্করণ নেই - শুধু একই পাসপোর্ট, একটি ক্ষেত্র বেশি।

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

এতে আমাদের ভূমিকা ইচ্ছাকৃতভাবেই ন্যূনতম। এটি যে ক্ষেত্রগুলির অধিকারী, সেগুলিই সঠিকভাবে পাচ্ছে তা নিশ্চিত করা আমাদের অ্যাক্সেস কন্ট্রোলের কাজ; প্রতিটি সার্ভার ফিল্টার ঠিক একই কাজ করে। নতুন বিষয় হল পরবর্তী ধাপ: সে আমাদের কাছে না জিজ্ঞাসা করে নিজেই যাচাই করে যে যা এসেছে তা আসল কিনা।

কেন ‘অটুট’ থাকাটাই মূল বিষয়

কল্পনা করুন এমন একজন নোটারি যিনি পুরো চিঠিটি নয়, বরং প্রতিটি অনুচ্ছেদ আলাদাভাবে প্রত্যয়ন করেন। সবাই সেই প্রকাশ্য চিঠি পায়। যারা আরও পাওয়ার অধিকারী, তারা অতিরিক্ত অনুচ্ছেদগুলো পায়, এবং প্রত্যেকটিতেই সেই একই নোটারির সীল থাকে।

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

এবং সীল দ্বিমাত্রিক। এটি হয় থাকে, নয় থাকে না; আধা-ভাঙা সীল বলে কোনো কিছু নেই। যদি এটি ভেঙে যায়, আপনি জানতে পারবেন না কোন বাক্যটি পরিবর্তিত হয়েছে, শুধু এটুকুই যে আপনি আর পুরো নথিটিতে বিশ্বাস করতে পারবেন না। এজন্যই অতিরিক্ত ক্ষেত্রগুলো সীলসহ আসে কিনা তা কোনো মাত্রার বিষয় নয়: মোহর ছাড়া, সেগুলো শুধু কিছুটা কম যাচাইযোগ্য নয়; সেগুলো মোটেই যাচাইযোগ্য নয়।

দেখার উভয় পদ্ধতি

যে কেউ নিজেই এটি পরীক্ষা করতে পারে। Transpareo Time Machine হল পণ্য পাসপোর্টের জন্য আমাদের ওপেন-সোর্স ভিউয়িং অ্যাপ: এটি পাসপোর্টের সংস্করণ ইতিহাস স্ক্রোল করে, আমাদের কোনো সার্ভারে অনুরোধ না করেই ভিউয়ারের ব্রাউজারে প্রতিটি স্বাক্ষর পুনঃগণনা করে। এর মধ্যে দুটি নমুনা পাসপোর্ট সর্বজনীনভাবে উপলব্ধ। একটি টি-শার্টের পাসপোর্টে পুরো ডকুমেন্ট জুড়ে একটি স্বাক্ষর রয়েছে, অন্যদিকে একটি ব্যাটারির পাসপোর্টে ক্ষেত্র-ভিত্তিক প্রকাশ দেখানো হয়েছে।

উভয়ই W3C-এর উন্মুক্ত স্পেসিফিকেশন: ডকুমেন্ট-ব্যাপী স্বাক্ষরের জন্য eddsa-jcs-2022, এবং ক্ষেত্র-ভিত্তিক প্রকাশের জন্য ecdsa-sd-2023। যে কেউ চাইলে এগুলো বাস্তবায়ন করতে পারে। প্রয়োজনীয় প্রচেষ্টাই এর কারণ যে অনেকেই এটি করবেন না: পুরো নথিতে স্বাক্ষর ব্যবস্থা স্থাপন এবং পরিচালনা করা অনেক বেশি সাশ্রয়ী, এবং যারা শুধুমাত্র সর্বজনীন তথ্য প্রদান করে তারা এটাই ব্যবহার করতে পারে।

টাইম মেশিন উভয় পদ্ধতিকেই সমর্থন করে, যা ইচ্ছাকৃত এবং এভাবেই থাকবে। এটি কোনো প্ল্যাটফর্মের অন্তর্গত নয়। শুধুমাত্র ব্যয়বহুল পদ্ধতি গ্রহণ করে এমন একটি যাচাইকারী আমাদের জন্য এবং আর কারো জন্য নয়, এমন একটি সরঞ্জাম হবে।

রক্ষিত ক্ষেত্রগুলি কার কাছে প্রকাশ করা হয়

এটি জিজ্ঞাসা করা মূল্যবান যে, সর্বজনীন তথ্যের বাইরে, আসলে কিছুই কার কাছে প্রকাশ করা হয়। সাধারণ ক্রেতা নয় - সে পাবলিক সার্টিফিকেট পায়। এটি সেই প্রসেসর, যে ব্যবহৃত ব্যাটারি প্যাকের মূল্য নির্ধারণ করে, সেই বীমাকারী, যে ঝুঁকির মূল্য নির্ধারণ করে, সেই পুনর্ব্যবহারকারী, যে রাসায়নিক বাছাই করে, এবং সেই কর্তৃপক্ষ, যারা মামলা তৈরি করছে। এরা হলেন সেই পাঠকরা, যাদের সিদ্ধান্ত অর্থ বা নিরাপত্তার ওপর নির্ভর করে।

এবং ঠিক এই ক্ষেত্রগুলোই স্ট্যান্ডার্ড পদ্ধতির অধীনে অপ্রকাশিত থেকে যায়। যারা ক্রিপ্টোগ্রাফিক যাচাইকরণ সবচেয়ে বেশি চায়, তারাই তা পায় না, বিশেষ করে সেই ক্ষেত্রগুলোর জন্যই যেগুলো তাদের সিদ্ধান্তকে ভিত্তি করে।

আমরা বিশ্বাস করি যে একটি সার্টিফিকেশন মার্ক সবার কাছে একই অর্থ বহন করা উচিত। ‘Verified by Transpareo’ একটি মেরামত কেন্দ্রের বিস্তারিত রিপোর্টে যেমন ‘Verified by Transpareo’ ক্রেতার পাবলিক সার্টিফিকেটে তেমনি একই অর্থ বহন করে: প্রদর্শিত প্রতিটি ক্ষেত্র ইস্যুকারী থেকে এসেছে এবং তারপর থেকে এতে কোনো হস্তক্ষেপ করা হয়নি। শুধুমাত্র পাবলিক ফিল্ডগুলো ঢেকে রাখে এমন সীল কেবল অর্ধেক সীল।

স্ট্যান্ডার্ডের চেয়ে বেশি

স্পষ্ট করে বলি: এর কোনোটাই বাধ্যতামূলক নয়। EN 18239 অনুযায়ী অ্যাক্সেস নিয়ন্ত্রণ করতে হবে, এবং একটি সার্ভার-সাইড ফিল্টার অ্যাক্সেস পুরোপুরি নিয়ন্ত্রণ করে। প্রকাশিত ক্ষেত্রগুলোকে ক্রিপ্টোগ্রাফিকভাবে যাচাইযোগ্য করে তোলাও আমরা অতিরিক্তভাবে করি; এটি এমন কোনো বাক্স নয় যা নিয়ম আমাদের বাধ্যতামূলকভাবে পূরণ করতে বলে।

এ কারণেই এটিকে লিখিতভাবে রাখা গুরুত্বপূর্ণ। স্বাক্ষরিত পাসের মূল বিষয় হল যে কাউকেই প্ল্যাটফর্মের উপর বিশ্বাস রাখতে হবে না। মধ্যবর্তী স্তরকে একটি ব্যতিক্রম হিসেবে সরিয়ে ফেলা ঠিক সেই বিশ্বাসকে পুনরুদ্ধার করে যা স্বাক্ষর দ্বারা নির্মূল করার উদ্দেশ্য ছিল।

একই নীতি একটি ক্ষেত্রকে ভুলে যাওয়ার সুযোগ দেয়

প্রতিটি ক্ষেত্র পৃথকভাবে নির্দিষ্ট করা একটি দ্বিতীয় বৈশিষ্ট্য যোগ করে, এবং এটি আসলে ইউরোপীয় আইন দ্বারা প্রয়োজনীয়। জেনারেল ডেটা প্রোটেকশন রেগুলেশন মানুষকে তাদের ব্যক্তিগত ডেটা মুছে ফেলার অধিকার দেয়। একক ব্লক হিসেবে স্বাক্ষরিত একটি ডেটা রেকর্ড নিজস্ব স্বাক্ষর ধ্বংস না করেই এই শর্ত মেনে চলতে পারে না।

যেহেতু এখানে প্রতিটি ফিল্ড স্বতন্ত্রভাবে বিদ্যমান, তাই একটি ফিল্ড অপসারণ করলেও বাকি সবকিছু যাচাইযোগ্য থেকে যায়। যদি ব্যক্তিগত তথ্য দুর্ঘটনাক্রমে পাসপোর্টে চলে আসে, তবে তা পরিপূর্ণভাবে মুছে ফেলা যায়, এবং পাসপোর্ট বৈধ থাকে: পুনঃজারি করার কোনো প্রয়োজন নেই, কোনো ইতিহাসের বিঘ্নও ঘটে না। আইন যে নিয়ন্ত্রক ক্ষেত্রগুলো সংরক্ষণ করতে বলে, সেগুলো যেমন আছে তেমনই থাকে; যা মুছে ফেলা যায়, তা অনুরোধ করলে এমনকি বছর বছর পরেও মুছে ফেলা যায়।

তবুও, এটি একেবারেই একটি সাধারণ পাসপোর্ট

এর কোনোটাই পাসপোর্টটিকে এমন কোনো বিশেষ বস্তুতে পরিণত করে না যা শুধুমাত্র আমাদের সরঞ্জামই খুলতে পারে। এটি JSON-LD-তে একটি যাচাইযোগ্য সনদ (Verifiable Credential) হিসেবে থাকে, এমন একটি ফরম্যাট যার দিকে ওয়েব স্ট্যান্ডার্ডের বিশ্ব এগিয়ে যাচ্ছে, এবং যা জাতিসংঘের স্বচ্ছতা প্রোটোকল (UN Transparency Protocol) এবং বিস্তৃত W3C ইকোসিস্টেম ব্যবহার করে।

অতএব, ক্রেতা যে পাসপোর্টটি তার ব্রাউজারে স্ক্যান করেন তা একই অবজেক্ট যা একটি ডেটা রুম পার্টনার পড়তে পারে, এবং যেকোনো স্ট্যান্ডার্ড-সম্মত যাচাইকারী এটি যাচাই করতে পারে, শুধুমাত্র আমাদেরটি নয়। অতিরিক্ত নিরাপত্তা পাঠকের জন্য কোনো খরচ নেই এবং কাউকেই আমাদের সাথে আবদ্ধ করে না।

কেন এটি প্রযুক্তিগতভাবে চ্যালেঞ্জিং

প্রথমত, কোনো ভুল বোঝাবুঝি এড়াতে: আমরা এই প্রক্রিয়াটি আবিষ্কার করিনি। ecdsa-sd-2023 একটি সর্বজনীন W3C স্পেসিফিকেশন; এর পেছনের ক্রিপ্টোগ্রাফি আমাদের নিজস্ব নয়, এবং এটি বাস্তবায়ন করতে ইচ্ছুক যে কেউ এ সম্পর্কে পড়তে পারে। এই ধারণাটি বের করা কঠিন নয়। কঠিনতাটি হলো এটিকে এমনভাবে তৈরি করা যাতে দশ বছর পরও একটি স্বাক্ষর বৈধ থাকবে। আসল কাজটাই সেখানে, এবং এ সম্পর্কে কিছু দরকারী কথা বলা যায়।

পার্থক্যটি তুচ্ছ মনে হতে পারে, কিন্তু এটি মৌলিক পদ্ধতিটি পরিবর্তন করে: একটি স্ট্যান্ডার্ড স্বাক্ষর একটি নথির বাইটগুলিতে গাণিতিক হিসাব করে। নির্বাচনী প্রকাশ তার বিবৃতিগুলির উপর ভিত্তি করে গণনা করে। স্বাক্ষরের আগে, পাসপোর্টটিকে একটি মানসম্মত ফর্মে রূপান্তরিত করা হয় যেখানে প্রতিটি তথ্য একটি পৃথক, স্বয়ংসম্পূর্ণ বিবৃতি হিসেবে উপস্থাপিত হয়। শুধুমাত্র তখনই বাকি অংশের সাথে আপস না করে একটি বিবৃতি বাদ দেওয়া সম্ভব।

এতে একটি সমস্যা দেখা দেয় যা একটি বাইট-ভিত্তিক স্বাক্ষরে থাকে না: একই মানসম্মত ফর্মটি দশ বছর পর হুবহু পুনরুৎপাদন করতে হবে। আনুমানিক নয়, বরং অক্ষর অনুযায়ী; নাহলে প্রমাণটি আর বৈধ থাকবে না। তিনটি বিষয় এর পথে বাধা হয়ে দাঁড়ায়, এবং সবগুলোই অদৃশ্য।

সংখ্যাগুলো তাদের ধরন হারিয়ে ফেলে। যদি আপনি কোনো সংখ্যাকে সাধারণ JSON হিসেবে লেখেন, তাহলে সেটি কী ধরনের সংখ্যা ছিল সেই তথ্য পথেই হারিয়ে যায়। 2.0-এর মতো একটি মান JSON-এ পাঠানোর পর 2 হিসেবে ফিরে আসে। মানুষের কাছে এটি একই, কিন্তু মানসম্মত ফরম্যাটে এটি ভিন্ন বিবৃতি, ফলে যাচাইকরণ ব্যর্থ হয়।

লেবেলগুলো এখনও কোনো অর্থ গঠন করে না। মানসম্মত ফর্ম তৈরি হতে প্রতিটি ফিল্ডের নাম একটি অনন্য অর্থের সাথে মিলতে হবে। যদি কোনোটি অনুপস্থিত থাকে, রূপান্তরের সময় ফিল্ডটি নীরবে অদৃশ্য হয়ে যায়। তারপর এটি পাসপোর্টে দেখা যায়, কিন্তু প্রুফ এটিকে অন্তর্ভুক্ত করে না, এবং কেউই তা লক্ষ্য করে না।

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

আমরা কীভাবে এটি সমাধান করেছি

আমরা তিনটি সমস্যা পরে ধরার পরিবর্তে মূল থেকেই সমাধান করেছি।

ধরন। প্রতিটি মান তার ধরনসহ লেখা হয়, এবং মানসম্মত ফর্মে একটিও ধরনবিহীন সংখ্যা দেখা গেলে প্রকাশনা বন্ধ করে দেওয়া হয়। এভাবে ত্রুটিটি তখনই ধরা পড়ে যখন এটি একটি মাত্র কোডের লাইনের খরচ হয়, বছরের পর বছর পরে অজানা কোনো ভ্যালিডেషన్ ব্যর্থতা হিসেবে নয়।

শব্দকোষ। প্রতিটি পাস দ্বারা উল্লেখিত প্রতিটি শব্দকোষ আমাদের সিস্টেমে স্থানীয়ভাবে সংরক্ষণ করা হয় এবং কখনই ইন্টারনেটের মাধ্যমে পুনরুদ্ধার করা হয় না। অজানা ঠিকানা স্বাক্ষরের সময় কঠোর সমাপ্তির কারণ হয়, নীরবে ফাঁকা ফলাফলে ফিরে যাওয়ার পরিবর্তে।

পরিচায়ক। নথির প্রতিটি নোডে একটি স্থিতিশীল পরিচায়ক থাকে, যা নিশ্চিত করে যে মানসম্মত ফর্মটি পুনরুৎপাদনযোগ্য থাকবে, প্রতিবার চালানোর সময় নতুন সহায়ক নাম বরাদ্দ করার পরিবর্তে।

সবচেয়ে জটিল অংশটি ‘Bring Your Own Key’ (নিজের কী নিজে আনুন) এ নিহিত। প্রতিটি ইস্যুর জন্য একটি অতিরিক্ত, স্বল্পমেয়াদী কী প্রয়োজন, যার মাধ্যমে প্রকাশযোগ্য ক্ষেত্রগুলো পৃথকভাবে স্বাক্ষরিত হয়। ইস্যুকারী নিজেই এই কী তৈরি করে এবং পরবর্তীতে বাতিল করে দেয়। যদি আমরা এটি সংরক্ষণ করতাম, তাহলে আমরা পরবর্তীতে ব্যক্তিগত ক্ষেত্র তৈরি করতে পারতাম, এবং ইস্যুকারীর স্বাক্ষরের স্বাধীনতা শুধুমাত্র একটি দাবিতে পরিণত হতো। আমরা বিশ্বাস করার আগে ফেরত আসা প্রমাণটি সংরক্ষিত পাবলিক কী-এর বিরুদ্ধে যাচাই করি।

প্রতি পাসপোর্টে এ ধরনের দুটি প্রমাণ থাকে: একটি ইস্যুকারী থেকে এবং একটি ট্রান্সপ্যারিও থেকে, এবং প্রতিটি পাঠকের দেখার জন্য স্বতন্ত্রভাবে প্রাপ্ত হয়। দুটি স্বাক্ষর, দুটি স্বতন্ত্র কর্তৃপক্ষ - এমনকি একটিমাত্র প্রকাশিত ক্ষেত্রের জন্যও।

আমাদের জন্য, এই প্রচেষ্টা সার্থক। আমরা যাচাইযোগ্যতাকে পরবর্তীতে যুক্ত করিনি; প্ল্যাটফর্মটি প্রথম সংস্করণ থেকেই এই নীতির ভিত্তিতে নির্মিত। প্রতিটি পাসপোর্ট প্রকাশের সময় স্বাক্ষরিত হয় এবং পূর্ববর্তী সংস্করণের সাথে শৃঙ্খলিত হয়। অপরিবর্তনীয় দশ বছরের আর্কাইভ প্রতিষ্ঠিত হয় এবং পাসপোর্টগুলো [EU DPP রেজিস্টার]-এ নিবন্ধিত হওয়ার সাথে সাথেই কার্যকর হয়।(/de/blog/dpp-register-ist-gesetz)। পুরো ব্লকের পরিবর্তে প্রতিটি ক্ষেত্র স্বাক্ষর করা এই মূল কার্যকারিতার একটি সম্প্রসারণ, এমন কোনো কিছুর অতিরিক্ত সংযোজন নয় যা কখনোই এই উদ্দেশ্যে তৈরি করা হয়নি।

আমরা কোথায় দাঁড়িয়ে আছি

আমরা প্রমাণের পক্ষে বেছে নিয়েছি, প্রতিটি পাঠকের জন্য, কারণ একটি সীল একই অর্থ বহন করা উচিত, তা যে কেউ দেখুক না কেন। যারা এটিকে কাজে দেখতে চান: উপরের লিঙ্ক করা দুটি ডেমো সরাসরি ব্রাউজারে যাচাই করা যেতে পারে, কোনো সার্ভারে অনুরোধ না করেই।

এই পোস্ট সম্পর্কে প্রশ্ন

কোনো স্ট্যান্ডার্ড কি ফিল্ড-প্রতি স্বাক্ষর নির্দিষ্ট করে?

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

এটি সার্ভার-সাইড ফিল্টারের থেকে ঠিক কী ভিন্ন?

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

এটির জন্য পাঠকদের কি বিশেষ সফটওয়্যার প্রয়োজন?

না। পাসটি JSON-LD-তে একটি যাচাইযোগ্য সনদ (Verifiable Credential) হিসেবেই থাকে, এবং প্রমাণ হিসেবে ব্যবহৃত হয় পাবলিক W3C ক্রিপ্টোস্যুট ‘ecdsa-sd-2023’, তাই যেকোনো স্ট্যান্ডার্ড-সম্মত যাচাইকারী এটি যাচাই করতে পারে। আমাদের ওপেন-সোর্স ভিউয়িং অ্যাপ Transpareo Time Machine পাঠকের ব্রাউজারে প্রতিটি স্বাক্ষর যাচাই করে, আমাদের কোনো সার্ভারে জিজ্ঞাসা না করেই, এবং ইচ্ছাকৃতভাবে এটিকে পুরো ডকুমেন্ট জুড়ে সাধারণ স্বাক্ষরগুলো পরিচালনা করার জন্য ডিজাইন করা হয়েছে। শুধুমাত্র আমাদের পদ্ধতি গ্রহণ করে এমন একটি যাচাইকারী কেবল আমাদের জন্যই একটি সরঞ্জাম হবে, অন্য কারো জন্য নয়।

রক্ষিত ক্ষেত্রগুলো আসলে কার কাছে প্রকাশ করা হয়?

সাধারণ ক্রেতা নয় - তাকে একটি পাবলিক পাস ইস্যু করা হয়েছে। এটি সেই মেরামত ব্যবসা যার নিবন্ধিত বৈধ স্বার্থ রয়েছে, সেই সংস্কারকারী যিনি ব্যবহৃত ব্যাটারি প্যাকের মূল্য নির্ধারণ করেন, সেই পুনর্ব্যবহারকারী যিনি রাসায়নিক উপাদানগুলো বাছাই করেন, সেই বীমাকারী যিনি ঝুঁকির মূল্য নির্ধারণ করেন, এবং সেই কর্তৃপক্ষ যে মামলা গঠন করে - এমন অংশীদারদের সিদ্ধান্ত অর্থ বা নিরাপত্তার ওপর নির্ভর করে। ইইউ ব্যাটারি নিয়মাवली ঠিক এই ধাপগুলোকেই অন্তর্ভুক্ত করে। একই সময়ে, এই অংশীদাররাই প্রচলিত পদ্ধতির অধীনে তাদের সিদ্ধান্তের ভিত্তি সংক্রান্ত কোনো প্রমাণই পায় না।

আমরা শুধুমাত্র জনসাধারণের তথ্য প্রকাশ করি। আমাদের কি তা করতে হবে?

সম্ভবত না, এবং আমরা এ ব্যাপারে বেশ খোলামেলা। eddsa-jcs-2022 ক্রিপ্টোস্যুট ব্যবহার করে পুরো নথি জুড়ে একটি স্বাক্ষর একটি পাসের ক্ষেত্রগুলো সবই পাবলিক, এবং এটি সেট আপ ও পরিচালনা করতে উল্লেখযোগ্যভাবে সস্তা। ক্ষেত্র-ভিত্তিক প্রকাশ তখনই লাভজনক হয়ে ওঠে যখন দ্বিতীয় কোনো লক্ষ্যবস্তু গোষ্ঠী যুক্ত হয়, যেমন মেরামত নেটওয়ার্ক, পুনর্ব্যবহারকারী বা কোনো সরকারি কর্তৃপক্ষ, যাদের কাছে অন্যথায় আপনি স্বাক্ষরবিহীন অংশ সরবরাহ করতেন। উভয় পদ্ধতিই W3C-এর উন্মুক্ত স্পেসিফিকেশন, এবং উভয়ই বর্তমানে টাইম মেশিনে, একটি টি-শার্টের ‘পাসপোর্ট’-এ এবং একটি ব্যাটারির ‘পাসপোর্ট’-এ ব্যবহৃত হচ্ছে।

ব্যক্তিগত তথ্য পাসপোর্ট বাতিল না করে পরবর্তীতে মুছে ফেলা যাবে কি?

হ্যাঁ, এবং এই দিকটি আসলে ইউরোপীয় আইন দ্বারা বাধ্যতামূলক। সাধারণ তথ্য সুরক্ষা বিধি (GDPR) মানুষকে তাদের ব্যক্তিগত তথ্য মুছে ফেলার অধিকার দেয়, এবং একটি ব্লক হিসেবে স্বাক্ষরিত তথ্য রেকর্ড তার নিজস্ব স্বাক্ষর ধ্বংস না করে এই অনুরোধ মেনে চলতে পারে না। যেহেতু এখানে প্রতিটি ক্ষেত্র পৃথকভাবে সংজ্ঞায়িত, একটি ক্ষেত্র মুছে ফেলা গেলেও বাকি সবকিছু যাচাইযোগ্য থাকে - পুনঃজারি করার দরকার নেই, কোনো খণ্ডিত সংস্করণ ইতিহাস নেই। আইন যে নিয়ন্ত্রক ক্ষেত্রগুলো সংরক্ষণ করতে বলে, সেগুলো অপরিবর্তিত থাকে।

স্বাক্ষরের চাবি কার কাছে?

প্রতিটি পাস দুটি প্রমাণপত্রের সঙ্গে আসে, যার একটি আপনার হতে পারে। প্রতি ইস্যুর জন্য একটি স্বল্পকালীন কী-ও প্রয়োজন, যা প্রকাশের জন্য নির্ধারিত ক্ষেত্রগুলোকে পৃথকভাবে স্বাক্ষর করে; ইস্যুকারী নিজেই এই কী তৈরি করে এবং পরবর্তীতে বাতিল করে, কারণ যদি আমরা এটি সংরক্ষণ করতাম, তাহলে আমরা পূর্বাবর্তে ব্যক্তিগত ক্ষেত্র তৈরি করতে পারতাম, এবং ইস্যুকারীর স্বাক্ষরের স্বাধীনতা শুধুমাত্র দাবি হিসেবে থেকে যেত। আমরা ফেরত আসা প্রমাণটি বিশ্বাস করার আগে সংরক্ষিত পাবলিক কী-এর বিরুদ্ধে যাচাই করি। এভাবে প্রতিটি পাসপোর্টে দুইটি স্বতন্ত্র কর্তৃপক্ষের দুটি প্রমাণ থাকে, একটি ব্যক্তিগতভাবে প্রকাশিত ক্ষেত্রের জন্য এবং একটি সম্পূর্ণ ডেটাসেটের জন্য।

দশ বছর পরও কি পাসপোর্ট বৈধ থাকবে?

ঠিক এখানেই প্রচেষ্টা নিহিত। নির্বাচনী প্রকাশ নথির বাইটের পরিবর্তে এর বিষয়বস্তুর উপর ভিত্তি করে; তাই দশ বছর পরও একই মানসম্মত ফরম্যাট অক্ষর-অক্ষরে পুনরুৎপাদন করতে হবে। তিনটি বিষয় এই নীতি লঙ্ঘন করে, এবং আমরা উৎস থেকেই সেগুলো সমাধান করেছি - প্রতিটি মান তার ধরনের সাথে লেখা হয়, এবং যদি কোনো টাইপবিহীন সংখ্যা পাওয়া যায় তবে প্রকাশ বন্ধ করে দেওয়া হয়; প্রতিটি শব্দভাণ্ডার স্থানীয়ভাবে সংরক্ষণ করা হয় এবং কখনোই নেটওয়ার্কের মাধ্যমে পুনরুদ্ধার করা হয় না; এবং প্রতিটি নোড একটি স্থায়ী শনাক্তকারী বহন করে যাতে মানসম্মত ফর্মটি পুনরুৎপাদনযোগ্য থাকে। অপরিবর্তনীয় দশ-বছরীয় সংরক্ষণাগারটি স্থাপন করা হয়েছে এবং এটি কার্যকর হবে ঠিক তখনই যখন পাসপোর্টগুলো EU রেজিস্টারে নিবন্ধিত হবে, যা 20 জুলাই 2026 থেকে Implementing Regulation (EU) 2026/1778-এর অধীনে কার্যকরী। নিবন্ধন বিধিমালা সম্পর্কে আমাদের বিশ্লেষণে আরও পড়ুন।

অ্যাক্সেস স্তর এবং প্রমাণ সম্পর্কিত আপডেট

নির্বাচিত প্রকাশ, স্বাক্ষর এবং DPP মানদণ্ডের উন্নয়ন - মাসিক সারসংক্ষেপ সরাসরি আপনার ইনবক্সে।