Jak udowodnić, że czegoś nie ma

Też napiszę kilka słów w temacie, którego dotyczył ten radosny artykuł: FBI zaszyło pluskwy w szyfrowaniu dla serwerów. Od razu dla przeciwwagi trzeba podać coś bardziej rzetelnego:

Cała afera rozpoczęła się od tej wiadomości na liście dyskusyjnej: Allegations regarding OpenBSD IPSEC. Jak zwykle chcę zwrócić uwagę na nieco inne fragmenty, niż to było robione do tej pory.

My NDA with the FBI has recently expired, and I wanted to make you aware of the fact that the FBI implemented a number of backdoors and side channel key leaking mechanisms into the OCF, for the express purpose of monitoring the site to site VPN encryption system implemented by EOUSA, the parent organization to the FBI.

Teraz pytanie – jak udowodnić, że w kodzie nie ma żadnej dodatkowej “funkcjonalności”? Albo, że ewentualne błędy (nie) zostały wprowadzone celowo? Tu nie chodzi o szukanie “dodatkowego” klucza, który dawałby NSA/CIA/FBI/(...) wgląd w transmisję danych. Nie chodzi (chyba) również o celowe zepsucie generatora liczb (pseudo)losowych. Tu może chodzić o możliwość odzyskania klucza na podstawie pewnych dodatkowych informacji, jeśli tylko ktoś (FBI) wie, gdzie ich szukać... Coś na zasadzie podobnej do wyroczni w ASP.NET.

Czy dysponując kodem źródłowym można udowodnić, że takiego błędu/backdora nie ma? A może jest, tylko nikt go nie znalazł i (na razie) nie znajdzie, bo nie wie gdzie szukać? Nie jest to przecież całkiem nieprawdopodobne, w końcu NSA poprawiła DES, bo wiedziała nieco więcej. Zupełnie nie wiem dlaczego ta sprawa kojarzy mi się z Czajniczkiem Russella.

Oryginał tego wpisu dostępny jest pod adresem Jak udowodnić, że czegoś nie ma

Autor: Paweł Goleń