Estado actual
La fase actual de hardening de .me se considera cerrada por ahora.
El kernel está estable, usable y testeado.
No hay un blocker activo que impida movernos a GUI.
Qué se hizo
Se endureció el plano secreto sin romper el contrato público:
- Se mejoró el manejo de blobs secretos en
/Users/suign/Desktop/Neuroverse/neurons.me/this/.me/npm/src/crypto.ts. - Se mantuvo compatibilidad con blobs legacy.
- Se agregó no determinismo por escritura (nonce por write).
- Se agregó verificación de integridad fail-closed para blobs secretos.
- Se acotó retención de material sensible en memoria en
/Users/suign/Desktop/Neuroverse/neurons.me/this/.me/npm/src/secret.ts. - Se agregó limpieza explícita de buffers temporales sensibles en
/Users/suign/Desktop/Neuroverse/neurons.me/this/.me/npm/src/crypto.ts.
Cambios concretos
/Users/suign/Desktop/Neuroverse/neurons.me/this/.me/npm/src/crypto.ts
- Hardening compatible del formato secreto actual.
- Fallback de lectura para blobs legacy.
- Verificación de integridad en tiempo constante.
- Zeroing de
Uint8Arraytemporales cuando fue posible. - Compatibilidad de entorno preservada para build/browser/UMD.
/Users/suign/Desktop/Neuroverse/neurons.me/this/.me/npm/src/secret.ts
-
scopeCacheacotado con LRU simple. -
effectiveSecretCacheacotado con LRU simple. -
decryptedBranchCacheacotado con LRU simple. - Se redujo la retención prolongada de objetos descifrados en memoria.
/Users/suign/Desktop/Neuroverse/neurons.me/this/.me/npm/tests/contracts/dsl.contract.test.mjs
- Test de no determinismo entre escrituras iguales.
- Test de tampering fail-closed.
- Test de compatibilidad con snapshots legacy XOR.
- Test de caches secretos acotados bajo recorrido amplio.
Qué NO se hizo
- No se migró a AES-GCM/ChaCha20 en el hot path del kernel.
- No se volvió async
me("path"). - No se cambió el contrato del Proxy.
- No se tocó el constructor que devuelve Proxy.
- No se cambió el shape público de snapshots.
- No se implementó
v3.
Decisión importante
v3 NO es necesario para seguir avanzando hoy.
v3 queda como idea de infraestructura futura, no como trabajo inmediato.
Si en el futuro se cambia de verdad el layout del blob secreto, la derivación o el esquema crypto de forma incompatible, entonces sí debe existir un v3.
No se debe “parchar v2” cambiando el formato real sin cambiar versión.
Por qué se rechazaron algunas propuestas externas
No se adoptaron propuestas que:
- cambiaban el formato real de
v2sin cambiar versión - rompían compatibilidad con blobs ya emitidos
- ignoraban compatibilidad de entorno/UMD
- quitaban o degradaban el hardening de memoria ya hecho
- proponían crypto async en un kernel que hoy depende de lectura síncrona
Riesgos residuales reales
Estos sí quedan pendientes para una siguiente fase:
-
effectiveSecretsigue viviendo enMemoryy snapshots en/Users/suign/Desktop/Neuroverse/neurons.me/this/.me/npm/src/types.ts. - La crypto sync actual está endurecida, pero no es todavía una AEAD estándar pura en el plano secreto principal.
- Los strings en JavaScript no se pueden zeroear de forma real.
- Un endpoint totalmente comprometido sigue siendo un escenario duro, como en cualquier app similar.
Siguiente fase recomendada para .me
Cuando se retome .me, el siguiente frente serio es:
- reducir o eliminar exposición de
effectiveSecreten memories/snapshots - revisar si conviene separar secretos persistidos de secretos operativos
- evaluar un rediseño crypto más profundo sólo si se acepta el impacto arquitectónico
Validación que pasó
Se validó con éxito:
npm run test:tsnode tests/phases.test.jsnpm run buildnpm run test:contractsnpm run test:umdnpm run test:prebuild
Conclusión
.me queda estable para esta fase.
No está “perfecto para siempre”, pero sí quedó suficientemente endurecido, compatible y verificado como para mover el foco a GUI sin dejar un incendio atrás.
Top comments (0)