Цифровой журнал «Компьютерра» 2010 № 35 | страница 36



В HDCP каждое устройство имеет уникальную пару ключей: один открытый ключ, который не является тайной; и один секретный ключ, который положено знать исключительно только этому устройству. Кроме того, система в целом имеет один-единственный мастер-ключ, который предполагается известным исключительно Центральному органу, управляющему всей системой HDCP. А также имеется особый алгоритм генерации ключей (который по давней традиции удобно для краткости называть Keygen), используемый Центром для формирования секретных ключей устройств. Этот генератор ключей на основе секретного мастер-ключа Центра и открытого ключа устройства неким хитрым способом формирует уникальный секретный ключ, который соответствует исключительно данному открытому ключу. Поскольку генератор ключа использует секретный мастер-ключ, заниматься созданием ключевых пар может только центральный орган власти.

Каждое HDCP-лицензированное устройство (например, Blu-Ray-плеер или HD-телевизор) имеет зашитые в него открытый ключ и соответствующий ему секретный ключ. Чтобы получить эти ключи для своих устройств, их изготовителям нужно содействие центрального органа власти HDCP, потому что лишь там занимаются генерацией и раздачей легитимных ключевых пар.

Теперь предположим, что два устройства, которые для простоты называют А и Б, собираются выполнить процедуру «рукопожатия». Для этого А посылает свой открытый ключ в Б, а Б, соответственно, свой открытый ключ в А. После чего каждая из сторон по заранее известному правилу комбинирует свой собственный секретный ключ с открытым ключом партнера, чтобы в результате получить общий секретный ключ для шифрования сеанса связи. Этот сеансовый ключ предполагается секретным — то есть известным исключительно сторонам А и Б — потому что для порождения общего ключа обязательно требуется знать либо секретный ключ А, либо секретный ключ Б.

Надо подчеркнуть, что для получения этого общего секрета А и Б фактически выполняют разные вычисления. Ведь А комбинирует свой секретный ключ с открытым ключом Б, а Б, наоборот, комбинирует свой секрет с открытой информацией от А. Если «случайно повстречавшиеся» А и Б производят существенно разные вычисления, то возникает естественный вопрос: каким образом в итоге у них получится один и тот же результат? Чтобы ответить на этот вопрос с исчерпывающей полнотой, понадобилось бы без нужды углубляться в дебри алгебраических уравнений. Здесь же вполне достаточно ограничится кратким ответом: потому что таким образом устроены математические свойства алгоритма Keygen.