Monday, August 1, 2022

비트코인 블록체인에서 ECDSA의 약한 트랜잭션과 Lattice Attack의 도움으로 BTC 코인에 대한 개인 키를 받았습니다.

 


그리드 공격에 대해 무엇을 알고 있습니까?

우선  타원 곡선 디지털 서명 알고리즘 (ECDSA)  은 많은 코드 리뷰에서 볼 수 있는 일반적인 디지털 서명 체계입니다. 그것은 몇 가지 바람직한 속성을 가지고 있지만 1비트 미만의 비밀 nonce를 드러내는 부채널 공격으로 개인 키를 복구하는 데 매우 취약할 수도 있습니다.

ECDSA 디지털 서명 알고리즘의 특별한 형태입니다  (DSA)DSA 키 생성, 서명 및 확인의 세 가지 알고리즘으로 정의되는 상당히 일반적인 디지털 서명 체계입니다. 키 생성 알고리즘은 개인 및 공개 키를 생성합니다.  개인 키는 서명 생성을 담당합니다.  공개 키는 서명 확인을 담당합니다.  서명 알고리즘은 메시지와 개인 키를 입력으로 받아 서명을 생성합니다. 확인 알고리즘은 메시지, 서명 및 공개 키를 입력으로 사용하고  서명이 유효한지 여부를 나타내는 true 또는  값을 반환합니다.false

DSA 는 모든 수학적 그룹에 대해 정의되며 이 체계는 해당 그룹에 대해 이산 로그 문제가 어려운 한 안전합니다. 일반적으로 사용되는 그룹은 정수 모듈로 소수 p입니다.

이 그룹과 함께 그룹 생성기 g 및 일부 암호학적으로 안전한  해시  함수  가 H있습니다. 우리는 그것을 가정할 수  p , g 있으며  H 일반적인 지식이 될 것입니다.

x 키 생성은 먼저 모듈로 정수에서  값을 무작위로 선택하여 작동합니다  p . 그런 다음 값이 계산됩니다. y = g^x mod p

서명의 개인 키는  x 이고 공개 키는  y 입니다. 서명 키는 서명을 허용하기 때문에 비밀로 유지해야 합니다.

서명 알고리즘은 메시지  m 와 비밀 키 x ​​에서 서명을 생성합니다. 먼저 랜덤 그룹 요소가 생성됩니다  k . 이것을 논스(nonce)라고 하며 이는 공격과 관련하여 중요합니다.

그런 다음 값이 계산  r = g^k mod p 되고 s = ( k^-1 ( H ( m ) + xr )) mod p

여기서  k^- 1 는 역군이며  H ( m ) 해시 m을 계산하고 그 결과를 정수 모듈로 p로 해석한 결과입니다.

서명은 의 쌍으로 정의됩니다  ( r , s )(참고:  r 또는  값 중 하나가 와 s같으면  0알고리즘은 의 새 값으로 다시 시작됩니다  k .

검증 알고리즘은 서명  ( r , s ), 메시지  m 및 공개 키 y를 입력으로 받습니다. Let  ŝ = s^-1 , 다음 경우에만 알고리즘이 true 를 반환합니다  r , s ≠ 0 и r = ( g H ( m ) y r ) ŝ .

이 유효성 검사는  g^H( m ) y^r = g^H(m)+ xr = g^ks, 따라서  작동합니다.(g^H(m)y^r)^ŝ = g^k = r

디지털 서명 체계는 위조될 수 없는 경우 안전한 것으로 간주됩니다.

불변성은 공식적인 암호화 의미를 갖지만 높은 수준에서 이는 비밀 키를 알지 않고는 서명을 만들 수 없음을 의미합니다(비밀 키에서 생성된 이미 존재하는 서명을 복사하지 않는 한). 이산 로그DSA 를 가정하면 위조가 불가능한  것으로 입증되었습니다   .

DSA 수학적 그룹에 대해 정의됩니다. DSA 이 수학 그룹으로 타원 곡선 그룹과 함께 사용할  때  이를 이라고 합니다 ECDSA타원 곡선 그룹  은 의 쌍인 타원 곡선 점으로 구성되며   일부  ( x , y )방정식을 충족합니다   . 이 블로그 게시물에서 알아야 할 것은 타원 곡선을 사용하여 유한 그룹을 정의할 수 있다는 것입니다. 즉, 그룹 생성기,  (타원 곡선 점) 및  덧셈  및  도트 곱셈 연산  은 사용자와 동일합니다. 정수로 할 수 있습니다. 그들은 유한 그룹, 발전기를 형성하기 때문에,y^2 = x^3 + ax + ba , bg g , 유한 차수를 갖습니다  p이 블로그 게시물에서는 이러한 타원 곡선 작업 이 어떻게 작동하는지 설명하거나 요구하지 않습니다  .

ECDSA 와 동일  DSA하지만 다른 그룹과 함께 작동합니다. 비밀 키 x  는 여전히 임의의 값 모듈로 정수  p 입니다. 이제 공개 키  는  g가 이제 타원 곡선의 한 점이라는 점을 제외하고 y 여전히 로 계산됩니다  . y = g^x이것은 y가 타원 곡선의 한 점이기도 함을 의미합니다(이전에는 y가 정수 모듈로 p였습니다). 또 다른 차이점은 r 값을 계산하는 방법입니다. 우리는 여전히 이전과 같이 정수 모듈로 p로 임의의 논스 k를 생성합니다. 우리는 계산할 것입니다  g^k . 그러나 다시 g 는 타원 곡선의 한 점이며, 따라서  g^k 또한입니다. 따라서 우리는 계산  ( x^k , y^k ) = g^k 하고 설정할  수 있습니다 r = x^k . 이제 의미 s 이전과 같이 계산할 수 있으며 이전과 같이  ( r , s )여전히 정수 모듈로  인 서명을 얻 p 습니다. r 확인하려면 조금 다르게 계산했다는 사실을 수정해야 합니다  .

따라서 이전과 같이   의 값을  계산( g^H(m)y^r)^ŝ  하지만 이제 그 값은 타원 곡선의 한 점이므로  x해당 점의 -좌표를 가져와 의 값과 비교합니다  r .

 재사용된 nonce에서  비밀 키 복구 NONCES

이제 이것이 무엇  ECDSA 이며 어떻게 작동하는지  이해했으므로 취약성 을 입증해 보겠습니다 . 다시 말하지만, 이것은 디지털 서명 방식이므로  비밀 키  는 메시지에 서명하는 사람 외에는 절대 공개되지 않아야 합니다.

그러나 서명자가 서명을 발행하고 사용된 nonce도 발행하면  공격자  는 즉시  비밀 키 를 복구할 수 있습니다 .

( r , s ) 메시지에 대한  서명을 해제  m 하고 실수로 내가 nonce 를 사용했다는 것을 발견  했다고 가정해 보겠습니다 k .

s = ( k^-1 ( H ( m ) + xr )), 비밀 키를 쉽게 계산할 수 있기 때문에  :

s = (k^-1(H(m) + xr))

ks = H(m) + xr

ks – H(m) = xr

x = r^-1(ks – H(m))

따라서 서명자는 개인 키를 비밀 로 유지해야 할 뿐만 아니라  그들이 생성한 모든 nonce도 비밀로 유지해야 합니다.

서명자가 각  nonce NONCES 를 비밀 로 유지하더라도 실수로 하나  의 nonce NONCES 를 반복하면  (심지어 다른 메시지에 대해서도)  비밀 키  도  즉시 복구 할 수 있습니다 .

 메시지 및   (각각) 동일한 nonce에서   생성된 두 개의 서명을  하자  - 동일한 nonce ( r , s 1 ) 를   갖기 때문에 r 값은 동일하므로 공격자가 감지하기가 매우 쉽습니다.( r , s 2 )m 1m 2k

s1 = k^-1(H(m1) + xr) and s2 = k^-1(H(m2) + xr)

s1 – s2 = k^-1(H(m1) – H(m2))

k(s1 – s2) = H(m1) – H(m2)

k = (s1 – s2)^-1(H(m1) – H(m2))

위의 공식을 사용 하여 nonce를 복구한 후에  k 는 앞에서 설명한 공격을 수행하여 개인 키를 복구할 수 있습니다.

이것을 잠시 소화해 봅시다.

서명 nonce NONCES  가 공개되면  비밀   를 즉시  복구 할 수 있으며 이는  전체 서명 체계 를 깨뜨 립니다.

또한 두 개의 nonce가 반복되면 메시지가 무엇이든  공격자  가 이를 쉽게 감지하고 즉시  비밀 키를 복구하여 전체 체계를 다시 깨뜨릴 수 있습니다.

그것은 매우 약하고 단지  가벼운 공격 입니다!

그러나   매우 자세히 설명된  새로운  격자 공격 이 있습니다 (Joachim Breitner 및 Nadia Heninger).Йоахим Брайтнер и Надя Хенингер 

문서  [PDF] :  Biased Nonce Sense: Cryptocurrencies의 약한 ECDSA 서명에 대한 격자 공격

비트코인 블록체인에서 우리는 특정 거래를 발견했습니다:

거래:  08d917f0fee48b0d765006fa52d62dd3d704563200f2817046973e3bf6d11f1f

비트코인 주소:  15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E

우리는 가짜 서명을 곱하고 그리드를 적용했습니다.

GOOGLE COLAB  에서 패키지 설치와 함께  Python 스크립트  algorithmLLL.py 사용 

설치 >> SAGE + ECDSA + BITCOIN + 알고리즘 LLL

 우리 는 하나의 약한 거래에서  에 도달  Private Key 했습니다  .Bitcoin WalletECDSA

설치
설치
Bash 스크립트 실행: lattice.sh
Bash 스크립트 실행: lattice.sh
HEX 형식의 결과 개인 키를 찾았습니다!
HEX 형식의 결과 개인 키를 찾았습니다!
파일: ONESIGN.txt(ECDSA 서명 R, S, Z 값)
파일: ONESIGN.txt(ECDSA 서명 R, S, Z 값)
Python 스크립트 algorithmLLL.py에 대한 가짜 서명을 전파했습니다.
Python 스크립트 algorithmLLL.py에 대한 가짜 서명을 전파했습니다.
파일: PRIVATEKEY.txt
파일: PRIVATEKEY.txt
파일: ADDRESS.txt
파일: ADDRESS.txt
비트 주소 웹 사이트에서 개인 키 확인
비트 주소 웹 사이트에서 개인 키 확인

개인 키를 찾았습니다!

https://www.blockchain.com/btc/address/15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E

0.001 BTC
0.001 BTC
ADDR: 15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E
WIF:  5JCAmNLXeSwi2SCgNH7wRL5qSQhPa7sZvj8eDwxisY5hJm8Uh92
HEX:  31AFD65CAD430D276E3360B1C762808D1D051154724B6FC15ED978FA9D06B1C1 

이 비디오는   BITCOIN 암호화폐의 약한 ECDSA 서명에 대한 데이터 및 secp256k1 타원 곡선 암호화의 재정적 보안을 보장하기 위해 CRYPTO DEEP TECH 포털을 위해 제작되었습니다.

동영상:  https://youtu.be/YP4Xj6gUcf4

텔레그램 :  https://t.me/cryptodeeptech

출처:  https://cryptodeep.ru/lattice-attack

No comments:

Post a Comment

Shadow Key Attack: a fundamental threat of nonce leakage in Bitcoin transactions from the EUCLEAK mechanism via side channels of the Extended Euclidean Algorithm in YubiKey 5 devices and Infineon microcontrollers

  Crypto Deep Tech This paper presents a cryptanalytic study  of the  Shadow Key Attack   , a Bitcoin private key recovery method that explo...