Articles

Blog Akamai

krótko po Y2K żartowaliśmy o ” następny, y2038!”ale wtedy czuł wieczność w przyszłości i prawdopodobnie być czyjś problem. Teraz, gdy jesteśmy już w połowie drogi i osiągnęliśmy już punkt, w którym problemy z Y2038 mogą powodować awarie oprogramowania, jest to dobra okazja, aby rozpocząć planowanie dla Y2038. Na przykład oprogramowanie może już mieć problemy z obsługą 20-letnich okresów ważności certyfikatów lub 20-letnich kredytów hipotecznych, a częstotliwość tych problemów wzrośnie dopiero w miarę zbliżania się do roku 2038. W Akamai prowadzimy już strategicznie ukierunkowane wewnętrzne planowanie i testy dla roku 2038 i wydaje się prawdopodobne, że zakres tych prac będzie nadal rosnąć w ciągu najbliższych 19 lat, ponieważ ten ważny wysiłek wzrasta w trybie pilnym.

bardzo niewiele poszło nie tak 1 stycznia 2000 roku (brakuje trochę Javascript na stronie marketingowej Akamai wyświetlającej „19100” jako aktualną datę!), ale jedną rzeczą, która zostaje pominięta, jest to, że Ograniczony globalny wpływ tego wieczoru był spowodowany dwoma czynnikami: 1) ilością Zaawansowanego przygotowania, które zostało zrobione; 2) wiele „problemów z Y2K” faktycznie wystąpiło lata wcześniej, a nie podczas samego przewracania. Sekundy przestępne są pod pewnymi względami straszniejsze niż problemy z formatem daty, ponieważ są trudniejsze do przetestowania i znacznie mniej wpływu dzieje się z góry. Istnieje ryzyko, że brak wpływu Y2K może spowodować, że organizacje i technolodzy będą niedostatecznie przygotowywać się do y2038. Trudniej jest również wyjaśnić ludziom świeckim „Y2038” niż Y2K, potencjalnie utrudniając priorytetyzację i skupienie zaawansowanej pracy. Duża liczba urządzeń wbudowanego Internetu Rzeczy (IoT) staje się wszechobecna w naszym środowisku również sprawia, że prawdopodobne ryzyko i potencjalny wpływ są znacznie wyższe dla Y2038 niż dla Y2K.

wiele lat temu usłyszałem być może apokryficzną anegdotę o wczesnym wpływie produkcji Y2K. Magazyn miał dwa zautomatyzowane zadania: jeden, który szukał palet z przeterminowanymi towarami i wysyłał je do utylizacji, a drugi, który szukał niskiego stanu zapasów i zamawiał więcej produktu. Pomidory w puszkach były pierwszym produktem, którego daty ważności zaczęły przekraczać Rok 2000, a błąd Y2K skierował operatora wózka widłowego do usunięcia tych pomidorów (wygasających w 1900 roku!), gdy przybyli. Następnie system stwierdził, że zapasy pomidorów w puszkach są niskie i zamówi więcej. Kilka tygodni później przyjadą, a kilka dni później operator wózka widłowego zostanie wysłany, aby ich pozbyć. Cykl ten trwał, aż operator wózka widłowego w końcu zauważył coś nie tak i nasilił problem. Jest prawdopodobne, że niektóre z pierwszych problemów Y2038 będą miały dość podobny charakter.

nasze początkowe doświadczenie z planowaniem Y2038 (poza tym, że ludzie widzą szok po usłyszeniu obaw, że na początku brzmią 19 lat) jest to, że na tym etapie potrzebne jest przyrostowe i skoncentrowane podejście. Znacznie bardziej zaangażowane i kompleksowe programy będą z pewnością potrzebne kilka lat w dół drogi. W tej początkowej fazie niektóre obszary, na których należy się skupić, to: 1) oprogramowanie zajmujące się przyszłymi czasami i datami; 2) wiadomości i formaty plików on-The-wire; 3) urządzenia o długiej żywotności i ich zależności. Oczywiście, gdy się zbliżymy, kluczowe znaczenie będzie miało skoncentrowanie się na szerszych zestawach systemów, w tym zapewnienie, że mogą one bezpiecznie przejść przez przejście Y2038.

oprogramowanie zajmujące się przyszłymi datami

być może najważniejszym obszarem, na którym należy się skupić, jest oprogramowanie, które zajmuje się datami w przyszłości, na przykład do obsługi certyfikatów X. 509 lub planowania finansowego. Istnieje wiele reprezentacji formatu daty i czasu, z których nie wszystkie będą miały problem z Y2038. Na przykład, oprogramowanie potrzebujące do radzenia sobie z czasami w minionych wiekach (na długo przed 1970) często wybierało różne reprezentacje daty i czasu. Jednak podczas testowania przypadków certyfikatów X. 509 (takich jak używane dla HTTPS) i urzędów certyfikatów (CAs) znaleźliśmy wiele problemów z oprogramowaniem w laboratorium, które zaczynają pojawiać się wraz z certyfikatami i CAs wygasającymi po Y2038.

OpenSSL w szczególności ma wiele formatów czasu, z asn1_utctime ma limit w Y2049 (odrębny problem do zaplanowania z Y2038), więc użyj funkcji ASN1_TIME zapewniają zgodność ze wszystkimi zakresami czasu. Konwersja time_t z biblioteki takiej jak OpenSSL out do 32-bitowego time_t jest dodatkowym obszarem, który może mieć problemy.

w wielu z tych przypadków można było rozwiązać problemy po prostu przez portowanie i kompilację starszego oprogramowania dla architektur 64-bitowych (np. aby przejść z 32-bitowej liczby całkowitej time_t na 64-bitową time_t). W innych przypadkach konieczne były bardziej rozbudowane zmiany, zwłaszcza gdy czasy są przerzucane na liczby całkowite dla matematyki lub gdy zaangażowane są formaty drutu komunikatów lub gdy wartości są przechowywane w bazach danych. W testowaniu i naprawianiu wsparcia dla 20-letniego CAs pojawiła się jedna rzecz, która polega na tym, że w grę wchodzą również zależności niższego szczebla. Na przykład, jeśli data 20 lat w przyszłości zostanie wprowadzona do systemu rejestrowania lub systemu monitorowania, a te z kolei zostaną wprowadzone do systemów alarmowych, raportujących baz danych lub systemów rezerwowych, te mogą również wymagać poprawek.

On-the-wire wiadomości i formaty plików

jak wspomniano powyżej, gdy 32-bitowe znaczniki czasu są umieszczane w wiadomościach, bazach danych lub formatach plików, wpływ może wykraczać poza określony system. Są to również systemy z zewnętrznymi zależnościami, w których często potrzebne jest bardziej zaawansowane planowanie, ponieważ interakcje przekraczają granice systemu. W przypadku tych zbiorów systemów interoperacyjnych zmiany mogą wymagać wydania w określonej kolejności, a kompatybilność wsteczna często wchodzi w grę. Ponadto, jeśli istnieją formalnie lub nieformalnie standaryzowane protokoły, które używają 32-bitowych wartości znacznika czasu epoch w wiadomościach, każda migracja lub poprawka może być oparta na ustaleniu standardu. W związku z tym stają się one ważne, aby się nimi martwić, tak jak w przypadku łańcucha zależności, takiego jak:

  1. Update protocol/standards to support post-Y2038 timestamps.
  2. zaimplementuj obsługę zaktualizowanego standardu w bibliotekach oprogramowania.
  3. Pobierz nową wersję bibliotek włączonych do pakietów oprogramowania.
  4. Pobierz pakiety oprogramowania zawarte w nowym produkcie wysyłkowym.

to jeśli każdy z nich trwa kilka lat, a produkt wysyłkowy ma długą żywotność, to długie czasy realizacji tutaj mogą już stanowić problem.

urządzenia o długim okresie eksploatacji i ich zależnościach

kolejnym obszarem, na którym należy skupić się na wczesnym etapie, są urządzenia o długim okresie eksploatacji. Jak już wspomniano, ważne jest również podążanie za zewnętrznymi zależnościami tych urządzeń. Urządzenia wbudowane dostarczane ze sprzętem 32-bitowym mogą również nie mieć łatwej poprawki „just compile for a 64-bit time_t” poprzez aktualizację oprogramowania, lub może to mieć niedopuszczalny wpływ na wydajność.

podłączone Samochody i inne urządzenia IoT są prawdopodobnie obszarem szczególnego zainteresowania, ale jestem pewien, że istnieje wiele innych podobnych typów urządzeń i aplikacji. Na przykład, biorąc pod uwagę obecne trendy, jest prawdopodobne, że ponad 10% sprzedawanych obecnie samochodów będzie nadal działać w roku 2038, a wraz ze wzrostem wieku pojazdów i liczby pojazdów na drogach może to być jeszcze wyższe. Jeśli potrzeba kilku lat, aby Samochody wysyłkowe były ogólnie zgodne z Y2038, przy obecnym (i rosnącym) rozkładzie wieku pojazdów silnikowych możemy skończyć ze znaczną częścią samochodów z potencjałem poważnych problemów w ciągu dziewiętnastu lat. Ten sam wzór prawdopodobnie istnieje również w niektórych innych branżach, takich jak elektronika użytkowa (takie jak domowe konsole do gier i inteligentne telewizory), gdzie urządzenia mogą być wysyłane z fabrycznie zainstalowanymi certyfikatami CA 20+.

urządzenia o długiej żywotności mogą wymagać bardziej kompleksowych testów zarówno urządzenia, jak i jego zależności, takich jak testowanie, czy system operacyjny i oprogramowanie nadal działają poprawnie przed, w trakcie i po punkcie przejścia Y2038.

Szczęśliwego Nowego Roku!

problem z Y2038 jest w podobnej kategorii jak IPv6: jest to wielowiekowy roll-out, który w ogólnym przypadku jest ważny, ale nie jest jeszcze pilny (na macierz Eisenhowera). Z tej perspektywy teraz jest równie dobry czas, jak każdy, aby rozpocząć planowanie, Testowanie i testowanie, zanim stanie się pilne (lub zbyt późno). Skoncentruj się najpierw na oprogramowaniu do obsługi przyszłych dat, komunikatów i formatów plików On-the-wire oraz urządzeniach o długim okresie eksploatacji. Następnie wykorzystaj doświadczenia z początkowego skupienia, aby zbudować bardziej kompleksowy program w nadchodzących latach. Niezależnie od tego, Ustaw minimalny pasek i zacznij się upewnić, że nowe oprogramowanie, systemy, protokoły i produkty, które budujesz i wdrażasz, nie wprowadzają problemów z Y2038 i nie zgłaszają obaw, gdy zobaczysz 32-bitowe znaczniki czasu-od epoki Uniksa zawarte w nowych projektach.

Erik Nygren jest członkiem i głównym architektem w organizacji inżynierii Platformy Akamai. W czerwcu będzie obchodził swoje 20-lecie w Akamai.

Dziękuję wielu ludziom z Akamai za ich wkład w ten artykuł.

podczas przygotowywania tego dokumentu firma Akamai Technologies, Inc. nie ponosi odpowiedzialności za błędy, pominięcia lub szkody wynikające z wykorzystania informacji w niniejszym dokumencie. Informacje w niniejszym dokumencie mogą ulec zmianie bez powiadomienia. Akamai i logo Akamai Wave są zarejestrowanymi znakami towarowymi lub znakami usługowymi w Stanach Zjednoczonych (Reg. U. S. Pat. & Tm. Off). Opublikowano 10 Stycznia 2019.