ในการเข้ารหัสคีย์สาธารณะลายนิ้วมือกุญแจสาธารณะนั้นเป็นลำดับไบต์สั้น ๆ ที่ใช้เพื่อระบุคีย์สาธารณะที่ยาวขึ้น
โดยเฉพาะใน SSH พวกเขาสามารถใช้เพื่อตรวจสอบว่าเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์ที่ฉันคาดหวังว่าจะสื่อสารด้วยและฉันไม่ได้ตกเป็นเป้าหมายของการโจมตีจากคนกลาง
พวกเขามักจะแสดงเป็นสตริงของตัวเลขฐานสิบหกดังนั้นจึงค่อนข้างน่าเบื่อและน่าเบื่อเมื่อเปรียบเทียบกับลายนิ้วมือที่ฉันคาดหวัง:
37:e4:6a:2d:48:38:1a:0a:f3:72:6d:d9:17:6b:bd:5e
เพื่อให้ง่ายขึ้นเล็กน้อย OpenSSH ได้แนะนำวิธีการแสดงลายนิ้วมือเป็นศิลปะ ASCII ซึ่งจะมีลักษณะดังนี้:
+-----------------+
| |
| |
| . |
| . o |
|o . o . S + |
|.+ + = . B . |
|o + + o B o E |
| o . + . o |
| .o |
+-----------------+
ด้วยสิ่งนี้ฉันสามารถลองจดจำรูปทรงคร่าวๆของ ASCII art และจากนั้น (ในทางทฤษฎี) จะจดจำเมื่อลายนิ้วมือของเซิร์ฟเวอร์เปลี่ยนไปและภาพจะดูแตกต่างกัน
มันทำงานอย่างไร
นำมาจากDirk Loss, Tobias Limmer, Alexander von Gernler 2009 บิชอปเมา: การวิเคราะห์ OpenSSH ขั้นตอนวิธีการสร้างภาพลายนิ้วมือ
ตารางมีความกว้าง 17 ตัวอักษรและความสูง 9 ตัว "อธิการ" เริ่มต้นที่แถว 4 / คอลัมน์ 8 (ตรงกลาง) แต่ละตำแหน่งสามารถแสดงเป็น [x, y], [8,4] สำหรับตำแหน่งเริ่มต้นของอธิการ
1111111
01234567890123456
+-----------------+
0| |
1| |
2| |
3| |
4| S |
5| |
6| |
7| |
8| |
+-----------------+
อธิการใช้ลายนิ้วมือเพื่อเลื่อนดู มันอ่านมัน byte-wise จากซ้ายไปขวาและจากบิตที่สำคัญน้อยที่สุดไปยังบิตที่สำคัญที่สุด:
Fingerprint 37 : e4 : 6a : ... : 5e
Bits 00 11 01 11 : 11 10 01 00 : 01 10 10 10 : ... : 01 01 11 10
| | | | | | | | | | | | | | | |
Step 4 3 2 1 8 7 6 5 12 11 10 9 64 63 62 61
อธิการจะดำเนินตามแผนต่อไปนี้:
Bits Direction
-----------------
00 Up/Left
01 Up/Right
10 Down/Left
11 Down/Right
กรณีพิเศษ:
- ถ้าอธิการอยู่ในมุมหนึ่งและจะย้ายไปที่มุมอีกครั้งเขาจะไม่ย้ายเลย เช่น: บิชอปที่และขั้นตอนต่อไปของเขาจะ
[0,0]
00
เขายังคงอยู่ที่[0,0]
- หากอธิการอยู่ในมุมหนึ่งหรือที่กำแพงและจะย้ายไปที่ผนังด้านใดด้านหนึ่งเขาจะเคลื่อนที่ในแนวนอนหรือแนวตั้งเท่านั้น เช่น: บิชอปที่และขั้นตอนต่อไปของเขาจะ
[0,5]
เขาไม่สามารถไปทางซ้ายเพื่อให้เขาเพียงแค่เลื่อนขึ้นไป01
[0,4]
แต่ละตำแหน่งมีคุณค่าว่าอธิการเยี่ยมชมสาขานี้บ่อยเพียงใด:
Value | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12| 13| 14| 15| 16|
Character | | . | o | + | = | * | B | O | X | @ | % | & | # | / | ^ | S | E |
ค่า 15 (S) และ 16 (E) เป็นสิ่งพิเศษที่ทำเครื่องหมายตำแหน่งเริ่มต้นและจุดสิ้นสุดของอธิการตามลำดับและเขียนทับมูลค่าที่แท้จริงของตำแหน่งที่เคารพ
เป้าหมาย
สร้างโปรแกรมที่ใช้ลายนิ้วมือตัวอักษรและตัวเลขเป็นอินพุตและสร้าง ASCII art art ดังแสดงในตัวอย่าง
ตัวอย่าง
Input:
16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
Output:
+-----------------+
| . |
| + . |
| . B . |
| o * + |
| X * S |
| + O o . . |
| . E . o |
| . . o |
| . . |
+-----------------+
Input:
b6:dd:b7:1f:bc:25:31:d3:12:f4:92:1c:0b:93:5f:4b
Output:
+-----------------+
| o.o |
| .= E.|
| .B.o|
| .= |
| S = .|
| . o . .= |
| . . . oo.|
| . o+|
| .o.|
+-----------------+
Input:
05:1e:1e:c1:ac:b9:d1:1c:6a:60:ce:0f:77:6c:78:47
Output:
+-----------------+
| o=. |
| o o++E |
| + . Ooo. |
| + O B.. |
| = *S. |
| o |
| |
| |
| |
+-----------------+
กฎระเบียบ
33:33:33:...:33
, cc:cc:cc:...:cc
จะเป็นตัวอย่างสำหรับการนี้ ลายนิ้วมือมักจะเป็นกัญชา MD5 ดังนั้นจึงไม่น่าเป็นไปได้อย่างที่คุณจะได้รับผลลัพธ์ ฉันไม่พบแหล่งข้อมูลที่น่าเชื่อถือเกี่ยวกับวิธีจัดการกับสิ่งเหล่านี้ดังนั้นในตอนนี้ฉันจะบอกว่า: สมมติว่าไม่มีเซลล์ใดถูกเยี่ยมชมมากกว่า 14 ครั้ง