فایرجی‌پی‌جی دیگر در تیلز موجود نیست.

باید در عوض از برنامک اختصاصی پی‌جی‌پی ما استفاده کنید تا:

Advisory

فایرجی‌پی‌جی یک افزونهٔ فایرفاکس است که به کاربران اجازه می‌دهد به راحتی کارهای مرتبط با رمزنگاری را روی صفحات اچ‌تی‌ام‌ال انجام دهند، از جمله تأیید امضاهایی که به شکل متن اچ‌تی‌ام‌ال دیده می‌شوند یا رمزگذاری متن‌های نوشته‌شده داخل جعبه‌های متنی اچ‌تی‌ام‌ال (مانند <textarea>). رابط‌های کاربری وب‌میل معمولاً از جعبه‌های متنی برای نوشتن رایانامه استفاده می‌کنند، بنابراین فایرجی‌پی‌جی در این مورد می‌تواند به کار بیاید: کاربر رایانامهٔ خود را به شکل متن عادی در جعبهٔ متنی می‌نویسد و گزینهٔ متن را انتخاب می‌کند و سپس از یکی از گزینه‌های «رمزگذاری» یا «امضاء و رمزگذاری» که در فهرست فایرجی‌پی‌جی وجود دارند برای تغییر متن انتخاب‌شده به متن رمزگذاری‌شده استفاده می‌کند.

طراحی فایرجی‌پی‌جی به اشتباه این‌طور فرض می‌کند که این کار امن است، در حالی که این طور نیست، چون جاوااسکریپت موجود روی صفحه همچنان می‌تواند بیشتر چیزی که روی صفحه اتفاق می‌افتد را کنترل و نظارت کند. برای نمونه یک اسکریپت ساده می‌تواند تایمری ایجاد کند که بدون سروصدا محتوای جعبهٔ متنی را هر ثانیه دوباره به سرور منتقل کند و در نتیجه متن نوشته‌شده در آن درز می‌کند و رمزگذاری نهایی هم بی‌فایده می‌ماند. در واقع بسیار از سرویس‌های وب‌میل مشکل‌دار این کار را در بازه‌های زمانی بزرگ‌تر انجام می‌دهند تا در صورت متوقف شدن مرورگر کاربر، متنی که نوشته در پیش‌نویس باقی بماند. تنها راهی متوقف کردن این حمله غیرفعال کردن کامل جاوااسکریپت است که معمولاً کار مطلوبی نیست. به هر حال فایرجی‌پی‌جی در حال حاضر کاری برای آگاه کردن کاربران از این مشکل نمی‌کند. در عوض با در دسترس گذاشتن فرمان‌های رمزگذاری در فهرست خود فعالانه باعث ترویج استفادهٔ ناامن از آن می‌شود.

این دقیقاً مثل این است که یک کاربر یک بلوک اُپن‌پی‌جی‌پی را در یک جعبهٔ متنی رمزگشایی کند: متن عادی جای بلوک اُپن‌پی‌جی‌پی در همان جعبهٔ متنی را می‌گیرد و آن اسکریپت می‌تواند لحظه‌ای پس از رسیدن زمان تایمر متن عادی را فاش کند. خوشبختانه سیستم‌های وب‌میل به ندرت پیغام‌ها را در جعبه‌های متنی نشان می‌دهند (اما 'pastebins' معمولاً چنین کاری می‌کنند). احتمال نشان داده شدن رایانامه‌های دریافت‌شده به شکل متن اچ‌تی‌ام‌ال بیشتر است و هنگامی که کاربر آن را رمزگشایی می‌کند، فایرجی‌پی‌جی متن را در پنجره‌ای جداگانه نشان می‌دهد که به راحتی در دسترس آن جاوااسکریپت است. فایرپی‌جی‌پی یک گزینهٔ extensions.firegpg.result_always_in_new_window به نام «همواره نتایج رمزگذاری و امضاء را در پنجره‌ای جداگانه نشان بده» که در پنجرهٔ تنظیمات فایرجی‌پی‌جی دیده می‌شود و باعث انجام این رفتار هنگام رمزگشایی از بلوک‌های اُپن‌پی‌جی‌پی در جعبه‌های متنی نیز می‌شود، اما به طور پیش‌فرض غیرفعال است. اما این گزینه به هیچ عنوان از درز متن‌ها هنگام نوشتن متن توسط کاربر جلوگیری نمی‌کند.

فایرپی‌جی‌پی همچنین سه فرمان برای امضاء (و نه رمزگذاری) پیغام‌ها دارد: "Sign"، "Wrapped sign" و "Clearsign". یک جاوااسکریپت ساده می‌تواند محتوای جعبهٔ متنی را در صورت انتخاب شدن متن توسط کاربر جایگزین کند و اگر کاربر پس از انتخاب یکی از فرمان‌های 'sign' متن را دوباره نخواند، مهاجم می‌تواند به امضای کاربر روی یک پیغام قراردادی دست پیدا کند. فعال کردن گزینهٔ result_always_in_new_window از این حمله جلوگیری نمی‌کند؛ تنها تیزهوشی کاربر ممکن است این حمله را شناسایی کرده و از آن جلوگیری کند.

طراحی حال حاضر فایرپی‌جی‌پی در مورد کارهای رمزگذاری محتوای جعبه‌های متنی بسیار دچار ایراد است و به هیچ عنوان امن نیست. طراحی و رابط کاربری فعلی فایرپی‌جی‌پی کاربران را طوری بار می‌آورد که گویی محتوای جعبه‌های متنی خصوصی هستند، مگر این که کاربر به شکلی دیگر متن را فرستاده باشد (برای مثال با فشار دادن دکمهٔ "Submit"/"Send"). بنابراین:

  1. برداشتن تمام کارهای مربوط به رمزگذاری و امضاء از فهرست فایرپی‌جی‌پی ضروری است. تنها راه انجام این کارها باید از طریق ویرایش‌گر متن فایرپی‌جی‌پی باشد که در پنجره‌ای جداگانه قرار دارد و در نتیجه خارج از دسترس جاوااسکریپت‌ها است. ویرایش‌گر متن فایرپی‌جی‌پی را می‌توان از طریق فهرست فایرپی‌جی‌پی باز کرد و می‌تواند تمام کارهای ذکرشده را به راحتی ممکن کند.
  2. فایرپی‌جی‌پی باید اعلام کند که ویرایش‌گر متن فایرپی‌جی‌پی تنها راه امن نوشتن متن ساده و رمزگذاری و/یا امضای آن یا رمزگشایی پیغام‌ها مگر با غیرفعال شدن گزینهٔ result_always_in_new_window است. این کار می‌تواند کاربران دیگری را که سال‌ها توسط فایرپی‌جی‌پی گمراه شده بودند و اطلاعاتشان در خطر بوده را نجات دهد تا دریابند که چرا این حالت عملیات دشوارتر و جدید ضروری است. در غیر این صورت ممکن است همچنان به نوشتن متن‌های سادهٔ خود در جعبه‌های متنی در دسترس جاوااسکریپت‌ها ادامه دهند و به جای نوشتن متن‌ها از ابتدا در ویرایش‌گر متن فایرجی‌پی‌جی، تنها آن‌ها را برای رمزگشایی در این ویرایش‌گر کپی کنند و بچسبانند.
  3. گزینهٔ result_always_in_new_window باید برداشته شود -- در عوض رفتار آن باید دستی فعال شود.
  4. فرمان "Verify" باید محتوای پیغام‌های امضاءشده در ویرایش‌گر متن فایرپی‌جی‌پی را نشان دهد. در غیر این صورت ممکن است بشود پیغام دیگری را به کاربر نشان داد.

پس از انجام این تغییرات تنها کارهای باقیمانده در فهرست فایرپی‌جی‌پی "Decrypt" و "Verify" هستند. گزینهٔ "Decrypt" با تغییر ۳ و گزینهٔ "Verify" با تغییر ۴ امن می‌شود. همچنان ممکن است برداشتن این کارها برای بیشتر کردن استفاده از ویرایش‌گر متن فایرپی‌جی‌پی برای تمام کارهای مرتبط با رمزگذاری می‌تواند فکر خوبی باشد. اگر این گزینه‌ها برداشته شوند نکات ۳ و ۴ که در بالا ذکر شدند دیگر مطرح نیستند و می‌توان آن‌ها را نادیده گرفت. در بحثی در

tor-dev و سپس در #tails با rransom و katmagic مشخص شد که فایرپی‌جی‌پی ممکن

است چند مشکل امنیتی و ناشناسی جدی داشته باشد (katmagic حتی با با «۸۵٪» قطعیت ادعا کرد که این مشکلات جزو دلایل اصلی توقف پروژهٔ فایرپی‌جی‌پی بوده‌اند):

حمله‌های نمونه

<html>
    <head>
        <script type="text/javascript">
            function decrypt() {
                var elem = document.getElementById("pgp_msg");

                if (elem.innerHTML != elem.value) {
                    elem.innerHTML = elem.value;
                    alert(elem.value);
                }
            }
            window.setInterval(decrypt, 1000);
        </script>
    </head>

    <body>
<textarea id="pgp_msg" style="height: 600px; width: 600px">
-----BEGIN PGP MESSAGE-----
<snip>
-----END PGP MESSAGE-----
</textarea>
    </body>
</html>

یک رویکرد مشابه باید برای سرقت متن ساده نوشته‌شده در یک جعبهٔ متنی پیش از رمزگذاری آن کار کند.

منابع دیگر

مشکلات احتمالی دیگر

اگر امکان استفاده از جاوااسکریپت برای بررسی امضاها وجود داشته باشد، یک مهاجم می‌تواند کل دسته‌کلید کاربر را با پاسخ دادن به پیغام‌ها و امضاهای آن‌ها که توسط دارندگان کلید ایجاد شده پیدا کند. این کار به مهاجم اطلاعات بسیار زیادی برای شناسایی کاربر می‌دهد.