Так и Skype можно пустить через Tor. Только тамошние скорости убьют видео/аудиозвонки. Обычное следствие компромисса анонимности против быстродействия. Просто не очень честно писать «скайп должен умереть за то, что раскрывает IP», когда этим занимается в том числе Tox.
С DNSSec ужасная идея. Почему криптоофицерам и Verisign должен довериться весь мир? Это очевидный провал с точки зрения безопасности. Спецслужбы не будут терзать криптосхемы, пока можно вежливо попросить Verisign сгенерировать внеплановый ZSK, который затем можно использовать в направленных mitm-атаках. Если до сих пор нельзя вежливо попросить — издать за пару дней поправку к закону (хотя с расплывчатыми формулировками законов уже давно всё можно и в США, и в России).
В остальном, описанная схема напоминает toxme.io, который при желании можно развернуть и на своём сервере. Отдельные клиенты, типа Antox даже по умолчанию в нём регистрируются. Только вот по мере роста популярности такие сервисы будут становиться всё более подверженными всем видам атак, свойственным централизованным сетям.
Если трактовать задачу как «записать числа от 0 до 200, используя в формулах только цифры 2, 0, 1, 6 в этом порядке и знаки препинания, в том числе с повторением», то можно выйти на любое целое число через «~-» и «-~». -~2016 = 2017, ~-2016 = 2015, ~-~-2016 = 2014 и т. д.
Как видно, ближе к 100 начинаются проблемы, решаемые использованием других функций. Лично мне этот список функций неочевиден. Выше, например, используют sqrt. <sarcasm>Давайте зададим функцию, возвращающую порядковый номер перестановки чисел 2 0 1 6 с несколькими операторами</sarcasm>.
При проверке исключены варианты с большими степенями (дабы избежать out of memory при вычислении 20**(16!)), python-скрипт выложен на gist.
Когда пользователи скачивают *.torrent-файл с хэшами десятков альбомов, копий тоже нигде не остаётся. «Ущерб» будет посчитан для количества скачавших *.torrent-файл × общее количество файлов в раздаче. Пользователь может скачать для fair-use. Может скачать как обладатель лицензионной копии. Может скачать в /dev/null. Может скачать по ошибке. Может вообще не скачивать файлы с раздачи: он скачал *.torrent-файл, этого уже достаточно для предъявления миллиардных исков автору раздачи. В этом и есть абсурд.
На каждый болт инструмент найдётся более совершенный инструмент, о котором многим ещё предстоит узнать. Понятие «аргументированной критики» субъективно. Чем больше автор статьи напишет «аргументированных» пунктов, тем выше вероятность того, что он покажет провал в знаниях, тогда-то холивар и начнётся. Но всё же даже неудачная попытка сравнить две технологии несёт в себе какую-то новизну (хотя бы в комментариях), а вот вашу статью можно было опубликовать 20 лет назад и никто бы не заметил разницы.
Во-первых, группа сайтов ТМ это профессиональная социальная сеть по определению (включает «лайки», подписки, избранное; используется для общения на профессиональные темы, обмена опытом и информацией, поиска и предложения вакансий и т. д.).
Во-вторых, на хабре есть замечательная страничка habrahabr.ru/ppa, через которую по открытому каналу передаются паспортные данные (включая фото), СНИЛС, ИНН, WebMoney с размером выводимых средств. Да, лично вас, как читателя, это не касается, но касается меня и многих других авторов.
В-третьих, любой крупный ресурс эксплуатирует доверие пользователей. Например, вы читаете через приложение на андроиде пост вашего любимого разработчика, в котором он даёт ссылку на apk разработанного приложения. В это время взломанный роутер или MITM заменяет все ссылки на вредоносную apk-обёртку. Как скоро вы вспомните, что все клиенты хабра на андроиде работают через HTTP с учётом того, что ни одно приложение не показывает протокол?
Резюмируя вышесказанное, я не вижу ни одного сценария применения протокола HTTP в интернете.
Запатентовали вместо того, чтобы сделать открытым стандартом? Так держать! Теперь для того, чтобы пройти перед Эппломобилем нужно будет провести рукой по горизонтали, перед самсунгомобилем — в любую сторону, перед теслой встать на четвереньки, а перед ламборджини широко раскрыть рот.
Это понятно. Я про то, что для машин за CloudFlare не допускается утечка IP-адреса. По этому скриншоту из статьи можно предположить, что где-то в интернете в открытом доступе есть пары IP-domain, некоторые из которых раскрывают реальные IP-адреса машин за экранами.
Проксировать трафик ВК в открытых сетях немного странное решение. Конкретно в этом случае гораздо проще перенаправить на https://vk.com. Встроенный аналог HTTPS Everywhere хотя бы на десяток самых популярных сайтов в разы бы повысил безопасность пользователей.
Из этого списка: army.net (внезапно), asia.com, ausi.com, ayna.com. Но smtp-пинги на имя snowden не проходят. Да и какой из этих сервисов даст 47 Гб? Так что свой сервер, наверно.
К слову, Tox как протокол также позволяет узнать IP-адрес, только гораздо проще.
В остальном, описанная схема напоминает toxme.io, который при желании можно развернуть и на своём сервере. Отдельные клиенты, типа Antox даже по умолчанию в нём регистрируются. Только вот по мере роста популярности такие сервисы будут становиться всё более подверженными всем видам атак, свойственным централизованным сетям.
1: dfct(2 + (-16))
2: (2 * (pwr(1, 6)))
3: (-(2 + 1) + 6)
4: (20 + (-16))
5: -(2 + -(1 + 6))
6: ((2 + (-1)) * 6)
7: (2 + ((-1) + 6))
8: (2 + (1 * 6))
9: (2 + (1 + 6))
10: (2 * ((-1) + 6))
11: (2 + sfct(-(fct(0) + 1) + 6))
12: (2 * (1 * 6))
13: (20 + -(1 + 6))
14: ((-2) + 16)
15: -(-(20 + 1) + 6)
16: (sfct(2) * 16)
17: (sfct(2) + 16)
18: (2 + 16)
19: (20 + -(pwr(1, 6)))
20: (20 * (pwr(1, 6)))
21: (20 + (pwr(1, 6)))
22: ((-2) + fct(-(fct(0) + 1) + 6))
24: fct(20 + (-16))
25: (20 + ((-1) + 6))
26: (20 + (1 * 6))
27: (20 + (1 + 6))
28: (-(20 * 1) + dfct(6))
29: -(20 + -(1 + dfct(6)))
30: (2 * dfct((-1) + 6))
32: (2 * 16)
35: (20 + dfct((-1) + 6))
36: (20 + 16)
38: (sfct(fct(2 + fct(0)) + (-1)) + (-6))
41: (-(2 + fct(0)) + sfct((-1) + 6))
42: ((-2) + sfct((-1) + 6))
43: (-(pwr(2, 0)) + sfct((-1) + 6))
44: sfct((-2) + (1 + 6))
45: (-(2 + 1) + dfct(6))
46: (-(2 * 1) + dfct(6))
47: -(2 + -(1 + dfct(6)))
48: dfct((2 + (-1)) * 6)
49: (2 + ((-1) + dfct(6)))
50: (2 + dfct(1 * 6))
51: (2 + (1 + dfct(6)))
52: (2 + (fct(0) + (1 + dfct(6))))
53: (fct(2 + fct(0)) + ((-1) + dfct(6)))
54: (fct(2 + 1) + dfct(6))
55: (fct(2 + fct(0)) + (1 + dfct(6)))
56: (dfct(2 + (fct(0) + 1)) + dfct(6))
57: (sfct(2 + (fct(0) + 1)) + dfct(6))
62: -(2 + -(pwr((fct(0) + 1), 6)))
63: -(sfct(2) + -(pwr((fct(0) + 1), 6)))
64: (pwr((2 * 1), 6))
65: (sfct(2) + (pwr((fct(0) + 1), 6)))
66: (2 + (pwr((fct(0) + 1), 6)))
67: (20 + ((-1) + dfct(6)))
68: (20 + dfct(1 * 6))
69: (20 + (1 + dfct(6)))
72: (fct(2 + (fct(0) + 1)) + dfct(6))
85: ((-20) + dfct(1 + 6))
88: (2 * sfct((-1) + 6))
90: (2 * (fct(0) + sfct((-1) + 6)))
92: (2 * (-(fct(0) + 1) + dfct(6)))
94: (2 * ((-1) + dfct(6)))
95: -(sfct(2) + -((fct(0) + 1) * dfct(6)))
96: (2 * dfct(1 * 6))
97: (sfct(2) + ((fct(0) + 1) * dfct(6)))
98: (2 * (1 + dfct(6)))
99: (dfct(fct(2 + fct(0)) + 1) + (-6))
100: (20 * ((-1) + 6))
1: (2 + -(pwr(1, 6)))
2: (2 * (pwr(1, 6)))
3: (-(2 + 1) + 6)
4: (20 + (-16))
5: -(2 + -(1 + 6))
6: ((2 + (-1)) * 6)
7: (2 + ((-1) + 6))
8: (2 + (1 * 6))
9: (2 + (1 + 6))
10: (2 * ((-1) + 6))
12: (2 * (1 * 6))
13: (20 + -(1 + 6))
14: ((-2) + 16)
15: -(-(20 + 1) + 6)
16: (2 * (fct(0) + (1 + 6)))
18: (2 + 16)
19: (20 + -(pwr(1, 6)))
20: (20 * (pwr(1, 6)))
21: (20 + (pwr(1, 6)))
24: ((2 + (fct(0) + 1)) * 6)
25: (20 + ((-1) + 6))
26: (20 + (1 * 6))
27: (20 + (1 + 6))
32: (2 * 16)
36: (20 + 16)
62: -(2 + -(pwr((fct(0) + 1), 6)))
64: (pwr((2 * 1), 6))
66: (2 + (pwr((fct(0) + 1), 6)))
100: (20 * ((-1) + 6))
Расширим операции до логических |^&~ и целочисленного деления (//). Получаем ответы для [0 — 81], [83 — 86], 89, 90, 95, 96, 99, 100.
1: (20 // 16)
2: (2 % 16)
3: (201 % 6)
4: (20 % 16)
5: ((2 + 1) ^ 6)
6: fct(201 % 6)
7: ((2 + 1) | 6)
8: (2 + (1 * 6))
9: (2 + (1 + 6))
10: (2 * ((-1) + 6))
11: ((~20) % 16)
12: ((-20) % 16)
13: ((~2) + 16)
14: ((-2) + 16)
15: -(2 + (~16))
16: (20 & 16)
17: -(2 | (~16))
18: (2 + 16)
19: -(2 ^ (~16))
20: (20 | 16)
21: (20 + (1 % 6))
22: ((20 * 1) | 6)
23: ((20 + 1) | 6)
24: fct(20 % 16)
25: (20 + ((-1) + 6))
26: (20 + (1 * 6))
27: ~(20 ^ (-16))
28: -(20 ^ (-16))
29: -(201 // (~6))
30: (20 | ((~1) * (~6)))
31: ~(2 * (-16))
32: (2 * 16)
33: (201 // 6)
34: -(2 * (~16))
35: ~((-20) + (-16))
36: (20 + 16)
37: -((-20) + (~16))
38: -((~20) + (~16))
39: ~(20 * ~(1 % 6))
40: -(20 * ~(1 % 6))
41: ~(fct(2 + 1) * (~6))
42: ((~20) * ~(1 % 6))
43: ~(20 + -(pwr((~1), 6)))
44: (20 + fct((~1) + 6))
45: (~(20 * (~1)) + 6)
46: (-(20 * (~1)) + 6)
47: ~((~2) * 16)
48: -((~2) * 16)
49: (~((~2) * (~1)) * (~6))
50: -(~((~20) * (~1)) + (~6))
51: ((~2) * (~16))
52: -(2 * ~(fct(0) + fct((~1) + 6)))
53: ~(~(20 // (~1)) * (-6))
54: (~(20 // (~1)) * 6)
55: ~(~(2 + fct(0)) * ((~1) * (~6)))
56: (~(fct(2 + fct(0)) + 1) * (~6))
57: ((~2) * ~(-((~0) + (~1)) * 6))
58: ~(fct(2 + fct(0)) + ~(pwr((~1), 6)))
59: ~((20 // (~1)) * 6)
60: -((20 // (~1)) * 6)
61: ~(2 + -(pwr((~1), 6)))
62: ~(2 + ~(pwr((~1), 6)))
63: -(2 + ~(pwr((~1), 6)))
64: (pwr((2 * 1), 6))
65: -(2 | ~(pwr((~1), 6)))
66: (2 + (pwr((~1), 6)))
67: -(2 ^ ~(pwr((~1), 6)))
68: -((~2) + ~(pwr((~1), 6)))
69: ~(-(20 // (~1)) * (~6))
70: ((20 // (~1)) * (~6))
71: ~((~2) * fct((~1) + 6))
72: -((~2) * fct((~1) + 6))
74: ~((~2) * -((~0) ^ fct((~1) + 6)))
75: ((~2) * ~(0 + fct((~1) + 6)))
76: ~(~(fct(2 + fct(0)) * (~1)) * (~6))
77: (~((-20) // (~1)) * (~6))
78: ((~2) * ~(fct(0) + fct((~1) + 6)))
79: ~(20 * -((~1) + 6))
80: (20 * ((~1) + 6))
81: (pwr((~2), ((~1) + 6)))
83: ~((~20) * ((~1) + 6))
84: (20 + (pwr((~1), 6)))
85: -(20 ^ ~(pwr((~1), 6)))
86: -((~20) + ~(pwr((~1), 6)))
89: ~(fct(2 + fct(0)) * ~((~1) * (~6)))
90: -(fct(2 + fct(0)) * ~((~1) * (~6)))
95: ~(~(2 + fct(0)) * fct((~1) + 6))
96: -(~(2 + fct(0)) * fct((~1) + 6))
99: ~(20 * (1 + (-6)))
100: (20 * ((-1) + 6))
Как видно, ближе к 100 начинаются проблемы, решаемые использованием других функций. Лично мне этот список функций неочевиден. Выше, например, используют sqrt. <sarcasm>Давайте зададим функцию, возвращающую порядковый номер перестановки чисел 2 0 1 6 с несколькими операторами</sarcasm>.
При проверке исключены варианты с большими степенями (дабы избежать out of memory при вычислении 20**(16!)), python-скрипт выложен на gist.
болтинструмент найдётся более совершенный инструмент, о котором многим ещё предстоит узнать. Понятие «аргументированной критики» субъективно. Чем больше автор статьи напишет «аргументированных» пунктов, тем выше вероятность того, что он покажет провал в знаниях, тогда-то холивар и начнётся. Но всё же даже неудачная попытка сравнить две технологии несёт в себе какую-то новизну (хотя бы в комментариях), а вот вашу статью можно было опубликовать 20 лет назад и никто бы не заметил разницы.Во-вторых, на хабре есть замечательная страничка habrahabr.ru/ppa, через которую по открытому каналу передаются паспортные данные (включая фото), СНИЛС, ИНН, WebMoney с размером выводимых средств. Да, лично вас, как читателя, это не касается, но касается меня и многих других авторов.
В-третьих, любой крупный ресурс эксплуатирует доверие пользователей. Например, вы читаете через приложение на андроиде пост вашего любимого разработчика, в котором он даёт ссылку на apk разработанного приложения. В это время взломанный роутер или MITM заменяет все ссылки на вредоносную apk-обёртку. Как скоро вы вспомните, что все клиенты хабра на андроиде работают через HTTP с учётом того, что ни одно приложение не показывает протокол?
Резюмируя вышесказанное, я не вижу ни одного сценария применения протокола HTTP в интернете.
PS: deniskin, верни HTTPS на Geektimes!
… написал artyums на http://geektimes.ru, на котором https когда-то был, да сплыл.
Тут пишут, что WebCrypto API в разы (если не на порядок) быстрее asmCrypto.