Торговая марка (компьютерная безопасность)
Товарный знак в компьютерной безопасности — это контракт между кодом , который проверяет свойства безопасности объекта, и кодом, который требует, чтобы объект имел определенные свойства безопасности. Таким образом, это полезно для обеспечения безопасного потока информации. В объектно-ориентированных языках регистрация товарных знаков аналогична подписанию данных, но часто может быть реализована без криптографии.
Операции
[ редактировать ]Товарный знак выполняет две операции:
Применить товарный знак!(объект)
[ редактировать ]Эта операция аналогична закрытому ключу в процессе цифровой подписи, поэтому ее нельзя подвергать воздействию ненадежного кода. Его следует применять только к неизменяемым объектам , и он гарантирует, что при проверке VerifyTrademark? вызывается с тем же значением, которое возвращает true.
Проверить товарный знак?(объект)
[ редактировать ]Эта операция аналогична открытому ключу в процессе цифровой подписи, поэтому она может быть доступна ненадежному коду. Возвращает истину тогда и только тогда, ApplyTrademark! был вызван с данным объектом.
Связь с проверкой на наличие пятен
[ редактировать ]Торговая марка – это обратная процедура проверки на наличие дефектов . В то время как проверка на наличие вредоносных данных представляет собой подход с использованием черных списков, в котором говорится, что определенным объектам нельзя доверять, регистрация товарных знаков представляет собой подход с использованием белых списков, который помечает определенные объекты как имеющие определенные свойства безопасности.
Связь с мемоизацией
[ редактировать ]Заявку на товарный знак можно рассматривать как запоминание процесса проверки.
Связь с проверкой контракта
[ редактировать ]Иногда процесс проверки не требуется, поскольку тот факт, что значение имеет определенное свойство безопасности, можно проверить статически . В этом случае свойство apply используется для подтверждения того, что объект был создан с помощью кода, который был формально проверен на создание выходных данных только с определенным свойством безопасности.
Пример
[ редактировать ]Один из способов применения товарного знака в Java:
public class Trademark {
/* Use a weak identity hash set
instead if a.equals(b) && check(a)
does not imply check(b). */
private final WeakHashSet<?> trademarked = ...;
public synchronized void apply(Object o) {
trademarked.add(o);
}
public synchronized boolean check(Object o) {
return trademarked.contains(o);
}
}
public class HtmlSanitizer {
// The apply operation is kept secret.
private static final Trademark TM = new Trademark();
public String sanitizeHtml(String rawHtml) {
// Remove all but safe tags
String safeHtml = ...;
// java.lang.String is immutable so can be trademarked.
TM.apply(safeHtml);
return safeHtml;
}
public boolean isSanitized(String html) {
return TM.check(html);
}
}
Внешние ссылки
[ редактировать ]- «Защита в языках программирования» Джеймса Морриса-младшего.