2010-08-27 35 views
8

Tôi cần tạo vân tay cho khóa RSA mà người dùng có thể ghi nhớ hoặc ít nhất là dễ dàng nhận ra. Các ý tưởng sau đây đã đến với tâm trí:Dễ nhớ dấu vân tay cho dữ liệu?

  • Chia phần băm SHA1 thành các phần, giả sử 4 bit và sử dụng chúng làm tọa độ cho đường cong Bezier. Vẽ splines và sử dụng hình ảnh đó như một dấu vân tay.
  • Sử dụng hàm băm SHA1 làm đầu vào cho một số thuật toán fractal. Kết quả sẽ cần phải là duy nhất cho một đầu vào nhất định, tức là đầu ra không thể là một hình vuông vững chắc một nửa thời gian.
  • Ánh xạ hàm băm SHA1 cho các mục nhập trong danh sách từ (như được sử dụng trong trình kiểm tra chính tả hoặc danh sách mật khẩu). Điều này sẽ tạo ra một cụm từ mật khẩu bao gồm các từ thực.
  • Thay vì một danh sách từ, sử dụng một số dữ liệu lớn khác được thành lập như bản đồ của Google (bản đồ băm SHA1 để lập bản đồ tọa độ và sử dụng các khu vực bản đồ (s) như là một dấu vân tay)

Bất cứ ý tưởng khác? Tôi chắc chắn điều này đã được thực hiện trong một hình thức này hay cách khác.

Trả lời

5

OpenSSH chứa nội dung như vậy, dưới tên "khóa máy chủ trực quan". Hãy thử điều này:

ssh -o VisualHostKey=yes somesshhost 

trong đó somesshhost là một số máy có máy chủ SSH đang chạy. Nó sẽ in ra một "dấu vân tay" của chính máy chủ, cả trong hệ thập lục phân, và như một hình ảnh ASCII nghệ thuật mà có thể trông như thế này:

+--[ RSA 2048]----+ 
| .+   | 
| + o   | 
| o o +   | 
| + o +   | 
| . o E S  | 
| + * .   | 
| X o .  | 
| . * o   | 
| .o .   | 
+-----------------+ 

Hoặc như thế này:

+--[ RSA 1024]----+ 
|  .*BB+ | 
|  . .++o | 
|  = oo. | 
|  . =o+.. | 
|  So+.. | 
|  ..E.  | 
|     | 
|     | 
|     | 
+-----------------+ 

Rõ ràng, điều này được lấy cảm hứng từ các kỹ thuật được mô tả trong this article. OpenSSH là mã nguồn mở, với một giấy phép giống như BSD, vì vậy rất có thể là bạn chỉ có thể sử dụng lại mã của họ (có vẻ như trong tệp key.c, hàm key_fingerprint_randomart()).

+0

Điều này đáng xem xét nếu bạn bị giới hạn ở đầu ra ASCII. – ApplesOranges

0

Tôi tìm thấy thứ được gọi là nghệ thuật ngẫu nhiên tạo hình ảnh từ băm. Có một thực hiện Python sẵn để tải về: http://www.random-art.org/about/

Ngoài ra còn có một bài báo về việc sử dụng nghệ thuật ngẫu nhiên để xác thực: http://sparrow.ece.cmu.edu/~adrian/projects/validation/validation.pdf

Đó là từ năm 1999; Tôi không biết nếu nghiên cứu thêm đã được thực hiện về điều này.

0

Đề xuất đầu tiên của bạn (vẽ đường dẫn của các đường thẳng cho mỗi bốn byte, sau đó điền bằng cách sử dụng nonzero fill rule) là chính xác những gì tôi sử dụng để hiển thị trong hashblot.

2

Đối với mục 3 (mục trong một danh sách từ), xem RFC-1751 - ước Một Nhân-Readable 128-bit Phím, mà nhấn mạnh rằng

Các tác giả của S/Key phát minh ra một hệ thống để làm cho mật khẩu 64 bit một lần dễ dàng cho mọi người vào.

Ý tưởng của họ là chuyển đổi mật khẩu thành một chuỗi nhỏ từ tiếng Anh. Từ tiếng Anh là dễ dàng hơn đáng kể cho mọi người để cả hai nhớ và gõ. Các tác giả của S/Key đã bắt đầu với một từ điển của 2048 từ tiếng Anh, có chiều dài từ một đến bốn ký tự . Không gian được bao phủ bởi khóa 64 bit (2^64) có thể được che phủ bằng sáu từ trong từ điển này (2^66) với số còn lại cho chẵn lẻ. Ví dụ, một S/khóa one-time password của giá trị hex:

EB33 F77E E73D 4053 

sẽ trở thành sáu chữ tiếng Anh như sau:

TIDE ITCH SLOW REIN RULE MOT 

Bạn cũng có thể sử dụng một dấu vân tay hợp chất để cải thiện sự ghi nhớ, giống như các từ tiếng Anh được theo sau (hoặc được đặt trước) bởi một hoặc nhiều hình ảnh phụ thuộc vào khóa.

Để tạo hình ảnh, bạn có thể sử dụng những thứ như Identicon, Wavatar, MonsterID hoặc RoboHash.

Ví dụ:

enter image description here enter image description here

enter image description here enter image description here

TIDE BỆNH NGỨA CHẬM

Rein Quy tắc GTVT

Các vấn đề liên quan