Похоже, вы пытаетесь описать MAC.
Код аутентификации сообщения содержит дайджест сообщения, секрет и сообщение. Секрет и данные хэшируются вместе, и результат включается в сообщение.
Получатель сообщения, который знает секрет, может выполнить такое же вычисление дайджеста и сравнить свой MAC с тем, который сопровождал полученное сообщение. Если они равны, он может верить, что сообщение не было изменено.
Учитывая ваши комментарии, теперь я понимаю, что вы работаете с асимметричными ключами, а не с секретным ключом, который будет использоваться в MAC.
Однако, все еще есть небольшая путаница. Обычно закрытый ключ подписи держится в секрете его владельцем, который в этом случае кажется клиентом. Клиент может криптографически доказать, что он обладает закрытым ключом, который соответствует открытому ключу, не раскрывая секретный ключ.
Используя цифровые подписи, вы можете сделать что-то вроде этого:
p = genKey(pvt, seed)
checkKey(pub, p)
Здесь pvt
- это закрытый ключ сервера, pub
- его открытый ключ. Параметр seed
- это данные, которые подписываются. Если я понимаю ваше приложение (в чем я сомневаюсь), seed
должен быть идентификатором клиента. Тогда p
- это формат сообщения, объединяющий seed
и его подпись. Ваш вопрос сбивает с толку, поскольку q
используется как для генерации, так и для проверки p
- как общий секрет.
Однако в этой схеме (или в схеме MAC) нет ничего, чтобы помешать одному клиенту использовать значение другого p
. Все, что вы можете сделать с такой техникой, это убедиться, что содержание сообщения не было изменено. Например, если сообщение выглядит как «clientID = Alice, IPAddress = 192.168.1.1», вы можете убедиться, что Мэллори не подставил свой собственный IP-адрес для Алисы.
Но если сообщение просто "clientID = Alice", вы не можете помешать Алисе дать Бобу ее защищенное от несанкционированного доступа сообщение (взамен на разделение стоимости лицензии), и вы не можете контролировать, взламывает ли Мэллори в ящик Алисы и крадет сообщение.
Между прочим, если целостность сообщения - это все, что вам нужно, и вы легко можете поделиться секретом между отправителем и получателем, то MAC имеют ряд замечательных преимуществ по сравнению с криптографией с открытым ключом, таких как гораздо меньший размер сообщения и более высокая производительность .
Опишите угрозы, от которых вы пытаетесь защищаться. Криптография это сложно. Разработка не опробованных схем обычно заканчивается плохо.