از متن قرارداد یک اثر انگشت ریاضی ساخته میشود و امضا روی همان اثر انگشت مینشیند. سند و امضا از آن لحظه یک چیزند: اگر بعداً حتی یک نقطه عوض شود، امضا دیگر نمیخواند و تغییر خودش را نشان میدهد.
ارزش یک سند امضاشده در روزی معلوم میشود که به آن استناد شود و آن روز معمولاً سالها بعد است. پس سابقهٔ رویدادهای هر سند در دفتری تغییرناپذیر ثبت میشود که هر رویدادش به رویداد پیش از خود قفل است.
سند امضاشده متعلق به هر دو طرف قرارداد است و ماندگاریاش تعهدی است به هر دو. اطلاعات شخصی شما مسیر جدای خودش را دارد: با کلید اختصاصی همان قرارداد رمزنگاری میشود، جدا از خودِ سند نگهداری میشود، و در اختیار خودتان است.
قانون تجارت الکترونیکی برای بالاترین ارزش اثباتی سه چیز را با هم میخواهد: امضای مطمئن (مادهٔ ۱۰، انحصار نسبت به امضاکننده، معلومکردن هویت او، صدور تحت ارادهٔ انحصاری وی، و کشفپذیری هر تغییر)، سابقهٔ مطمئن (مادهٔ ۱۱، ذخیره در سیستم اطلاعاتی مطمئن، در دسترس و قابل درک)، و دادهپیام مطمئن (مواد ۸ و ۱۳، قابل استفاده در رجوع بعدی، در قالبی که دقیقاً نمایشگر متن باشد، با ثبت مبدأ و مقصد و زمان).
معماری این سامانه دور همین سه ضلع چیده شده است و بندهای بعدی میگویند هر ضلع با چه سازوکاری برآورده میشود.
اثر انگشت سند از بایتهای فایل PDF ساخته میشود. برای اینکه این اثر انگشت پایدار بماند، تولید فایل قطعی است: از یک ورودی مشخص، همیشه بایتبهبایت همان فایل بیرون میآید. هر منبع تصادفی، مثل زمان تولید و شناسههای اتفاقی و ترتیب نامعین، از فرایند برداشته شده است، و صحتش با صد بار تولید متوالی و مقایسهٔ اثر انگشتها سنجیده میشود.
قالب خروجی PDF/A-4u است (ISO 19005-4). حرف «u» نگاشت یونیکد را اجباری میکند: هر نویسه در فایل به کاراکتر واقعیاش نگاشت دارد، پس لایهٔ متنی سند کامل است و متن قابل جستوجو و کپی میماند.
اثر انگشت همراه شناسهٔ موتور رندر ذخیره میشود، چون مقدارش تابعی از سه چیز است: محتوای قرارداد، نسخهٔ موتور رندر، و نسخهٔ قالب. با ثبت این شناسه، سند سالها بعد هم با همان موتوری بازتولید میشود که با آن ساخته شده بود.
هر طرف فقط با کدی امضا میکند که سامانه به کانال خودِ او فرستاده است: تلفن همراه یا ایمیلی که در اطلاعات قرارداد ثبت شده. مبنای این طراحی مادهٔ ۶۸ است که استفاده از ابزار امضا بدون مجوز امضاکننده را جعل رایانهای میداند؛ وقتی کد فقط به خودِ شخص میرسد، اختیار امضا نزد خودش میماند و کسی نمیتواند به جای دیگری امضا کند.
آنچه امضا میشود از اثر انگشت سند و همان درخواست امضاساخته میشود، پس هر امضا دقیقاً به جای خودش تعلق دارد. با امضای طرف اول، متن قرارداد قفل میشود؛ طرف دوم با لینک و کد اختصاصیای که به خودش رسیده امضا میکند و پایان فرآیند، شمارهٔ سند و کلید تایید به هر دو طرف میرسد.
این با مادهٔ ۲۶ مقررات eIDAS اتحادیهٔ اروپا میخواند: پیوند انحصاری با امضاکننده، کنترل انحصاری او بر ابزار امضا، و کشفپذیری هر تغییر پس از امضا.
هر رویداد، از تولید سند تا درخواست امضا و خودِ امضا، در دفتری ثبت میشود که هر ردیفش اثر انگشت ردیف پیش از خود را در بر دارد. هر ردیف به ردیف قبلی قفل است، پس ترتیب و یکپارچگی کل دفتر با یک بازمحاسبه قابل بررسی است.
حفاظت این دفتر در سطح موتور دیتابیس نشسته است، یعنی مستقل از حسابی که اپلیکیشن با آن کار میکند. همین استقلال است که پشتوانهٔ مادهٔ ۱۶ را میسازد: ثبت دادهپیام توسط شخص ثالث، مقرون به صحت است.
کار پنهانسازی و کار اثبات، دو ابزار جدا دارند و هر کدام در جای خودش به کار میرود: رمزنگاری محتوا را میپوشاند و اثر انگشت یکپارچگی را اثبات میکند.
طرح حفاظت چهار لایه دارد. نخست، توکنگذاری: در جدول قرارداد یک ارجاع تصادفی مینشیند و نگاشتش در جدول جدا با دسترسی جدا نگهداری میشود؛ توکن تصادفی هیچ رابطهٔ ریاضی با مقدار اصلی ندارد. دوم، رمزنگاری در سطح فیلد: با کلید مشتقشده بهازای هر قرارداد. سوم، شاخص کور: جستوجو روی یک اثر انگشت کلیددار انجام میشود که کلیدش از کلید رمزنگاری جداست، پس یافتن سوابق یک شخص ممکن میماند بدون آنکه داده باز شود. چهارم، مبلغ: عدد دقیق داخل خودِ سند رمزشده جای دارد و در پایگاه دادهٔ عملیاتی بازهٔ مبلغ نگهداری میشود؛ همانقدر که مادهٔ ۱۳ برای تناسب روشهای ایمنی با موضوع مبادله لازم دارد.
اثر انگشت سند و زنجیرهٔ رویداد باز میمانند، تا راستیآزمایی سند بهدست کارشناس و دادگاه مستقل از سامانهٔ ما ممکن باشد. محتوا با کلید باز میشود و اثبات، بدون کلید.
قرارداد سندی است که ممکن است سالها بعد در دادگاه به آن استناد شود. پس بنایش روی استانداردهای نوشتهشده گذاشته شده، نه بر سلیقه.
متن قرارداد را در قراردادساز مادهبهماده مینویسید و همان سند وارد مسیر امضا میشود.