亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

對等計算實踐:P2P遇上SSL

2019-11-18 12:18:35
字體:
來源:轉載
供稿:網友

  對任何重要的 P2P 應用程序而言,對等機之間的安全通信都是一個核心要求。盡管安全的細節依靠于如何使用該應用程序和該應用程序將要保護什么,但通過使用現有技術,例如 SSL 實現強壯的、一般用途的安全通常是可能的。本月,Todd Sundsted 演示如何在 P2P 安全中使用 SSL(通過 JSSE)。
  上月我們考察了 p2p 應用程序中的信任角色。信任的等級是衡量我們確信程度的尺度,即我們正與之通信的人是否是我們以為的那個人,以及我們正訪問的資源是否是我們以為的那些。我們也研究了用于在所有分布式應用程序,包括 p2p 應用程序中建立信任的三個構件:認證、授權和加密。
  
  現在我們將通過修改我們的簡單 p2p 應用程序把上個月的課程應用到實踐中。非凡地,我們將用 X.509 證書擴展該應用以支持 P2P 認證和加密。我們將在將來的文章中處理授權問題。
  
  安全認證
  一個應用程序的安全需求在很大程度上依靠于將如何使用該應用程序和該應用程序將要保護什么。不過,用現有技術實現強大的、一般用途的安全通常是可能的。認證就是一個很好的示例。
  
  當顧客想從 Web 站點購買某個產品時,顧客和 Web 站點都要進行認證。顧客通常是以提供名字和密碼的方式來認證他自己。另一方面,Web 站點通過交換一塊簽名數據和一個有效的 X.509 證書(作為 SSL 握手的一部分)來認證它自己。顧客的瀏覽器驗證該證書并用所附的公用密鑰驗證簽名數據。一旦雙方都認證了,則交易就可以開始了。
  
  SSL 能用相同的機制處理服務器認證(就如在上面的示例中)和客戶機認證。Web 站點典型地對客戶機認證不依靠 SSL ? 要求用戶提供密碼是較輕易的。而 SSL 客戶機和服務器認證對于透明認證是完美的,對等機 ? 如 p2p 應用程序中的對等機之間一定會發生透明認證。
  
  安全套接字層(Secure Sockets Layer(SSL))
  SSL 是一種安全協議,它為網絡(例如因特網)的通信提供私密性。SSL 使應用程序在通信時不用擔心被竊聽和篡改。
  
  SSL 實際上是共同工作的兩個協議:“SSL 記錄協議”(SSL Record PRotocol)和“SSL 握手協議”(SSL Handshake Protocol)?!癝SL 記錄協議”是兩個協議中較低級別的協議,它為較高級別的協議,例如 SSL 握手協議對數據的變長的記錄進行加密和解密。SSL 握手協議處理應用程序憑證的交換和驗證。
  
  當一個應用程序(客戶機)想和另一個應用程序(服務器)通信時,客戶機打開一個與服務器相連接的套接字連接。然后,客戶機和服務器對安全連接進行協商。作為協商的一部分,服務器向客戶機作自我認證??蛻魴C可以選擇向服務器作或不作自我認證。一旦完成了認證并且建立了安全連接,則兩個應用程序就可以安全地進行通信。請參閱參考資料以獲得更多有關 SSL 的信息。
  
  按照慣例,我將把發起該通信的對等機看作客戶機,另一個對等機則看作服務器,不管連接之后它們充當什么角色。
  
  java 應用程序如何使用 SSL
  用于 Java 應用程序的 SSL 由“Java 安全套接字擴展”(Java Secure Socket Extension(JSSE))提供。JSSE 是最近發布的 JDK 1.4 Beta 測試版的一個標準部件,但對早些版本的 Java 平臺它是作為一個擴展可用的。
  
  JSSE 用 SSL 作它的安全套接字的底層機制。JSSE 安全套接字除了支持透明認證和加密之外,其工作方式與常規套接字相似。因為它們看起來也與普通套接字(它們是類 java.net.Socket 和類 java.net.ServerSocket 的子類)相似,所以使用 JSSE 的多數代碼不用修改。受到影響最多的代碼是那些處理安全套接字工廠(secure socket factory)的創建和初始化的代碼。
  
  假如您想在早于版本 1.4 的 Java 平臺中使用 JSSE,那么您將不得不自己去下載并安裝 JSSE 擴展(請參閱參考資料)。安裝說明非常簡單,所以我不想在這里重復。
  
  名為 A 和 B 的兩臺對等機想安全地進行通信。 在我們簡單的 p2p 應用程序的環境中,對等機 A 想查詢對等機 B 上的一個資源。
  
  每個對等機都有包含其專用密鑰的一個數據庫(名為 keystore)和包含其公用密鑰的證書。密碼保護數據庫的內容。該數據庫還包含一個或多個來自被信任的對等機的自簽名證書。
  
  對等機 A 發起這項事務,每臺對等機相互認證,兩臺對等機協商采用的密碼及其長度并建立一個安全通道。完成這些操作之后,每個對等機都知道它正在跟誰交談并且知道通道是安全的。
  
  初始化
  因為 JSSE 和 SSL 的介紹對初始化代碼有很大影響,所以讓我們來考察對等機 A 中負責初始化的代碼。
  
  清單 1. 安全初始化代碼
  // Each peer has an identity that must be locally (but not globally)
  // unique. This identity and its associated public and private keys
  // are stored in a keystore and protected by a passWord. Each
  // peer also has a name that must be globally unique.
  String stringIdentity = null;
  String stringPassword = null;
  String stringName = null;
  
  // The code that prompts the user for his/her identity
  // and password goes here. the user´s name is
  // generated (if necessary) later.
  
  // Create home Directory. This is a very portable way
  // to create a home directory, but it has its problems --
  // the various flavors of Microsoft Windows put the directory
  // in widely different locations in the directory hierarchy.
  String stringHome = System.getProperty("user.home") + File.separator + "p2p";
  File fileHome = new File(stringHome);
  if (fileHome.exists() == false)
  fileHome.mkdirs();
  
  // Create keystore. We must run an external process to create the
  // keystore, because the security APIs don´t eXPose enough
  // functionality to do this inline. I haven´t tested this widely enough
  // to know how portable this code is, but it works on everything I
  // tried it on.
  String stringKeyStore = stringHome + File.separator + "keystore";
  File fileKeyStore = new File(stringKeyStore);
  if (fileKeyStore.exists() == false)
  {
  System.out.println("Creating keystore...");
  byte [] arb = new byte [16];
  SecureRandom securerandom = SecureRandom.getInstance("SHA1PRNG");
  securerandom.nextBytes(arb);
  stringName = new String(Base64.encode(arb));
  String [] arstringCommand = new String []
  {
  System.getProperty("java.home") + File.separator + "bin" + File.separator + "keytool",
  "-genkey",
  "-alias", stringIdentity,
  "-keyalg", "RSA",
  "-keysize", "1024",
  "-dname", "CN=" + stringName,
  "-keystore", stringHome + File.separator + "keystore",
  "-keypass", stringPassword,
  "-storetype", "JCEKS",
  "-storepass", stringPassword
  };
  Process process = Runtime.getRuntime().exec(arstringCommand);
  process.waitFor();
  InputStream inputstream2 = process.getInputStream();
  IOUtils.copy(inputstream2, System.out);
  InputStream inputstream3 = process.getErrorStream();
  IOUtils.copy(inputstream3, System.out);
  if (process.exitvalue() != 0)
  System.exit(-1);
  }
  
  // Once the application has created/located the keystore, it
  // opens it and creates a KeyStore instance from the data
  // in it.
  char [] archPassword = stringPassword.toCharArray();
  FileInputStream fileinputstream = new FileInputStream(stringHome + File.separator +
  
  "keystore");
  KeyStore keystore = KeyStore.getInstance("JCEKS");
  try
  {
  keystore.load(fileinputstream, archPassword);
  }
  catch (IOException ioexception)
  {
  System.out.println("Cannot load keystore. Password may be wrong.");
  System.exit(-3);
  }
  if (keystore.containsAlias(stringIdentity) == false)
  {
  System.out.println("Cannot locate identity.");
  System.exit(-2);
  }
  
  // Create key manager. The key manager holds this peer´s
  // private key.
  KeyManagerFactory keymanagerfactory = KeyManagerFactory.getInstance("SunX509");
  keymanagerfactory.init(keystore, archPassword);
  KeyManager [] arkeymanager = keymanagerfactory.getKeyManagers();
  
  // Create trust manager. The trust manager hold other peers´
  // certificates.
  TrustManagerFactory trustmanagerfactory = TrustManagerFactory.getInstance("SunX509");
  trustmanagerfactory.init(keystore);
  TrustManager [] artrustmanager = trus

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久av| 欧美性猛交xxxx免费看久久久| 久久久国产视频| 国产成人欧美在线观看| 欧美激情一区二区三区在线视频观看| 国产精品久久二区| 欧美精品中文字幕一区| 亚洲高清久久网| 26uuu另类亚洲欧美日本老年| 欧美国产日韩免费| 久久综合国产精品台湾中文娱乐网| 亚洲欧美一区二区三区久久| 亚洲а∨天堂久久精品9966| 中文字幕精品影院| 日韩专区在线观看| 中文字幕日韩欧美在线视频| 国产精品视频26uuu| 狠狠久久亚洲欧美专区| 欧美激情一区二区三区高清视频| 日韩有码在线播放| 欧美国产一区二区三区| 欧美日韩在线观看视频小说| 亚洲精品一区av在线播放| 欧美成人精品在线视频| 国产日韩亚洲欧美| 亚洲新中文字幕| 日韩经典第一页| 中文字幕精品—区二区| 欧美极品少妇xxxxx| 在线看片第一页欧美| 91天堂在线观看| 久久久精品欧美| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久久久久av福利| 亚洲欧美国产一区二区三区| 亚洲天堂精品在线| 中文字幕亚洲国产| 国产在线一区二区三区| 国产精品久久久久久久一区探花| 色综合久久久久久中文网| 97超级碰碰碰| 青青草原成人在线视频| 国产成人啪精品视频免费网| 国产精品一区二区三区毛片淫片| 一区二区成人精品| 91精品国产乱码久久久久久蜜臀| 美日韩丰满少妇在线观看| 九九视频直播综合网| 日韩美女主播视频| 久久男人资源视频| 午夜免费日韩视频| 亚洲影院色无极综合| 亚洲最新av在线网站| 少妇高潮 亚洲精品| 欧美孕妇孕交黑巨大网站| 亚洲综合中文字幕在线观看| 久色乳综合思思在线视频| 国产精品入口福利| 国产精品69久久久久| 日韩精品有码在线观看| 国产成人小视频在线观看| 欧美另类暴力丝袜| 欧美成人中文字幕在线| 国产精品亚洲片夜色在线| 成人免费网站在线看| 亚洲中国色老太| 1769国内精品视频在线播放| 久久久久久久999| 久久国产精品网站| 国产精品日日做人人爱| 亚洲精品久久久久国产| 欧美亚洲视频在线观看| 亚洲精品98久久久久久中文字幕| 精品久久久久久久久久ntr影视| 91日本在线观看| 色综合五月天导航| 九九视频这里只有精品| 久久躁狠狠躁夜夜爽| 久久久久久一区二区三区| 日本最新高清不卡中文字幕| 成人黄色免费看| 国产精品久久不能| www.99久久热国产日韩欧美.com| 正在播放欧美视频| 亚洲自拍偷拍第一页| 欧美成人免费全部观看天天性色| 97成人精品视频在线观看| 成人国产精品久久久久久亚洲| 国产精品中文久久久久久久| 国产精品视频不卡| 亚洲国产成人精品久久| 综合136福利视频在线| 日韩欧美在线视频免费观看| 欧美日韩免费在线观看| 国产精品久久久久久一区二区| 2019最新中文字幕| 亚洲精品免费av| 欧美日韩中文字幕在线视频| 欧美日韩成人精品| 欧美最顶级丰满的aⅴ艳星| 91久久精品日日躁夜夜躁国产| 精品一区二区亚洲| 国产精品高潮在线| 日本在线观看天堂男亚洲| 国产成人鲁鲁免费视频a| 久久这里有精品视频| 91精品国产综合久久久久久久久| 日本高清久久天堂| 国产精品嫩草影院一区二区| 国产精品九九久久久久久久| 亚洲人成免费电影| 色婷婷综合久久久久中文字幕1| 久久精品免费电影| 亚洲欧美中文日韩在线| 97精品在线观看| 国产精品成人va在线观看| 日韩精品视频在线| 成年无码av片在线| 亚洲а∨天堂久久精品喷水| 亚洲自拍欧美另类| 亚洲毛片在线观看.| 欧美高清视频在线播放| 懂色av中文一区二区三区天美| 欧美大全免费观看电视剧大泉洋| 日韩精品极品视频| 欧美综合国产精品久久丁香| 国内揄拍国内精品| 亚洲桃花岛网站| 亚洲精品日韩激情在线电影| 久久久免费电影| 亚洲男人天堂九九视频| 国语自产精品视频在线看| 亚洲视频日韩精品| 日韩欧美精品免费在线| 国产视频亚洲视频| 九九热视频这里只有精品| 色系列之999| 国产在线精品播放| 91久久精品美女高潮| 性欧美激情精品| 亚洲电影免费观看高清完整版在线观看| 亚洲美女性生活视频| 亚洲成人精品久久久| 国产精品视频一区二区三区四| 亚洲欧洲在线看| 色综合视频一区中文字幕| 久久精品国产综合| 亚洲天堂一区二区三区| 欧美中文在线免费| 7777精品视频| 成人深夜直播免费观看| 成人国产亚洲精品a区天堂华泰| 日韩欧美成人精品| 欧美日韩在线视频一区| 亚洲自拍偷拍网址| 国产亚洲日本欧美韩国| 欧美乱大交做爰xxxⅹ性3| 成人国产精品免费视频| 一本色道久久88综合亚洲精品ⅰ| 91sao在线观看国产| 成人精品一区二区三区| 97色在线视频| 少妇av一区二区三区| 亚洲三级黄色在线观看|