Điểm:1

cryTrezor One và Trezor T đang sử dụng thuật toán nào để ký tin nhắn?

lá cờ in

Kiến thức về mật mã của tôi còn rất nông cạn và tôi có một vấn đề không thể giải quyết được.

Ví Trezor có hai định dạng ký tin nhắn: "Trezor" và "Electrum".

Tôi có một phương thức trong mã của mình, đó là truy xuất khóa chung từ các tin nhắn được ký bằng ví BTC (tôi đang sử dụng bitcoinj thư viện):

public VerificationStatus verifyMessage(Chuỗi địa chỉ ví, Cụm từ chuỗi, Chữ ký chuỗi) {
    Ký địa chỉAddress = null;
    Địa chỉ addressFromKey = null;
    cố gắng {
        signAddress = Address.fromString(null, walletAddress);
        ECKey ecKey = ECKey.signedMessageToKey(cụm từ, chữ ký);
        addressFromKey = Address.fromKey(signingAddress.getParameters(), ecKey, signAddress.getOutputScriptType());
    } bắt (ngoại lệ SignatureException) {
        LOGGER.error(ngoại lệ.getMessage());
    }
    trả lại xác địnhVerificationStatus(signingAddress, addressFromKey);
}

Khi tôi ký một tin nhắn bằng ví Electrum hoặc Trezor với tùy chọn định dạng "Electrum" được chọn, mọi thứ đều hoạt động tốt.

Dữ liệu ví dụ cho tin nhắn đã ký Electrum:

địa chỉ: bc1qpluptcvxpvyzsmqzy8jrmdt3m985t6z95s24nu
tin nhắn: TIN NHẮN
chữ ký: H41bIfNhn1vT5yzgFUA3rZE7FNCM8epMrINVbzOefOImYs42hEIUHuoY/UkMd9ljjYkaci7fVJgCTUE6hPJN3Cg=

Nhưng khi tôi cố gắng sử dụng định dạng "Trezor", chữ ký có vẻ khác:

địa chỉ: bc1qpluptcvxpvyzsmqzy8jrmdt3m985t6z95s24nu
tin nhắn: TIN NHẮN
chữ ký: J41bIfNhn1vT5yzgFUA3rZE7FNCM8epMrINVbzOefOImYs42hEIUHuoY/UkMd9ljjYkaci7fVJgCTUE6hPJN3Cg=

tôi nhận được một Chữ kýNgoại lệ ném bởi ECKey.signedMessageToKey(cụm từ, chữ ký);, với một thông báo ngoại lệ:

Byte tiêu đề nằm ngoài phạm vi: 40

Như tôi đã đề cập ở phần đầu của câu hỏi này: kiến ​​thức của tôi về mật mã hầu như không tồn tại, nhưng theo những gì tôi nghi ngờ - Trezor đang ký tin nhắn bằng một thứ khác, một thuật toán khác và điều này gây ra ECKey.signedMessageToKey() phương thức đưa ra một ngoại lệ cho biết byte tiêu đề nằm ngoài phạm vi

Câu hỏi của tôi là - Trezor tạo chữ ký bằng cách sử dụng cái gọi là "Định dạng Trezor" như thế nào và làm cách nào tôi có thể giải quyết vấn đề này theo chương trình?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.