uni2u / difs-cxx

DIFS ndn-cxx
Other
1 stars 3 forks source link

hashchain hash값 검사시 문제가 발생할 수도 있을 것 같은 부분. #20

Open sungho-gurumnet opened 2 years ago

sungho-gurumnet commented 2 years ago

아까 회의시 문제 있을 수 있을것 같다고 말씀드렸던 부분 이슈로 남겨 놓습니다. https://github.com/uni2u/difs-cxx/blob/signatureinfo_nexthash/ndn-cxx/util/hc-segment-fetcher.cpp

    if (segment != 0) {
      if (segment - 1 == before_segment) {
        NDN_LOG_DEBUG("Ordered data segment");
        if(before_signature != nullptr && memcmp((void*)data.getSignatureValue().value(), (void*)before_signature->value(), data.getSignatureValue().value_size())) {
          NDN_LOG_DEBUG("Wrong hash key");
          onError(HASHCHAIN_ERROR, "Failure hash key error");
        } else {
          NDN_LOG_DEBUG("Correct hash key");
          success_count++;
          afterSegmentValidated(data);
        }
      } else {
        NDN_LOG_DEBUG("Disordered data segment");
        afterSegmentValidated(data);
      }
    } else {
      NDN_LOG_DEBUG("First segment data");
      success_count++;
      afterSegmentValidated(data);
    }

hashchain검증시 hash 값을 data.getSignatureValue().value_size() 만큼 검사할 경우, 다음 블록의 data의 signatureValue의 길이를 0으로 보낼 경우 hashchain이 깨졌음에도 통과되지 않을까 합니다.

=> 실제로는 validator에서 sha256 검사시 걸리기에 문제가 발생 안 할수도 있을 것 같습니다.