Легендарная шифровальная машина “Энигма”
В данной статье рассмотрим принцип работы шифровальной машины энигма. Начнем с Playfair — это популярный шифр во эпоху Первой мировой войны. Его алгоритм: латинские буквы вписывали в квадрат 5 на 5, потом исходные символы разбивались по парам. Затем по определенным правилам эти биграммы необходимо было заменить на другие при помощи квадрата (он являлся ключом). Его достоинство было в том, что с ним можно было работать без использования дополнительных устройств.И самое главное, что когда сообщение удавалось разгадать, его актуальность была под сомнением.
Существовал и шифратор Джефферсона, состоявший из 36 дисков. Каждый делился на 26 секторов (это были буквы). Оператор вращал диски и набирал нужное сообщение, далее переписывал другую строку. Получивший информацию, обладал точно тем же устройством. Оба способа неплохие, но в XX веке уже возникла потребность в механизации процесса шифрования. В 20-х годах этого века голландский рационализатор А. Кох придумал первую роторную шифровальную машинку. После этого на нее получили патент изобретатели Германии, которые модернизировали ее и выпустили финальный продукт «Enigma», от греческого «загадка». Его приобретали фирмы, стремящиеся сохранить в секрете все свои переписки.
Такой переносной шифровальный агрегат был использован как для шифрования, так и для декодирования данных. Применялся он с 20-х годов 20 века в коммерческих, и даже военных целях. В 1918 году была основана немецкая фирма, которая пыталась наладить сотрудничество в разрезе шифровальных машин с ВМФ и с МИД, но безуспешно.
Рождение легенды
Известно множество вариантов дизайна, моделей. Особенно стала известна модель Германии в период Второй мировой войны. В 1923 году была основана корпорация производителей подобных машин, которая пропагандировала роторную машину Enigma, похожую на габаритную печатную весом 50 килограмм. В ранних моделях отсутствовал рефлектор, он появился только в 1926 году. Дальнейшие аппараты были менее габаритны и более портативны. Итого с 1923 по 1927 годы произведены такие модели, как “А”, “В”, “С” и “D”.
Последняя модель получила широкую область распространения: Польша, Италия, Великобритания, США, Швеция.
Первым внедрил использование агрегата немецкий ВМФ. Версия под названием “Funkschlüssel C” с 1925 г. многочисленно поступала в эту сферу. Ее особенностями были:
- клавиатура, панель с лампочками включали 29 букв от A до Z, а также Ä, Ö и Ü;
- в каждом роторе располагалось по 28 контактов;
- буква X кодировалась напрямую (без шифровки);
- 3 ротора из 5-ти плюс рефлектор можно было установить в четыре разные позиции.
В 1933 году его коснулись некоторые изменения.
Модель “Enigma-G” введена немецкой армией в июле 1928 г., усовершенствованная через два года в “Enigma I” (“войсковая”). Основные моменты, которыми отличалась “Enigma I” от коммерческих:
- коммутационная панель, позволяющая заменять пары букв, что колоссально увеличило степень защиты засекреченного сообщения;
- неподвижный рефлектор;
- размеры в два раза меньше в сравнении с “А”, а вес порядка 12 килограмм.
В 1934 году ВМФ сделал акцент на военно-морскую вариацию под названием “Funkschlüssel M”. В ней был возможен выбор 3 роторов из 5-ти, тогда как во всех остальных применялось только 3. Через четыре года их количество увеличилось до семи, а в 1939 — до восьми. ВВС начали работать с 1935 года с армейскими вариантами для своих секретных переписок. Начиная с 42 года 20-го века подводные лодки Германии ввели себе в эксплуатацию “Enigma-M4” (4 диска) или “Triton”.
В декабре 1932 г. произошла первая расшифровка “Энигмы” польским Бюро шифров. Создано устройство под названием криптологическая бомба. Во многом благодаря этому была побеждена нацисткая Германия. Тогда немецким инженерам пришлось поработать над обновлением версии. А в 1938 году выпущен новый механизм, для его дешифровки понадобятся более сложные устройства. в Англии в этот период для расшифровки данных создали “Turing Bombe”. Всего шифровальных машин было произведено порядка 100 тысяч.
Устройство Энигмы
Сейчас рассмотрим, как работает шифровальная машина Энигма.
- Она представляла собой совокупность комбинаций механической и электрической подсистем. Первая состояла из:
- клавиатуры.
- вращающихся эбонитовых или бакелитовых дисков, роторов диаметром 10 сантиметров, их ещё называли сердцем машины.
- механизма, который двигал роторы, когда осуществлялось нажатие на клавиши.
Вторая включала в себя электрическую схему, которая соединяла в одну систему: клавиатуру, 26 лампочек, роторы, коммутационную панель .
Принцип действия машины был непростым: нажатие любой клавиши приводит в движение самый правый диск, он смещается на одну позицию, а могут сдвигаться и остальные роторы тоже. При каждом очередном нажатии на клавишу движение дисков приводит к разнообразным криптографическим модификациям.
Порядок движения тока расписываем ниже:
- батарея (источник питания);
- через переключатель в коммутационную панель. Она давала возможность оператору менять соединения кабелей. Каждый из них соединял буквы попарно;
- разъём;
- входное колесо (статор). Его роль состояла в соединении вышеописанной панели и лампочек с роторами;
- схема из 3-4 роторов;
- рефлектор, который располагался за последним ротором. Он иным путем возвращал ток обратно через иной переключатель и загоралась лампочка.
Операция “Ультра”
Так обозначались с лета 1941 года перехваченные и декодрованные секретные данные противника. Такие данные были весьма важны, по сравнению с наивысшим уровнем секретности информации (Most Secret), соответственно и назывались Ultra secret. В различных странах она имела иные имена: в британской разведке Boniface, а в США — Magic.
Огромная доля немецких переписок кодировалась на этой машине. Предполагалось, что ее нельзя взломать, однако некоторые изъяны в практической эксплуатации позволили реализовать взлом. Ультра подразумевает собой раскодирование немецких аппаратов Лоренц, которыми пользовалось верховное командование Германии, Хэгелин и прочих итальянских кодов (например, PURPLE).
Нужно отметить, что Ультра явилась весьма полезной для союзников. По словам У. Черчилля, благодаря ей они выиграли войну. Главнокомандующий западным фронтом Д. Эйзенхауэр высказался в конце войны: она стала важнейшим фактором для победы. Историк британской разведки, Г. Хинсли,определил ее, как причину сокращения сроков войны «не менее чем на два, а может и на четыре года».
Подавляющее большинство разведданных данных было изъято из перехваченных радиосообщений неприятелей. Они были закодированы на различных шифровальных агрегатах. Эти сведения пополнялись материалами, извлекаемыми из радиокоммуникаций иными способами (к примере, радиопеленгация). На начальных этапах вражеских действий, германские войска могли передавать свои сообщения посредством наземных линий (соответственно, не было надобности пользоваться радио). Поначалу все, что было зашифровано, было одной из первопричин, по которой немецкие ВВС обладали превосходством. Это обусловлено тем, что они больше отдавали предпочтение радио, однако их операторы были плохо дисциплинированы. По итогам вышеперечисленных фактов можно сказать, что принцип работы шифровальной машины энигма весьма прост с одной стороны, и одновременно сложен с другой. Со своими главными функциями она справилась успешно в свою эпоху.
Энигма — шифрование сообщений в войну
Многие слышали, что в Великую Отечественную Войну немецкая сторона использовала для шифрования специальную шифровальную машину — «Enigma».
Как утверждают источники, это устройство — было новым словом в криптографии того времени.
Как же она работала?
Шифр замены
Для начала, следует знать, что такое «Шифр замены». Это обычная замена одних букв на другие. Т.е. в таком шифре вместо буквы «А» используется, например «T», вместо «B» — «S» и т.п.
Взламывается такой шифр достаточно просто. При наличии более-менее длинного зашифрованного сообщения, можно произвести частотный анализ и сопоставить его частоте употребления букв в языке. Т.е. если в зашифрованном шифром замены сообщении много букв «Т» — то это явный признак того, что за этой буквой скрывается какая-то гласная (например, «А» или «О» т.к. обычно именно эти буквы наиболее часты в языке).
Устройство Энигмы
Энигма представляла собой как бы динамический шифр цезаря. Т.е. изначально на барабаных выставлялось некое начальное значение (этакий random seed), которое и являлось ключом. Далее, при наборе букв, каждая буква шифровалась шифром цезаря, а потом, этот шифр менялся на другой.
Смена шифра обеспечивалась с помощью роторов.
Роторы представляли собой диски, у которых было по 26 контактов с каждой стороны, соединенных внутри ротора определенным (случайным) образом. Именно проходя через ротор, сигнал преобразовывался из буквы «А» в букву «Т» и т.д.
Роторов было несколько и они поворачивались после набора каждого символа (на манер барабанного счетчика).
Кроме того, была еще коммутационная панель, в которую можно было вставлять провода, которые попарно меняли буквы. Т.е. воткнув провод одним концом в гнездо «А», а другим — в «Е», вы меняли эти буквы местами.
Принцип работы можно понять посмотрев на принципиальную схему:
Количество роторов варьировалось в разные годы и для разного назначения (например, во флоте использовались Энигмы с большим количеством роторов).
Для усложнения взлома операторы кодировали частоупотребимые слова (названия) каждый раз по-разному. Например, слово «Minensuchboot» могло быть написано как «MINENSUCHBOOT», «MINBOOT», «MMMBOOT» или «MMM354»
Аксессуары.
Как к любому популярному устройству, к Энигме существовало большое количество аксессуаров (да-да, это началось уже тогда).
Например, были авто-печатающие устройства (в обычной версии кодирование производилось загорающимися лампочками, значения которых должен был записывать оператор).
Кроме того, были дистанционные печатающие устройства (на проводах, конечно же). Чтобы оператор, вбивающий зашифрованное сообщение в машину, не имел доступа к расшифрованному.
Ссылки по теме:
- Википедия: Энигма
- Википедия: Криптоанализ «Энигмы»
- Хабр: Шифровальная машина «Энигма» в Excel
Алгоритм Энигмы
В данном сообществе я нашел много статей про известную шифровальную машинку «Enigma», но нигде из них не описывался подробный алгоритм ее работы. Наверняка многие скажут, что это не нуждается в афишировании, — я же надеюсь, что кому-нибудь да будет полезно об этом узнать. С чего все началось? Во времена Первой мировой войны большой популярностью пользовался шифр Playfair. Его суть заключалась в том, что буквы латинского алфавита записывались в квадрат 5х5, после чего буквы исходного алфавита разбивались по парам. Далее, используя квадрат в качестве ключа, эти биграммы заменяли на другие по определенному алгоритму. Преимущество данного шифра было в том, что он не требовал дополнительных устройств, и, как правило, к тому моменту, когда сообщение расшифровывали, оно уже теряло актуальность. Еще одним способом тайнописи был шифратор Джефферсона.
Сие устройство состояло из определенного количества дисков, нанизанных на единую ось (обычно, дисков было 36). Каждый из них делился на 26 частей, каждая из которых обозначало букву. Буквы на дисках были расставлены в случайном порядке. Оператор путем вращения дисков набирал нужное сообщение, а затем переписывал другую строчку. Человек, принявший данное сообщение, должен был обладать точно таким же устройством с точно такой же расстановкой букв. И тот и другой способы были относительно неплохими для тех времен, но учитывая, что человечество вступило уже в XX век, возникла необходимость механизации процесса шифрования. В 1920 году голландский изобретатель Александр Кох изобрел первую роторную шифровальную машинку. Затем, на нее получили патент немецкие изобретатели, которые усовершенствовали ее и выпустили в производство, под названием «Enigma» (от греч. – загадка). Таким образом, эта машинка приобреталась многими фирмами, которые желали сохранить в тайне свои переписки. В этом и состояла вся гениальность Энигмы – все знали алгоритм шифрования, но никто не мог подобрать нужный ключ, так как число возможных комбинаций превосходило 15 квадриллионов. Если хотите узнать, каким образом Энигму взламывали, советую прочитать книгу Саймона Сингха «Книга шифров». Подытоживая все вышесказанное, хочу сказать, что шифр Энигмы являлся некой смесью шифратора Джефферсона и шифра Цезаря.
Итак, приступим к изучению алгоритма. На данном сайте имеется очень неплохой симулятор, который в доступной и наглядной форме показывает весь процесс целиком и полностью. Давайте же разберем принцип работы трехроторной Энигмы. В ней имелось три отсека для помещения трех роторов и дополнительный отсек для размещения рефлектора. Всего за время Второй мировой войны было изготовлено восемь роторов и четыре рефлектора, но одновременно могло использоваться ровно столько, на сколько была рассчитана машина. Каждый ротор имел 26 сечений, что соответствовало отдельной букве алфавита, а так же 26 контактов для взаимодействия с соседними роторами. Как только оператор нажимал на нужную букву, — замыкалась электрическая цепь, в результате чего появлялась шифрованная буква. Замыкание цепи происходило за счет рефлектора.
На рисунке представлена иллюстрация нажатия клавиши «А» с последующей дешифрацией в букву «G». После ввода буквы крайний правый ротор перемещался вперед, меняя тем самым ключ. Так каким же образом одна букву заменялась на другую? Как я уже говорил, для Энигмы было разработано восемь различных роторов. Внутри каждого из них было установлено 26 различных коммутаций. Здесь представлена подробная спецификация на каждый из них. Например, если на вход первого ротора поступала буква «N», то на выходе должна быть только «W» и никакая другая буква больше. Попади это буква на второй ротор, она бы уже преобразовалась в «T» и т.д. То есть, каждый ротор выполнял четко поставленную задачу в плане коммуникации. А какую же роль играли кольца? Рассмотрим следующий пример. Установим роторы III, II и I, а порядок колец «C», «U» и «Q».
Нажмем на клавишу «A». Крайний правый ротор повернется вперед на один шаг, то есть, буква «Q» перейдет в «R». Ротор посередине также повернется вперед на букву «V», но об этом я расскажу чуть позже. Итак, наша буква «А» начинает путешествие с первого отсека, в котором установлен ротор I и на котором выставлена уже буква «R». Уже перед тем как попасть на первый ротор буква претерпевает свое первое преобразование, а именно: сложение с буквой «R» по модулю 26. Фактически, это шифр Цезаря. Если пронумеровать все буквы от 0 до 25, то буква «А» будет как раз таки нулевой. Значит, результатом сложения будет буква «R». Далее, мы с вами знаем, что в первом отсеке ротор I, а в его конструкции заложено, что буква «R» всегда переходит в «U». Теперь на очереди второй отсек с ротором II. Опять, перед попаданием на второй ротор, теперь уже буква «U» меняется по несколько иному алгоритму: к ней прибавляется разница значений последующего ротора и предыдущего. Поясню. На втором роторе ожидает нас буква «V», а на предыдущем, — «R», их разница равна четырем буквам, и именно они прибавляются к нашей букве «U». Поэтому, на второй ротор поступает буква «Y». Далее по таблице находим, что во втором роторе букве «Y» соответствует «O». Далее опять смотрим разницу букв «C» и «V», — она равна семи. Значит, букву «O» сдвигаем на семь позиций и получаем «V». В роторе III «V» переходит в «M». Перед тем как попасть на рефлектор, из нашей буквы вычитается буква «C», преображая ее в букву «K». Далее происходит отражение. Если вы заметите, то в каждом роторе образуются большие циклические группы, например: (A – E – L – T – P – H – Q – X – R – U), а в рефлекторе они разбиты по парам: (A — Y)(B — R)(C — U) и т.д. Это сделано для того, чтобы потом это возможно было расшифровать. Предположим, что установлен рефлектор B, в котором «K» заменяется на «N» (и наоборот). Половина пути пройдена. Теперь мы опять прибавляем значение буквы «С», получив тем самым букву «P». Здесь наоборот, в строке третьего ротора находим «P» и смотрим, в при нажатии какой буквы она бы появилась. Это буква «H». Преобразование в третьем роторе закончено. Теперь из этой буквы вычитается разница букв «C» и «V», то есть семь. Получаем букву «A». Во втором роторе она переходит саму в себя, поэтому оставляем ее без изменений. Далее, вычитаем разницу букв «V» и «R», то есть четверку и получаем букву «W». В первом роторе её обратно преобразование отображается в букву «N». Остается только вычесть из нее букву «R» и получим искомую букву «W». Как видите, алгоритм работы машинки оказался не таким сложным каким казался. Для усовершенствования шифра немцы внедрили коммутационную панель, которая позволяла попарно менять местами буквы. Если мы соединим буквы «Q» и «W», то при вводе той же «A» мы получили бы «Q», так как по факту должна быть «W», но она заменена буквой «Q». Вот прилагаемая схема действия.
Осталось лишь рассказать про смещения роторов относительно друг друга. Правый ротор поворачивался всегда при нажатии клавиши на один шаг. Например, для ротора I эта позиция равна букве «R». Именно поэтому в нашем примере второй ротор повернулся: первый ротор прошел через букву «R». Далее, пройдя через определенную позицию, правый ротор приводил в движение левый на один шаг. В более усовершенствованных моделях левый ротор прокручивался два, а то и три раза.
В завершение скажу, что здесь собраны некоторые материалы по взлому Энигмы, которые могут быть полезны. Надеюсь, что данная статья кому-нибудь пригодится.
- Информационная безопасность
- Криптография
Как расшифровать шифр энигмы приложение
CRLF (Win) LF (UNIX/Mac) CR (Old Mac)
+01:00 Africa/Algiers +01:00 Africa/Bangui +01:00 Africa/Brazzaville +01:00 Africa/Ceuta +01:00 Africa/Douala +01:00 Africa/Kinshasa +01:00 Africa/Lagos +01:00 Africa/Libreville +01:00 Africa/Luanda +01:00 Africa/Malabo +01:00 Africa/Ndjamena +01:00 Africa/Niamey +01:00 Africa/Porto-Novo +01:00 Africa/Tunis +01:00 Africa/Windhoek +01:00 Arctic/Longyearbyen +01:00 Atlantic/Jan_Mayen +01:00 CET +01:00 Etc/GMT-1 +01:00 Europe/Amsterdam +01:00 Europe/Andorra +01:00 Europe/Belgrade +01:00 Europe/Berlin +01:00 Europe/Bratislava +01:00 Europe/Brussels +01:00 Europe/Budapest +01:00 Europe/Busingen +01:00 Europe/Copenhagen +01:00 Europe/Gibraltar +01:00 Europe/Ljubljana +01:00 Europe/Luxembourg +01:00 Europe/Madrid +01:00 Europe/Malta +01:00 Europe/Monaco +01:00 Europe/Oslo +01:00 Europe/Paris +01:00 Europe/Podgorica +01:00 Europe/Prague +01:00 Europe/Rome +01:00 Europe/San_Marino +01:00 Europe/Sarajevo +01:00 Europe/Skopje +01:00 Europe/Stockholm +01:00 Europe/Tirane +01:00 Europe/Vaduz +01:00 Europe/Vatican +01:00 Europe/Vienna +01:00 Europe/Warsaw +01:00 Europe/Zagreb +01:00 Europe/Zurich +01:00 MET +01:00 Poland +02:00 Africa/Blantyre +02:00 Africa/Bujumbura +02:00 Africa/Cairo +02:00 Africa/Gaborone +02:00 Africa/Harare +02:00 Africa/Johannesburg +02:00 Africa/Juba +02:00 Africa/Khartoum +02:00 Africa/Kigali +02:00 Africa/Lubumbashi +02:00 Africa/Lusaka +02:00 Africa/Maputo +02:00 Africa/Maseru +02:00 Africa/Mbabane +02:00 Africa/Tripoli +02:00 Asia/Beirut +02:00 Asia/Famagusta +02:00 Asia/Gaza +02:00 Asia/Hebron +02:00 Asia/Jerusalem +02:00 Asia/Nicosia +02:00 Asia/Tel_Aviv +02:00 EET +02:00 Egypt +02:00 Etc/GMT-2 +02:00 Europe/Athens +02:00 Europe/Bucharest +02:00 Europe/Chisinau +02:00 Europe/Helsinki +02:00 Europe/Kaliningrad +02:00 Europe/Kiev +02:00 Europe/Kyiv +02:00 Europe/Mariehamn +02:00 Europe/Nicosia +02:00 Europe/Riga +02:00 Europe/Sofia +02:00 Europe/Tallinn +02:00 Europe/Tiraspol +02:00 Europe/Uzhgorod +02:00 Europe/Vilnius +02:00 Europe/Zaporozhye +02:00 Israel +02:00 Libya +03:00 Africa/Addis_Ababa +03:00 Africa/Asmara +03:00 Africa/Asmera +03:00 Africa/Dar_es_Salaam +03:00 Africa/Djibouti +03:00 Africa/Kampala +03:00 Africa/Mogadishu +03:00 Africa/Nairobi +03:00 Antarctica/Syowa +03:00 Asia/Aden +03:00 Asia/Amman +03:00 Asia/Baghdad +03:00 Asia/Bahrain +03:00 Asia/Damascus +03:00 Asia/Istanbul +03:00 Asia/Kuwait +03:00 Asia/Qatar +03:00 Asia/Riyadh +03:00 Etc/GMT-3 +03:00 Europe/Istanbul +03:00 Europe/Kirov +03:00 Europe/Minsk +03:00 Europe/Moscow +03:00 Europe/Simferopol +03:00 Europe/Volgograd +03:00 Indian/Antananarivo +03:00 Indian/Comoro +03:00 Indian/Mayotte +03:00 Turkey +03:00 W-SU +03:30 Asia/Tehran +03:30 Iran +04:00 Asia/Baku +04:00 Asia/Dubai +04:00 Asia/Muscat +04:00 Asia/Tbilisi +04:00 Asia/Yerevan +04:00 Etc/GMT-4 +04:00 Europe/Astrakhan +04:00 Europe/Samara +04:00 Europe/Saratov +04:00 Europe/Ulyanovsk +04:00 Indian/Mahe +04:00 Indian/Mauritius +04:00 Indian/Reunion +04:30 Asia/Kabul +05:00 Antarctica/Mawson +05:00 Asia/Aqtau +05:00 Asia/Aqtobe +05:00 Asia/Ashgabat +05:00 Asia/Ashkhabad +05:00 Asia/Atyrau +05:00 Asia/Dushanbe +05:00 Asia/Karachi +05:00 Asia/Oral +05:00 Asia/Qyzylorda +05:00 Asia/Samarkand +05:00 Asia/Tashkent +05:00 Asia/Yekaterinburg +05:00 Etc/GMT-5 +05:00 Indian/Kerguelen +05:00 Indian/Maldives +05:30 Asia/Calcutta +05:30 Asia/Colombo +05:30 Asia/Kolkata +05:45 Asia/Kathmandu +05:45 Asia/Katmandu +06:00 Antarctica/Vostok +06:00 Asia/Almaty +06:00 Asia/Bishkek +06:00 Asia/Dacca +06:00 Asia/Dhaka +06:00 Asia/Kashgar +06:00 Asia/Omsk +06:00 Asia/Qostanay +06:00 Asia/Thimbu +06:00 Asia/Thimphu +06:00 Asia/Urumqi +06:00 Etc/GMT-6 +06:00 Indian/Chagos +06:30 Asia/Rangoon +06:30 Asia/Yangon +06:30 Indian/Cocos +07:00 Antarctica/Davis +07:00 Asia/Bangkok +07:00 Asia/Barnaul +07:00 Asia/Ho_Chi_Minh +07:00 Asia/Hovd +07:00 Asia/Jakarta +07:00 Asia/Krasnoyarsk +07:00 Asia/Novokuznetsk +07:00 Asia/Novosibirsk +07:00 Asia/Phnom_Penh +07:00 Asia/Pontianak +07:00 Asia/Saigon +07:00 Asia/Tomsk +07:00 Asia/Vientiane +07:00 Etc/GMT-7 +07:00 Indian/Christmas +08:00 Asia/Brunei +08:00 Asia/Choibalsan +08:00 Asia/Chongqing +08:00 Asia/Chungking +08:00 Asia/Harbin +08:00 Asia/Hong_Kong +08:00 Asia/Irkutsk +08:00 Asia/Kuala_Lumpur +08:00 Asia/Kuching +08:00 Asia/Macao +08:00 Asia/Macau +08:00 Asia/Makassar +08:00 Asia/Manila +08:00 Asia/Shanghai +08:00 Asia/Singapore +08:00 Asia/Taipei +08:00 Asia/Ujung_Pandang +08:00 Asia/Ulaanbaatar +08:00 Asia/Ulan_Bator +08:00 Australia/Perth +08:00 Australia/West +08:00 Etc/GMT-8 +08:00 Hongkong +08:00 PRC +08:00 Singapore +08:45 Australia/Eucla +09:00 Asia/Chita +09:00 Asia/Dili +09:00 Asia/Jayapura +09:00 Asia/Khandyga +09:00 Asia/Pyongyang +09:00 Asia/Seoul +09:00 Asia/Tokyo +09:00 Asia/Yakutsk +09:00 Etc/GMT-9 +09:00 Japan +09:00 Pacific/Palau +09:00 ROK +09:30 Australia/Adelaide +09:30 Australia/Broken_Hill +09:30 Australia/Darwin +09:30 Australia/North +09:30 Australia/South +09:30 Australia/Yancowinna +10:00 Antarctica/DumontDUrville +10:00 Antarctica/Macquarie +10:00 Asia/Ust-Nera +10:00 Asia/Vladivostok +10:00 Australia/ACT +10:00 Australia/Brisbane +10:00 Australia/Canberra +10:00 Australia/Currie +10:00 Australia/Hobart +10:00 Australia/Lindeman +10:00 Australia/Melbourne +10:00 Australia/NSW +10:00 Australia/Queensland +10:00 Australia/Sydney +10:00 Australia/Tasmania +10:00 Australia/Victoria +10:00 Etc/GMT-10 +10:00 Pacific/Chuuk +10:00 Pacific/Guam +10:00 Pacific/Port_Moresby +10:00 Pacific/Saipan +10:00 Pacific/Truk +10:00 Pacific/Yap +10:30 Australia/LHI +10:30 Australia/Lord_Howe +11:00 Antarctica/Casey +11:00 Asia/Magadan +11:00 Asia/Sakhalin +11:00 Asia/Srednekolymsk +11:00 Etc/GMT-11 +11:00 Pacific/Bougainville +11:00 Pacific/Efate +11:00 Pacific/Guadalcanal +11:00 Pacific/Kosrae +11:00 Pacific/Norfolk +11:00 Pacific/Noumea +11:00 Pacific/Pohnpei +11:00 Pacific/Ponape +12:00 Antarctica/McMurdo +12:00 Antarctica/South_Pole +12:00 Asia/Anadyr +12:00 Asia/Kamchatka +12:00 Etc/GMT-12 +12:00 Kwajalein +12:00 NZ +12:00 Pacific/Auckland +12:00 Pacific/Fiji +12:00 Pacific/Funafuti +12:00 Pacific/Kwajalein +12:00 Pacific/Majuro +12:00 Pacific/Nauru +12:00 Pacific/Tarawa +12:00 Pacific/Wake +12:00 Pacific/Wallis +12:45 NZ-CHAT +12:45 Pacific/Chatham +13:00 Etc/GMT-13 +13:00 Pacific/Apia +13:00 Pacific/Enderbury +13:00 Pacific/Fakaofo +13:00 Pacific/Kanton +13:00 Pacific/Tongatapu +14:00 Etc/GMT-14 +14:00 Pacific/Kiritimati -01:00 America/Scoresbysund -01:00 Atlantic/Azores -01:00 Atlantic/Cape_Verde -01:00 Etc/GMT+1 -02:00 America/Godthab -02:00 America/Noronha -02:00 America/Nuuk -02:00 Atlantic/South_Georgia -02:00 Brazil/DeNoronha -02:00 Etc/GMT+2 -03:00 America/Araguaina -03:00 America/Argentina/Buenos_Aires -03:00 America/Argentina/Catamarca -03:00 America/Argentina/ComodRivadavia -03:00 America/Argentina/Cordoba -03:00 America/Argentina/Jujuy -03:00 America/Argentina/La_Rioja -03:00 America/Argentina/Mendoza -03:00 America/Argentina/Rio_Gallegos -03:00 America/Argentina/Salta -03:00 America/Argentina/San_Juan -03:00 America/Argentina/San_Luis -03:00 America/Argentina/Tucuman -03:00 America/Argentina/Ushuaia -03:00 America/Bahia -03:00 America/Belem -03:00 America/Buenos_Aires -03:00 America/Catamarca -03:00 America/Cayenne -03:00 America/Cordoba -03:00 America/Fortaleza -03:00 America/Jujuy -03:00 America/Maceio -03:00 America/Mendoza -03:00 America/Miquelon -03:00 America/Montevideo -03:00 America/Paramaribo -03:00 America/Punta_Arenas -03:00 America/Recife -03:00 America/Rosario -03:00 America/Santarem -03:00 America/Sao_Paulo -03:00 Antarctica/Palmer -03:00 Antarctica/Rothera -03:00 Atlantic/Stanley -03:00 Brazil/East -03:00 Etc/GMT+3 -03:30 America/St_Johns -03:30 Canada/Newfoundland -04:00 America/Anguilla -04:00 America/Antigua -04:00 America/Aruba -04:00 America/Asuncion -04:00 America/Barbados -04:00 America/Blanc-Sablon -04:00 America/Boa_Vista -04:00 America/Campo_Grande -04:00 America/Caracas -04:00 America/Cuiaba -04:00 America/Curacao -04:00 America/Dominica -04:00 America/Glace_Bay -04:00 America/Goose_Bay -04:00 America/Grenada -04:00 America/Guadeloupe -04:00 America/Guyana -04:00 America/Halifax -04:00 America/Kralendijk -04:00 America/La_Paz -04:00 America/Lower_Princes -04:00 America/Manaus -04:00 America/Marigot -04:00 America/Martinique -04:00 America/Moncton -04:00 America/Montserrat -04:00 America/Port_of_Spain -04:00 America/Porto_Velho -04:00 America/Puerto_Rico -04:00 America/Santiago -04:00 America/Santo_Domingo -04:00 America/St_Barthelemy -04:00 America/St_Kitts -04:00 America/St_Lucia -04:00 America/St_Thomas -04:00 America/St_Vincent -04:00 America/Thule -04:00 America/Tortola -04:00 America/Virgin -04:00 Atlantic/Bermuda -04:00 Brazil/West -04:00 Canada/Atlantic -04:00 Chile/Continental -04:00 Etc/GMT+4 -04:00 SystemV/AST4 -04:00 SystemV/AST4ADT -05:00 America/Atikokan -05:00 America/Bogota -05:00 America/Cancun -05:00 America/Cayman -05:00 America/Coral_Harbour -05:00 America/Detroit -05:00 America/Eirunepe -05:00 America/Fort_Wayne -05:00 America/Grand_Turk -05:00 America/Guayaquil -05:00 America/Havana -05:00 America/Indiana/Indianapolis -05:00 America/Indiana/Marengo -05:00 America/Indiana/Petersburg -05:00 America/Indiana/Vevay -05:00 America/Indiana/Vincennes -05:00 America/Indiana/Winamac -05:00 America/Indianapolis -05:00 America/Iqaluit -05:00 America/Jamaica -05:00 America/Kentucky/Louisville -05:00 America/Kentucky/Monticello -05:00 America/Lima -05:00 America/Louisville -05:00 America/Montreal -05:00 America/Nassau -05:00 America/New_York -05:00 America/Nipigon -05:00 America/Panama -05:00 America/Pangnirtung -05:00 America/Port-au-Prince -05:00 America/Porto_Acre -05:00 America/Rio_Branco -05:00 America/Thunder_Bay -05:00 America/Toronto -05:00 Brazil/Acre -05:00 Canada/Eastern -05:00 Cuba -05:00 EST5EDT -05:00 Etc/GMT+5 -05:00 Jamaica -05:00 SystemV/EST5 -05:00 SystemV/EST5EDT -05:00 US/East-Indiana -05:00 US/Eastern -05:00 US/Michigan -06:00 America/Bahia_Banderas -06:00 America/Belize -06:00 America/Chicago -06:00 America/Chihuahua -06:00 America/Costa_Rica -06:00 America/El_Salvador -06:00 America/Guatemala -06:00 America/Indiana/Knox -06:00 America/Indiana/Tell_City -06:00 America/Knox_IN -06:00 America/Managua -06:00 America/Matamoros -06:00 America/Menominee -06:00 America/Merida -06:00 America/Mexico_City -06:00 America/Monterrey -06:00 America/North_Dakota/Beulah -06:00 America/North_Dakota/Center -06:00 America/North_Dakota/New_Salem -06:00 America/Ojinaga -06:00 America/Rainy_River -06:00 America/Rankin_Inlet -06:00 America/Regina -06:00 America/Resolute -06:00 America/Swift_Current -06:00 America/Tegucigalpa -06:00 America/Winnipeg -06:00 CST6CDT -06:00 Canada/Central -06:00 Canada/Saskatchewan -06:00 Chile/EasterIsland -06:00 Etc/GMT+6 -06:00 Mexico/General -06:00 Pacific/Easter -06:00 Pacific/Galapagos -06:00 SystemV/CST6 -06:00 SystemV/CST6CDT -06:00 US/Central -06:00 US/Indiana-Starke -07:00 America/Boise -07:00 America/Cambridge_Bay -07:00 America/Ciudad_Juarez -07:00 America/Creston -07:00 America/Dawson -07:00 America/Dawson_Creek -07:00 America/Denver -07:00 America/Edmonton -07:00 America/Fort_Nelson -07:00 America/Hermosillo -07:00 America/Inuvik -07:00 America/Mazatlan -07:00 America/Phoenix -07:00 America/Shiprock -07:00 America/Whitehorse -07:00 America/Yellowknife -07:00 Canada/Mountain -07:00 Canada/Yukon -07:00 Etc/GMT+7 -07:00 MST7MDT -07:00 Mexico/BajaSur -07:00 Navajo -07:00 SystemV/MST7 -07:00 SystemV/MST7MDT -07:00 US/Arizona -07:00 US/Mountain -08:00 America/Ensenada -08:00 America/Los_Angeles -08:00 America/Santa_Isabel -08:00 America/Tijuana -08:00 America/Vancouver -08:00 Canada/Pacific -08:00 Etc/GMT+8 -08:00 Mexico/BajaNorte -08:00 PST8PDT -08:00 Pacific/Pitcairn -08:00 SystemV/PST8 -08:00 SystemV/PST8PDT -08:00 US/Pacific -09:00 America/Anchorage -09:00 America/Juneau -09:00 America/Metlakatla -09:00 America/Nome -09:00 America/Sitka -09:00 America/Yakutat -09:00 Etc/GMT+9 -09:00 Pacific/Gambier -09:00 SystemV/YST9 -09:00 SystemV/YST9YDT -09:00 US/Alaska -09:30 Pacific/Marquesas -10:00 America/Adak -10:00 America/Atka -10:00 Etc/GMT+10 -10:00 Pacific/Honolulu -10:00 Pacific/Johnston -10:00 Pacific/Rarotonga -10:00 Pacific/Tahiti -10:00 SystemV/HST10 -10:00 US/Aleutian -10:00 US/Hawaii -11:00 Etc/GMT+11 -11:00 Pacific/Midway -11:00 Pacific/Niue -11:00 Pacific/Pago_Pago -11:00 Pacific/Samoa -11:00 US/Samoa -12:00 Etc/GMT+12 ±00:00 Africa/Abidjan ±00:00 Africa/Accra ±00:00 Africa/Bamako ±00:00 Africa/Banjul ±00:00 Africa/Bissau ±00:00 Africa/Casablanca ±00:00 Africa/Conakry ±00:00 Africa/Dakar ±00:00 Africa/El_Aaiun ±00:00 Africa/Freetown ±00:00 Africa/Lome ±00:00 Africa/Monrovia ±00:00 Africa/Nouakchott ±00:00 Africa/Ouagadougou ±00:00 Africa/Sao_Tome ±00:00 Africa/Timbuktu ±00:00 America/Danmarkshavn ±00:00 Antarctica/Troll ±00:00 Atlantic/Canary ±00:00 Atlantic/Faeroe ±00:00 Atlantic/Faroe ±00:00 Atlantic/Madeira ±00:00 Atlantic/Reykjavik ±00:00 Atlantic/St_Helena ±00:00 Eire ±00:00 Etc/GMT ±00:00 Etc/GMT+0 ±00:00 Etc/GMT-0 ±00:00 Etc/GMT0 ±00:00 Etc/Greenwich ±00:00 Etc/UCT ±00:00 Etc/UTC ±00:00 Etc/Universal ±00:00 Etc/Zulu ±00:00 Europe/Belfast ±00:00 Europe/Dublin ±00:00 Europe/Guernsey ±00:00 Europe/Isle_of_Man ±00:00 Europe/Jersey ±00:00 Europe/Lisbon ±00:00 Europe/London ±00:00 GB ±00:00 GB-Eire ±00:00 GMT ±00:00 GMT0 ±00:00 Greenwich ±00:00 Iceland ±00:00 Portugal ±00:00 UCT ±00:00 UTC ±00:00 Universal ±00:00 WET ±00:00 Zulu