Hello,

ср, 18 сент. 2019 г. в 08:38, Niels Möller <ni...@lysator.liu.se>:
>
> Dmitry Eremin-Solenikov <dbarysh...@gmail.com> writes:
>
> >> 2. What should be the behavior for usage like
> >>
> >>    ->set_key
> >>    ->set_nonce
> >>    ->update
> >>    ->digest
> >>    ->update
> >>    ->digest
> >>
> >>    with second set_nonce missing?
> >>
> >>    Should it just keep the nonce from the first digest? (Sounds a bit
> >>    dangerous). Or autoincrement? (That's what umac does, because it's
> >>    defined in a way to make that more efficient). Or be specified as
> >>    invalid, triggering asserts whenever it is easy to detect?
> >>
> >>    I think it has to be specified; it will be too confusing if UMAC
> >>    behaves in one way and GMAC behaves differently.
> >
> > I'd say that this is an undefined behaviour. So, if one needs fully
> > predictable result, he should set nonce each time. For GMAC nonce MUST
> > be set each time to a new value. For UMAC one can skip this call. We
> > might want to refine this UB later.
>
> I would prefer to have it nailed down. It kind-of defeats the purpose of
> a nettle_mac abstraction if code using it is expected to have if (umac)
> { do this } else { do that }.

I'd propose then that if one uses generic interface, he MUST set nonce
each time. If one wishes to use auto-increment option of UMAC, he is
already tied to UMAC and thus doesn't have to use generic interface at
all.

> > Consider other MACs (like Kasumi F8/Snow3G UIA2/ZUC EIA3) which
> > require nonce, can have nonce autoincrement, but with complex rules.
>
> Complex how? If it is a common usecase, one could consider to either do
> auto-increment always (part of ->digest, like currently done for umac),
> or have a separate method increment_nonce or so.

Complex as incrementing a value in the middle of nonce by the amount
of bytes processed in the call. Again I think now, that it might be
easier to demand calling set_nonce when using generic interface.

> > BTW: I have written a library with 3GPP encryption/integrity
> > alogorithms. The library follow closely Nettle interface. I can
> > publish it and/or submit into nettle for inclusion. However I am
> > completely unsure about patent status and enforcement for those
> > algorithms. Do you know if somebody can advice me on this topic?
>
> It's time consuming to research patent status (and usually impossibly to
> reach certainty). Maybe you could ask FSF or sfconservancy lawyers, and
> say you consider contributing an implementation to GNU Nettle, but I
> doubt they have the resources to do a thorough investigation. If you
> know the patent holders, you could mail and ask them, or check if
> there's any general patent policy for 3GPP members. Reviewing any
> licensing terms they offer should be an easier task for FSF lawyers than
> a more open-ended patent investigation.

I have received no significant response from FSF, FSFE and
sconservancy (maybe I was asking a wrong question though). Just
typical "patent research is costly and we do not do consulting".
Anyway, patent licenses are explicit about using these algorithms to
only implement actual 3GPP/LTE support. So they should not target
generic library.


-- 
With best wishes
Dmitry
_______________________________________________
nettle-bugs mailing list
nettle-bugs@lists.lysator.liu.se
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to