До Кроума 73, схема підпису ікстеншенів була геніяльно проста як
двері: ти генерував rsa ключа, робив sha1 зіп файлу,
\o
(вибачте)
підписув оте sha1 зе ключем та присобачував підпис та публічну частину
ключа до зіп файлу. Таким чином народжувався .crx файл, який бовзер
Кроум дозволяє встановлювати як інкстеншна.
Але гоогл не був би гооглом, якщо гарну ідею не вдалося б спаплюжити.
73 версія Кроума зобов'язує використовувати новий хформат-обкладинку
для ікстеншинів: crx3. Спеціяльно заради уникнення конфузій,
розширення хфайлу має бути таким самим як і раніше: просто .crx.
Навіщо новий хформат? Цитата:
'Many of the RSA keys used to sign the files are insufficiently secure
(too short). The CRX₂ format does not allow for algorithm rotation,
key rotation, or multiple proofs. The goal is to address these issues
and leave the door open to future improvements.'
Чому не заборонити тендітні ключи < 2048 довжини, а починати ла
трафілу з новим врапером, є невідомим: документа обговорення є
доступним тільки з середини гоогла. Інтерпрайзний нарід лютує, але
гооглівці мовчать.
У новому форматі на місці ключа з підписом вперся
протобаф. Зауважте,
як не весь хфайл став протобафом, а лише його крихітна частина.
crx2 з crx3 є геть несумісні. Чому тоді не можна було увесь .crx
перетфорити на протобав? Ви не повірите, але заради сумісності. Гадаю,
щоб утіліти, від яких залежить всесвіт, на кшталт file(1), не
потребували оновлення, а могли надрукувати "ага! це є crx, але версії
3" (що вони щасливо і роблять).
crx3 дозволяє будь яку кількість підписів 2 типів:
- pss з rsa (я і раніше у crx2)
- ecdsa (еліптична крива)
Якщо завантажити страшенно корисного пенісного ікстеншену з
попереднього посту, то видно як уйоб могозина гоогла до зе .crx хфайлу
одразу всобачив 3 підписи:
$ file anflghppebdhjipndogapfagemgnlblh.crx
anflghppebdhjipndogapfagemgnlblh.crx: Google Chrome extension, version 3
$ crx3-info < !$
id anflghppebdhjipndogapfagemgnlblh
header 1321
payload 80912
sha256_with_rsa 2
sha256_with_ecdsa 1
(Невеличкий header то є весь префікс, який трішки лякає такі
архіватори як unzip; якщо його під час читання хфайлу пропустити, далі
буде чистий зіпа.)
З ecdsa я не розумію 1 деталь.
Валідний підпис обов'язково має бути з кривою NIST P-256. Тією, про
яку Бернштейна (той самий) бідкається багато років, що то є бекдора
від NSA, CIA, FBI та DMV. Майора Сноуден, у своїх безсмертних
викриттях, його сердешно підтримує.
Якщо хтось ув інторнетах питає "люди, а це правда?", завжди прискакує
якийсь обізнаний мотематик і пояснює що то є абсолютно не так, NIST
P-256 є не ненадійна, а складна ув правільній імплементації, жоден
мотематик не знайшов бекдору, нєчєґо сєять паніку.
Не допомагає і те, що тексти, які намагаються довести
протилежне, знаходяться на
уйоб сайтах контор, про які гоогла практично нічого не знає
(наприклад, на запит Credelius
Group я
отримую лише 6 лінків, хоча ота Свято-Францизська хфірма нібито існує
багато років). Звичайно, може то є доказ того, що тексти написані
божевільними, на яких ніхто не звертає уваги.
У будь-якому разі, навіщо було спеціяльно вибирати суперечливий тип,
коли є досить варіянів кривих, які ніхто не критикує? У дитячу
безпосереднісь людини яка писала
crx3.proto,
я не вірю.