g и N могут быть публичными, на защищённость протокола это не влияет. Секретным должен быть сессионный ключ K (заглавное k). Этот ключ формируется у каждой из сторон путём описанного взаимодействия и никогда не передаётся по каналам связи. Не путать с упомянутым вначале k = hash(N, g) (тут это k строчное, очень неудачно выбраны шрифты на этой схеме...)