Git 3.0 dự kiến đổi thuật toán băm mặc định từ SHA-1 sang SHA-256. Một bài viết trên blog GitButler cảnh báo thay đổi này có thể khiến cả cộng đồng công nghệ tốn nhiều thời gian và công sức mà lợi ích thực tế rất ít.

Git dùng mã băm để làm gì?

Git hoạt động như một kho dữ liệu đánh địa chỉ theo nội dung. Mỗi tệp, thư mục hay commit đều được tính ra một mã băm, giống như vân tay riêng. Nội dung giống nhau luôn cho ra cùng một mã, nên Git không lưu trùng dữ liệu. Mỗi commit còn chứa mã của commit trước đó, vì vậy chỉ cần sửa một điểm là toàn bộ chuỗi phía sau đổi theo.

SHA-1 "bị phá" nghĩa là gì?

Từ năm 2005, Linus Torvalds chọn SHA-1 cho Git và nó hoạt động tốt suốt 20 năm. Các cuộc tấn công va chạm như SHAttered (2017) và SHA-1 is a Shambles (2020) cho thấy về lý thuyết có thể tạo hai nội dung khác nhau với cùng mã băm. Tuy nhiên chưa có cuộc tấn công nào thực sự gây hại, và tình cờ trùng mã gần như không thể xảy ra: cần khoảng 1,4 triệu tỷ tỷ tệp ngẫu nhiên trong một dự án.

Vì sao đáng lo?

Tác giả cho rằng cái giá phải trả là rất lớn: công cụ, dịch vụ lưu trữ mã nguồn và vô số kho mã hiện có đều phải thích nghi. Với các nhà phát triển, đó có thể là nhiều giờ làm việc bị lãng phí và những lỗi tương thích khó lường.