Кіріспе

Proof carrying code (PCC) — бағдарламалық қамтамасыз ету механизмі, ол хост-жүйеге қосымшаның орындалатын кодымен бірге келген формальді дәлелдеме арқылы қосымша туралы қасиеттерін тексеруге мүмкіндік береді. Хост-жүйе дәлелдеменің дұрыстығын жылдам тексеріп, дәлелдеменің қорытындыларын өзінің қауіпсіздік саясатымен салыстыра отырып, қосымшаны орындау қауіпсіз екенін анықтай алады. Бұл, әсіресе, жад қауіпсіздігін қамтамасыз етуде (мысалы, буфер асығу сияқты мәселелерді болдырмау) өте пайдалы. Proof carrying code алғаш рет 1996 жылы Джордж Некула және Питер Ли есімді ғалымдар сипаттаған.

Пакет сүзгісінің мысалы

1996 жылы дәлелді кодты тасымалдау туралы алғашқы жарияланымда пакет сүзгілері мысал ретінде келтірілді: пайдаланушы режиміндегі бағдарлама ядроға машиналық кодта жазылған функцияны жібереді, ол белгілі бір желілік пакетті өңдеуге қызығушылық танытатынын анықтайды. Пакет сүзгісі ядролық режимде жұмыс істейтіндіктен, егер ол ядролық дерек құрылымдарына жазатын қауіпті кодты қамтыса, жүйенің қауіпсіздігіне нұқсан келтіруі мүмкін. Бұл мәселеге қатысты дәстүрлі тәсілдерге пакет сүзгілеу үшін арнайы домендік тілді интерпретациялау, әр жадқа қол жеткен кезде тексерулер енгізу (бағдарламалық қателерді оқшаулау) және сүзгіні жоғары деңгейдегі тілде жазу кіреді, ол орындалу алдында ядрода компиляцияланады. Бұл тәсілдер пакет сүзгісі сияқты жиі орындалатын код үшін өнімділік кемшіліктеріне ие, ядролық компиляция тәсілінен басқа, ол кодты тек жүктелген кезде ғана компиляциялайды, әр орындалу сайын емес. Дәлелді кодты тасымалдау арқылы ядро кез келген пакет сүзгісі сақтауы тиіс қасиеттерді көрсететін қауіпсіздік саясатын жариялайды: мысалы, пакет сүзгісі пакет пен оның қосымша жады аймағынан тыс жадқа қол жеткізе алмайды. Теореманы дәлелдейтін құрал машиналық кодтың осы саясатты орындауын көрсету үшін қолданылады. Осы дәлелдеу қадамдары жазылып, ядролық бағдарлама жүктеушіге берілетін машиналық кодқа қоса беріледі. Бағдарлама жүктеуші дәлелді жылдам тексеруге және одан кейін қосымша тексерулерсіз машиналық кодты орындауға мүмкіндік береді. Егер қауіпті тұлға машиналық кодты немесе дәлелдемені өзгертетін болса, нәтижесіндегі дәлелді код жарамсыз болады немесе зиянсыз болып қалады (әлі де қауіпсіздік саясатын сақтайды).