В современном цифровом мире криптографические ключи обычно имеют размер не менее 128 бит, если не больше. В зависимости от шифра ключ может быть длиннее, хотя, если алгоритмы устойчивы к криптоатакам, обычно самые длинные из них составляют 4096 бит. Если вам встречаются ключи еще больше, это указывает на слабые алгоритмы или кого-то, кто не очень хорошо знает криптографию (или пытается продать эти коды людям, которые в этом не сильны).
Люди, которые не знакомы с криптографией, не понимают, почему хакеры не пробуют все возможные комбинации единиц и нулей, которые могут быть применены в результате определенного размера ключа. Не мог ли кто-то с очень быстрым компьютером подобрать все возможные комбинации? Нет. Даже размер современного ключа в 2000 бит устойчив против «перебора грубой силой». Мало того что для этого не существует достаточно мощного компьютера, но даже если бы вы использовали все компьютеры в мире, которые уже изобрели или изобретут в будущем, им все равно не хватило бы мощности (по крайней мере, до тех пор, пока квантовые вычисления не станут реальностью). Следовательно, взлом криптографических средств связан с утечками или слабыми алгоритмами. Криптографические алгоритмы, мягко говоря, сложны, и то, что первоначально может выглядеть непобедимой математикой, часто оказывается полным недостатков, которые позволяют быстро взломать систему. Вот почему стандарты шифрования и размеры ключей постоянно меняются, поскольку старые шифры ослабевают, а новые, более устойчивые, появляются.
Если ключ шифрования совпадает с тем, что используется для расшифровки в дальнейшем (например, в простом примере выше), то шифр называется симметричным. Если ключ, используемый для шифрования, отличается от ключа, используемого для расшифровки, шифр называется асимметричным. Асимметричные шифры также известны как шифрование с открытым ключом, когда шифрующая сторона имеет закрытый ключ, который знает только она, а расшифровывающая сторона – открытый, и до тех пор, пока посторонние не знают закрытый ключ, коммуникации защищены. Однако симметричное шифрование обычно выполняется быстрее и надежнее.
В наши дни многие шифры хорошо известны и протестированы, чтобы стать отраслевыми, если не мировыми, стандартами.
Популярные симметричные ключи шифрования включают алгоритм для симметричного шифрования (DES), 3DES (тройной DES) и симметричный алгоритм блочного шифрования (AES). Первые два алгоритма устарели и больше не используются. Последний считается криптостойким и наиболее популярным симметричным шифром, используемым сегодня. Размеры ключей симметричных шифров обычно варьируются от 128 до 256 бит, но постепенно их размер увеличивается. Каждое увеличение, скажем, со 128 до 129 бит, обычно двукратно усиливает надежность ключа в пределах одного и того же шифра.
Популярные асимметричные шифры включают криптографический протокол Диффи – Хеллмана (о Мартине Хеллмане поговорим в следующей главе), протокол Ривеста – Шамира – Адлемана (RSA) и эллиптическую криптографию (ECC). Эллиптическая криптография – новая технология в этой сфере и только начинает использоваться. Размеры ключей асимметричных шифров обычно варьируются от 1024 до 4096 бит, хотя сегодня 2048 бит считается минимальным допустимым размером для протоколов Диффи – Хеллмана и RSA. Эллиптическая криптография использует меньшие размеры ключей, начиная с 256 бит. 384 бита считаются достаточно надежным вариантом. Как правило, асимметричные шифры используются для безопасной передачи симметричных ключей, которые выполняют бо́льшую часть шифрования между отправителем и получателем.
Криптография также используется для проверки содержимого. Для этого применяют алгоритмы шифрования, известные как криптографические хэши. При этом содержимое открытого текста, подлежащее проверке, математически соотносится с ключом (опять же только в серии единиц и нулей) для получения уникального результата, называемого результатом хэширования, или хэшем. Идентификационные данные или контент могут быть хэшированы в любой момент и вновь хэшированы позднее (например, на другом устройстве). Хэши можно сравнить, чтобы убедиться, что хэш содержимого не изменился с момента начального хэширования.
Распространенные хэш-алгоритмы – Secure Hash Algorithm 1 (SHA-1), SHA-2 и SHA-3. Было обнаружено, что SHA-1 имеет некоторые криптографические недостатки (также схожие с SHA-2), и поэтому его упразднили. SHA-2 становится самым популярным хэшем, но эксперты криптографии уже рекомендуют использовать SHA-3.