Контрольная сумма: что это и почему это важно

Сего­дня в вашем лек­си­коне появит­ся важ­ная новая фра­за: кон­троль­ная сум­ма. Это инстру­мент опыт­ных раз­ра­бот­чи­ков, адми­нов и хаке­ров, и сего­дня он ста­нет вашим.

Пред­ставь­те ситу­а­цию: вы при­хо­ди­те в мага­зин за науш­ни­ка­ми. Нахо­ди­те нуж­ные на вит­рине, про­бу­е­те их, вам всё нра­вит­ся. Вы про­си­те про­дав­ца при­не­сти такие же со скла­да, в упа­ков­ке.

Про­да­вец при­но­сит короб­ку, и вы пони­ма­е­те, что вас хотят обма­нуть. Упа­ков­ку явно до это­го вскры­ва­ли, в ком­плек­те не все про­во­да и наклад­ки, плё­ноч­ки сня­ты. Эти­ми науш­ни­ка­ми явно поль­зо­ва­лись до вас.

Сотруд­ник гово­рит, что это ошиб­ка в спис­ке ком­плект­но­сти, а товар на самом деле новый, про­сто такой при­шёл с заво­да. Вы ему не вери­те, отка­зы­ва­е­тесь от покуп­ки и идё­те в дру­гой мага­зин. Там вы нахо­ди­те такие же науш­ни­ки, про­ве­ря­е­те и раду­е­тесь, что купи­ли нуж­ную вещь.

В мире инфор­ма­ции про­ис­хо­дит почти то же самое: товар на скла­де — это какие-то дан­ные, а спи­сок ком­плект­но­сти това­ра — это кон­троль­ная сум­ма, кото­рая пока­зы­ва­ет, изме­ня­лись эти дан­ные или нет. Если пони­мать, что это такое и как этим поль­зо­вать­ся, мож­но про­ве­рить под­лин­ность фай­ла и обез­опа­сить себя от под­де­лок, виру­сов и шпи­о­нов.

Как это работает

На самом деле имен­но кон­троль­ной сум­мы уже нет — это назва­ние нам доста­лось с тех вре­мён, когда для про­вер­ки точ­но­сти пере­да­чи дан­ных исполь­зо­ва­ли 7 бит вме­сто 8. Вось­мой бит был кон­троль­ным, и в нём нахо­ди­лась сум­ма пер­вых семи бит без учё­та стар­ших раз­ря­дов. Когда полу­ча­те­лю при­хо­ди­ла оче­ред­ная пор­ция дан­ных, он скла­ды­вал 7 бит и срав­ни­вал сум­му с вось­мым. Если они сов­па­да­ли, зна­чит, дан­ные, ско­рее все­го, пере­да­лись вер­но. Тогда линии свя­зи были не таки­ми надёж­ны­ми, как сей­час, и если что-то пере­да­ва­лось непра­виль­но, такие дан­ные нуж­но было отпра­вить зано­во. С тех пор и пошло поня­тие кон­троль­ной сум­мы.

Сей­час сум­му уже никто не исполь­зу­ет, а вме­сто это­го рабо­та­ют спе­ци­аль­ные про­грам­мы:

  1. Берут дан­ные, для кото­рых нуж­но соста­вить кон­троль­ную сум­му.
  2. По спе­ци­аль­но­му алго­рит­му эти дан­ные пре­вра­ща­ют­ся в одну стро­ку из сим­во­лов.
  3. Эту стро­ку тек­ста при­кла­ды­ва­ют к исход­но­му фай­лу и гово­рят — ребя­та, вот кон­троль­ная сум­ма (то есть стро­ка). Если вы не уве­ре­ны, что всё ска­ча­ли пра­виль­но, про­верь­те.
  4. Те, кто ска­чал исход­ный файл, запус­ка­ют про­грам­му про­вер­ки кон­троль­ных сумм и гово­рят ей — вот файл, а вот его кон­троль­ная сум­ма, про­верь, пожа­луй­ста, всё ли тут пра­виль­но.
  5. Про­грам­ма сама состав­ля­ет кон­троль­ную сум­му по тому же алго­рит­му и срав­ни­ва­ет с вашей.
  6. Если кон­троль­ные сум­мы сов­па­да­ют — всё отлич­но, дан­ные в поряд­ке, мож­но поль­зо­вать­ся. Если нет — про­грам­ма выве­дет сооб­ще­ние, что сум­мы отли­ча­ют­ся. Это зна­чит, что во вре­мя ска­чи­ва­ния воз­ник­ла ошиб­ка или кто-то спе­ци­аль­но под­ме­нил исход­ные дан­ные, что­бы навре­дить вам.

Смысл тех­но­ло­гии в том, что для любо­го фай­ла и алго­рит­ма есть толь­ко одна кон­троль­ная сум­ма. Если в фай­ле изме­нить пред­ло­же­ние, сло­во или несколь­ко сим­во­лов, кон­троль­ная сум­ма будет уже дру­гой. Это как циф­ро­вой отпе­ча­ток паль­ца, толь­ко для дан­ных.

Самый про­стой вари­ант орга­ни­зо­вать кон­троль­ную сум­му — исполь­зо­вать хеши, напри­мер, MD5. Мы уже гово­ри­ли про хеши в ста­тье про Фейс­бук и уте­рян­ные паро­ли, но MD5 — мно­го­гран­ная вещь, и в своё вре­мя его все исполь­зо­ва­ли для созда­ния кон­троль­ных сумм.

Но при­мер­но с 2006 года все ста­ли пере­хо­дить на дру­гие алго­рит­мы (CRC32, SHA-1, SHA-2 или MD5crypt). Дело в том, что уже есть мето­ды, кото­рые за при­ем­ле­мое вре­мя могут взло­мать MD5-хеш и сде­лать дру­гой файл с тем же раз­ме­ром и почти таким же содер­жи­мым, что и ваш. Это зна­чит, что зло­умыш­лен­ник может под­де­лать дан­ные таким обра­зом, что про­вер­ка кон­троль­ной сум­мы прой­дёт успеш­но и вы буде­те думать, что всё в поряд­ке.

Почему это важно

Если вы зна­е­те кон­троль­ную сум­му и алго­ритм её нахож­де­ния, вы все­гда може­те про­ве­рить файл на целост­ность — ска­чал­ся ли файл цели­ком и вооб­ще тот ли это файл, что нуж­но.

Напри­мер, вы кача­е­те новую про­шив­ку на свой теле­фон. Если файл ска­ча­ет­ся непра­виль­но, не до кон­ца или с ошиб­ка­ми, во вре­мя пере­про­шив­ки теле­фон может сло­мать­ся, и вос­ста­но­вить его будет уже нель­зя. Что­бы тако­го не было, про­из­во­ди­те­ли про­ши­вок при­кла­ды­ва­ют к фай­лам кон­троль­ную сум­му, что­бы каж­дый мог про­ве­рить перед пере­про­шив­кой, в поряд­ке ли сам файл.

Чаще все­го кон­троль­ную сум­му исполь­зу­ют раз­ра­бот­чи­ки ПО, кото­рые выкла­ды­ва­ют на сво­их стра­ни­цах офи­ци­аль­ный софт и драй­ве­ра. Они гово­рят: ребя­та, вот файл, а вот его кон­троль­ная сум­ма. Если кача­е­те у нас — про­верь­те, без оши­бок ли вы ска­ча­ли. А если кача­е­те не у нас — срав­ни­те их кон­троль­ную сум­му с нашей, вдруг они вам под видом драй­ве­ра хотят под­су­нуть какой-то вирус.