การใช้วิธีการเข้ารหัสแบบอสมมาตร (Asymmetric Key Cryptography) ที่จำเป็นต้องมีการแจกจ่าย Public Key ไปยังผู้ร่วมสื่อสารทุกๆ รายนั้นมีจุดอ่อนจากการโจมตีแบบ MITM : Man In The Middle โดยแฮกเกอร์จะทำตัวเป็นผู้อยู่ตรงกลายของการสื่อสารแล้วรอจังหวะที่ผู้สื่อสารมีการรับส่งและแลกเปลี่ยน Key กัน โดยแฮกเกอร์จะส่ง Public Key ของแฮกเกอร์เองไปยังผู้รับ ดังนั้นแฮกเกอร์จึงสามารถที่จะปลอมแปลงข้อมูลได้โดยใช้ Private Key ของตนเองในการทำ Digital Signatures ทำให้ผู้รับหลงเชื่อคิดว่าข้อมูลนั้นถูกส่งมายังผู้ส่งจริง หรือบางครั้งแฮกเกอร์ก็ปลอมแปลงทั้ง Private Key และ Public Key ตัวอย่างของการโจมตี Asymmetric Key Cryptography โดยใช้วิธี MITM ที่เห็นได้บ่อยคือ การถอดรหัสข้อมูลที่ส่งทาง https (เช่น รหัสผ่านของ hotmail, Gmail และเว็บไซต์ e-commerce อื่นๆ) ด้วยโปรแกรมในชุดของ BackTrack หรือใช้โปรแกรม Cain โดยแฮกเกอร์จะดักรอขั้นตอนการส่ง Public Key ผ่านทาง http เมื่อ Public Key ของเว็บไซต์ (เช่น hotmail) ถูกส่งมาถึงแฮกเกอร์ เขาจะสร้าง Private Key และ Public Key ของตนเองขึ้นมา แล้วส่ง Public Key ไปให้เหยื่อ เมื่อเหยื่อต้องการส่งข้อมูลมายังเว็บไซต์ก็จะเข้ารหัสด้วย Public Key ของเว็บไซต์เพื่อให้เว็บไซต์ถอดได้แต่เพียงผู้เดียว แต่ Public Key นั้นแท้ที่จริงเป็น Public Key ของแฮกเกอร์ จึงทำให้แฮกเกอร์ถอดรหัสได้และได้ข้อมูลที่สำคัญ (เช่น รหัสผ่านหรือ Session Key ของโปรโตคอล https) แฮกเกอร์ที่มี Public Key ของเว็บไซต์อยู่แล้วก็จะเอาข้อมูลนั้นมาดำเนินการเข้ารหัสด้วย Public Key จริงของเว็บไซต์ และส่งให้เว็บเซิร์ฟเวอร์ต่อ เพื่อให้การสื่อสารครบวงจรเพื่อที่เหยื่อได้ไม่รู้สึกถึงความผิดปกติ
เพื่อแก้ปัญหาที่ผู้รับไม่สามารถตรวจสอบได้ว่า Public Key ที่ตนเองได้รับนั้นเป็นของผู้ส่งจริงหรือไม่ จึงได้มีการพัฒนาโครงสร้างพื้นฐานของ Asymmetric Key Cryptography ให้ปลอดภัยขึ้น เรียกว่า Public Key Infrastructure (PKI) โดยกำหนดให้มีหน่วยงานกลางเป็นผู้รับรอง Public Key ของแต่ละคน/เว็บไซต์/เซิร์ฟเวอร์ หน่วยงานกลางดังกล่าวมีชื่อเรียกว่า CA (Certificate Authority) โดย CA จะได้รับการรับรองโดย Root CA อีกครั้งหนึ่ง ผู้รับส่งข้อมูลทุกรายจะต้องมี Public Key ของ Root CA ติดตั้งไว้บนระบบ เช่น บน Windows XP ก็จะมี Public Key ของ Root CA ทุกราย ซึ่งเราสามารถเปิดดู Public Key ของ Root CA ได้โดยใช้ Internet Explorer (เมนู Tools > Internet Options > Content > Certificates > Trusted Root Certification Authority) CA จะนำ Public Key ของผู้ส่ง (หรือผู้ใช้/เว็บไซต์ ที่ขอให้ CA รับรอง) มารับรองด้วย Digital Signatures ของ CA (นำข้อมูลที่สำคัญ เช่น Public Key และชื่อเว็บไซต์ของผู้ส่งมาแฮช แล้วเข้ารหัสด้วย Private Key ของ CA (นำข้อมูลที่สำคัญ เช่น Public Key กลายเป็น Digital Signatures) แล้วนำข้อมูลต้นฉบับ (Public Key และชื่อเว็บไซต์) มาผนวกเข้ากับ Digital Signatures ดังกล่าว กลายเป็นสิ่งที่เรียกว่า Certificate
รูปที่ 3 ลำดับชั้นของ Certificate Authority: CA
ตัวอย่างเช่น Public Key ของเว็บไซต์ www.google.com ได้รับการรับรองโดย CA ชื่อ Thawte SGC ซึ่ง Thawte SGC ทำการรับรองโดยใช้ Certificate (มี Digital Signatures ที่รับรองโดย CA และมีข้อมูล Public Key และชื่อของเว็บไซต์ www.google.com อยู่ภายใน) ส่วน Thawte SGC ก็ถูกรับรองด้วย Certificate ที่ออกโดย Root CA ชื่อ VeriSign อีกทอดหนึ่งโดยใช้กลไกแบบเดียวกันกับที่ Thawte SGC รับรอง www.google.com
บราวเซอร์สามารถใช้ Public Key ของ VeriSign (Root CA) ที่มีอยู่บน Windows ถอดรหัสทำให้แน่ใจได้ว่า Public Key ของ Thawte SGC เป็นของจริง และมั่นใจได้ว่า Public Key ของ www.google.com เป็นของจริงได้โดยใช้วิธีการในทำนองเดียวกัน
รูปที่ 4 Certificate ของ www.google.co.th