Что представляет собой API (программный интерфейс) ключа защиты?
Также, как блок логики и блок памяти - "аппаратное сердце" ключа защиты, его API - это его "программное сердце". От его качества зависит очень многое: стабильность работы в различных операционных системах, четкость и стабильность работы в локальной сети, стойкость к программному взлому, удобство в использовании для программиста, возможность использования широкого спектра языков программирования и т.д.
Обычно, применительно к современным ключам, работающим в системах типа WinXX, API разделяется на 2 уровня: API, включаемое в защищенную программу, и драйвер ключа - системный драйвер, обеспечивающий взаимодействие между программой и ключом.
Такое "разделение труда" обуславливается несколькими причинами: невозможность выполнения операций ввода/вывода на уровне прикладных задач (в защищенном режиме, для выполнения операций ввода/вывода требуется уровень привилегий "0" [Ring0], в то время как все прикладные задачи выполняются на уровне 3 [Ring3]), затруднение понимания работы ключа, возможность ввода дополнительной шифровки (и, таким образом, повышение стойкости к взлому) и т.д.
Кроме того, на уровне API происходит трансформация данных, полученных из ключа и передаваемых в программу, и наоборот. Производители ключей любят преувеличивать не меньше любых других производителей и все их криптоалгоритмы на 90% вынесены в программную часть, а аппаратная выполняет оставшиеся 10% работы. Оно и понятно - в случае усложнения такого устройства оно возрастет в цене и автоматически упадет спрос, а стойкость к взлому они попробуют увеличить другими методами. Кроме того, некоторые функции API выполняет целиком и полностью, даже не обращаясь к ключу! (Например, ключ Novex содержит только память, а вся логика целиком и полностью выполняется на программном уровне).
Стоит отметить, что внутренности API - это святая святых и, также как и принципиальная схема ключа, является одним из наибольших секретов производителей.