
JavaScript sinfi SecureRandom()
bir səhv var və həqiqətən təhlükəsiz açarlar yaratmır.
Bunun kriptovalyutalarla necə əlaqəsi var?
Çox sayda brauzer əsaslı kriptovalyuta məhsulları var hələ istifadə edin populyar SecureRandom()
JS sinfi. JavaScript brauzer əsaslı məhsullar yaratmaq üçün çox populyardır, lakin kriptoqrafiya məqsədləri üçün istifadə etmək həqiqətən yaxşı bir şey deyil. Əsas problem JS-nin tip üçün təhlükəsiz dil olmamasıdır.
Tip təhlükəsizliyi mürəkkəb mövzudur və “tip üçün təhlükəsiz” dilin tam olaraq nə olduğuna dair razılaşdırılmış tərif yoxdur, lakin onun demək olar ki, hər hansı tərifinə görə, JavaScript tip üçün təhlükəsiz deyil. Bu o deməkdir ki, JS kriptoqrafiyada yolverilməz olan tip xətalarının qarşısını almır və ya qarşısını almır.
Nəticə budur ki, brauzerlərdəki JS alətləri tərəfindən yaradılan bütün kripto pul kisələrində kobud güc hücumu ilə sındırmaq üçün kifayət qədər proqnozlaşdırıla bilən açarlar var (və bəziləri hələ də var!). Bəli, bu cür açarlar lazımi uzunluğa malikdir (kriptoqrafiya baxımından), lakin JavaScript sinifindəki səhvə görə entropiya 48 bitdən azdır.
dərin texniki izahat.
İndi nə etməli?
Əslində, bununla bağlı çox şey etmək olmaz. Bütün yaxşı kriptovalyuta səhvləri kimi, bu da heç də yeni deyil – burada Greg Maxwell az qala bu haqda danışır. üç il əvvəl (51:00-da):
Bu problem sizə təsir edir, əgər:
- köhnə kriptovalyuta ünvanlarından istifadə edin
- onlar JavaScript ilə yaradılıb, yəni, veb brauzerdə
Mümkün təsir:
- BitAddress 2013-dən əvvəl;
- 2014-cü ildən əvvəl bitcoinjs;
- cari Github-dan köhnəlmiş repolardan istifadə edən proqram.
Nə edilməlidir:
- vəsaitlərinizi həmin ünvanlardan köçürün
- onları bir daha istifadə etməyin
Bu, açarlarınızın sınma riskini azaldacaq, lakin ümumiyyətlə, bu məlumat sizi müasir kripto açarlarının sındırılmasının əsrlər alacağını düşünməyə vadar etməlidir. Belə çıxır ki, bir həftəyə çatlaya bilər.
Bəzi maraqlı faktlar:
JavaScript əvvəlcə LiveScript adlanırdı. Bu Sun Microsystems tərəfindən hazırlanmamışdır (kimi Java) və LiveScript-in adını JavaScript-ə dəyişmək üçün yaxşı səbəb yox idi. Bu, JavaScript-in bir növ Java ilə əlaqəli olduğuna dair çaşqınlığa səbəb oldu, lakin JavaScript fərqli bir dildir, Java ilə müqayisədə Lisp və ya Scheme kimi funksional dillərlə daha çox ortaq cəhətlərə malikdir.
JavaScript faktiki yüksək səviyyəli, şərh edilən proqramlaşdırma dilidir, skript kimi deyil - Skript şəkilçi təklif edir.