Дэниэл Π‘Π΅Ρ€Π½ΡˆΡ‚Π΅ΠΉΠ½ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ cdb

Дэниэл Π‘Π΅Ρ€Π½ΡˆΡ‚Π΅ΠΉΠ½ (Daniel J. Bernstein), извСстный экспСрт Π² области ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΈ создания Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ ПО, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ qmail, djbdns, NaCl, Ed25519, Curve25519 ΠΈ ChaCha20-Poly1305, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° cdb 20250121, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для встраивания Π² прилоТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π” Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Выпуск сформирован спустя Π±ΠΎΠ»Π΅Π΅ 25 Π»Π΅Ρ‚ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ обновлСния cdb 0.75, сформированного Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ 2000 Π³ΠΎΠ΄Π°.

Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ cdb64, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π½Π° структуры с 64-разрядными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. На 64-разрядных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π‘Π” Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π΄ΠΎ эксабайта (Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π‘Π” Π½Π΅ ΠΌΠΎΠ³ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 4 Π“Π‘). Π‘Π” ΠΎΡ‡Π΅Π½ΡŒ компактная ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 4096-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΠΏΠΎ 48 Π±Π°ΠΉΡ‚ слуТСбной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись (для 32-разрядного Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ 2048 ΠΈ ΠΏΠΎ 24 Π±Π°ΠΉΡ‚Π° Π½Π° запись). ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π‘Π” Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всСго Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ доступа ΠΊ диску ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π° ΠΈ ΠΎΠ΄ΠΈΠ½ β€” ΠΏΡ€ΠΈ отсутствии. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ атомарная Π·Π°ΠΌΠ΅Π½Π° Π‘Π”, стойкая ΠΊ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡΠΌ ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π°Ρ доступ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сборки с использованиСм скрипта configure ΠΈ установки ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«make installΒ».
  • Π£Π±Ρ€Π°Π½Π° привязка тСстовых сцСнариСв ΠΊ csh.
  • ВсС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Π΅ значСния Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Ρ‚ΠΈΠΏ Β«numΒ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ Β«long longΒ». Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ uint32, fmt ΠΈ scan Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Ρ‚ΠΈΠΏΠΎΠΌ num.
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΡƒΡ„Π΅Ρ€Π°ΠΌΠΈ Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½ Π½Π° inbuf ΠΈ outbuf. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° чистка интСрфСйса hier.
  • Из ΠΊΠΎΠ΄Π° ΡƒΠ±Ρ€Π°Π½Ρ‹ опрСдСлСния Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ использованиС обвязок, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ str_len, alloc, uint32, exit, error ΠΈ systype.
  • Код ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½ для прСкращСния использования ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Π‘ΠΈ-конструкций, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ старый ΡΡ‚ΠΈΠ»ΡŒ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, пустыС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ ΠΈ старый ΡΡ‚ΠΈΠ»ΡŒ опрСдСлСния main().
  • ЗадСйствованы опрСдСлСния const ΠΈ static.
  • ΠŸΡ€ΠΈ сборкС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ Ρ„Π»Π°Π³ Β«-WallΒ», Π° ΠΊΠΎΠ΄ ΠΏΠΎΡ‡ΠΈΡ‰Π΅Π½ для устранСния ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.
  • ΠŸΡ€ΠΈ компиляции Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ -fwrapv, -fno-delete-null-pointer-checks, -fno-strict-aliasing ΠΈ -fno-strict-overflow.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ