audiart: (Default)
[personal profile] audiart
Хе-хе, proof-carrying code порвал аудиторию :) Я, в принципе, так и думала, меня он в свое время тоже порвал :)

Date: 2007-04-18 01:12 pm (UTC)
From: [identity profile] george-schwarm.livejournal.com
proof-carrying code - что это?

Date: 2007-04-18 01:17 pm (UTC)
From: [identity profile] audiart.livejournal.com
Это одна из новых технологий в программировании, которая позволяет получить более надежные и безопасные программы. Идея в том, что вместе с программой поставляется математическое доказательство того, что эта программа работает, грубо говоря, правильно. И, соответственно, пользователь (не сам, конечно, а с помощью специальной программы) может достаточно просто проверить это доказательство и решить, подходит ему такая программа или нет. Причем прелесть ситуации в том, что если кто-то решит подделать доказательство, у него ничего не получится, потому что тогда оно перестанет соответствовать программе, и пользователь увидит, что его пытаются обмануть :)

Date: 2007-04-18 02:36 pm (UTC)
From: [identity profile] dimabest.livejournal.com
Звучит захватывающе. Хотя не представляю, как такое можно реализовать. Доказательство правильности алгоритма --- это да.

Date: 2007-04-18 02:42 pm (UTC)
From: [identity profile] audiart.livejournal.com
Ой, в этой области столько рисерча делается в разных направлениях! Только это в основном не доказательство правильности алгоритма, а доказательство того, что программа багов не содержит, особенно security-critical.

Date: 2007-04-19 01:52 pm (UTC)
From: [identity profile] dimabest.livejournal.com
Что я себе могу представить: написал я прогу, которая по каким-то критериям оценивает степень надёжности и безглючности кода. Результат работы программы будет указывать на степень надёжности, а подделать его не получится, ибо с помощью программы эту самую степень всегда можно ещё раз проверить.
Похоже?

Date: 2007-04-19 02:04 pm (UTC)
From: [identity profile] audiart.livejournal.com
Не совсем. Такие программы есть, но проблема с ними в том, что процесс проверки обычно очень сложно. Поэтому идея такая: программа проверяет надежность кода и вставляет в него аннотации. Причем аннотации эти составляются таким образом, что с одной стороны с их помощью надежность программы гораздо проще проверить, а с другой - они настолько тесно зависят от кода программы, что если их изменить, не меняя код, это сразу будет заметно. Простейший пример - это проверка того, что когда программа выполняет jmp r1, она переходит к правильному адресу в кодовом сегменте. Если ты по "сырому" коду программы попытаешься выяснить, что к моменту прыжка хранится в регистре r1, это будет сложновато. А вот если перед каждой инструкцией стоит аннотация, в которой указано, что сейчас хранится в каждом регистре: просто число или валидный адрес, то все получается гораздо проще. И проверить, что аннотации соответствуют действительности, тоже легко: смотришь на аннотации до и после каждой инструкции, и сразу очевидно, правду тебе сказали или нет :)

Profile

audiart: (Default)
audiart

July 2014

S M T W T F S
  12345
678910 1112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 27th, 2026 06:06 pm
Powered by Dreamwidth Studios