Прочитал вот тут некую новость и захотелось по дискутировать по этому поводу (фигня все эНто, или подано неправильно)...но потом подумалось что все же это не профессиональный форум и сотрясение воздуха будет просто наверно потерей времени. Да и что бы вас, впредь не смущали такие новости и было чем дать по носу автору, так как только в фильмах пароли ломаются за полсекунды...вообще о взломах в кино это отдельная и потрясающая тема для юмора....Но мы все же будем здесь говорить про такие протоколы как NMLT и Kerberos, с чем хочу поделится с вами.
Итак, вообще-то что бы говорить об этих протоколах, в особенности о Kerberos-е который для многих сетевых админах некое "темное дело", да и вообще что бы то что я пишу было понято полностью, пройдется начать чуть из далека и вообще поговорить о общих понятиях и терминах которые применяются в безопасности, так как "ноги", этих протоколов растут оттуда.
Давайте начнем с терминами которые нам понадобятся. И начнем с аутентификации, на умных сайтах приводится такое умное определение
Аутентификация - проверка принадлежности субъекту доступа предъявленного им идентификатора; подтверждение подлинности.
Мудрено как -то сказано. Но по сути, в компьютерных системах, это всего лишь то что то что в определение называют "субъектом" мы называем пользователем или юзверем от слова uzer (шутка). А это страшно непонятное слово как "идентификатор" как бы делится на два действия это ввод логина или еще проще - имени пользователя и пароля.
То есть, после того как пользователь включил комп, и в зависимости от того где находится этот копм, но будем считать что не дома, а на работе, (так как многие дома входят в комп без аутентификации) при входе каждый пользователь проходит процедуру аутентификации. И он вынужден сообщить компу свой логин и подтвердить его паролем.
То есть если еще проще то аутентификация сводится к двум вопросам - Ты кто? и второй - Докажи! на первый сообщается логин или имя пользователя который админ прописал в системе, или на сервере, а на второй вводится пароль. Все.
Только не путать пожалуйста такие почти похожие слова как аутентификация с авторизацией. - Авторизация -если то же по простому (не умничая), это то какие права даны данному пользователю в данной среде.
То есть то что ему разрешено делать в данной среде. Под средой надо понимать операционную систему, или домен, или базу данных и т.д. Права прописываются админом в зависимости от необходимой политики безопасности диктуемой требованиями фирмы и здравого смысла.
Так же здесь уместно упомянут еще пару терминов которые нам понадобятся в дальнейшем. - Целостность - так же не умничая, это то что данные должны быть целыми. Ясно! Конечно ясно, это из серии - масло масленое, вода водянистая и т.д. А по сути что бы понять это допустим под данными мы будем понимать какой то документ в ворде. И вот решили вы его послать кому-то, а по дороге кто то (вражины) что то из него убрали или добавили или изменили. Ну прям как в старой истории про запятую в фразе - Казнить, нельзя помиловать или Казнить нельзя, помиловать. То есть если злоумышленник или кто другой поменяли местами даже запятую данные теряют целостность.
- Конфиденциальность - под этим надо понимать что данные будут переданы только тем получателем которым они адресованы и никому больше.
Ну и на последок напомню еще такой термин в IT безопасности как - Предотвращения повторного использования (anty - replay).
Более специфичный термин который гарантирует уникальность каждого IP-пакета и невозможность его повторного использования. Злоумышленник, даже если он сумеет перехватить IP-пакеты, не сможет повторно использовать их для установления сеанса связи или неавторизованного доступа к информации.
Но кажись о терминах все...но нам еще понадобится вкратце поговорит о криптографии и понять что такое "шифрование" а именно нас интересует
Шифрование с открытым колючем
Так как я уже упомяну слово криптография, то напомню что это очень древная по сути наука о защите информации, в нашем случае данных. Само слово "криптография" греческого происхождения означающая "скрытое письмо". Сама наука криптография оперирует такими терминами как "шифр" и "код".
Шифр - представляет собой посимвольное или если сказать о нем в нашем контексте то - побитовое преобразование и не зависит от лингвистического построения или смысла самого сообщения.
Код - как бы противоположность шифру так как он зависит от лингвистического смысла так как он заменяет целое слово другим словом. Коды в наше время почти не используются, но им нужно отдать должное, так как у них славная история.
Вопрос - Штирлиц получал кодированные или зашифрованные сообщения от Алекса? (шутка.... но задумайтесь и даже можете ответить в комментариях)...Или то же код "да Винчи" если судить по небезизвесному бестселлеру то видно явное зависимость кода от логического построения послания....
Вообще история криптографии пестрит, скажем так, куриозными случаями. К примеру самым лучшим кодом считается код который применяли американцы во время второй Мировой войны. А идея была проста до ужаса...но как известно - все гениальное просто! Так вот для ведения различных переговоров допустим по радио использовались индейцы навахо, которые общались между собой на своем языке. Например, слово "чай-дагахи-найл-цайди", переводимое с навахского языка как "убийца черепах", означал противотанковые орудия. Даже есть американский фильм, "Говорящие с ветром", помню что меня впечатлил в свое время, где играет Николас Кейдж. Он там охраняет специально такого радиста навахо. Так вот этих носителей языка (радистов - связистов) в случае окружения или в других крайних опасных случаев убивали свои же, что бы они не попали к врагу как носители языка и кода. Японцы так и не смогли "взломать" это код, да и как они сами признались после войны, им и в голову это не пришло...ну про язык навахо.
.....Но простите я отвлекся.
Но тем не мение, современная криптография сложная наука (кАроче мраки) оперирующая сложным математическим аппаратом и разработавшая к сегодняшнему дню кучу различных алгоритмов шифрования. Я даже не хочу о них вспоминать, и не буду если они (ну эти алгоритмы шифрования) не понадобятся явно.
Только вот без этой криптографии на сегодняшний день невозможно передать конфиденциальные данные а так же получить их именно той стороной которому они адресованы.
Как показывает повседневная жизнь что применяя надежный алгоритм шифрования делает практически невозможным взлом данных.
Это только в кино на простом ноте ломают шифры аШ из компа искры идут...в жизни такого почти не бывает... ну появляется какой - то профессионал который взломал какой - то алгоритм шифрования....так что вы думайте...он начнет раздавать этот алгоритм взлома все кому не лень....успокойтесь...он если профессионал (то есть хакер, хакер не в плане взлома, а этим термином нужно называть профессионалов), то никому об этом не скажет, а если скажет то только тем кому надо, и постарается извлечь максимальную выгоду от этого, продавая его или используя в своих целях, при этом оставаясь анонимом. Это уже когда вся польза извлечена, да можно ради научного куриоза сообщить миру об этом, ну что бы прославится(профессионалы т.е. хакеры очень самолюбивы).... А так лучше молчек, и искать что делать с алгоритмом взлома....
Потому что бы сломать даже простой алгоритм шифрования который используют вычислительные системы в настоящие время, нужны большие вычислительные мощности (это тебе не ноутбук или пара даже самых крутых серверов) и главное время и труд...и еще раз труд и труд....и время.
Так вот мы говорили что шифруем данные. И все? А на кой нам эти шифровальные просто данные, или пусть себе лежат ниХай...ну это было бы просто бессмысленно если мы бы не могли снова их расшифровывать.
Так вот в вычислительных системах, да и не только, что бы зашифровываться данные необходим зашифровывающий ключ. А для расшифровки ключ расшифровки.
В традиционалистом шифровании или еще названой "шифрование с секретным ключом" зашифровывающий ключ и расшифровывающий ключ совпадают. Этот вид шифрования еще называется "симметричным"... ну когда применяется один и тот же ключ для шифровки и расшифровки.
То есть, в данном случае при симметричном шифровании стороны обменявшиеся зашифрованными данными должны владеть этим ключом, который шифрует и дешифрует сообщения или лучше сказать данные. Они должны как то обменяется этим ключом. Вот как раз в IT безопасности обмен этим ключом, и есть слабая сторона данного метода. Злоумышленник может перехватить этот ключ и тогда все это шифрование обессмыслено.
Но не спешите. Есть еще одни вид шифрования а именно "шифрование с открытым ключом" или "асимметричное шифрование". В чем ее суть?
А суть шифрования с открытым ключом (асимметричное шифрование) в том что зашифровывающий и расшифровывающий ключ не совпадают. То есть мы шифруем информацию одним ключом... однако этим же ключом мы не можем ее расшифровать в исходном виде. Для этого нам нужен другой ключ. Для этого нужен расшифровывающий ключ.
Естественно что расшифровывающий ключ связан тем или иным образом с шифрующем ключом, но они не совпадают, то есть они разные.
Данный метод шифрования предполагает,... нет лучше сказать требует что бы каждый пользователь имел пару ключей - открытый ключ (public key) и личный или закрытый ключ (private key).
Как на практике работает шифрование с открытым ключом
По сути очень все просто...а вот что бы объяснить надо много слов. Как принято в литературе когда дело касается IT безопасности, там всегда в объяснении чего либо присутствуют дав персонажа такие как Алиса и Боб. Мы преминем их практику но учитывая наши реалии у нас будет Марфа и Вася.
Допустим Марфа хочет передать Васи "секретнейшее" послание где они должны встретится завтра...ну что бы это.... Но вот только у Марфы муж не только ревнивец но еще и профессионал, то есть хакер и захватывает всю информацию которая приходит на комп Марфы. Поэтому Марфа и Вася решили запутать мужа....да и вообще - береженого бог бережет и, они решили обменяется не простыми сообщениями а "зашифрованными". Так как оба знают о шифрование с открытым ключом, решили воспользоватся этим методом.
Для этого Марфуша, объявляет свой открытый ключ шифрования (public key) в своем блоге.... На вопрос мужа зачем тебе это надо - ответ: пусть будет- а чЁ. Назовем этот открытый ключ Марфы (Шм).
То же самое в своем блоге или веб страничке Вася ставит свой открытый ключ шифрования. Назовем ключ Васи (Шв). Еще раз для "танкистов" - это открытые ключи шифрования Марфы и Васи.
Теперь допустим Марфа берет свое сообщение предназначенное для Васи, назовем ее так замысловато ПОС (от послание) и скачав с блога Васи или веб странички ключ Васин, ну этот (Шв) шифрует это сообщение (ПОС) Васиным открытым ключом (Шв). То есть получается что то наподобие этого (Шв)--->(ПОС), то есть свое послание Марфуша шифрует открытым Васиным ключом которая она взяла с Васиного сайта.
Теперь Вася получив данное зашифрованное сообщение БЕРЕТ ИЗ ГЛУБОКИХ ШТАНИН свой закрытый ключ, назовем его (Рв) и с его помощи расшифровывает Марфино послание, получая первоначальное сообщение. Получается что то наподобие этого (Рв)---->((Шв)--->(ПОС))=ПОС.
Вася шифрует и передает сообщения Марфе аналогично.
Резюмируя скажем так, что в шифровании с открытым ключом (асимметричное), генерируются 2 ключа - один открытый, второй закрытый. Открытый можно повесить где угодно что бы им воспользовались все кому он нужен.
Второй глубоко прячем.
Первый ключ нужен тем кто собираются нам послать сообщения, так как они шифруют сообщение адресованное именно нам этим ключом. Получив сообщение мы его расшифровываем вторым (закрытым ключом). .....................Фууу....кажись пока все про шифрование с открытым ключом..........
Конечно что каждый вид шифрования имеет как свои преимущества так и свои недостатки. Один из явных недостатков шифрования с открытым ключом, это то что для генерации пары "закрытый ключ/открытый ключ" требуется время, то есть он более медальный чем другие виды шифрования (которых мы пока рассматривать не будем).
Но почему я так остановился подробно на этом методе. А потому что данный метод шифрования с его парой ключей "закрытый/открытый", привело к появлению новых технологий в IT безопасности. Наиболее употребляемые на сегодняшний день это - цифровая подпись, распределенная аутентификация, соглашение о секретном (закрытом) ключе, достигаемое с помощью открытого ключа, и шифрование больших объемов данных без предварительного соглашения о секретном ключе.
Давайте просмотрим вкратце некоторые из этих понятий что написаны выше.
Цифровые подписи
Все мы знаем, что без подписи любая бумага, в деловой жизни превращается в мусор... даже если тычешь в нос чиновнику подлинной фотографией документа, он ее не принимает. В любом офисе крутятся тоны бумаги, названые документами, так как любая подписанная бумажка в офисе именно после того как подписывается ручкой, приобретает статус документа. То есть подлинность любого бумажного документа определяется наличием рукописной чернильной подписи. Вы представляете что было бы если бы в большой конторе, тратящая мУУУлионы денежек на приобретение бумаги, ввести электронный документооборот с применением цифровой подписи. Однако это легко написать на сайте, инерция мышления многих руководителей, сотрудников, делает сие дело практически невозможным...... Да и проверяющие органы типа налоговой в лице 300-т летнего инспектора при слове "электронный документооборот", приходят в ступор...им бумажки подавай, а не то что то там на экране тЮливизора...ну это некий случай из моей жизни...
Так вот, что бы вместо бумаги применить систему компьютерных сообщений, которая заменит ФИЗИЧЕСКОЕ бумажное перемещение документов, конторы написанные чернилами, или напечатанные на принтере (что так же стоит прилично для большой конторы), нужно решить проблему подписи....цифровой подписи.
Это довольно сложная задача, так как по сути требуется система, с помощью которой одна сторона могла посылать другой стороне "подписанное" сообщение так чтобы; - получатель мог всегда проверить личность отправителя;
- отправитель не мог потом отрицать содержимое сообщения;
- получатель не мог позднее изменить подписанное сообщение.
Давайте остановимся чуток на этих требованиях. Первое требование особенно важно для финансовых систем. Допустим компьютер клиента заказывает серверу банка покупку 100 тон золота. Так вот, сервер банка получивший этот заказ должен быть уверен, что компьютер, заказавший эту покупку, действительно принадлежит фирме, со счета которой следует снять денежную сумму на приобретение этого заказа. Но и клиент должен быть уверен что посланное сообщение было получено именно сервером банка а не кем иным. Если по простому - то банк должен иметь надежные средства для установления подлинности клиента, а клиент в свою очередь должен иметь средства для установления подлинности банка.
Второе требование необходимо для защиты от подделок и мошенничества. Допустим получивший этот заказ на покупку 100 тон золота покупает это золото, но вот только покупка состоялась цена на золото резко падает. Если банк имеет дело с бесчестным клиентом, то этот "ушлый" клиент сориентировавшийся в создавшейся ситуации подает в суд на банк, под тем предлогом что он якобы покупку этих 100 тон золота - не заказывал. Банк естественно будет показывать "послание" клиента банку в суде, но клиент будет утверждать что такое сообщение не посылал. КАроче скандал будет расти и расти....Что бы такую ситуацию предотвратить, должно быть обеспечено требование - невозможности отречения от данных ранее обязательств. Для предотвращения этого обычно сопоставляются цифровые подписи.
Третье требование нужно в ситуации если допустим цена на золото после его покупки резко взлетела вверх, и банк, так же может оказаться "ушлым", и подделывая сообщение клиента вместо 100 тон золота в сообщение якобы посланное клиентом, указать один слиток, оставшуюся часть золота "прикарманит" себе. Далее, если я посвятил эту статью только цифровым подписям, то уместно было бы "подписи с симметричным колючем", потом "подписи с открытым колючем", но я этого делать в этой статье не буду. А вернусь еще раз к основам цифровых подписей и еще раз посмотрим на требования предъявленные к цифровой подписи но другими словами или лучше под другим углом....Ну это что бы по быстрее покончить с этими цифровыми подписями, а вы поняли их сущность, сами детали вы сможете сами наверно разобрать, зная основы.
Итак наиболее значимое употребление преимущества шифрования с открытым ключом есть технология цифровых или электронных подписей. Данная технология позволяет комбинировать данные с закрытом (секретным) ключом (private key) (посредством математических разных там функций и преобразований (мраки)).
Результат этих всяких комбинаций и преобразований, позволяет нам конечным пользователям получить такие услуги как
Только собственник, владелец, закрытого (секретного) ключа может создать, цифровую подпись. Любой пользователь, который имеет соответствующий открытый ключ, может проверить легко истинность цифровой подписи. Любое изменение подписанных данных (хоть одного бита, или запятой) делает цифровую подпись не истиной.
То есть еще раз повторяюсь что цифровые или электронные подписи обеспечивают целостность и подлинность данных.
В целом шифрование с открытым ключом позволяет создать службу распределенной аутентификации - основная задача которой в данном случае есть то что она подтверждает что данные пришли получателю от истинного отправителя, а не от подложного лица.
Соглашение о закрытом (секретном) ключе достигается с помощью открытого ключа.
Это делается так. Используя шифрование с открытым ключом, в незащищенной сети, обе стороны посылают друг другу половины закрытого ключа, который шифруется в свою очередь открытым ключом. Когда сторона получатель получает эти данные, она имеет возможность расшифровать полученную половину закрытого ключа, и на ее основе, с учетом своей половины ключа, получить весь секретный ключ. При шифровании с открытым ключом очень важно то что бы полученный открытый ключ, принадлежал именно той стороне которая нам его прислала. То есть связка "владелец открытого ключа" и "полученный открытый ключ" должна быть истинной, то есть что бы не было подмены. Поэтому нужен еще механизм говорящий, вернее подтверждающий о том что корреспонденты именно те которые нас интересуют, а не подмена какая либо.
Такие механизмы есть и одни из них, (ну который нас больше интересует, в контексте данной статьи) это применение сертификатов.
Что такое сертификат?
Сертификат - это такой механизм позволяющий точно установить связь между переданным открытым ключом и передавшей его стороной, которая является владельцем этого ключа. То есть это механизм обеспечивает что переданный ключ, точно ключ того кто передал а не подложный ключ другого (злоумышленника - вражины).
Постараюсь еще проще - сертификат подтверждает истинность связки "ключ" -> "владелец ключа". По большому, сертификат можно связать не только с допустим с владельцем, как субъект, до к примеру с неким атрибутом владельца. К примеру сертификат принадлежит точно владельцу который "старше 18 лет". То есть здесь используется атрибут владельца "возраст". Этим способом можно статус владельца сертификата, или убедить окружающих что он может пользоваться некоторыми специфичными данными, на которых налагаются возрастные ограничения (к примеру доступ на порно...гы). При этом имя владельца не раскрывается. Как правило в таком случае сертификат отсылается на сайт, или той службе или процессу который обеспокоен возрастом.
Сертификаты сами по себе, "в чистом виде", ничего не защищают и не хранятся в тайне.
Но не подумайте что сертификат можно так с бухты-барахты себе сделать самому, ну а потом войти в доверие (ну типа я тот за которого я себя выдаю), ну и нашкодить тем или иным способом. Это не совсем так.
Не буду рассказывать как исторически складывалась судьба сертификатов (я сам уже устал от этих закрытых и открытых), ...скажу что на сегодняшний день существуют организации, или организация занимающаяся сертификации открытых ключей и называется она Управлением Сертификации (CA - Certification Autority).
То есть вы как физическое лицо...или юридическое лицо берете паспорт и приходите в СА со своим открытым ключом или ключом фирмы, и просите зарегистрировать данный ключ или ключи. Управление Сертификации после проверки всех ваших документов удостоверяющих вашу личность или фирму, выдает вам сертификат, который подписывает своим (Управление Сертификации) закрытым ключом. Вы получайте этот подписанный сертификат на дискете или флэшке, и можете им пользоваться. В свою очередь Управлением Сертификации гарантирует что ключ принадлежит именно вам.
Кажись со введением в Kerberos хватит. если что забыл, в продолжение добавлю по ходу.
Продолжение следует.....
|