Соль, пустынныя тлушчы і інгрэдыенты. У чым розніца?

Калі справа даходзіць да шыфравання дадзеных, каб захаваць паролі і карыстальнікаў у бяспецы, ёсць некалькі розных шляхоў. Усе гэтыя алгарытмы па-рознаму падыходзяць для прадухілення папярэдніх вылічэнняў, такіх як вясёлкавыя табліцы.

Солі, паняцці і інвентарызацыі - гэта аднаразовыя значэнні, якія выкарыстоўваюцца ў крыптаграфіі, якія не абавязкова павінны быць сакрэтнымі, але ўсё яшчэ прыводзяць да дадатковай бяспекі. Звычайна лічыцца, што гэтыя значэнні зламыснікі бачныя, нават калі часам магчыма іх схаваць.

Соль

Звычайна соль выкарыстоўваецца ў сістэмах, заснаваных на паролях, і перад апрацоўкай звязваецца з асабовай часткай пароля. Інакш кажучы, калі б не было солі, зламыснік мог бы стварыць слоўнік агульных пароляў і проста шукаць арыгінальны пароль аўтэнтыятарам.

Выкарыстанне солі азначае, што зламысніку прыйдзецца складаць цалкам асобны слоўнік для кожнай магчымага значэння солі. Калі соль досыць вялікая, яна па сутнасці робіць напады на слоўнікі крыху больш невыканальнымі.

Перац

Перац выконвае супастаўную ролю з соллю, але калі соль не з'яўляецца сакрэтам (проста унікальнай) і можа захоўвацца побач з размяшаным выхадам, перац з'яўляецца сакрэтным і не павінен захоўвацца з выхадам. Звычайна гэта таксама толькі адзін знак, дададзены ў канцы пароля. Звычайна хэш і соль захоўваюцца ў базе дадзеных, але перац павінен захоўвацца асобна (напрыклад, у файле канфігурацыі), каб пазбегнуць атрымання зламыснікам у выпадку парушэння базы дадзеных. Ці проста выкінуць пасля выкарыстання. Звычайна вы хочаце ўнесці і соль, і перац у свой хэш.

Nonce ("нумар, які выкарыстоўваецца адзін раз") - гэта біты дадзеных, якія часта ўводзяцца ў крыптаграфічныя пратаколы і алгарытмы, уключаючы мноства кодаў аўтэнтыфікацыі паведамленняў і некаторыя рэжымы шыфравання. Такія значэнні павінны выкарыстоўвацца толькі аднаразова з дапамогай якога-небудзь пэўнага крыптаграфічнага ключа. На самай справе паўторнае выкарыстанне звычайна не забаронена, але шанцы на паўторнае выкарыстанне павінны быць выключна нізкімі.

Паслядоўнае значэнне мае некалькі пераваг перад выпадковымі паняццямі:

  • Вы можаце лёгка гарантаваць, што думкі не паўтараюцца. Звярніце ўвагу, што калі магчыма прастора няма, гэта на самай справе не выклікае клопатаў.
  • Многія пратаколы ўжо адпраўляюць унікальны паслядоўны нумар для кожнага пакета, так што можна зэканоміць месца ў перададзеных паведамленнях.
  • Паслядоўнае ўпарадкаванне паняццяў можа быць выкарыстана для прадухілення нападаў паўтору, але толькі калі вы на самой справе правяраеце, каб нонс заўсёды павялічваўся. Гэта значыць, калі да кожнага паведамлення да яго прыкінуты невыразны характар, вы зможаце сказаць, ці прыйшло паведамленне ў правільным парадку, паглядзеўшы на нонс і пераканаўшыся, што яго значэнне заўсёды павялічваецца.

Аднак выпадковасць у любым выпадку дапамагае прадухіліць класы нападаў, якія амартызуюць працу над некалькімі ключамі ў той жа сістэме. Звычайна вы хочаце мець як выпадковую, так і паслядоўную частку.

Крок 1. Кліент ініцыюе сеанс аўтэнтыфікацыі SCRAM

Крок 2. Сервер выдае выклік

Крок 3: Кліент адказвае доказам

Вектар ініцыялізацыі

IV або стартавыя зменныя - гэта ўвод фіксаванага памеру.

IV і, такім чынам, часта выкарыстоўваюцца як узаемазаменныя. Па сутнасці, IV - гэта значэнне з дадатковым патрабаваннем: яго трэба выбіраць непрадказальным спосабам. Гэта ліквідуе ўсе паслядоўныя сэнсы, IV павінна быць выпадковым.

BCRYPT

Але мы не можам забыць пра дзіўны падарунак Ruby on Rails, які нам прадаставіў для забеспячэння кібербяспекі. bcrypt () - складаны і бяспечны алгарытм хэшавання, распрацаваны праектам OpenBSD для хэшавання пароляў. Самацветы bcrypt Ruby забяспечваюць простую абгортку для бяспечнай апрацоўкі пароляў. Звычайна пароль праходзіць праз алгарытм bcrypt, а затым з'яўляецца "салёным" для іншага ўзроўню бяспекі.

У прынцыпе, падводзячы вынік, солі і IV павінны быць выпадковымі, і думкі звычайна паслядоўныя, патэнцыйна са выпадковай соллю ў якасці кампанента, калі ёсць месца. З паслядоўнымі значэннямі вы павінны пераканацца, што вы ніколі не паўтарыце ніводнага спалучэння клавіш {nonce}. Калі ў вас ёсць магія bcrypt, добра разабрацца ва ўжыванні некалькіх алгарытмаў для абароны дадзеных.