T

Text Machine

เครื่องมือข้อความทรงพลัง ในเบราว์เซอร์ของคุณ

รหัสโบฟอร์ต

เข้ารหัสและถอดรหัสโบฟอร์ต รหัสหลายอักษรที่อิงคำสำคัญซึ่งตั้งชื่อตามพลเรือเอกอังกฤษ Sir Francis Beaufort มันทำงานได้สองทาง: คำสำคัญเดียวกันทั้งเข้ารหัสและถอดรหัส จึงไม่มีโหมดถอดรหัสแยกต่างหาก ป้อนคำสำคัญแล้วดูการคำนวณก่อตัวขึ้นแบบสด ทุกอย่างทำงานในเบราว์เซอร์ของคุณ

โบฟอร์ตทำงานได้สองทาง: คำสำคัญเดียวกันทั้งเข้ารหัสและถอดรหัส ในการถอดรหัสข้อความ ให้วางข้อความเข้ารหัสและป้อนคำสำคัญเดียวกัน ผลลัพธ์ที่ได้คือข้อความต้นฉบับ ไม่มีปุ่มถอดรหัสแยกต่างหาก

คำสำคัญ

คำสำคัญ

คำสำคัญคือความลับที่ผู้ส่งและผู้รับมีร่วมกัน มันจะวนซ้ำตลอดทั้งข้อความ และตัวอักษรแต่ละตัวกำหนดว่าตำแหน่งนั้นถูกลบไปไกลเท่าใด ใช้เฉพาะตัวอักษรเท่านั้น ช่องว่าง ตัวเลข หรือเครื่องหมายวรรคตอนใด ๆ ในคำสำคัญจะถูกละเว้น

ข้อความ
ผลลัพธ์

ป้อนข้อความด้านบนเพื่อดูผลลัพธ์โบฟอร์ตที่นี่

วิธีใช้ รหัสโบฟอร์ต

  1. 1

    ป้อนคำสำคัญ

    พิมพ์คำสำคัญที่เป็นความลับร่วมกัน เช่น FORTIFICATION ใช้เฉพาะตัวอักษรของมันเท่านั้น ช่องว่าง ตัวเลข หรือเครื่องหมายวรรคตอนใด ๆ จะถูกละเว้น คำสำคัญเดียวกันถูกใช้ทั้งเข้ารหัสและถอดรหัส

  2. 2

    พิมพ์หรือวางข้อความของคุณ

    ป้อนข้อความที่คุณต้องการแปลง: ข้อความต้นฉบับเพื่อเข้ารหัส หรือข้อความเข้ารหัสโบฟอร์ตเพื่อถอดรหัส รหัสจะทำงานโดยอัตโนมัติขณะที่คุณพิมพ์ และการคำนวณทีละตัวอักษรจะอัปเดตแบบสดด้านล่าง

  3. 3

    อ่านผลลัพธ์แบบสองทาง

    เนื่องจากโบฟอร์ตทำงานได้สองทาง คำสำคัญเดียวกันจึงใช้ได้ทั้งสองทิศทาง ในการกู้คืนข้อความ ให้วางข้อความเข้ารหัสและป้อนคำสำคัญเดียวกันกับที่ใช้เข้ารหัสมัน ผลลัพธ์ที่ได้คือข้อความต้นฉบับ

  4. 4

    ดู คัดลอก และแชร์

    เปิดการคำนวณเพื่อดูว่าตัวอักษรแต่ละตัวถูกคำนวณอย่างไร แล้วคัดลอกผลลัพธ์ ดาวน์โหลดเป็นไฟล์ข้อความ หรือแชร์ลิงก์ที่จะเปิดเครื่องมือขึ้นมาใหม่พร้อมคำสำคัญและข้อความที่แน่นอนของคุณ

ทำความเข้าใจรหัสโบฟอร์ต

รหัสโบฟอร์ตคืออะไร

รหัสโบฟอร์ตเป็นรหัสแทนที่แบบหลายอักษรที่ตั้งชื่อตาม Sir Francis Beaufort พลเรือเอกแห่งราชนาวีอังกฤษซึ่งทุกวันนี้เป็นที่จดจำมากที่สุดจากมาตราวัดลมโบฟอร์ต มันมีความเกี่ยวข้องอย่างใกล้ชิดกับรหัส Vigenère: คำสำคัญที่วนซ้ำจะเลื่อนตัวอักษรแต่ละตัวของข้อความ ดังนั้นตัวอักษรต้นฉบับตัวเดียวกันจึงสามารถเข้ารหัสเป็นตัวอักษรเข้ารหัสได้หลายตัวต่างกันขึ้นอยู่กับตำแหน่งของมัน การกระจายตัวอักษรแต่ละตัวออกไปทั่วทั้งตัวอักษรนี่เองที่ทำให้รหัสหลายอักษรอ่านได้ยากกว่ารหัสเลื่อนแบบ Caesar ธรรมดามาก

สิ่งที่ทำให้โบฟอร์ตแตกต่างคือทิศทางของการคำนวณ แทนที่จะบวกกุญแจเข้ากับข้อความต้นฉบับอย่างที่ Vigenère ทำ โบฟอร์ตจะลบข้อความต้นฉบับออกจากกุญแจ การเปลี่ยนเพียงจุดเดียวนั้นให้คุณสมบัติที่มีประโยชน์ที่สุดแก่รหัสนี้: มันทำงานได้สองทาง หมายความว่าการดำเนินการเดียวกันทุกประการทั้งเข้ารหัสและถอดรหัส วิธีนี้ถูกพิมพ์ลงบนการ์ดใบเล็กที่ตีพิมพ์ไม่นานหลังจากโบฟอร์ตเสียชีวิตในปี 1857 และกฎสองทางเดียวกันนี้ภายหลังถูกสร้างเข้าไปในเครื่องโรเตอร์อย่าง Hagelin M-209 ที่ใช้กันในช่วงกลางศตวรรษที่ยี่สิบ

รหัสโบฟอร์ตทำงานอย่างไร

กำหนดหมายเลขตัวอักษรจาก A เป็น 0 ถึง Z เป็น 25 คำสำคัญจะถูกวนซ้ำมากเท่าที่จำเป็นเพื่อให้ตัวอักษรกุญแจหนึ่งตัววางเรียงอยู่ใต้ตัวอักษรทุกตัวของข้อความ สำหรับแต่ละตำแหน่ง คุณนำตัวอักษรกุญแจมาแล้วลบตัวอักษรข้อความต้นฉบับออกจากมัน แล้ววนผลลัพธ์รอบตัวอักษรด้วยเศษหารด้วย 26 เขียนเป็นสูตรได้ว่าตัวอักษรเข้ารหัสคือ C = (K − P) mod 26 เฉพาะตัวอักษรเท่านั้นที่ถูกแปลง ช่องว่าง ตัวเลข และเครื่องหมายวรรคตอนผ่านไปตรง ๆ และไม่กินตัวอักษรกุญแจ ดังนั้นคำสำคัญจึงยังคงเรียงตรงกับตัวอักษรที่สำคัญ

บนกระดาษ การคำนวณเดียวกันสามารถทำได้ด้วย tabula recta ตารางสี่เหลี่ยมของตัวอักษรที่เลื่อนทุกแบบ ในการเข้ารหัสตัวอักษรหนึ่งตัว คุณหาตัวอักษรข้อความต้นฉบับตามแถวบนสุด เลื่อนลงไปตามคอลัมน์นั้นจนถึงตัวอักษรคำสำคัญ แล้วอ่านตัวอักษรเข้ารหัสจากป้ายที่ปลายซ้ายสุดของแถวนั้น การค้นหานี้เป็นเพียงวิธีทางสายตาในการคำนวณการลบแบบเดียวกัน และมันคือสิ่งที่การคำนวณแบบสดด้านล่างเครื่องมือแสดงสำหรับตัวอักษรแต่ละตัวของข้อความคุณพอดี

ตัวอย่างประกอบ

เข้ารหัสข้อความ HELLO ด้วยคำสำคัญ KEY การวนซ้ำคำสำคัญให้ตัวอักษรกุญแจ K, E, Y, K, E เรียงอยู่ใต้ H, E, L, L, O การลบตัวอักษรข้อความต้นฉบับแต่ละตัวออกจากตัวอักษรกุญแจของมัน K ลบ H คือ 10 − 7 = 3 ซึ่งคือ D; E ลบ E คือ 0 ซึ่งคือ A; Y ลบ L คือ 24 − 11 = 13 ซึ่งคือ N; K ลบ L คือ 10 − 11 = −1 และเมื่อวนรอบได้ 25 ซึ่งคือ Z; สุดท้าย E ลบ O คือ 4 − 14 = −10 วนไปเป็น 16 ซึ่งคือ Q ข้อความเข้ารหัสคือ DANZQ

ตอนนี้ถอดรหัส DANZQ ด้วยคำสำคัญ KEY เดียวกันและการลบเดียวกัน K ลบ D คือ 10 − 3 = 7 ซึ่งคือ H; E ลบ A คือ 4 ซึ่งคือ E; Y ลบ N คือ 24 − 13 = 11 ซึ่งคือ L; K ลบ Z คือ 10 − 25 = −15 วนไปเป็น 11 ซึ่งคือ L; E ลบ Q คือ 4 − 16 = −12 วนไปเป็น 14 ซึ่งคือ O ผลลัพธ์คือ HELLO อีกครั้ง การดำเนินการที่เหมือนกันได้กู้คืนข้อความ ซึ่งเป็นจุดสำคัญทั้งหมดของรหัสโบฟอร์ต

ทำไมโบฟอร์ตจึงเป็นตัวผกผันของตัวมันเอง

คุณสมบัติสองทางตามมาจากสูตรโดยตรง การเข้ารหัสคำนวณ C = (K − P) mod 26 หากคุณป้อนข้อความเข้ารหัสนั้นกลับเข้าไปผ่านขั้นตอนเดียวกันด้วยกุญแจเดียวกัน คุณจะคำนวณ (K − C) mod 26 ซึ่งก็คือ (K − (K − P)) mod 26 ตัวอักษรกุญแจสองตัวตัดกันออก และคุณเหลือ P ข้อความต้นฉบับ เนื่องจากการลบในตัวอักษรแบบวงกลมนี้สมมาตรในลักษณะนั้น การเข้ารหัสสองครั้งจึงนำคุณกลับไปยังที่ที่คุณเริ่มต้น

นี่สะดวกอย่างแท้จริง ด้วย Vigenère คุณต้องจำว่าต้องบวกเมื่อเข้ารหัสและลบเมื่อถอดรหัส ดังนั้นสองทิศทางจึงใช้ขั้นตอนต่างกัน ด้วยโบฟอร์ตมีเพียงขั้นตอนเดียวที่ต้องเรียนรู้ และการตั้งค่าเครื่องเดียวหรือเครื่องมือเดียวสามารถใช้ได้ทั้งสองทิศทาง นั่นคือเหตุผลที่เครื่องมือนี้ไม่มีปุ่มถอดรหัสแยกต่างหาก: คุณเพียงป้อนคำสำคัญเดียวกันและวางข้อความใดก็ตามที่คุณต้องการแปลง

โบฟอร์ต Vigenère และโบฟอร์ตรูปแปร

การวางเรียงรหัสคำสำคัญที่เกี่ยวข้องกันอย่างใกล้ชิดทั้งสามแบบช่วยให้เข้าใจได้ดีขึ้น รหัส Vigenère บวก C = (P + K) mod 26 และต้องการการลบย้อนกลับเพื่อถอดรหัส รหัสโบฟอร์ตที่แท้จริงลบข้อความต้นฉบับออกจากกุญแจ C = (K − P) mod 26 และทำงานได้สองทาง ยังมีกฎที่สาม คือโบฟอร์ตรูปแปร ซึ่งบางครั้งเรียกว่าโบฟอร์ตเยอรมัน ที่ลบกุญแจออกจากข้อความต้นฉบับแทน C = (P − K) mod 26 รูปแปรนั้นคือขั้นตอนการถอดรหัส Vigenère ที่ถูกใช้เป็นการเข้ารหัสพอดี และไม่เหมือนกับโบฟอร์ตที่แท้จริง มันไม่ทำงานสองทาง ดังนั้นจึงต้องใช้การเข้ารหัส Vigenère เพื่อย้อนกลับมัน

เนื่องจากทั้งสามแบบใช้คำสำคัญที่วนซ้ำและ tabula recta ร่วมกัน จึงมักถูกสับสนกัน และข้อความที่เข้ารหัสด้วยแบบหนึ่งจะดูเป็นเรื่องไร้สาระภายใต้อีกแบบหนึ่ง เครื่องมือนี้ใช้โบฟอร์ตแบบสองทางคลาสสิก หากคุณต้องการกฎการบวกหรือรูปแปร เครื่องมือ Vigenère บน Text Machine ครอบคลุม Vigenère และโหมดที่เกี่ยวข้องของมัน

วิธีแกะรหัสโบฟอร์ต

โบฟอร์ตสืบทอดจุดแข็งและจุดอ่อนของรหัสหลายอักษรแบบกุญแจวนซ้ำใด ๆ การป้องกันของมันคือตัวอักษรข้อความต้นฉบับหนึ่งตัวจับคู่ไปยังตัวอักษรเข้ารหัสหลายตัวต่างกัน ซึ่งทำให้ยอดความถี่ตัวอักษรที่เห็นได้ชัดอันเป็นจุดที่เปิดเผยรหัสแทนที่แบบธรรมดาแบนราบลง จุดอ่อนของมันคือกุญแจวนซ้ำ เมื่อนักวิเคราะห์เดาความยาวของคำสำคัญได้ ข้อความเข้ารหัสจะแยกออกเป็นคอลัมน์ที่แต่ละคอลัมน์ถูกเข้ารหัสด้วยตัวอักษรกุญแจคงที่ตัวเดียว และทุกคอลัมน์กลายเป็นรหัสเลื่อนธรรมดาที่ยอมจำนนต่อการวิเคราะห์ความถี่

วิธีคลาสสิกในการหาความยาวกุญแจคือการตรวจสอบแบบ Kasiski ซึ่งมองหากลุ่มตัวอักษรที่ซ้ำกันและวัดระยะห่างระหว่างพวกมัน ร่วมกับดัชนีความบังเอิญ ซึ่งวัดว่าความถี่ตัวอักษรไม่สม่ำเสมอเพียงใด เมื่อทราบความยาวกุญแจแล้ว การกู้คืนตัวอักษรกุญแจแต่ละตัวก็รวดเร็ว การโจมตีทั้งหมดเป็นแบบเดียวกับที่แกะรหัส Vigenère ได้อย่างเลื่องลือ ดังนั้นข้อความโบฟอร์ตจึงแข็งแกร่งได้เพียงเท่าที่คำสำคัญของมันยาว คาดเดาไม่ได้ และใช้เพียงครั้งเดียว

รหัสโบฟอร์ตปลอดภัยหรือไม่

ไม่ ตามมาตรฐานสมัยใหม่ รหัสโบฟอร์ตไม่ให้ความปลอดภัยที่แท้จริง คำสำคัญที่สั้นหรือซ้ำจะถูกแกะอย่างรวดเร็วด้วยวิธี Kasiski และดัชนีความบังเอิญข้างต้น และแม้แต่คำสำคัญที่ยาวก็ไม่สามารถต้านทานนักวิเคราะห์ที่มุ่งมั่นพร้อมคอมพิวเตอร์ได้ มันอยู่ในยุคของรหัสมือและเครื่องเข้ารหัสยุคแรก ที่เสน่ห์ของมันคือกฎสองทางที่ชาญฉลาดและใช้ง่าย มากกว่าความแข็งแกร่งที่แกะไม่ได้

ทุกวันนี้รหัสโบฟอร์ตได้รับการยกย่องสำหรับการเรียนรู้และความบันเทิง มันเป็นวิธีที่ยอดเยี่ยมในการทำความเข้าใจการแทนที่แบบหลายอักษรและแนวคิดอันสง่างามของรหัสที่เป็นตัวผกผันของตัวเอง และมันปรากฏบ่อยครั้งในปริศนา ห้องหลบหนี และโจทย์แบบ capture-the-flag สำหรับการปกป้องข้อมูลจริง คุณควรพึ่งพาอัลกอริทึมสมัยใหม่ที่ผ่านการทดสอบมาอย่างดีเช่น AES แทน

คำถามที่พบบ่อย

รหัสโบฟอร์ตคืออะไร
รหัสโบฟอร์ตเป็นรหัสแทนที่แบบหลายอักษรที่ตั้งชื่อตามพลเรือเอกอังกฤษ Sir Francis Beaufort เช่นเดียวกับรหัส Vigenère มันเลื่อนตัวอักษรแต่ละตัวด้วยคำสำคัญที่วนซ้ำ แต่มันลบข้อความต้นฉบับออกจากกุญแจแทนที่จะบวก ซึ่งทำให้มันทำงานได้สองทาง: การดำเนินการเดียวกันทั้งเข้ารหัสและถอดรหัส
รหัสโบฟอร์ตทำงานอย่างไร
กำหนดหมายเลขตัวอักษรจาก A เป็น 0 ถึง Z เป็น 25 และวนซ้ำคำสำคัญตลอดทั้งข้อความ สำหรับแต่ละตัวอักษร ข้อความเข้ารหัสคือตัวอักษรกุญแจลบด้วยตัวอักษรข้อความต้นฉบับ คิดเป็นมอดุโล 26: C = (K − P) mod 26 เฉพาะตัวอักษรเท่านั้นที่ถูกเปลี่ยน ช่องว่าง ตัวเลข และเครื่องหมายวรรคตอนผ่านไปและไม่เลื่อนคำสำคัญ
รหัสโบฟอร์ตเหมือนกับรหัส Vigenère หรือไม่
ทั้งสองเป็นญาติสนิทแต่ไม่เหมือนกัน Vigenère บวกกุญแจเข้ากับข้อความต้นฉบับ C = (P + K) mod 26 และใช้ขั้นตอนต่างกันในการถอดรหัส โบฟอร์ตลบข้อความต้นฉบับออกจากกุญแจ C = (K − P) mod 26 และใช้ขั้นตอนเดียวสำหรับทั้งสองทิศทาง ข้อความที่เข้ารหัสด้วยแบบหนึ่งจะถอดรหัสไม่ถูกต้องภายใต้อีกแบบหนึ่ง
ทำไมรหัสโบฟอร์ตจึงทำงานได้สองทาง
การเข้ารหัสคำนวณ C = (K − P) mod 26 การนำข้อความเข้ารหัสกลับเข้าไปผ่านขั้นตอนเดียวกันให้ (K − C) mod 26 = (K − (K − P)) mod 26 ซึ่งลดรูปเป็น P ตัวอักษรต้นฉบับ เนื่องจากตัวอักษรกุญแจสองตัวตัดกันออก การใช้รหัสสองครั้งจึงคืนข้อความ ดังนั้นการดำเนินการเดียวจึงทั้งเข้ารหัสและถอดรหัส
ขอตัวอย่างรหัสโบฟอร์ตได้ไหม
การเข้ารหัส HELLO ด้วยคำสำคัญ KEY ให้ DANZQ ตัวอักษรกุญแจ K, E, Y, K, E เรียงอยู่ใต้ข้อความ และการลบตัวอักษรข้อความต้นฉบับแต่ละตัวออกจากตัวอักษรกุญแจของมันแบบมอดุโล 26 ให้ D, A, N, Z, Q การถอดรหัส DANZQ ด้วยคำสำคัญ KEY เดียวกันและการลบเดียวกันคืน HELLO
ฉันจะถอดรหัสโบฟอร์ตอย่างไร
ใช้คำสำคัญเดียวกันกับที่ใช้เข้ารหัส และวางข้อความเข้ารหัสลงในเครื่องมือ เนื่องจากโบฟอร์ตทำงานได้สองทาง จึงไม่มีโหมดถอดรหัสแยกต่างหาก: การป้อนคำสำคัญและข้อความเข้ารหัสจะให้ข้อความต้นฉบับโดยตรง หากคุณไม่ทราบคำสำคัญ คุณต้องกู้คืนมันด้วยการวิเคราะห์รหัสลับ
รหัสโบฟอร์ตรูปแปรคืออะไร
โบฟอร์ตรูปแปร ซึ่งบางครั้งเรียกว่าโบฟอร์ตเยอรมัน ลบกุญแจออกจากข้อความต้นฉบับแทน: C = (P − K) mod 26 นั่นคือขั้นตอนการถอดรหัส Vigenère ที่ถูกใช้เพื่อเข้ารหัส และไม่เหมือนกับโบฟอร์ตที่แท้จริง มันไม่ทำงานสองทาง ดังนั้นจึงต้องถูกย้อนกลับด้วยการเข้ารหัส Vigenère เครื่องมือนี้ใช้โบฟอร์ตแบบสองทางคลาสสิก
ฉันควรใช้คำสำคัญอะไร
คำหรือวลีใด ๆ ที่เป็นตัวอักษรใช้ได้ คำสำคัญที่ยาวกว่าและคาดเดาได้ยากกว่าจะแข็งแกร่งกว่า เพราะความปลอดภัยของรหัสขึ้นอยู่กับคำสำคัญที่ยาว เดายาก และไม่เคยใช้ซ้ำ คำสำคัญที่สั้นหรือพบบ่อยจะถูกแกะอย่างรวดเร็ว ช่องว่าง ตัวเลข และเครื่องหมายวรรคตอนในคำสำคัญจะถูกละเว้น ดังนั้นจึงมีเพียงตัวอักษรของมันที่สำคัญ
รหัสโบฟอร์ตเปลี่ยนช่องว่างและเครื่องหมายวรรคตอนหรือไม่
ไม่ เฉพาะตัวอักษร 26 ตัวเท่านั้นที่ถูกเข้ารหัส ช่องว่าง ตัวเลข และเครื่องหมายวรรคตอนผ่านไปโดยไม่เปลี่ยนแปลง และพวกมันไม่กินตัวอักษรคำสำคัญ ดังนั้นคำสำคัญจึงยังคงเรียงตรงกับตัวอักษรที่มันแปลง ตัวพิมพ์ใหญ่เล็กของตัวอักษรถูกรักษาไว้ในผลลัพธ์ ดังนั้นผลลัพธ์จึงคงรูปทรงของข้อความต้นฉบับของคุณ
คุณแกะรหัสโบฟอร์ตอย่างไร
โบฟอร์ตเป็นรหัสแบบกุญแจวนซ้ำ ดังนั้นการโจมตีจึงเป็นแบบเดียวกับที่แกะ Vigenère ก่อนอื่นหาความยาวกุญแจด้วยการตรวจสอบแบบ Kasiski และดัชนีความบังเอิญ แล้วแยกข้อความเข้ารหัสออกเป็นคอลัมน์ที่ใช้ตัวอักษรกุญแจหนึ่งตัวร่วมกัน และแก้แต่ละคอลัมน์เป็นรหัสเลื่อนธรรมดาด้วยการวิเคราะห์ความถี่ คำสำคัญที่สั้นหรือใช้ซ้ำจะถูกแกะอย่างรวดเร็ว
รหัสโบฟอร์ตปลอดภัยหรือไม่
ไม่ ตามมาตรฐานสมัยใหม่ มันไม่ให้ความปลอดภัยที่แท้จริง: คำสำคัญที่วนซ้ำจะยอมจำนนต่อการวิเคราะห์รหัสลับแบบคลาสสิก และแม้แต่คำสำคัญที่ยาวก็ไม่สามารถต้านทานคอมพิวเตอร์ได้ ควรปฏิบัติต่อมันในฐานะรหัสเพื่อการศึกษาและปริศนา และเป็นชิ้นส่วนหนึ่งของประวัติศาสตร์การเข้ารหัส สำหรับการปกป้องที่แท้จริง ให้ใช้อัลกอริทึมสมัยใหม่เช่น AES แทน
ข้อความของฉันถูกอัปโหลดไปยังเซิร์ฟเวอร์หรือไม่
ไม่ การเข้ารหัสและถอดรหัสทั้งหมดเกิดขึ้นภายในเบราว์เซอร์ของคุณทั้งหมด ข้อความและคำสำคัญของคุณจึงไม่เคยถูกอัปโหลด บันทึก หรือจัดเก็บ แม้แต่ลิงก์สำหรับแชร์ก็ยังเก็บข้อมูลของคุณไว้ในส่วนของ URL ที่อยู่หลังเครื่องหมายแฮช ซึ่งเบราว์เซอร์จะไม่ส่งไปยังเซิร์ฟเวอร์ ดังนั้นมันจึงยังคงเป็นส่วนตัวจนกว่าคุณจะเลือกแชร์

เครื่องมือที่เกี่ยวข้อง

ทำงานต่อด้วยเครื่องมือที่มีประโยชน์เหล่านี้

รหัสปอร์ตา

รหัสลับวีฌ์แนร์

รหัสกรอนส์เฟลด์

รหัสทริเทเมียส

รหัสออโตคีย์

รหัสรันนิงคีย์